diff options
author | Mark Donszelmann <Mark.Donszelmann@gmail.com> | 2009-10-01 14:33:24 +0200 |
---|---|---|
committer | Mark Donszelmann <Mark.Donszelmann@gmail.com> | 2009-10-01 14:33:24 +0200 |
commit | 846700d44b67b22835b57a1c04f17043db8323a3 (patch) | |
tree | a253ecd4ada6f80dbcd08177035cfa71ade9b670 /src/main/java/org/apache/maven/plugin/nar/NarInfo.java | |
parent | 0a8746644d70eb8b1cfb615c27155c19e09f46d3 (diff) | |
download | maven-nar-plugin-846700d44b67b22835b57a1c04f17043db8323a3.tar.gz maven-nar-plugin-846700d44b67b22835b57a1c04f17043db8323a3.tar.bz2 maven-nar-plugin-846700d44b67b22835b57a1c04f17043db8323a3.tar.xz maven-nar-plugin-846700d44b67b22835b57a1c04f17043db8323a3.zip |
Moved files in from freehep-nar-plugin version 2.0-alpha-11-SNAPSHOT
Diffstat (limited to 'src/main/java/org/apache/maven/plugin/nar/NarInfo.java')
-rw-r--r-- | src/main/java/org/apache/maven/plugin/nar/NarInfo.java | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/src/main/java/org/apache/maven/plugin/nar/NarInfo.java b/src/main/java/org/apache/maven/plugin/nar/NarInfo.java new file mode 100644 index 0000000..b34d9b2 --- /dev/null +++ b/src/main/java/org/apache/maven/plugin/nar/NarInfo.java @@ -0,0 +1,169 @@ +// Copyright FreeHEP, 2006-2007. +package org.freehep.maven.nar; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Iterator; +import java.util.Properties; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; + +import org.apache.maven.plugin.logging.Log; + +/** + * + * @author Mark Donszelmann + * @version $Id: plugin/src/main/java/org/freehep/maven/nar/NarInfo.java 0ee9148b7c6a 2007/09/20 18:42:29 duns $ + */ +public class NarInfo { + + public static final String NAR_PROPERTIES = "nar.properties"; + private String groupId, artifactId, version; + private Properties info; + private Log log; + + public NarInfo(String groupId, String artifactId, String version, Log log) { + this.groupId = groupId; + this.artifactId = artifactId; + this.version = version; + this.log = log; + info = new Properties(); + + // Fill with general properties.nar file + File propertiesDir = new File("src/main/resources/META-INF/nar/" + + groupId + "/" + artifactId); + if (!propertiesDir.exists()) { + propertiesDir.mkdirs(); + } + File propertiesFile = new File(propertiesDir, NarInfo.NAR_PROPERTIES); + try { + info.load(new FileInputStream(propertiesFile)); + } catch (IOException ioe) { + // ignored + } + + } + + public String toString() { + StringBuffer s = new StringBuffer("NarInfo for "); + s.append(groupId); + s.append(":"); + s.append(artifactId); + s.append("-"); + s.append(version); + s.append(" {\n"); + + for (Iterator i = info.keySet().iterator(); i.hasNext();) { + String key = (String) i.next(); + s.append(" "); + s.append(key); + s.append("='"); + s.append(info.getProperty(key, "<null>")); + s.append("'\n"); + } + + s.append("}\n"); + return s.toString(); + } + + public boolean exists(JarFile jar) { + return getNarPropertiesEntry(jar) != null; + } + + public void read(JarFile jar) throws IOException { + info.load(jar.getInputStream(getNarPropertiesEntry(jar))); + } + + private JarEntry getNarPropertiesEntry(JarFile jar) { + return jar.getJarEntry("META-INF/nar/" + groupId + "/" + artifactId + + "/" + NAR_PROPERTIES); + } + + /** + * No binding means default binding. + * + * @param aol + * @return + */ + public String getBinding(AOL aol, String defaultBinding) { + return getProperty(aol, "libs.binding", defaultBinding); + } + + public void setBinding(AOL aol, String value) { + setProperty(aol, "libs.binding", value); + } + + // FIXME replace with list of AttachedNarArtifacts + public String[] getAttachedNars(AOL aol, String type) { + String attachedNars = getProperty(aol, "nar." + type); + return attachedNars != null ? attachedNars.split(",") : null; + } + + public void addNar(AOL aol, String type, String nar) { + String nars = getProperty(aol, "nar." + type); + nars = (nars == null) ? nar : nars + ", " + nar; + setProperty(aol, "nar." + type, nars); + } + + public void setNar(AOL aol, String type, String nar) { + setProperty(aol, "nar." + type, nar); + } + + public AOL getAOL(AOL aol) { + return aol == null ? null : new AOL(getProperty(aol, aol.toString(), aol.toString())); + } + + public String getOptions(AOL aol) { + return getProperty(aol, "linker.options"); + } + + public String getLibs(AOL aol) { + return getProperty(aol, "libs.names", artifactId + "-" + version); + } + + public String getSysLibs(AOL aol) { + return getProperty(aol, "syslibs.names"); + } + + public void writeToFile(File file) throws IOException { + info.store(new FileOutputStream((file)), "NAR Properties for " + + groupId + "." + artifactId + "-" + version); + } + + private void setProperty(AOL aol, String key, String value) { + if (aol == null) { + info.setProperty(key, value); + } else { + info.setProperty(aol.toString() + "." + key, value); + } + } + + public String getProperty(AOL aol, String key) { + return getProperty(aol, key, (String)null); + } + + public String getProperty(AOL aol, String key, String defaultValue) { + if (key == null) + return defaultValue; + String value = info.getProperty(key, defaultValue); + value = aol == null ? value : info.getProperty(aol.toString() + "." + + key, value); + log.debug("getProperty(" + aol + ", " + key + ", " + + defaultValue + ") = " + value); + return value; + } + + public int getProperty(AOL aol, String key, int defaultValue) { + return Integer.parseInt(getProperty(aol, key, Integer.toString(defaultValue))); + } + + public boolean getProperty(AOL aol, String key, boolean defaultValue) { + return Boolean.parseBoolean(getProperty(aol, key, String.valueOf(defaultValue))); + } + + public File getProperty(AOL aol, String key, File defaultValue) { + return new File(getProperty(aol, key, defaultValue.getPath())); + } +} |