packages (JPACKAGE): maven/maven-JPackageRepositoryLayout.java (NEW), maven...
pawelz
pawelz at pld-linux.org
Thu Apr 29 15:31:43 CEST 2010
Author: pawelz Date: Thu Apr 29 13:31:43 2010 GMT
Module: packages Tag: JPACKAGE
---- Log message:
- raw files from JPP
---- Files affected:
packages/maven:
maven-JPackageRepositoryLayout.java (NONE -> 1.1.2.1) (NEW), maven-MavenJPackageDepmap.java (NONE -> 1.1.2.1) (NEW), maven-jpp-script (NONE -> 1.1.2.1) (NEW)
---- Diffs:
================================================================
Index: packages/maven/maven-JPackageRepositoryLayout.java
diff -u /dev/null packages/maven/maven-JPackageRepositoryLayout.java:1.1.2.1
--- /dev/null Thu Apr 29 15:31:43 2010
+++ packages/maven/maven-JPackageRepositoryLayout.java Thu Apr 29 15:31:38 2010
@@ -0,0 +1,140 @@
+package org.apache.maven.artifact.repository.layout;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+import org.xml.sax.InputSource;
+
+/**
+ * Repository layout for jpackage based repositories.
+ * This class resolves items for jpp style repos (i.e things located in
+ * /usr/share/java).
+ */
+
+public class JPackageRepositoryLayout
+ implements ArtifactRepositoryLayout
+{
+ private static Hashtable jppArtifactMap;
+
+ private static final char GROUP_SEPARATOR = '.';
+ private static final char PATH_SEPARATOR = '/';
+
+ public String pathOf( Artifact artifact )
+ {
+
+ ArtifactHandler artifactHandler = artifact.getArtifactHandler();
+ StringBuffer path = new StringBuffer();
+
+ String artifactId = artifact.getArtifactId();
+ String groupId = artifact.getGroupId();
+ String version = artifact.getVersion();
+ String classifierSuffix = (artifact.getClassifier() == null || artifact.getClassifier() == "") ?
+ "" : "-" + artifact.getClassifier();
+
+ if (!groupId.startsWith("JPP")) {
+ MavenJPackageDepmap map = MavenJPackageDepmap.getInstance();
+ Hashtable newInfo = map.getMappedInfo(groupId, artifactId, version);
+
+ groupId = (String) newInfo.get("group");
+ artifactId = (String) newInfo.get("artifact");
+ }
+
+ if (groupId.startsWith("JPP")) {
+ if (artifactHandler.getPackaging().equals("pom")) {
+ path = getPOMPath(groupId, artifactId);
+
+ } else { // Assume if it is not pom it is jar
+ // as "maven-plugin" type is a JAR
+ path.append( groupId ).append( '/' );
+ path.append( artifactId ).append(classifierSuffix).append( "." + artifactHandler.getExtension());
+ }
+ } else {
+ path.append( groupId.replace(GROUP_SEPARATOR, PATH_SEPARATOR) ).append( '/' ).append( artifactId ).append( '/' ).append( version ).append( '/' );
+ path.append( artifactId ).append( '-' ).append( version ).append( "." );
+ // Parent poms may come with type "xml"
+ if (artifactHandler.getPackaging().equals("xml")) {
+ path.append( "pom" );
+ } else {
+ path.append( artifactHandler.getPackaging() );
+ }
+ }
+
+ return path.toString();
+ }
+
+ private StringBuffer getPOMPath(String groupId, String artifactId) {
+
+ StringBuffer path = new StringBuffer();
+ String fName = groupId.replace(PATH_SEPARATOR, GROUP_SEPARATOR) + "-" + artifactId + ".pom";
+ path.append(System.getProperty("maven2.jpp.pom.path", "JPP/maven2/poms")).append("/").append(fName);
+ java.io.File f;
+
+ // NOTE: We are returning default_poms/ as the path for this pom
+ // even though it may not exist there. This may cause an error,
+ // but that is fine because if the pom is not there, there is
+ // a serious problem anyways..
+ f = new java.io.File(System.getProperty("maven2.jpp.default.repo", "/usr/share/maven2/repository") + "/" + path.toString());
+ System.err.println("Checking path " + f.getAbsolutePath() + " for the pom");
+ if (!f.exists()) {
+ System.err.println(f.getAbsolutePath() + " not found");
+ path = new StringBuffer();
+ path.append(System.getProperty("maven2.jpp.default.pom.path", "JPP/maven2/default_poms")).append("/").append(fName);
+ }
+
+ return path;
+ }
+
+ public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository )
+ {
+ return pathOfRepositoryMetadata( metadata, metadata.getLocalFilename( repository ) );
+ }
+
+ private String pathOfRepositoryMetadata( ArtifactMetadata metadata, String filename )
+ {
+
+ StringBuffer path = new StringBuffer();
+
+ if (filename.substring(filename.length()-4).equals(".pom")) {
+ path = getPOMPath(metadata.getGroupId(), metadata.getArtifactId());
+ } else {
+
+ // FIXME: If it gets here, something other than a pom was requested.. where are those things located?
+ path.append(System.getProperty("maven2.jpp.pom.path", "maven2/poms")).append("/").append(filename);
+ }
+
+ return path.toString();
+ }
+
+ public String pathOfRemoteRepositoryMetadata( ArtifactMetadata metadata )
+ {
+ return pathOfRepositoryMetadata( metadata, metadata.getRemoteFilename() );
+ }
+}
================================================================
Index: packages/maven/maven-MavenJPackageDepmap.java
diff -u /dev/null packages/maven/maven-MavenJPackageDepmap.java:1.1.2.1
--- /dev/null Thu Apr 29 15:31:43 2010
+++ packages/maven/maven-MavenJPackageDepmap.java Thu Apr 29 15:31:38 2010
@@ -0,0 +1,162 @@
+package org.apache.maven.artifact.repository.layout;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+import org.xml.sax.InputSource;
+
+public class MavenJPackageDepmap {
+
+ private static MavenJPackageDepmap instance;
+ private static Hashtable jppArtifactMap;
+
+ private MavenJPackageDepmap() {
+ jppArtifactMap = new Hashtable();
+ buildJppArtifactMap();
+ }
+
+ public static MavenJPackageDepmap getInstance() {
+ if (instance == null) {
+ instance = new MavenJPackageDepmap();
+ }
+
+ return instance;
+ }
+
+ public Hashtable getMappedInfo(Hashtable mavenDep) {
+ return getMappedInfo((String) mavenDep.get("group"),
+ (String) mavenDep.get("artifact"),
+ (String) mavenDep.get("version"));
+ }
+
+ public Hashtable getMappedInfo(String groupId, String artifactId, String version) {
+
+ Hashtable jppDep;
+ String idToCheck, jppCombination;
+
+ if (System.getProperty("maven2.ignore.versions") == null && System.getProperty("maven2.jpp.mode") == null) {
+ idToCheck = groupId+","+artifactId+","+version;
+ } else {
+ idToCheck = groupId+","+artifactId;
+ }
+
+ jppCombination = (String) jppArtifactMap.get(idToCheck);
+
+ //System.err.println("*** " + groupId+","+artifactId+","+version + " => " + jppCombination);
+
+ jppDep = new Hashtable();
+ if (jppCombination != null && jppCombination != "") {
+
+ StringTokenizer st = new StringTokenizer(jppCombination, ",");
+
+ jppDep.put("group", st.nextToken());
+ jppDep.put("artifact",st.nextToken());
+ jppDep.put("version",st.nextToken());
+
+ } else {
+ jppDep.put("group", groupId);
+ jppDep.put("artifact", artifactId);
+ jppDep.put("version", version);
+ }
+
+ return jppDep;
+ }
+
+
+ /**
+ * Returns whether or not the given dependency should be dropped.
+ */
+ public boolean shouldEliminate(String groupId, String artifactId, String version) {
+ String idToCheck;
+
+ if (System.getProperty("maven2.ignore.versions") == null && System.getProperty("maven2.jpp.mode") == null) {
+ idToCheck = groupId+","+artifactId+","+version;
+ } else {
+ idToCheck = groupId+","+artifactId;
+ }
+
+ return jppArtifactMap.get(idToCheck) != null && jppArtifactMap.get(idToCheck).equals("");
+
+ }
+
+ private static void buildJppArtifactMap() {
+
+ if (System.getProperty("maven2.ignore.versions") != null || System.getProperty("maven2.jpp.mode") != null) {
+ //System.err.println("Processing file: /usr/share/java-utils/xml/maven2-versionless-depmap.xml");
+ processDepmapFile("/etc/maven/maven2-versionless-depmap.xml");
+ }
+
+ //System.err.println("Processing file: /usr/share/java-utils/xml/maven2-depmap.xml");
+ processDepmapFile("/etc/maven/maven2-depmap.xml");
+
+ String customFileName = System.getProperty("maven2.jpp.depmap.file", null);
+ if (customFileName != null) {
+ //System.err.println("Processing file: " + customFileName);
+ processDepmapFile(customFileName);
+ }
+ }
+
+ private static void processDepmapFile(String fileName) {
+
+ Document mapDocument;
+
+ try {
+ mapDocument = (new SAXBuilder()).build(new InputSource(new FileInputStream(fileName)));
+ } catch (FileNotFoundException fnfe) {
+ System.err.println("ERROR: Unable to find map file: " + fileName);
+ fnfe.printStackTrace();
+ return;
+ } catch (IOException ioe) {
+ System.err.println("ERROR: I/O exception occured when opening map file");
+ ioe.printStackTrace();
+ return;
+ } catch (JDOMException jde) {
+ System.err.println("ERROR: Unable to instantiate parser");
+ jde.printStackTrace();
+ return;
+ }
+
+ List l = mapDocument.getRootElement().getChildren("dependency");
+
+ Iterator i = l.iterator();
+ while (i.hasNext()) {
+ Element depElement = (Element) i.next();
+
+ Element mElem = depElement.getChild("maven");
+ Element jppElem = depElement.getChild("jpp");
+
+ String mG = mElem.getChildText("groupId");
+ String mA = mElem.getChildText("artifactId");
+ String mV = mElem.getChildText("version");
+
+ // jppElem == null => drop this dependency
+ if (jppElem != null) {
+
+ String jppG = jppElem.getChildText("groupId");
+ String jppA = jppElem.getChildText("artifactId");
+ String jppV = jppElem.getChildText("version");
+ jppV = jppV != null && jppV.length() > 0 ? jppV : mV;
+
+ if (System.getProperty("maven2.ignore.versions") == null && System.getProperty("maven2.jpp.mode") == null) {
+ //System.err.println("*** Adding: " + mG+","+mA+","+mV + " => " + jppG+","+jppA+","+jppV + " to map...");
+ jppArtifactMap.put(mG+","+mA+","+mV, jppG+","+jppA+","+jppV);
+ } else {
+ //System.err.println("*** Adding: " + mG+","+mA + " => " + jppG+","+jppA+","+jppV + " to map...");
+ jppArtifactMap.put(mG+","+mA, jppG+","+jppA+","+jppV);
+ }
+ } else {
+ //System.err.println("*** Adding: " + mG+","+mA+"," + " => " + "JPP/maven2,empty-dep,"+mV + " to map...");
+ jppArtifactMap.put(mG+","+mA, "JPP/maven2,empty-dep,"+mV);
+ }
+ }
+ }
+}
================================================================
Index: packages/maven/maven-jpp-script
diff -u /dev/null packages/maven/maven-jpp-script:1.1.2.1
--- /dev/null Thu Apr 29 15:31:43 2010
+++ packages/maven/maven-jpp-script Thu Apr 29 15:31:38 2010
@@ -0,0 +1,10 @@
+#!/bin/sh
+if [ -f /usr/share/java-utils/java-functions ] ; then
+ . /usr/share/java-utils/java-functions
+ set_jvm
+ set_javacmd
+fi
+
+export M2_HOME=/usr/share/maven2
+echo $JAVA_HOME
+export JAVA_HOME; $M2_HOME/bin/mvn -Dmaven2.offline.mode -Dmaven2.ignore.versions -Dmaven2.usejppjars $@
================================================================
More information about the pld-cvs-commit
mailing list