From c9170ec73bfe8997c94a9b471e9abf7efde04728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Kr=C3=BCger?= Date: Tue, 29 Mar 2022 12:30:13 +0200 Subject: [PATCH 1/5] Fix paths to use os path separator --- .../precondition/JavaSourceDirExistsPreconditionCheck.java | 5 +++-- .../sbm/project/parser/ProjectContextInitializerTest.java | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/components/sbm-core/src/main/java/org/springframework/sbm/engine/precondition/JavaSourceDirExistsPreconditionCheck.java b/components/sbm-core/src/main/java/org/springframework/sbm/engine/precondition/JavaSourceDirExistsPreconditionCheck.java index 096a0cb0c..c83cdcb5b 100644 --- a/components/sbm-core/src/main/java/org/springframework/sbm/engine/precondition/JavaSourceDirExistsPreconditionCheck.java +++ b/components/sbm-core/src/main/java/org/springframework/sbm/engine/precondition/JavaSourceDirExistsPreconditionCheck.java @@ -26,14 +26,15 @@ @Component class JavaSourceDirExistsPreconditionCheck extends PreconditionCheck { - private static final String PATTERN = "/**/src/main/java/**"; + private static final String PATTERN = "**" + File.separator + "src" + File.separator + "main" + File.separator + "java" + File.separator + "**"; private final String JAVA_SRC_DIR = "src/main/java"; private AntPathMatcher antPathMatcher = new AntPathMatcher(File.separator); @Override public PreconditionCheckResult verify(Path projectRoot, List projectResources) { + String pattern = projectRoot.toString() + File.separator + PATTERN; if (projectResources.stream() - .noneMatch(r -> antPathMatcher.match(projectRoot.resolve(PATTERN).normalize().toString(), getPath(r).toAbsolutePath().toString()))) { + .noneMatch(r -> antPathMatcher.match(pattern, getPath(r).toAbsolutePath().toString()))) { return new PreconditionCheckResult(ResultState.FAILED, "PreconditionCheck check could not find a '" + JAVA_SRC_DIR + "' dir. This dir is required."); } return new PreconditionCheckResult(ResultState.PASSED, "Found required source dir 'src/main/java'."); diff --git a/components/sbm-core/src/test/java/org/springframework/sbm/project/parser/ProjectContextInitializerTest.java b/components/sbm-core/src/test/java/org/springframework/sbm/project/parser/ProjectContextInitializerTest.java index 999ca4670..4e991fb3a 100644 --- a/components/sbm-core/src/test/java/org/springframework/sbm/project/parser/ProjectContextInitializerTest.java +++ b/components/sbm-core/src/test/java/org/springframework/sbm/project/parser/ProjectContextInitializerTest.java @@ -109,6 +109,8 @@ void test() { assertThat(projectResources).hasSize(18); + verifyIgnored(projectResources, "testcode/path-scanner/.git"); + verifyResource("testcode/path-scanner/pom.xml") .wrappedInstanceOf(Maven.class) .havingMarkers( @@ -307,4 +309,9 @@ void test() { ) .isContainedIn(projectResources); } + + private void verifyIgnored(List> projectResources, String s) { + assertThat(Path.of(s).toFile()).exists(); + assertThat(projectResources.stream().noneMatch(r -> s.equals(r.getAbsolutePath().toString()))).isTrue(); + } } \ No newline at end of file From 0b3fbfd7da266f65bd9f370bcdc3f2a5a92a9355 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Kr=C3=BCger?= Date: Wed, 30 Mar 2022 16:04:12 +0200 Subject: [PATCH 2/5] Fix tests in `core` module when building with Windows --- changelog.md | 10 +- .../JavaSourceDirExistsPreconditionCheck.java | 2 +- .../actions/MoveFilesActionTest.java | 10 +- .../sbm/java/impl/RewriteJavaParserTest.java | 2 +- ...ules_getTopmostApplicationModulesTest.java | 13 +- .../OpenRewriteMavenBuildFileTest.java | 165 +++++++++--------- .../MigrateWlsEjbDeploymentDescriptor.java | 7 +- 7 files changed, 112 insertions(+), 97 deletions(-) diff --git a/changelog.md b/changelog.md index f69838869..b5f59347d 100644 --- a/changelog.md +++ b/changelog.md @@ -1,4 +1,12 @@ -### [0.10.0](https://github.com/spring-projects-experimental/spring-boot-migrator/releases/tag/0.10.0) - 2022-03-28 +## [0.11.0](https://github.com/spring-projects-experimental/spring-boot-migrator/releases/tag/0.10.0) - + +### Adds +- Unmarshalling ejb-jar.xml for EJB 2.1 (#62) + +### Fixes +- Paths and CLI rendering under Windows (#58) + +## [0.10.0](https://github.com/spring-projects-experimental/spring-boot-migrator/releases/tag/0.10.0) - 2022-03-28 ### Adds - Support to migrate to Spring Cloud Config Server diff --git a/components/sbm-core/src/main/java/org/springframework/sbm/engine/precondition/JavaSourceDirExistsPreconditionCheck.java b/components/sbm-core/src/main/java/org/springframework/sbm/engine/precondition/JavaSourceDirExistsPreconditionCheck.java index c83cdcb5b..09637019a 100644 --- a/components/sbm-core/src/main/java/org/springframework/sbm/engine/precondition/JavaSourceDirExistsPreconditionCheck.java +++ b/components/sbm-core/src/main/java/org/springframework/sbm/engine/precondition/JavaSourceDirExistsPreconditionCheck.java @@ -32,7 +32,7 @@ class JavaSourceDirExistsPreconditionCheck extends PreconditionCheck { @Override public PreconditionCheckResult verify(Path projectRoot, List projectResources) { - String pattern = projectRoot.toString() + File.separator + PATTERN; + String pattern = projectRoot.resolve(PATTERN).toAbsolutePath().normalize().toString(); if (projectResources.stream() .noneMatch(r -> antPathMatcher.match(pattern, getPath(r).toAbsolutePath().toString()))) { return new PreconditionCheckResult(ResultState.FAILED, "PreconditionCheck check could not find a '" + JAVA_SRC_DIR + "' dir. This dir is required."); diff --git a/components/sbm-core/src/test/java/org/springframework/sbm/common/migration/actions/MoveFilesActionTest.java b/components/sbm-core/src/test/java/org/springframework/sbm/common/migration/actions/MoveFilesActionTest.java index e37910499..a64ee7837 100644 --- a/components/sbm-core/src/test/java/org/springframework/sbm/common/migration/actions/MoveFilesActionTest.java +++ b/components/sbm-core/src/test/java/org/springframework/sbm/common/migration/actions/MoveFilesActionTest.java @@ -15,13 +15,13 @@ */ package org.springframework.sbm.common.migration.actions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.sbm.common.filter.PathMatchingProjectResourceFilter; import org.springframework.sbm.engine.context.ProjectContext; import org.springframework.sbm.project.resource.InternalProjectResource; import org.springframework.sbm.project.resource.ProjectResource; import org.springframework.sbm.project.resource.TestProjectContext; -import org.springframework.sbm.common.filter.PathMatchingProjectResourceFilter; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; import java.nio.file.Path; import java.util.List; @@ -40,11 +40,11 @@ void moveFile() { Path projectRoot = TestProjectContext.getDefaultProjectRoot(); // file 1 - String someFilePath = "src/main/resources/a/SomeFile.foo"; + String someFilePath = Path.of("src/main/resources/a/SomeFile.foo").toString(); String fileContent1 = "file content"; // file 2 - String anotherFilePath = "src/main/resources/b/AnotherFile.foo"; + String anotherFilePath = Path.of("src/main/resources/b/AnotherFile.foo").toString(); String fileContent2 = "file content 2"; // target dir diff --git a/components/sbm-core/src/test/java/org/springframework/sbm/java/impl/RewriteJavaParserTest.java b/components/sbm-core/src/test/java/org/springframework/sbm/java/impl/RewriteJavaParserTest.java index e7e0940bd..11f7b0689 100644 --- a/components/sbm-core/src/test/java/org/springframework/sbm/java/impl/RewriteJavaParserTest.java +++ b/components/sbm-core/src/test/java/org/springframework/sbm/java/impl/RewriteJavaParserTest.java @@ -43,7 +43,7 @@ void shouldDelegateParsingErrorsToExceptionHandler() throws ClassNotFoundExcepti String out = sysOutBuffer.toString(); System.setOut(realSysOut); assertThat(out).containsPattern( - ".*org.openrewrite.java.Java11Parser.*compile error\n"); + ".*org.openrewrite.java.Java11Parser.*compile error.*"); // System.out.println(out); } diff --git a/components/sbm-core/src/test/java/org/springframework/sbm/project/ApplicationModules_getTopmostApplicationModulesTest.java b/components/sbm-core/src/test/java/org/springframework/sbm/project/ApplicationModules_getTopmostApplicationModulesTest.java index 3cf55caa5..11ce9f08f 100644 --- a/components/sbm-core/src/test/java/org/springframework/sbm/project/ApplicationModules_getTopmostApplicationModulesTest.java +++ b/components/sbm-core/src/test/java/org/springframework/sbm/project/ApplicationModules_getTopmostApplicationModulesTest.java @@ -15,13 +15,14 @@ */ package org.springframework.sbm.project; -import org.springframework.sbm.build.api.ApplicationModule; -import org.springframework.sbm.engine.context.ProjectContext; -import org.springframework.sbm.project.resource.TestProjectContext; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.springframework.sbm.build.api.ApplicationModule; +import org.springframework.sbm.engine.context.ProjectContext; +import org.springframework.sbm.project.resource.TestProjectContext; +import java.nio.file.Path; import java.util.List; import java.util.stream.Collectors; @@ -111,7 +112,7 @@ void beforeEach() { void whenGetTopmostApplicationModulesThenChildModuleShouldBeReturned() { List topmostApplicationModules = projectContext.getApplicationModules().getTopmostApplicationModules(); assertThat(topmostApplicationModules).hasSize(1); - assertThat(topmostApplicationModules.get(0).getBuildFile().getSourcePath().toString()).isEqualTo("module1/pom.xml"); + assertThat(topmostApplicationModules.get(0).getBuildFile().getSourcePath()).isEqualTo(Path.of("module1/pom.xml")); } } @@ -185,7 +186,7 @@ void beforeEach() { void whenGetTopmostApplicationModulesThenChildPom1ShouldBeReturned() { List topmostApplicationModules = projectContext.getApplicationModules().getTopmostApplicationModules(); assertThat(topmostApplicationModules).hasSize(1); - assertThat(topmostApplicationModules.get(0).getBuildFile().getSourcePath().toString()).isEqualTo("module1/pom.xml"); + assertThat(topmostApplicationModules.get(0).getBuildFile().getSourcePath().toString()).isEqualTo(Path.of("module1/pom.xml").toString()); } } @@ -283,7 +284,7 @@ void whenGetTopmostApplicationModulesThenPom1AndPom3ShouldBeReturned() { List topmostApplicationModules = projectContext.getApplicationModules().getTopmostApplicationModules(); assertThat(topmostApplicationModules).hasSize(2); List topmostApplicationModulePaths = topmostApplicationModules.stream().map(m -> m.getBuildFile().getSourcePath().toString()).collect(Collectors.toList()); - assertThat(topmostApplicationModulePaths).contains("module1/pom.xml", "module3/pom.xml"); + assertThat(topmostApplicationModulePaths).contains(Path.of("module1/pom.xml").toString(), Path.of("module3/pom.xml").toString()); } } } \ No newline at end of file diff --git a/components/sbm-core/src/test/java/org/springframework/sbm/project/buildfile/OpenRewriteMavenBuildFileTest.java b/components/sbm-core/src/test/java/org/springframework/sbm/project/buildfile/OpenRewriteMavenBuildFileTest.java index 71383a024..8639ec364 100644 --- a/components/sbm-core/src/test/java/org/springframework/sbm/project/buildfile/OpenRewriteMavenBuildFileTest.java +++ b/components/sbm-core/src/test/java/org/springframework/sbm/project/buildfile/OpenRewriteMavenBuildFileTest.java @@ -15,16 +15,16 @@ */ package org.springframework.sbm.project.buildfile; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.sbm.build.api.BuildFile; import org.springframework.sbm.build.api.DependenciesChangedEvent; import org.springframework.sbm.build.api.Dependency; import org.springframework.sbm.build.api.Plugin; import org.springframework.sbm.engine.context.ProjectContext; import org.springframework.sbm.project.resource.TestProjectContext; -import org.junit.jupiter.api.Tag; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.springframework.context.ApplicationEventPublisher; import java.nio.file.Path; import java.util.List; @@ -127,87 +127,88 @@ void testResolvedDependenciesWithPomTypeDependency() { .build() .getBuildFile(); - List actualPaths = sut.getResolvedDependenciesPaths().stream() - .map(dp -> dp.toString().substring(dp.toString().lastIndexOf("repository/") + "repository/".length())) // strip of path to Maven repository - .collect(Collectors.toList()); + List actualPaths = sut.getResolvedDependenciesPaths().stream() + .map(dp -> dp.toString().substring(dp.toString().lastIndexOf("repository") + "repository".length() + 1)) // strip of path to Maven repository + .map(Path::of) + .collect(Collectors.toList()); assertThat(actualPaths).hasSize(75); assertThat(actualPaths) - .contains("org/apache/tomee/mbean-annotation-api/8.0.5/mbean-annotation-api-8.0.5.jar") - .contains("org/apache/tomee/openejb-jpa-integration/8.0.5/openejb-jpa-integration-8.0.5.jar") - .contains("org/apache/tomee/javaee-api/8.0-5/javaee-api-8.0-5.jar") - .contains("org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar") - .contains("org/apache/tomee/openejb-api/8.0.5/openejb-api-8.0.5.jar") - .contains("org/apache/tomee/openejb-loader/8.0.5/openejb-loader-8.0.5.jar") - .contains("org/apache/tomee/openejb-javaagent/8.0.5/openejb-javaagent-8.0.5.jar") - .contains("org/apache/tomee/openejb-jee/8.0.5/openejb-jee-8.0.5.jar") - .contains("jakarta/xml/bind/jakarta.xml.bind-api/2.3.2/jakarta.xml.bind-api-2.3.2.jar") - .contains("jakarta/activation/jakarta.activation-api/1.2.1/jakarta.activation-api-1.2.1.jar") - .contains("org/apache/tomee/openejb-jee-accessors/8.0.5/openejb-jee-accessors-8.0.5.jar") - .contains("org/metatype/sxc/sxc-jaxb-core/0.8/sxc-jaxb-core-0.8.jar") - .contains("org/metatype/sxc/sxc-runtime/0.8/sxc-runtime-0.8.jar") - .contains("commons-cli/commons-cli/1.4/commons-cli-1.4.jar") - .contains("commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar") - .contains("com/sun/activation/jakarta.activation/1.2.1/jakarta.activation-1.2.1.jar") - .contains("org/apache/activemq/activemq-ra/5.16.0/activemq-ra-5.16.0.jar") - .contains("org/apache/activemq/activemq-kahadb-store/5.16.0/activemq-kahadb-store-5.16.0.jar") - .contains("org/apache/activemq/protobuf/activemq-protobuf/1.1/activemq-protobuf-1.1.jar") - .contains("org/apache/activemq/activemq-broker/5.16.0/activemq-broker-5.16.0.jar") - .contains("org/apache/activemq/activemq-client/5.16.0/activemq-client-5.16.0.jar") - .contains("org/fusesource/hawtbuf/hawtbuf/1.11/hawtbuf-1.11.jar") - .contains("org/apache/activemq/activemq-openwire-legacy/5.16.0/activemq-openwire-legacy-5.16.0.jar") - .contains("org/apache/activemq/activemq-jdbc-store/5.16.0/activemq-jdbc-store-5.16.0.jar") - .contains("org/apache/geronimo/components/geronimo-connector/3.1.4/geronimo-connector-3.1.4.jar") - .contains("org/apache/geronimo/specs/geronimo-j2ee-connector_1.6_spec/1.0/geronimo-j2ee-connector_1.6_spec-1.0.jar") - .contains("org/apache/geronimo/components/geronimo-transaction/3.1.4/geronimo-transaction-3.1.4.jar") - .contains("org/objectweb/howl/howl/1.0.1-1/howl-1.0.1-1.jar") - .contains("com/fasterxml/jackson/core/jackson-databind/2.12.0-rc1/jackson-databind-2.12.0-rc1.jar") - .contains("com/fasterxml/jackson/core/jackson-annotations/2.12.0-rc1/jackson-annotations-2.12.0-rc1.jar") - .contains("com/fasterxml/jackson/core/jackson-core/2.12.0-rc1/jackson-core-2.12.0-rc1.jar") - .contains("org/apache/geronimo/javamail/geronimo-javamail_1.6_mail/1.0.0/geronimo-javamail_1.6_mail-1.0.0.jar") - .contains("org/apache/xbean/xbean-asm7-shaded/4.14/xbean-asm7-shaded-4.14.jar") - .contains("org/apache/xbean/xbean-finder-shaded/4.14/xbean-finder-shaded-4.14.jar") - .contains("org/apache/xbean/xbean-reflect/4.14/xbean-reflect-4.14.jar") - .contains("org/apache/xbean/xbean-naming/4.14/xbean-naming-4.14.jar") - .contains("org/apache/xbean/xbean-bundleutils/4.14/xbean-bundleutils-4.14.jar") - .contains("org/hsqldb/hsqldb/2.3.2/hsqldb-2.3.2.jar") - .contains("org/apache/commons/commons-dbcp2/2.1/commons-dbcp2-2.1.jar") - .contains("org/apache/commons/commons-pool2/2.3/commons-pool2-2.3.jar") - .contains("org/codehaus/swizzle/swizzle-stream/1.6.2/swizzle-stream-1.6.2.jar") - .contains("commons-logging/commons-logging/1.2/commons-logging-1.2.jar") - .contains("org/apache/openejb/shade/quartz-openejb-shade/2.2.1/quartz-openejb-shade-2.2.1.jar") - .contains("org/slf4j/slf4j-api/1.7.21/slf4j-api-1.7.21.jar") - .contains("org/apache/openwebbeans/openwebbeans-impl/2.0.12/openwebbeans-impl-2.0.12.jar") - .contains("org/apache/openwebbeans/openwebbeans-spi/2.0.12/openwebbeans-spi-2.0.12.jar") - .contains("org/apache/openwebbeans/openwebbeans-ejb/2.0.12/openwebbeans-ejb-2.0.12.jar") - .contains("org/apache/openwebbeans/openwebbeans-ee/2.0.12/openwebbeans-ee-2.0.12.jar") - .contains("org/apache/openwebbeans/openwebbeans-ee-common/2.0.12/openwebbeans-ee-common-2.0.12.jar") - .contains("org/apache/openwebbeans/openwebbeans-web/2.0.12/openwebbeans-web-2.0.12.jar") - .contains("org/apache/openwebbeans/openwebbeans-el22/2.0.12/openwebbeans-el22-2.0.12.jar") - .contains("org/hibernate/hibernate-entitymanager/5.4.10.Final/hibernate-entitymanager-5.4.10.Final.jar") - .contains("org/hibernate/hibernate-core/5.4.10.Final/hibernate-core-5.4.10.Final.jar") - .contains("org/javassist/javassist/3.24.0-GA/javassist-3.24.0-GA.jar") - .contains("antlr/antlr/2.7.7/antlr-2.7.7.jar") - .contains("org/jboss/jandex/2.1.1.Final/jandex-2.1.1.Final.jar") - .contains("javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar") - .contains("javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar") - .contains("org/glassfish/jaxb/jaxb-runtime/2.3.1/jaxb-runtime-2.3.1.jar") - .contains("org/glassfish/jaxb/txw2/2.3.1/txw2-2.3.1.jar") - .contains("com/sun/istack/istack-commons-runtime/3.0.7/istack-commons-runtime-3.0.7.jar") - .contains("org/jvnet/staxex/stax-ex/1.8/stax-ex-1.8.jar") - .contains("com/sun/xml/fastinfoset/FastInfoset/1.2.15/FastInfoset-1.2.15.jar") - .contains("org/dom4j/dom4j/2.1.1/dom4j-2.1.1.jar") - .contains("org/hibernate/common/hibernate-commons-annotations/5.1.0.Final/hibernate-commons-annotations-5.1.0.Final.jar") - .contains("javax/persistence/javax.persistence-api/2.2/javax.persistence-api-2.2.jar") - .contains("net/bytebuddy/byte-buddy/1.10.2/byte-buddy-1.10.2.jar") - .contains("org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.1.1.Final/jboss-transaction-api_1.2_spec-1.1.1.Final.jar") - .contains("org/hibernate/hibernate-validator/5.1.3.Final/hibernate-validator-5.1.3.Final.jar") - .contains("com/fasterxml/classmate/1.0.0/classmate-1.0.0.jar") - .contains("org/hibernate/hibernate-ehcache/5.4.10.Final/hibernate-ehcache-5.4.10.Final.jar") - .contains("org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar") - .contains("net/sf/ehcache/ehcache/2.10.3/ehcache-2.10.3.jar") - .contains("org/slf4j/slf4j-jdk14/1.7.21/slf4j-jdk14-1.7.21.jar"); + .contains(Path.of("org/apache/tomee/mbean-annotation-api/8.0.5/mbean-annotation-api-8.0.5.jar")) + .contains(Path.of("org/apache/tomee/openejb-jpa-integration/8.0.5/openejb-jpa-integration-8.0.5.jar")) + .contains(Path.of("org/apache/tomee/javaee-api/8.0-5/javaee-api-8.0-5.jar")) + .contains(Path.of("org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar")) + .contains(Path.of("org/apache/tomee/openejb-api/8.0.5/openejb-api-8.0.5.jar")) + .contains(Path.of("org/apache/tomee/openejb-loader/8.0.5/openejb-loader-8.0.5.jar")) + .contains(Path.of("org/apache/tomee/openejb-javaagent/8.0.5/openejb-javaagent-8.0.5.jar")) + .contains(Path.of("org/apache/tomee/openejb-jee/8.0.5/openejb-jee-8.0.5.jar")) + .contains(Path.of("jakarta/xml/bind/jakarta.xml.bind-api/2.3.2/jakarta.xml.bind-api-2.3.2.jar")) + .contains(Path.of("jakarta/activation/jakarta.activation-api/1.2.1/jakarta.activation-api-1.2.1.jar")) + .contains(Path.of("org/apache/tomee/openejb-jee-accessors/8.0.5/openejb-jee-accessors-8.0.5.jar")) + .contains(Path.of("org/metatype/sxc/sxc-jaxb-core/0.8/sxc-jaxb-core-0.8.jar")) + .contains(Path.of("org/metatype/sxc/sxc-runtime/0.8/sxc-runtime-0.8.jar")) + .contains(Path.of("commons-cli/commons-cli/1.4/commons-cli-1.4.jar")) + .contains(Path.of("commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar")) + .contains(Path.of("com/sun/activation/jakarta.activation/1.2.1/jakarta.activation-1.2.1.jar")) + .contains(Path.of("org/apache/activemq/activemq-ra/5.16.0/activemq-ra-5.16.0.jar")) + .contains(Path.of("org/apache/activemq/activemq-kahadb-store/5.16.0/activemq-kahadb-store-5.16.0.jar")) + .contains(Path.of("org/apache/activemq/protobuf/activemq-protobuf/1.1/activemq-protobuf-1.1.jar")) + .contains(Path.of("org/apache/activemq/activemq-broker/5.16.0/activemq-broker-5.16.0.jar")) + .contains(Path.of("org/apache/activemq/activemq-client/5.16.0/activemq-client-5.16.0.jar")) + .contains(Path.of("org/fusesource/hawtbuf/hawtbuf/1.11/hawtbuf-1.11.jar")) + .contains(Path.of("org/apache/activemq/activemq-openwire-legacy/5.16.0/activemq-openwire-legacy-5.16.0.jar")) + .contains(Path.of("org/apache/activemq/activemq-jdbc-store/5.16.0/activemq-jdbc-store-5.16.0.jar")) + .contains(Path.of("org/apache/geronimo/components/geronimo-connector/3.1.4/geronimo-connector-3.1.4.jar")) + .contains(Path.of("org/apache/geronimo/specs/geronimo-j2ee-connector_1.6_spec/1.0/geronimo-j2ee-connector_1.6_spec-1.0.jar")) + .contains(Path.of("org/apache/geronimo/components/geronimo-transaction/3.1.4/geronimo-transaction-3.1.4.jar")) + .contains(Path.of("org/objectweb/howl/howl/1.0.1-1/howl-1.0.1-1.jar")) + .contains(Path.of("com/fasterxml/jackson/core/jackson-databind/2.12.0-rc1/jackson-databind-2.12.0-rc1.jar")) + .contains(Path.of("com/fasterxml/jackson/core/jackson-annotations/2.12.0-rc1/jackson-annotations-2.12.0-rc1.jar")) + .contains(Path.of("com/fasterxml/jackson/core/jackson-core/2.12.0-rc1/jackson-core-2.12.0-rc1.jar")) + .contains(Path.of("org/apache/geronimo/javamail/geronimo-javamail_1.6_mail/1.0.0/geronimo-javamail_1.6_mail-1.0.0.jar")) + .contains(Path.of("org/apache/xbean/xbean-asm7-shaded/4.14/xbean-asm7-shaded-4.14.jar")) + .contains(Path.of("org/apache/xbean/xbean-finder-shaded/4.14/xbean-finder-shaded-4.14.jar")) + .contains(Path.of("org/apache/xbean/xbean-reflect/4.14/xbean-reflect-4.14.jar")) + .contains(Path.of("org/apache/xbean/xbean-naming/4.14/xbean-naming-4.14.jar")) + .contains(Path.of("org/apache/xbean/xbean-bundleutils/4.14/xbean-bundleutils-4.14.jar")) + .contains(Path.of("org/hsqldb/hsqldb/2.3.2/hsqldb-2.3.2.jar")) + .contains(Path.of("org/apache/commons/commons-dbcp2/2.1/commons-dbcp2-2.1.jar")) + .contains(Path.of("org/apache/commons/commons-pool2/2.3/commons-pool2-2.3.jar")) + .contains(Path.of("org/codehaus/swizzle/swizzle-stream/1.6.2/swizzle-stream-1.6.2.jar")) + .contains(Path.of("commons-logging/commons-logging/1.2/commons-logging-1.2.jar")) + .contains(Path.of("org/apache/openejb/shade/quartz-openejb-shade/2.2.1/quartz-openejb-shade-2.2.1.jar")) + .contains(Path.of("org/slf4j/slf4j-api/1.7.21/slf4j-api-1.7.21.jar")) + .contains(Path.of("org/apache/openwebbeans/openwebbeans-impl/2.0.12/openwebbeans-impl-2.0.12.jar")) + .contains(Path.of("org/apache/openwebbeans/openwebbeans-spi/2.0.12/openwebbeans-spi-2.0.12.jar")) + .contains(Path.of("org/apache/openwebbeans/openwebbeans-ejb/2.0.12/openwebbeans-ejb-2.0.12.jar")) + .contains(Path.of("org/apache/openwebbeans/openwebbeans-ee/2.0.12/openwebbeans-ee-2.0.12.jar")) + .contains(Path.of("org/apache/openwebbeans/openwebbeans-ee-common/2.0.12/openwebbeans-ee-common-2.0.12.jar")) + .contains(Path.of("org/apache/openwebbeans/openwebbeans-web/2.0.12/openwebbeans-web-2.0.12.jar")) + .contains(Path.of("org/apache/openwebbeans/openwebbeans-el22/2.0.12/openwebbeans-el22-2.0.12.jar")) + .contains(Path.of("org/hibernate/hibernate-entitymanager/5.4.10.Final/hibernate-entitymanager-5.4.10.Final.jar")) + .contains(Path.of("org/hibernate/hibernate-core/5.4.10.Final/hibernate-core-5.4.10.Final.jar")) + .contains(Path.of("org/javassist/javassist/3.24.0-GA/javassist-3.24.0-GA.jar")) + .contains(Path.of("antlr/antlr/2.7.7/antlr-2.7.7.jar")) + .contains(Path.of("org/jboss/jandex/2.1.1.Final/jandex-2.1.1.Final.jar")) + .contains(Path.of("javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar")) + .contains(Path.of("javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar")) + .contains(Path.of("org/glassfish/jaxb/jaxb-runtime/2.3.1/jaxb-runtime-2.3.1.jar")) + .contains(Path.of("org/glassfish/jaxb/txw2/2.3.1/txw2-2.3.1.jar")) + .contains(Path.of("com/sun/istack/istack-commons-runtime/3.0.7/istack-commons-runtime-3.0.7.jar")) + .contains(Path.of("org/jvnet/staxex/stax-ex/1.8/stax-ex-1.8.jar")) + .contains(Path.of("com/sun/xml/fastinfoset/FastInfoset/1.2.15/FastInfoset-1.2.15.jar")) + .contains(Path.of("org/dom4j/dom4j/2.1.1/dom4j-2.1.1.jar")) + .contains(Path.of("org/hibernate/common/hibernate-commons-annotations/5.1.0.Final/hibernate-commons-annotations-5.1.0.Final.jar")) + .contains(Path.of("javax/persistence/javax.persistence-api/2.2/javax.persistence-api-2.2.jar")) + .contains(Path.of("net/bytebuddy/byte-buddy/1.10.2/byte-buddy-1.10.2.jar")) + .contains(Path.of("org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.1.1.Final/jboss-transaction-api_1.2_spec-1.1.1.Final.jar")) + .contains(Path.of("org/hibernate/hibernate-validator/5.1.3.Final/hibernate-validator-5.1.3.Final.jar")) + .contains(Path.of("com/fasterxml/classmate/1.0.0/classmate-1.0.0.jar")) + .contains(Path.of("org/hibernate/hibernate-ehcache/5.4.10.Final/hibernate-ehcache-5.4.10.Final.jar")) + .contains(Path.of("org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar")) + .contains(Path.of("net/sf/ehcache/ehcache/2.10.3/ehcache-2.10.3.jar")) + .contains(Path.of("org/slf4j/slf4j-jdk14/1.7.21/slf4j-jdk14-1.7.21.jar")); } @Test @@ -321,7 +322,7 @@ void addDependency() { ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(DependenciesChangedEvent.class); verify(eventPublisher, times(46)).publishEvent(argumentCaptor.capture()); assertThat(argumentCaptor.getValue().getResolvedDependencies()).hasSize(1); - assertThat(argumentCaptor.getValue().getResolvedDependencies().get(0).toString()).endsWith("org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar"); + assertThat(argumentCaptor.getValue().getResolvedDependencies().get(0).toString()).endsWith(Path.of("org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar").toString()); } @Test diff --git a/components/sbm-support-weblogic/src/main/java/org/springframework/sbm/jee/wls/actions/MigrateWlsEjbDeploymentDescriptor.java b/components/sbm-support-weblogic/src/main/java/org/springframework/sbm/jee/wls/actions/MigrateWlsEjbDeploymentDescriptor.java index a4cc4fece..0b8f678d9 100644 --- a/components/sbm-support-weblogic/src/main/java/org/springframework/sbm/jee/wls/actions/MigrateWlsEjbDeploymentDescriptor.java +++ b/components/sbm-support-weblogic/src/main/java/org/springframework/sbm/jee/wls/actions/MigrateWlsEjbDeploymentDescriptor.java @@ -62,12 +62,17 @@ private boolean incorporateIntoSourceFile(BuildFile buildFile, JavaSourceWithEjb if (transactionTimeoutSeconds != null) { int timeoutInMillis = calclateTimeoutForSpringBoot(transactionTimeoutSeconds); if (!javaSourceWithEjb.getType().hasAnnotation("org.springframework.transaction.annotation.Transactional")) { - // TODO: provide some means to print this information on CLI as it takes a while, see #175 + + this.startProcess("Annotate " + javaSourceWithEjb.getType().getFullyQualifiedName() + " with @Transactional"); + // FIXME: #466 if (!buildFile.hasDeclaredDependencyMatchingRegex("org\\.springframework\\:spring-tx\\:.*")) { addDataJpaDependency = true; } javaSourceWithEjb.getType().addAnnotation("@Transactional(timeout=" + timeoutInMillis + ")", "org.springframework.transaction.annotation.Transactional"); + + this.endProcess(); + } else { Annotation annotation = javaSourceWithEjb.getType().getAnnotation("org.springframework.transaction.annotation.Transactional"); annotation.setAttribute("timeout", timeoutInMillis, Integer.class); From fb480a8e3eda845e1673bad84ac752cab9cba824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Kr=C3=BCger?= Date: Wed, 30 Mar 2022 16:47:45 +0200 Subject: [PATCH 3/5] wip --- .../sbm/common/filter/PathMatchingProjectResourceFilter.java | 3 ++- .../sbm/common/migration/actions/MoveFilesActionTest.java | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/sbm-core/src/main/java/org/springframework/sbm/common/filter/PathMatchingProjectResourceFilter.java b/components/sbm-core/src/main/java/org/springframework/sbm/common/filter/PathMatchingProjectResourceFilter.java index 79b0f7ee8..fd1ad060d 100644 --- a/components/sbm-core/src/main/java/org/springframework/sbm/common/filter/PathMatchingProjectResourceFilter.java +++ b/components/sbm-core/src/main/java/org/springframework/sbm/common/filter/PathMatchingProjectResourceFilter.java @@ -20,6 +20,7 @@ import org.springframework.sbm.project.resource.filter.ProjectResourceFinder; import org.springframework.util.AntPathMatcher; +import java.io.File; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -31,7 +32,7 @@ public class PathMatchingProjectResourceFilter implements ProjectResourceFinder< */ private final List matchingPatterns; - private final AntPathMatcher matcher = new AntPathMatcher(); + private final AntPathMatcher matcher = new AntPathMatcher(File.separator); public PathMatchingProjectResourceFilter(List matchingPatterns) { this.matchingPatterns = matchingPatterns; diff --git a/components/sbm-core/src/test/java/org/springframework/sbm/common/migration/actions/MoveFilesActionTest.java b/components/sbm-core/src/test/java/org/springframework/sbm/common/migration/actions/MoveFilesActionTest.java index a64ee7837..3225c21f3 100644 --- a/components/sbm-core/src/test/java/org/springframework/sbm/common/migration/actions/MoveFilesActionTest.java +++ b/components/sbm-core/src/test/java/org/springframework/sbm/common/migration/actions/MoveFilesActionTest.java @@ -24,7 +24,6 @@ import org.springframework.sbm.project.resource.TestProjectContext; import java.nio.file.Path; -import java.util.List; import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; @@ -56,8 +55,8 @@ void moveFile() { .addProjectResource(anotherFilePath, fileContent2) .build(); - ProjectResource someFile = projectContext.search(new PathMatchingProjectResourceFilter(List.of("/**/SomeFile.foo"))).get(0); - ProjectResource anotherFile = projectContext.search(new PathMatchingProjectResourceFilter(List.of("/**/AnotherFile.foo"))).get(0); + ProjectResource someFile = projectContext.search(new PathMatchingProjectResourceFilter("/**/SomeFile.foo")).get(0); + ProjectResource anotherFile = projectContext.search(new PathMatchingProjectResourceFilter("/**/AnotherFile.foo")).get(0); verifyPrecondition(someFile, projectRoot.resolve(someFilePath), fileContent1); verifyPrecondition(anotherFile, projectRoot.resolve(anotherFilePath), fileContent2); From c2d4c4ca6ffd2ac75a05ec97192a73cf16b4e9dd Mon Sep 17 00:00:00 2001 From: sanagaraj-pivotal Date: Wed, 30 Mar 2022 15:27:26 +0530 Subject: [PATCH 4/5] Removing event publisher call in Catch statement --- .../main/java/org/springframework/sbm/engine/recipe/Action.java | 1 - 1 file changed, 1 deletion(-) diff --git a/components/sbm-core/src/main/java/org/springframework/sbm/engine/recipe/Action.java b/components/sbm-core/src/main/java/org/springframework/sbm/engine/recipe/Action.java index b38e0b219..1467aebe1 100644 --- a/components/sbm-core/src/main/java/org/springframework/sbm/engine/recipe/Action.java +++ b/components/sbm-core/src/main/java/org/springframework/sbm/engine/recipe/Action.java @@ -36,7 +36,6 @@ default void applyWithStatusEvent(ProjectContext context) { try { apply(context); } catch(Exception e) { - eventPublisher.publishEvent(new ActionFailedEvent(getDescription())); throw new ActionFailedException("'"+this.getDescription()+"' failed: " + e.getMessage(), e); } if (eventPublisher != null) { From 1be8a997cdd2a7b679f400565c38820785a54b06 Mon Sep 17 00:00:00 2001 From: sanagaraj-pivotal Date: Thu, 31 Mar 2022 12:51:41 +0530 Subject: [PATCH 5/5] Fixing parser reset() error on duplicated fully qualified names --- .../sbm/java/impl/DependenciesChangedEventHandler.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/components/sbm-core/src/main/java/org/springframework/sbm/java/impl/DependenciesChangedEventHandler.java b/components/sbm-core/src/main/java/org/springframework/sbm/java/impl/DependenciesChangedEventHandler.java index b46042a41..ebc62f8da 100644 --- a/components/sbm-core/src/main/java/org/springframework/sbm/java/impl/DependenciesChangedEventHandler.java +++ b/components/sbm-core/src/main/java/org/springframework/sbm/java/impl/DependenciesChangedEventHandler.java @@ -29,7 +29,9 @@ import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import java.nio.file.Path; +import java.util.ArrayList; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; @Component @@ -42,10 +44,11 @@ public class DependenciesChangedEventHandler { public void onDependenciesChanged(DependenciesChangedEvent event) { if (projectContextHolder.getProjectContext() != null) { JavaParser currentJavaParser = JavaParserFactory.getCurrentJavaParser(); - List compilationUnits = projectContextHolder.getProjectContext().getProjectJavaSources().asStream() + Set compilationUnitsSet = projectContextHolder.getProjectContext().getProjectJavaSources().asStream() .map(js -> js.getResource().getSourceFile()) .map(js -> new Parser.Input(js.getSourcePath(), () -> new ByteArrayInputStream(js.printAll().getBytes(StandardCharsets.UTF_8)))) - .collect(Collectors.toList()); + .collect(Collectors.toSet()); + List compilationUnits = new ArrayList<>(compilationUnitsSet); Path projectRootDirectory = projectContextHolder.getProjectContext().getProjectRootDirectory(); List parsedCompilationUnits = currentJavaParser.parseInputs(compilationUnits, projectRootDirectory, new RewriteExecutionContext(applicationEventPublisher));