From 8951e30fe00a0d3acb599034a3a4fdaa493aba36 Mon Sep 17 00:00:00 2001 From: Gwenneg Lepage Date: Tue, 11 Feb 2020 16:05:19 +0100 Subject: [PATCH] Fix blocker issues detected with SonarCloud --- .../cli/commands/ListExtensionsCommand.java | 14 +- .../quarkus/security/test/TestCharClone.java | 25 ---- .../quartz/runtime/QuartzScheduler.java | 1 + .../deployment/ScalaCompilationProvider.java | 13 +- .../deployment/WebXmlParsingBuildStep.java | 2 + .../generator/ValueResolverGenerator.java | 131 +++++++++--------- .../KubernetesMockServerTestResource.java | 6 +- 7 files changed, 88 insertions(+), 104 deletions(-) delete mode 100644 extensions/elytron-security-properties-file/deployment/src/test/java/io/quarkus/security/test/TestCharClone.java diff --git a/devtools/aesh/src/main/java/io/quarkus/cli/commands/ListExtensionsCommand.java b/devtools/aesh/src/main/java/io/quarkus/cli/commands/ListExtensionsCommand.java index fb7beeacb..5b06db2a3 100644 --- a/devtools/aesh/src/main/java/io/quarkus/cli/commands/ListExtensionsCommand.java +++ b/devtools/aesh/src/main/java/io/quarkus/cli/commands/ListExtensionsCommand.java @@ -43,15 +43,15 @@ public class ListExtensionsCommand implements Command { } else { try { BuildFile buildFile = null; - FileProjectWriter writer = null; if (path != null) { File projectDirectory = new File(path.getAbsolutePath()); - writer = new FileProjectWriter(projectDirectory); - if (new File(projectDirectory, "build.gradle").exists() - || new File(projectDirectory, "build.gradle.kts").exists()) { - buildFile = new GradleBuildFile(writer); - } else { - buildFile = new MavenBuildFile(writer); + try (FileProjectWriter writer = new FileProjectWriter(projectDirectory)) { + if (new File(projectDirectory, "build.gradle").exists() + || new File(projectDirectory, "build.gradle.kts").exists()) { + buildFile = new GradleBuildFile(writer); + } else { + buildFile = new MavenBuildFile(writer); + } } } new ListExtensions(buildFile).listExtensions(all, format, searchPattern); diff --git a/extensions/elytron-security-properties-file/deployment/src/test/java/io/quarkus/security/test/TestCharClone.java b/extensions/elytron-security-properties-file/deployment/src/test/java/io/quarkus/security/test/TestCharClone.java deleted file mode 100644 index 7ce921293..000000000 --- a/extensions/elytron-security-properties-file/deployment/src/test/java/io/quarkus/security/test/TestCharClone.java +++ /dev/null @@ -1,25 +0,0 @@ -package io.quarkus.security.test; - -import java.lang.reflect.Method; -import java.util.Arrays; - -import org.junit.jupiter.api.Test; - -public class TestCharClone { - @Test - public void testClone() { - char[] password = "jb0ss".toCharArray(); - char[] clone = password.clone(); - if (clone == password) { - System.out.printf("Failure, clone == password%n"); - } - if (!Arrays.equals(password, clone)) { - System.out.printf("Failure, clone neq password%n"); - } - Class charArrayClass = password.getClass(); - System.out.printf("char[](%s) methods:%n", charArrayClass.getName()); - for (Method m : charArrayClass.getMethods()) { - System.out.println(m); - } - } -} diff --git a/extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzScheduler.java b/extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzScheduler.java index 0ed976fce..15fd3c617 100644 --- a/extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzScheduler.java +++ b/extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzScheduler.java @@ -115,6 +115,7 @@ public class QuartzScheduler implements Scheduler { break; case CRON4J: cron = CronMapper.fromCron4jToQuartz().map(cronExpr).asString(); + break; default: break; } diff --git a/extensions/scala/deployment/src/main/java/io/quarkus/scala/deployment/ScalaCompilationProvider.java b/extensions/scala/deployment/src/main/java/io/quarkus/scala/deployment/ScalaCompilationProvider.java index 5798c455f..027f14ebb 100644 --- a/extensions/scala/deployment/src/main/java/io/quarkus/scala/deployment/ScalaCompilationProvider.java +++ b/extensions/scala/deployment/src/main/java/io/quarkus/scala/deployment/ScalaCompilationProvider.java @@ -25,12 +25,13 @@ public class ScalaCompilationProvider implements CompilationProvider { .forEach(f -> settings.classpath().append(f)); settings.outputDirs().add(context.getSourceDirectory().getAbsolutePath(), context.getOutputDirectory().getAbsolutePath()); - Global g = new Global(settings); - Global.Run run = g.new Run(); - Set fileSet = files.stream() - .map(File::getAbsolutePath) - .collect(Collectors.toSet()); - run.compile(JavaConverters.asScalaSet(fileSet).toList()); + try (Global g = new Global(settings)) { + Global.Run run = g.new Run(); + Set fileSet = files.stream() + .map(File::getAbsolutePath) + .collect(Collectors.toSet()); + run.compile(JavaConverters.asScalaSet(fileSet).toList()); + } } @Override diff --git a/extensions/undertow/deployment/src/main/java/io/quarkus/undertow/deployment/WebXmlParsingBuildStep.java b/extensions/undertow/deployment/src/main/java/io/quarkus/undertow/deployment/WebXmlParsingBuildStep.java index de19abd89..f25e45035 100644 --- a/extensions/undertow/deployment/src/main/java/io/quarkus/undertow/deployment/WebXmlParsingBuildStep.java +++ b/extensions/undertow/deployment/src/main/java/io/quarkus/undertow/deployment/WebXmlParsingBuildStep.java @@ -63,6 +63,7 @@ public class WebXmlParsingBuildStep { Set additionalBeans = new HashSet<>(); final XMLInputFactory inputFactory = XMLInputFactory.newInstance(); + inputFactory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false); MetaDataElementParser.DTDInfo dtdInfo = new MetaDataElementParser.DTDInfo(); inputFactory.setXMLResolver(dtdInfo); try (InputStream in = Files.newInputStream(webXml)) { @@ -113,6 +114,7 @@ public class WebXmlParsingBuildStep { if (webFragment != null && Files.isRegularFile(webFragment)) { try (InputStream is = Files.newInputStream(webFragment)) { final XMLInputFactory inputFactory = XMLInputFactory.newInstance(); + inputFactory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false); inputFactory.setXMLResolver(NoopXMLResolver.create()); XMLStreamReader xmlReader = inputFactory.createXMLStreamReader(is); diff --git a/independent-projects/qute/generator/src/main/java/io/quarkus/qute/generator/ValueResolverGenerator.java b/independent-projects/qute/generator/src/main/java/io/quarkus/qute/generator/ValueResolverGenerator.java index 30d159bcf..798cd120a 100644 --- a/independent-projects/qute/generator/src/main/java/io/quarkus/qute/generator/ValueResolverGenerator.java +++ b/independent-projects/qute/generator/src/main/java/io/quarkus/qute/generator/ValueResolverGenerator.java @@ -203,26 +203,27 @@ public class ValueResolverGenerator { if (methodParams.isEmpty()) { LOGGER.debugf("Method added %s", method); - BytecodeCreator matchScope = createMatchScope(resolve, method.name(), methodParams.size(), name, params, - paramsCount); + try (BytecodeCreator matchScope = createMatchScope(resolve, method.name(), methodParams.size(), name, + params, paramsCount)) { - // Invoke the method - no params - ResultHandle ret; - boolean hasCompletionStage = !skipMemberType(method.returnType()) - && hasCompletionStageInTypeClosure(index.getClassByName(method.returnType().name()), index); + // Invoke the method - no params + ResultHandle ret; + boolean hasCompletionStage = !skipMemberType(method.returnType()) + && hasCompletionStageInTypeClosure(index.getClassByName(method.returnType().name()), index); - ResultHandle invokeRet; - if (Modifier.isInterface(clazz.flags())) { - invokeRet = matchScope.invokeInterfaceMethod(MethodDescriptor.of(method), base); - } else { - invokeRet = matchScope.invokeVirtualMethod(MethodDescriptor.of(method), base); + ResultHandle invokeRet; + if (Modifier.isInterface(clazz.flags())) { + invokeRet = matchScope.invokeInterfaceMethod(MethodDescriptor.of(method), base); + } else { + invokeRet = matchScope.invokeVirtualMethod(MethodDescriptor.of(method), base); + } + if (hasCompletionStage) { + ret = invokeRet; + } else { + ret = matchScope.invokeStaticMethod(Descriptors.COMPLETED_FUTURE, invokeRet); + } + matchScope.returnValue(ret); } - if (hasCompletionStage) { - ret = invokeRet; - } else { - ret = matchScope.invokeStaticMethod(Descriptors.COMPLETED_FUTURE, invokeRet); - } - matchScope.returnValue(ret); } else { // Collect methods with params @@ -395,58 +396,60 @@ public class ValueResolverGenerator { for (MethodInfo method : entry.getValue()) { // Try to match parameter types - BytecodeCreator paramMatchScope = success.createScope(); - int idx = 0; - for (Type paramType : method.parameters()) { - ResultHandle paramHandleClass = paramMatchScope.readArrayValue(paramClasses, idx++); - ResultHandle testClass = loadParamType(paramMatchScope, paramType); - ResultHandle baseClassTest = paramMatchScope.invokeVirtualMethod(Descriptors.IS_ASSIGNABLE_FROM, - testClass, - paramHandleClass); - paramMatchScope.ifNonZero(baseClassTest).falseBranch().breakScope(paramMatchScope); - } - boolean hasCompletionStage = !skipMemberType(method.returnType()) - && hasCompletionStageInTypeClosure(index.getClassByName(method.returnType().name()), index); + try (BytecodeCreator paramMatchScope = success.createScope()) { + int idx = 0; + for (Type paramType : method.parameters()) { + ResultHandle paramHandleClass = paramMatchScope.readArrayValue(paramClasses, idx++); + ResultHandle testClass = loadParamType(paramMatchScope, paramType); + ResultHandle baseClassTest = paramMatchScope.invokeVirtualMethod(Descriptors.IS_ASSIGNABLE_FROM, + testClass, + paramHandleClass); + paramMatchScope.ifNonZero(baseClassTest).falseBranch().breakScope(paramMatchScope); + } + boolean hasCompletionStage = !skipMemberType(method.returnType()) + && hasCompletionStageInTypeClosure(index.getClassByName(method.returnType().name()), index); - AssignableResultHandle invokeRet = paramMatchScope.createVariable(Object.class); - // try - TryBlock tryCatch = paramMatchScope.tryBlock(); - // catch (Throwable e) - CatchBlockCreator exception = tryCatch.addCatch(Throwable.class); - // CompletableFuture.completeExceptionally(Throwable) - exception.invokeVirtualMethod(Descriptors.COMPLETABLE_FUTURE_COMPLETE_EXCEPTIONALLY, whenRet, - exception.getCaughtException()); + AssignableResultHandle invokeRet = paramMatchScope.createVariable(Object.class); + // try + TryBlock tryCatch = paramMatchScope.tryBlock(); + // catch (Throwable e) + CatchBlockCreator exception = tryCatch.addCatch(Throwable.class); + // CompletableFuture.completeExceptionally(Throwable) + exception.invokeVirtualMethod(Descriptors.COMPLETABLE_FUTURE_COMPLETE_EXCEPTIONALLY, whenRet, + exception.getCaughtException()); - if (Modifier.isInterface(clazz.flags())) { - tryCatch.assign(invokeRet, - tryCatch.invokeInterfaceMethod(MethodDescriptor.of(method), whenBase, paramsHandle)); - } else { - tryCatch.assign(invokeRet, - tryCatch.invokeVirtualMethod(MethodDescriptor.of(method), whenBase, paramsHandle)); - } + if (Modifier.isInterface(clazz.flags())) { + tryCatch.assign(invokeRet, + tryCatch.invokeInterfaceMethod(MethodDescriptor.of(method), whenBase, paramsHandle)); + } else { + tryCatch.assign(invokeRet, + tryCatch.invokeVirtualMethod(MethodDescriptor.of(method), whenBase, paramsHandle)); + } - if (hasCompletionStage) { - FunctionCreator invokeWhenCompleteFun = tryCatch.createFunction(BiConsumer.class); - tryCatch.invokeInterfaceMethod(Descriptors.CF_WHEN_COMPLETE, invokeRet, - invokeWhenCompleteFun.getInstance()); - BytecodeCreator invokeWhenComplete = invokeWhenCompleteFun.getBytecode(); + if (hasCompletionStage) { + FunctionCreator invokeWhenCompleteFun = tryCatch.createFunction(BiConsumer.class); + tryCatch.invokeInterfaceMethod(Descriptors.CF_WHEN_COMPLETE, invokeRet, + invokeWhenCompleteFun.getInstance()); + BytecodeCreator invokeWhenComplete = invokeWhenCompleteFun.getBytecode(); - // TODO workaround for https://github.com/quarkusio/gizmo/issues/6 - AssignableResultHandle invokeWhenRet = invokeWhenComplete.createVariable(CompletableFuture.class); - invokeWhenComplete.assign(invokeWhenRet, whenRet); + // TODO workaround for https://github.com/quarkusio/gizmo/issues/6 + AssignableResultHandle invokeWhenRet = invokeWhenComplete + .createVariable(CompletableFuture.class); + invokeWhenComplete.assign(invokeWhenRet, whenRet); - BranchResult invokeThrowableIsNull = invokeWhenComplete - .ifNull(invokeWhenComplete.getMethodParam(1)); - BytecodeCreator invokeSuccess = invokeThrowableIsNull.trueBranch(); - invokeSuccess.invokeVirtualMethod(Descriptors.COMPLETABLE_FUTURE_COMPLETE, invokeWhenRet, - invokeWhenComplete.getMethodParam(0)); - BytecodeCreator invokeFailure = invokeThrowableIsNull.falseBranch(); - invokeFailure.invokeVirtualMethod(Descriptors.COMPLETABLE_FUTURE_COMPLETE_EXCEPTIONALLY, - invokeWhenRet, - invokeWhenComplete.getMethodParam(1)); - invokeWhenComplete.returnValue(null); - } else { - tryCatch.invokeVirtualMethod(Descriptors.COMPLETABLE_FUTURE_COMPLETE, whenRet, invokeRet); + BranchResult invokeThrowableIsNull = invokeWhenComplete + .ifNull(invokeWhenComplete.getMethodParam(1)); + BytecodeCreator invokeSuccess = invokeThrowableIsNull.trueBranch(); + invokeSuccess.invokeVirtualMethod(Descriptors.COMPLETABLE_FUTURE_COMPLETE, invokeWhenRet, + invokeWhenComplete.getMethodParam(0)); + BytecodeCreator invokeFailure = invokeThrowableIsNull.falseBranch(); + invokeFailure.invokeVirtualMethod(Descriptors.COMPLETABLE_FUTURE_COMPLETE_EXCEPTIONALLY, + invokeWhenRet, + invokeWhenComplete.getMethodParam(1)); + invokeWhenComplete.returnValue(null); + } else { + tryCatch.invokeVirtualMethod(Descriptors.COMPLETABLE_FUTURE_COMPLETE, whenRet, invokeRet); + } } } diff --git a/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/KubernetesMockServerTestResource.java b/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/KubernetesMockServerTestResource.java index ad55bf2d3..534cf57bf 100644 --- a/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/KubernetesMockServerTestResource.java +++ b/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/KubernetesMockServerTestResource.java @@ -5,6 +5,7 @@ import java.util.HashMap; import java.util.Map; import io.fabric8.kubernetes.client.Config; +import io.fabric8.kubernetes.client.NamespacedKubernetesClient; import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer; import io.quarkus.test.common.QuarkusTestResourceLifecycleManager; @@ -18,8 +19,9 @@ public class KubernetesMockServerTestResource implements QuarkusTestResourceLife mockServer.init(); final Map systemProps = new HashMap<>(); - systemProps.put(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY, - mockServer.createClient().getConfiguration().getMasterUrl()); + try (NamespacedKubernetesClient client = mockServer.createClient()) { + systemProps.put(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY, client.getConfiguration().getMasterUrl()); + } systemProps.put(Config.KUBERNETES_TRUST_CERT_SYSTEM_PROPERTY, "true"); systemProps.put(Config.KUBERNETES_AUTH_TRYKUBECONFIG_SYSTEM_PROPERTY, "false"); systemProps.put(Config.KUBERNETES_AUTH_TRYSERVICEACCOUNT_SYSTEM_PROPERTY, "false");