You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2015/05/12 23:50:09 UTC

tomee git commit: TOMEE-1584 - ProvisioningUtil does not escape group id for maven-metadata.xml check

Repository: tomee
Updated Branches:
  refs/heads/master 25207a096 -> c6c362e0b


TOMEE-1584 - ProvisioningUtil does not escape group id for maven-metadata.xml check


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/c6c362e0
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/c6c362e0
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/c6c362e0

Branch: refs/heads/master
Commit: c6c362e0be4d5640282787a30d7895b6358af1f4
Parents: 25207a0
Author: andygumbrecht@apache.org <an...@gmx.de>
Authored: Tue May 12 23:49:43 2015 +0200
Committer: andygumbrecht@apache.org <an...@gmx.de>
Committed: Tue May 12 23:49:43 2015 +0200

----------------------------------------------------------------------
 .gitignore                                      |  1 +
 .../loader/provisining/MavenResolver.java       | 42 ++++++++++++++++----
 2 files changed, 36 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/c6c362e0/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 92dd6e3..6fe2ebd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,4 @@ target
 quick.bat
 /tomee/tomee-plume-webapp/overlays/
 /tomee/tomee-plus-webapp/overlays/
+/temp

http://git-wip-us.apache.org/repos/asf/tomee/blob/c6c362e0/container/openejb-loader/src/main/java/org/apache/openejb/loader/provisining/MavenResolver.java
----------------------------------------------------------------------
diff --git a/container/openejb-loader/src/main/java/org/apache/openejb/loader/provisining/MavenResolver.java b/container/openejb-loader/src/main/java/org/apache/openejb/loader/provisining/MavenResolver.java
index 110b319..8978ba1 100644
--- a/container/openejb-loader/src/main/java/org/apache/openejb/loader/provisining/MavenResolver.java
+++ b/container/openejb-loader/src/main/java/org/apache/openejb/loader/provisining/MavenResolver.java
@@ -18,12 +18,17 @@ package org.apache.openejb.loader.provisining;
 
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
+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.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -63,7 +68,7 @@ public class MavenResolver implements ArchiveResolver, ProvisioningResolverAware
 
     private String sanitize(final String url) {
         final int sep = url.indexOf('!') + 1;
-        String value = url.substring(prefix().length() + 1);
+        final String value = url.substring(prefix().length() + 1);
         return value.substring(0, sep) + value.substring(sep).replace(":", "/");
     }
 
@@ -116,13 +121,36 @@ public class MavenResolver implements ArchiveResolver, ProvisioningResolverAware
     }
 
     private static String m2Home() {
+
         final Properties properties;
         if (SystemInstance.isInitialized()) {
             properties = SystemInstance.get().getProperties();
         } else {
             properties = System.getProperties();
         }
-        return properties.getProperty("openejb.m2.home", System.getProperty("user.home") + "/.m2/repository/");
+
+        String home = "";
+        File f = new File(properties.getProperty("openejb.m2.home", System.getProperty("user.home") + "/.m2/repository/"));
+
+        if (f.exists()) {
+            home = f.getAbsolutePath();
+        } else {
+            f = new File(properties.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) {
+                    //no-op
+                }
+            }
+        }
+
+        return (home.endsWith("/") ? home : home + "/");
     }
 
     private String mvnArtifactPath(final String toParse, final String snapshotBase) throws MalformedURLException {
@@ -146,10 +174,10 @@ public class MavenResolver implements ArchiveResolver, ProvisioningResolverAware
             throw new MalformedURLException("Invalid artifactId. " + toParse);
         }
 
-        String base = snapshotBase == null || snapshotBase.isEmpty() ? "" : (snapshotBase + (!snapshotBase.endsWith("/") ? "/" : ""));
+        final String base = snapshotBase == null || snapshotBase.isEmpty() ? "" : (snapshotBase + (!snapshotBase.endsWith("/") ? "/" : ""));
 
         if (("LATEST".equals(version) || "LATEST-SNAPSHOT".equals(version)) && base.startsWith("http")) {
-            final String meta = base + group + "/" + artifact + "/maven-metadata.xml";
+            final String meta = base + group.replace('.', '/') + "/" + artifact + "/maven-metadata.xml";
             final URL url = new URL(meta);
             final ByteArrayOutputStream out = new ByteArrayOutputStream();
             InputStream is = null;
@@ -169,7 +197,7 @@ public class MavenResolver implements ArchiveResolver, ProvisioningResolverAware
 
         String artifactVersion;
         if (version.endsWith("-SNAPSHOT") && base.startsWith("http")) {
-            final String meta = base + group + "/" + artifact + "/" + version + "/maven-metadata.xml";
+            final String meta = base + group.replace('.', '/') + "/" + artifact + "/" + version + "/maven-metadata.xml";
             final URL url = new URL(meta);
             final ByteArrayOutputStream out = new ByteArrayOutputStream();
             InputStream is = null;
@@ -199,7 +227,7 @@ public class MavenResolver implements ArchiveResolver, ProvisioningResolverAware
             fullClassifier = "-" + segments[4];
         }
 
-        StringBuilder builder = new StringBuilder(base);
+        final StringBuilder builder = new StringBuilder(base);
         builder.append(group.replace('.', '/')).append("/");
         builder.append(artifact).append("/");
         builder.append(version).append("/");
@@ -211,7 +239,7 @@ public class MavenResolver implements ArchiveResolver, ProvisioningResolverAware
         return builder.append(".").append(type).toString();
     }
 
-    private static String extractRealVersion(String version, ByteArrayOutputStream out) {
+    private static String extractRealVersion(String version, final ByteArrayOutputStream out) {
         final QuickMvnMetadataParser handler = new QuickMvnMetadataParser();
         try {
             final SAXParser parser = FACTORY.newSAXParser();