Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 1255C200B96 for ; Wed, 21 Sep 2016 09:19:24 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 0F427160ADB; Wed, 21 Sep 2016 07:19:24 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id B451F160AE4 for ; Wed, 21 Sep 2016 09:19:22 +0200 (CEST) Received: (qmail 57596 invoked by uid 500); 21 Sep 2016 07:19:21 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 57148 invoked by uid 99); 21 Sep 2016 07:19:21 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 Sep 2016 07:19:21 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 19405EF9A0; Wed, 21 Sep 2016 07:19:21 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: nferraro@apache.org To: commits@camel.apache.org Date: Wed, 21 Sep 2016 07:19:28 -0000 Message-Id: <4758763a0fe346d29c2cee85cfcc3cd6@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [09/49] camel git commit: CAMEL-10222: Fixed resolution of wrong versions archived-at: Wed, 21 Sep 2016 07:19:24 -0000 CAMEL-10222: Fixed resolution of wrong versions Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7f351389 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7f351389 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7f351389 Branch: refs/heads/master Commit: 7f351389f96ecccc2d424964cd4506ff776b1f6e Parents: 2c8e289 Author: Nicola Ferraro Authored: Fri Sep 2 13:43:38 2016 +0200 Committer: Nicola Ferraro Committed: Tue Sep 20 00:38:04 2016 +0200 ---------------------------------------------------------------------- tests/camel-itest-spring-boot/pom.xml | 174 +++++++++---------- .../springboot/util/ArquillianPackager.java | 116 +++++++++---- .../itest/springboot/util/JarExporter.java | 2 +- .../src/test/resources/application-pom.xml | 2 +- .../test/resources/dependency-resolver-pom.xml | 60 +++++++ 5 files changed, 230 insertions(+), 124 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/7f351389/tests/camel-itest-spring-boot/pom.xml ---------------------------------------------------------------------- diff --git a/tests/camel-itest-spring-boot/pom.xml b/tests/camel-itest-spring-boot/pom.xml index ad4f0bc..fa02338 100644 --- a/tests/camel-itest-spring-boot/pom.xml +++ b/tests/camel-itest-spring-boot/pom.xml @@ -149,94 +149,94 @@ 15000 1 - + **/*Test.java - org.apache.camel.itest.springboot.CamelNetty4Test - org.apache.camel.itest.springboot.CamelNettyHttpTest - org.apache.camel.itest.springboot.CamelNettyTest - org.apache.camel.itest.springboot.CamelOgnlTest - org.apache.camel.itest.springboot.CamelOlingo2Test - org.apache.camel.itest.springboot.CamelOpenshiftTest - org.apache.camel.itest.springboot.CamelOptaplannerTest - org.apache.camel.itest.springboot.CamelPahoTest - org.apache.camel.itest.springboot.CamelPdfTest - org.apache.camel.itest.springboot.CamelPgeventTest - org.apache.camel.itest.springboot.CamelPrinterTest - org.apache.camel.itest.springboot.CamelProtobufTest - org.apache.camel.itest.springboot.CamelQuartz2Test - org.apache.camel.itest.springboot.CamelQuartzTest - org.apache.camel.itest.springboot.CamelQuickfixTest - org.apache.camel.itest.springboot.CamelRabbitmqTest - org.apache.camel.itest.springboot.CamelRestletTest - org.apache.camel.itest.springboot.CamelRibbonTest - org.apache.camel.itest.springboot.CamelRmiTest - org.apache.camel.itest.springboot.CamelRouteboxTest - org.apache.camel.itest.springboot.CamelRssTest - org.apache.camel.itest.springboot.CamelRubyTest - org.apache.camel.itest.springboot.CamelRxTest - org.apache.camel.itest.springboot.CamelSalesforceTest - org.apache.camel.itest.springboot.CamelSapNetweaverTest - org.apache.camel.itest.springboot.CamelSaxonTest - org.apache.camel.itest.springboot.CamelScalaTest - org.apache.camel.itest.springboot.CamelSchematronTest - org.apache.camel.itest.springboot.CamelScriptTest - org.apache.camel.itest.springboot.CamelScrTest - org.apache.camel.itest.springboot.CamelServicenowTest - org.apache.camel.itest.springboot.CamelServletlistenerTest - org.apache.camel.itest.springboot.CamelServletTest - org.apache.camel.itest.springboot.CamelShiroTest - org.apache.camel.itest.springboot.CamelSipTest - org.apache.camel.itest.springboot.CamelSjmsTest - org.apache.camel.itest.springboot.CamelSlackTest - org.apache.camel.itest.springboot.CamelSmppTest - org.apache.camel.itest.springboot.CamelSnakeyamlTest - org.apache.camel.itest.springboot.CamelSnmpTest - org.apache.camel.itest.springboot.CamelSoapTest - org.apache.camel.itest.springboot.CamelSolrTest - org.apache.camel.itest.springboot.CamelSparkRestTest - org.apache.camel.itest.springboot.CamelSparkTest - org.apache.camel.itest.springboot.CamelSplunkTest - org.apache.camel.itest.springboot.CamelSpringBatchTest - org.apache.camel.itest.springboot.CamelSpringBootTest - org.apache.camel.itest.springboot.CamelSpringDmTest - org.apache.camel.itest.springboot.CamelSpringIntegrationTest - org.apache.camel.itest.springboot.CamelSpringJavaconfigTest - org.apache.camel.itest.springboot.CamelSpringLdapTest - org.apache.camel.itest.springboot.CamelSpringRedisTest - org.apache.camel.itest.springboot.CamelSpringSecurityTest - org.apache.camel.itest.springboot.CamelSpringTest - org.apache.camel.itest.springboot.CamelSpringWsTest - org.apache.camel.itest.springboot.CamelSqlTest - org.apache.camel.itest.springboot.CamelSshTest - org.apache.camel.itest.springboot.CamelStaxTest - org.apache.camel.itest.springboot.CamelStompTest - org.apache.camel.itest.springboot.CamelStreamTest - org.apache.camel.itest.springboot.CamelStringtemplateTest - org.apache.camel.itest.springboot.CamelSwaggerJavaTest - org.apache.camel.itest.springboot.CamelSyslogTest - org.apache.camel.itest.springboot.CamelTagsoupTest - org.apache.camel.itest.springboot.CamelTarfileTest - org.apache.camel.itest.springboot.CamelTelegramTest - org.apache.camel.itest.springboot.CamelTestngTest - org.apache.camel.itest.springboot.CamelTestTest - org.apache.camel.itest.springboot.CamelTwitterTest - org.apache.camel.itest.springboot.CamelUndertowTest - org.apache.camel.itest.springboot.CamelUnivocityParsersTest - org.apache.camel.itest.springboot.CamelUrlrewriteTest - org.apache.camel.itest.springboot.CamelVelocityTest - org.apache.camel.itest.springboot.CamelVertxTest - org.apache.camel.itest.springboot.CamelWeatherTest - org.apache.camel.itest.springboot.CamelWebsocketTest - org.apache.camel.itest.springboot.CamelXmlbeansTest - org.apache.camel.itest.springboot.CamelXmljsonTest - org.apache.camel.itest.springboot.CamelXmlrpcTest - org.apache.camel.itest.springboot.CamelXmlsecurityTest - org.apache.camel.itest.springboot.CamelXmppTest - org.apache.camel.itest.springboot.CamelXstreamTest - org.apache.camel.itest.springboot.CamelYammerTest - org.apache.camel.itest.springboot.CamelZipfileTest - org.apache.camel.itest.springboot.CamelZipkinTest - org.apache.camel.itest.springboot.CamelZookeeperTest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://git-wip-us.apache.org/repos/asf/camel/blob/7f351389/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java ---------------------------------------------------------------------- diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java index 392ffa3..131254f 100644 --- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java +++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java @@ -26,6 +26,7 @@ import java.security.PrivilegedAction; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; @@ -167,31 +168,57 @@ public final class ArquillianPackager { // moduleDependencies.add(mainDep); - List testProvidedDependencies = new LinkedList<>(); + List testProvidedDependenciesXml = new LinkedList<>(); List scopes = new LinkedList<>(); if (config.getIncludeProvidedDependencies() || config.getIncludeTestDependencies() || config.getUnitTestEnabled()) { if (config.getIncludeTestDependencies() || config.getUnitTestEnabled()) { - testProvidedDependencies.addAll(DependencyResolver.getDependencies(config.getModuleBasePath() + "/pom.xml", ScopeType.TEST.toString())); + testProvidedDependenciesXml.addAll(DependencyResolver.getDependencies(config.getModuleBasePath() + "/pom.xml", ScopeType.TEST.toString())); scopes.add(ScopeType.TEST); } if (config.getIncludeProvidedDependencies()) { - testProvidedDependencies.addAll(DependencyResolver.getDependencies(config.getModuleBasePath() + "/pom.xml", ScopeType.PROVIDED.toString())); + testProvidedDependenciesXml.addAll(DependencyResolver.getDependencies(config.getModuleBasePath() + "/pom.xml", ScopeType.PROVIDED.toString())); scopes.add(ScopeType.PROVIDED); } } - List cleanTestProvidedDependencies = new LinkedList<>(); - for (String depXml : testProvidedDependencies) { + List cleanTestProvidedDependenciesXml = new LinkedList<>(); + for (String depXml : testProvidedDependenciesXml) { if (validTestDependency(config, depXml, commonExclusions)) { depXml = enforceExclusions(config, depXml, commonExclusions); - depXml = addBOMVersionWhereMissing(config, depXml); - cleanTestProvidedDependencies.add(depXml); + //depXml = addBOMVersionWhereMissing(config, depXml); + cleanTestProvidedDependenciesXml.add(depXml); } } - File moduleSpringBootPom = createUserPom(config, cleanTestProvidedDependencies); + List versionedTestProvidedDependenciesXml = new LinkedList<>(); + if(!cleanTestProvidedDependenciesXml.isEmpty()) { + + File testProvidedResolverPom = createResolverPom(config, cleanTestProvidedDependenciesXml); + + List artifacts = Arrays.asList(resolver(config) + .loadPomFromFile(testProvidedResolverPom) + .importDependencies(scopes.toArray(new ScopeType[0])) + .resolve() + .withoutTransitivity() + .asResolvedArtifact()); + + Map resolvedVersions = new HashMap<>(); + for(MavenResolvedArtifact art : artifacts) { + String key = art.getCoordinate().getGroupId() + ":" + art.getCoordinate().getArtifactId(); + String val = art.getCoordinate().getVersion(); + resolvedVersions.put(key, val); + } + + for(String dep : cleanTestProvidedDependenciesXml) { + dep = setResolvedVersion(config, dep, resolvedVersions); + versionedTestProvidedDependenciesXml.add(dep); + } + + } + + File moduleSpringBootPom = createUserPom(config, versionedTestProvidedDependenciesXml); List resolvedScopes = new LinkedList<>(); resolvedScopes.add(ScopeType.COMPILE); @@ -254,6 +281,42 @@ public final class ArquillianPackager { return external.build(); } + private static File createResolverPom(ITestConfig config, List cleanTestProvidedDependencies) throws Exception { + + String pom; + try (InputStream pomTemplate = ArquillianPackager.class.getResourceAsStream("/dependency-resolver-pom.xml")) { + pom = IOUtils.toString(pomTemplate); + } + + StringBuilder dependencies = new StringBuilder(); + for (String dep : cleanTestProvidedDependencies) { + dependencies.append(dep); + dependencies.append("\n"); + } + + pom = pom.replace("", dependencies.toString()); + + Map resolvedProperties = new TreeMap<>(); + Pattern propPattern = Pattern.compile("(\\$\\{[^}]*\\})"); + Matcher m = propPattern.matcher(pom); + while (m.find()) { + String property = m.group(); + String resolved = DependencyResolver.resolveParentProperty(property); + resolvedProperties.put(property, resolved); + } + + for (String property : resolvedProperties.keySet()) { + pom = pom.replace(property, resolvedProperties.get(property)); + } + + File pomFile = new File(config.getModuleBasePath() + "/target/itest-spring-boot-dependency-resolver-pom.xml"); + try (FileWriter fw = new FileWriter(pomFile)) { + IOUtils.write(pom, fw); + } + + return pomFile; + } + private static File createUserPom(ITestConfig config, List cleanTestProvidedDependencies) throws Exception { String pom; @@ -297,25 +360,6 @@ public final class ArquillianPackager { return Maven.configureResolver().workOffline(config.getMavenOfflineResolution()); } - public static void copyResource(String folder, String fileNameRegex, String targetFolder) throws IOException { - - final Pattern pattern = Pattern.compile(fileNameRegex); - - File sourceFolder = new File(folder); - File[] candidates = sourceFolder.listFiles(new FilenameFilter() { - @Override - public boolean accept(File dir, String name) { - return pattern.matcher(name).matches(); - } - }); - if (candidates.length == 0) { - Assert.fail("No file matching regex " + fileNameRegex + " has been found"); - } - - File f = candidates[0]; - FileUtils.copyFileToDirectory(f, new File(targetFolder)); - } - private static ClassLoader getExtensionClassloader() { ClassLoader cl = AccessController.doPrivileged(new PrivilegedAction() { @Override @@ -368,20 +412,22 @@ public final class ArquillianPackager { return dependencyXml; } - private static String addBOMVersionWhereMissing(ITestConfig config, String dependencyXml) throws Exception { - - if (dependencyXml.contains("")) { - return dependencyXml; - } + private static String setResolvedVersion(ITestConfig config, String dependencyXml, Map resolvedVersions) throws Exception { String groupId = textBetween(dependencyXml, "", ""); String artifactId = textBetween(dependencyXml, "", ""); - String version = DependencyResolver.resolveCamelParentBOMVersion(groupId, artifactId); - if (version != null) { + String resolvedVersion = resolvedVersions.get(groupId + ":" + artifactId); + + if (!dependencyXml.contains("")) { String after = ""; int split = dependencyXml.indexOf(after) + after.length(); - dependencyXml = dependencyXml.substring(0, split) + "" + version + "" + dependencyXml.substring(split); + dependencyXml = dependencyXml.substring(0, split) + "" + resolvedVersion + "" + dependencyXml.substring(split); + } else { + String versionTag = ""; + int split = dependencyXml.indexOf(versionTag) + versionTag.length(); + int end = dependencyXml.indexOf(""); + dependencyXml = dependencyXml.substring(0, split) + resolvedVersion + dependencyXml.substring(end); } return dependencyXml; http://git-wip-us.apache.org/repos/asf/camel/blob/7f351389/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java ---------------------------------------------------------------------- diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java index b68ac46..16bcc90 100644 --- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java +++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java @@ -32,7 +32,7 @@ public class JarExporter { public void exportJar() throws Exception { Archive archive = ArquillianPackager.springBootPackage(new ITestConfigBuilder() - .module("camel-jetty9") + .module("camel-hbase") .build()); new ZipExporterImpl(archive).exportTo(new File("target/export.zip"), true); http://git-wip-us.apache.org/repos/asf/camel/blob/7f351389/tests/camel-itest-spring-boot/src/test/resources/application-pom.xml ---------------------------------------------------------------------- diff --git a/tests/camel-itest-spring-boot/src/test/resources/application-pom.xml b/tests/camel-itest-spring-boot/src/test/resources/application-pom.xml index a651f21..8e0b3c2 100644 --- a/tests/camel-itest-spring-boot/src/test/resources/application-pom.xml +++ b/tests/camel-itest-spring-boot/src/test/resources/application-pom.xml @@ -25,7 +25,7 @@ 1.0 Spring-Boot Application - This a the base pom of spring-boot applications launched by the users + This is a the base pom of spring-boot applications launched by the users http://git-wip-us.apache.org/repos/asf/camel/blob/7f351389/tests/camel-itest-spring-boot/src/test/resources/dependency-resolver-pom.xml ---------------------------------------------------------------------- diff --git a/tests/camel-itest-spring-boot/src/test/resources/dependency-resolver-pom.xml b/tests/camel-itest-spring-boot/src/test/resources/dependency-resolver-pom.xml new file mode 100644 index 0000000..f0e60e2 --- /dev/null +++ b/tests/camel-itest-spring-boot/src/test/resources/dependency-resolver-pom.xml @@ -0,0 +1,60 @@ + + + + + 4.0.0 + + com.company + spring-boot-dependency-resolver + 1.0 + + Spring-Boot Dependency Resolver + This POM is used to resolve test and provided dependencies required in integration tests + + + + + + + org.apache.camel + camel-starter-parent + ${project.version} + pom + import + + + + + org.apache.camel + camel-parent + ${project.version} + pom + import + + + + + + + + + + + +