Skip to content

Commit 7820741

Browse files
committed
Avoid class cast exception when extracting string literal value
1 parent d18c043 commit 7820741

1 file changed

Lines changed: 7 additions & 7 deletions

File tree

rewrite-gradle/src/main/java/org/openrewrite/gradle/plugins/UpgradePluginVersion.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.openrewrite.java.MethodMatcher;
3232
import org.openrewrite.java.tree.Expression;
3333
import org.openrewrite.java.tree.J;
34+
import org.openrewrite.java.tree.JavaType;
3435
import org.openrewrite.maven.MavenDownloadingException;
3536
import org.openrewrite.maven.internal.MavenPomDownloader;
3637
import org.openrewrite.maven.table.MavenMetadataFailures;
@@ -392,16 +393,15 @@ public J visitVariable(J.VariableDeclarations.NamedVariable variable, ExecutionC
392393
return Preconditions.or(propertiesVisitor, Preconditions.check(Preconditions.or(new IsBuildGradle<>(), new IsSettingsGradle<>()), javaVisitor));
393394
}
394395

395-
@SuppressWarnings("DataFlowIssue")
396396
private @Nullable String literalValue(Expression expr) {
397-
AtomicReference<String> value = new AtomicReference<>(null);
398-
new JavaVisitor<Integer>() {
397+
return new JavaVisitor<AtomicReference<@Nullable String>>() {
399398
@Override
400-
public J visitLiteral(J.Literal literal, Integer integer) {
401-
value.set((String) literal.getValue());
399+
public J visitLiteral(J.Literal literal, AtomicReference<@Nullable String> value) {
400+
if (literal.getType() == JavaType.Primitive.String) {
401+
value.compareAndSet(null, (String) literal.getValue());
402+
}
402403
return literal;
403404
}
404-
}.visit(expr, 0);
405-
return value.get();
405+
}.reduce(expr, new AtomicReference<>(null)).get();
406406
}
407407
}

0 commit comments

Comments
 (0)