Fix m2Home alternate location & allow https prefix. Fix init.
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/c6b76a28 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/c6b76a28 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/c6b76a28 Branch: refs/heads/release-tomee-1.7.2 Commit: c6b76a28aeac5af561a2a42803c5925928dc5eeb Parents: a459247 Author: AndyGee <[email protected]> Authored: Tue May 12 00:43:18 2015 +0200 Committer: Jonathan Gallimore <[email protected]> Committed: Sun May 17 21:19:04 2015 +0100 ---------------------------------------------------------------------- .gitignore | 1 + .../openejb/arquillian/common/MavenCache.java | 4 +- .../apache/openejb/loader/ProvisioningUtil.java | 39 ++++++++++++++++++-- 3 files changed, 38 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/c6b76a28/.gitignore ---------------------------------------------------------------------- diff --git a/.gitignore b/.gitignore index 92dd6e3..7da116c 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ target quick.bat /tomee/tomee-plume-webapp/overlays/ /tomee/tomee-plus-webapp/overlays/ +/arquillian/arquillian-tomee-remote/temp http://git-wip-us.apache.org/repos/asf/tomee/blob/c6b76a28/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/MavenCache.java ---------------------------------------------------------------------- diff --git a/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/MavenCache.java b/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/MavenCache.java index 09bab04..3c87072 100644 --- a/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/MavenCache.java +++ b/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/MavenCache.java @@ -36,7 +36,7 @@ public class MavenCache { // initializing the SystemInstance because we'll need it for configuration try { - SystemInstance.get().init(new Properties()); + SystemInstance.init(new Properties()); } catch (final Exception e) { // no-op } @@ -84,7 +84,7 @@ public class MavenCache { os.write(buffer, 0, bytesRead); } } catch (final Exception e) { - throw new DownloadException("Unable to download " + source + " to " + file.getAbsolutePath(), e); + throw new DownloadException("Unable to download " + source + " to " + file, e); } finally { if (is != null) { try { http://git-wip-us.apache.org/repos/asf/tomee/blob/c6b76a28/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java ---------------------------------------------------------------------- diff --git a/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java b/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java index fb25a8d..2d4a26b 100644 --- a/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java +++ b/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java @@ -16,12 +16,17 @@ */ package org.apache.openejb.loader; +import org.w3c.dom.Document; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathFactory; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -51,6 +56,7 @@ public final class ProvisioningUtil { public static final String OPENEJB_DEPLOYER_CACHE_FOLDER = "openejb.deployer.cache.folder"; public static final String HTTP_PREFIX = "http"; + public static final String HTTPS_PREFIX = "https"; public static final String MVN_PREFIX = "mvn:"; public static final String SNAPSHOT_SUFFIX = "-SNAPSHOT"; @@ -119,7 +125,7 @@ public final class ProvisioningUtil { } public static String realLocation(final String rawLocation) { - if (rawLocation.startsWith(HTTP_PREFIX)) { + if (hasHttpOrHttpsPrefix(rawLocation)) { final File file = cacheFile(lastPart(rawLocation)); if (file.exists()) { return file.getAbsolutePath(); @@ -149,7 +155,8 @@ public final class ProvisioningUtil { if (rawLocation.startsWith(MVN_PREFIX)) { try { final String repo1Url = quickMvnUrl(rawLocation.substring(MVN_PREFIX.length()).replace(":", "/")); - return realLocation(repo1Url).replace(":", "/").replace("///","/"); + final String real = realLocation(repo1Url); + return real; } catch (final MalformedURLException e1) { Logger.getLogger(ProvisioningUtil.class.getName()).severe("Can't find " + rawLocation); } @@ -213,7 +220,27 @@ public final class ProvisioningUtil { } private static String m2Home() { - return SystemInstance.get().getProperty("openejb.m2.home", System.getProperty("user.home") + "/.m2/repository/"); + String home = ""; + File f = new File(SystemInstance.get().getProperty("openejb.m2.home", System.getProperty("user.home") + "/.m2/repository/")); + + if (f.exists()) { + home = f.getAbsolutePath(); + } else { + f = new File(SystemInstance.get().getProperty("openejb.m2.home", System.getProperty("user.home") + "/.m2/settings.xml")); + if (f.exists()) { + try { + final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + final DocumentBuilder builder = factory.newDocumentBuilder(); + final Document document = builder.parse(f); + final XPathFactory xpf = XPathFactory.newInstance(); + final XPath xp = xpf.newXPath(); + home = xp.evaluate("//settings/localRepository/text()", document.getDocumentElement()); + } catch (final Exception ignore) { + } + } + } + + return (home.endsWith("/") ? home : home + "/"); } private static String mvnArtifactPath(final String toParse, final String snapshotBase) throws MalformedURLException { @@ -243,7 +270,7 @@ public final class ProvisioningUtil { builder.append(version).append("/"); String artifactVersion; - if (snapshotBase != null && snapshotBase.startsWith(HTTP_PREFIX) && version.endsWith(SNAPSHOT_SUFFIX)) { + if (snapshotBase != null && hasHttpOrHttpsPrefix(snapshotBase) && version.endsWith(SNAPSHOT_SUFFIX)) { final String meta = snapshotBase + builder.toString() + "maven-metadata.xml"; final URL url = new URL(meta); final ByteArrayOutputStream out = new ByteArrayOutputStream(); @@ -280,6 +307,10 @@ public final class ProvisioningUtil { return builder.append(".").append(type).toString(); } + private static boolean hasHttpOrHttpsPrefix(final String str) { + return str.startsWith(HTTP_PREFIX) || str.startsWith(HTTPS_PREFIX); + } + private static String extractLastSnapshotVersion(final String defaultVersion, final InputStream metadata) { final QuickMvnMetadataParser handler = new QuickMvnMetadataParser(); try {
