summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStanislav Ochotnicky <sochotnicky@redhat.com>2010-11-08 11:24:35 +0100
committerStanislav Ochotnicky <sochotnicky@redhat.com>2010-11-08 11:24:35 +0100
commit06979fee03fbaf49ceeb133e87d26386df78b8bb (patch)
treeb707258d2ea1d1bbf11ff0f14c48d3cc05e3b23d
parentc6e77293a9b605d6f05878b75a35c4405daefada (diff)
downloadmaven-javadir-resolver-06979fee03fbaf49ceeb133e87d26386df78b8bb.tar.gz
maven-javadir-resolver-06979fee03fbaf49ceeb133e87d26386df78b8bb.tar.xz
maven-javadir-resolver-06979fee03fbaf49ceeb133e87d26386df78b8bb.zip
Use DOM model again to solve performance issues
cleanups
-rw-r--r--src/main/java/org/fedoraproject/maven/artifact/repository/MavenJPackageDepmap.java166
1 files changed, 87 insertions, 79 deletions
diff --git a/src/main/java/org/fedoraproject/maven/artifact/repository/MavenJPackageDepmap.java b/src/main/java/org/fedoraproject/maven/artifact/repository/MavenJPackageDepmap.java
index 6d599df..035c9b4 100644
--- a/src/main/java/org/fedoraproject/maven/artifact/repository/MavenJPackageDepmap.java
+++ b/src/main/java/org/fedoraproject/maven/artifact/repository/MavenJPackageDepmap.java
@@ -6,19 +6,24 @@ import java.io.IOException;
import java.util.Hashtable;
import java.util.StringTokenizer;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
import org.xml.sax.SAXException;
import org.w3c.dom.*;
-import javax.xml.parsers.*;
-
-
-
-import javax.xml.xpath.*;
public class MavenJPackageDepmap {
+ private static class ArtifactDefinition {
+ String groupId = null;
+ String artifactId = null;
+ String version = null;
+ }
+
private static MavenJPackageDepmap instance;
private static Hashtable<String, String> jppArtifactMap;
@@ -37,15 +42,15 @@ public class MavenJPackageDepmap {
public Hashtable<String, String> getMappedInfo(Hashtable<String, String> mavenDep) {
return getMappedInfo((String) mavenDep.get("group"),
- (String) mavenDep.get("artifact"),
- (String) mavenDep.get("version"));
+ (String) mavenDep.get("artifact"),
+ (String) mavenDep.get("version"));
}
public Hashtable<String, String> getMappedInfo(String groupId, String artifactId, String version) {
Hashtable<String, String> jppDep;
String idToCheck, jppCombination;
-
+
if (System.getProperty("maven2.ignore.versions") == null && System.getProperty("maven2.jpp.mode") == null) {
idToCheck = groupId+","+artifactId+","+version;
} else {
@@ -108,15 +113,15 @@ public class MavenJPackageDepmap {
}
}
- @SuppressWarnings("restriction")
private static void processDepmapFile(String fileName) {
Document mapDocument;
- System.err.println("PDF: " + fileName);
+ debug("Loading depmap file: " + fileName);
try {
DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = fact.newDocumentBuilder();
- mapDocument = builder.parse(fileName);
+ fact.setNamespaceAware(true);
+ DocumentBuilder builder = fact.newDocumentBuilder();
+ mapDocument = builder.parse(fileName);
} catch (FileNotFoundException fnfe) {
System.err.println("ERROR: Unable to find map file: " + fileName);
fnfe.printStackTrace();
@@ -129,77 +134,80 @@ public class MavenJPackageDepmap {
System.err.println("ERROR: Parsing of depmap file failed - configuration");
pce.printStackTrace();
return;
- }
- catch (SAXException se) {
+ } catch (SAXException se) {
System.err.println("ERROR: Parsing of depmap file failed");
se.printStackTrace();
return;
}
- System.err.println("PARSED!");
- try {
- // NodeList depNodes = mapDocument.getDocumentElement().getElementsByTagName("dependency");
- XPathFactory factory = XPathFactory.newInstance();
- XPath xpath = factory.newXPath();
-
- // select depdenceny tag with one maven sub-element
- Object result = xpath.evaluate("//dependency[count(maven)=1]", mapDocument, XPathConstants.NODESET);
- NodeList depNodes = (NodeList) result;
-
- XPathExpression mGroupIdExpr = xpath.compile(".//maven/groupId");
- XPathExpression mArtifactIdExpr = xpath.compile(".//maven/artifactId");
- XPathExpression mVersionExpr = xpath.compile(".//maven/version");
-
- XPathExpression jppGroupIdExpr = xpath.compile(".//jpp/groupId");
- XPathExpression jppArtifactIdExpr = xpath.compile(".//jpp/artifactId");
- XPathExpression jppVersionExpr = xpath.compile(".//jpp/version");
-
- for (int i = 0; i < depNodes.getLength(); i++) {
- Node depNode = depNodes.item(i);
- String mV = null, jppG = null, jppA = null, jppV = null;
-
- String mG = ((Node) mGroupIdExpr.evaluate(depNode, XPathConstants.NODE)).getTextContent();
- String mA = ((Node) mArtifactIdExpr.evaluate(depNode, XPathConstants.NODE)).getTextContent();
- Node tempNode = ((Node) mVersionExpr.evaluate(depNode, XPathConstants.NODE));
- if (tempNode != null) {
- // version can be omitted
- mV = tempNode.getTextContent();
- }
-
- try {
- jppG = ((Node) jppGroupIdExpr.evaluate(depNode, XPathConstants.NODE)).getTextContent();
- jppA = ((Node) jppArtifactIdExpr.evaluate(depNode, XPathConstants.NODE)).getTextContent();
- jppV = ((Node) jppVersionExpr.evaluate(depNode, XPathConstants.NODE)).getTextContent();
- } catch (NullPointerException ex) {
- // drop this dependency - no jpp part found
- System.err.println("WARNING: JPP part for" + mG + ":" + mA + " not found. Dropping dependency");
- }
- // jppElem == null => drop this dependency
- if (jppG != null && jppA != null) {
-
- if (System.getProperty("maven2.ignore.versions") == null && System.getProperty("maven2.jpp.mode") == null) {
- debug("*** Adding: " + mG+","+mA+","+mV + " => " + jppG+","+jppA+","+jppV + " to map...");
- jppArtifactMap.put(mG+","+mA+","+mV, jppG+","+jppA+","+jppV);
- } else {
- debug("*** Adding: " + mG+","+mA + " => " + jppG+","+jppA+","+jppV + " to map...");
- jppArtifactMap.put(mG+","+mA, jppG+","+jppA+","+jppV);
- }
- //System.err.println("ADDED: " + mG+","+mA+","+mV+ " => "+ jppG+","+jppA+","+jppV);
- } else {
- debug("*** Adding: " + mG+","+mA+"," + " => " + "JPP/maven2,empty-dep,"+mV + " to map...");
- jppArtifactMap.put(mG+","+mA, "JPP/maven2,empty-dep,"+mV);
- //System.err.println("ADDED SOMETHING2!");
- }
- }
- }
- catch (XPathExpressionException ex) {
- System.err.println("ERROR: Setting up or evaluation of XPath expressions failed");
- ex.printStackTrace();
- return;
- }
+
+ NodeList depNodes = (NodeList) mapDocument.getElementsByTagName("dependency");
+
+ for (int i = 0; i < depNodes.getLength(); i++) {
+ Element depNode = (Element) depNodes.item(i);
+
+ NodeList mavenNodeList = (NodeList) depNode.getElementsByTagName("maven");
+ if (mavenNodeList.getLength() != 1) {
+ debug("Number of maven sub-elements is not 1. Bailing from depmap generation");
+ debug("Maven node: " + depNode.getTextContent());
+ return;
+ }
+ ArtifactDefinition mavenAD = getArtifactDefinition((Element) mavenNodeList.item(0));
+
+ ArtifactDefinition jppAD = null;
+ NodeList jppNodeList = (NodeList) depNode.getElementsByTagName("jpp");
+
+ if (jppNodeList.getLength() == 1) {
+ jppAD = getArtifactDefinition((Element) jppNodeList.item(0));
+ if (System.getProperty("maven2.ignore.versions") == null && System.getProperty("maven2.jpp.mode") == null) {
+ debug("*** Adding: " + mavenAD.groupId + "," + mavenAD.artifactId + "," + mavenAD.version + " => "
+ + jppAD.groupId + "," + jppAD.artifactId + "," + jppAD.version + " to map...");
+
+ jppArtifactMap.put(mavenAD.groupId + "," + mavenAD.artifactId + "," + mavenAD.version,
+ jppAD.groupId + "," + jppAD.artifactId + "," + jppAD.version);
+ } else {
+ debug("*** Adding: " + mavenAD.groupId+"," + mavenAD.artifactId + " => "
+ + jppAD.groupId + "," + jppAD.artifactId + "," + jppAD.version + " to map...");
+
+ jppArtifactMap.put(mavenAD.groupId+","+mavenAD.artifactId,
+ jppAD.groupId + "," + jppAD.artifactId + "," + jppAD.version);
+ }
+ } else {
+ debug("Number of jpp sub-elements is not 1. Dropping dependency");
+ debug("*** Adding: " + mavenAD.groupId+","+mavenAD.artifactId+"," + " => " + "JPP/maven2,empty-dep,"+mavenAD.version + " to map...");
+ jppArtifactMap.put(mavenAD.groupId+","+mavenAD.artifactId, "JPP/maven2,empty-dep,"+mavenAD.version);
+ }
+ }
}
- private static void debug(String msg) {
- if (System.getProperty("maven2.jpp.debug") != null)
- System.err.println(msg);
- }
+ private static ArtifactDefinition getArtifactDefinition(Element element) {
+ ArtifactDefinition ad = new ArtifactDefinition();
+
+ NodeList nodes = element.getElementsByTagName("groupId");
+ if (nodes.getLength() != 1) {
+ debug("groupId definition not found in depmap");
+ return null;
+ }
+ ad.groupId = nodes.item(0).getTextContent();
+
+ nodes = element.getElementsByTagName("artifactId");
+ if (nodes.getLength() != 1) {
+ debug("artifactId definition not found in depmap");
+ return null;
+ }
+ ad.artifactId = nodes.item(0).getTextContent();
+
+ nodes = element.getElementsByTagName("version");
+ if (nodes.getLength() != 1) {
+ ad.version = "DUMMY_VER";
+ } else {
+ ad.version = nodes.item(0).getTextContent();
+ }
+ return ad;
+ }
+
+
+ private static void debug(String msg) {
+ if (System.getProperty("maven2.jpp.debug") != null)
+ System.err.println(msg);
+ }
}