diff options
Diffstat (limited to 'src/java')
-rw-r--r-- | src/java/com/jogamp/common/util/GlueGenVersion.java (renamed from src/java/com/jogamp/common/util/VersionInfo.java) | 28 | ||||
-rw-r--r-- | src/java/com/jogamp/common/util/JogampVersion.java | 194 | ||||
-rw-r--r-- | src/java/com/jogamp/common/util/VersionUtil.java | 50 | ||||
-rw-r--r-- | src/java/com/jogamp/gluegen/GlueGen.java | 2 |
4 files changed, 228 insertions, 46 deletions
diff --git a/src/java/com/jogamp/common/util/VersionInfo.java b/src/java/com/jogamp/common/util/GlueGenVersion.java index 1e76812..09cd671 100644 --- a/src/java/com/jogamp/common/util/VersionInfo.java +++ b/src/java/com/jogamp/common/util/GlueGenVersion.java @@ -28,13 +28,31 @@ package com.jogamp.common.util; -public class VersionInfo { +import java.util.jar.Manifest; - public static StringBuffer getInfo(StringBuffer sb, String prefix) { - return VersionUtil.getInfo(VersionInfo.class.getClassLoader(), prefix, "com.jogamp.common.util", "VersionInfo", sb); +public class GlueGenVersion extends JogampVersion { + + protected static GlueGenVersion jogampCommonVersionInfo; + + protected GlueGenVersion(String packageName, Manifest mf) { + super(packageName, mf); + } + + public static GlueGenVersion getInstance() { + if(null == jogampCommonVersionInfo) { + synchronized(GlueGenVersion.class) { + if( null == jogampCommonVersionInfo ) { + final String packageName = "com.jogamp.common"; + final String fullClazzName = GlueGenVersion.class.getName(); + final Manifest mf = VersionUtil.getManifest(GlueGenVersion.class.getClassLoader(), fullClazzName); + jogampCommonVersionInfo = new GlueGenVersion(packageName, mf); + } + } + } + return jogampCommonVersionInfo; } public static void main(String args[]) { - System.err.println(VersionInfo.getInfo(null, "GlueGen")); + System.err.println(GlueGenVersion.getInstance().getInfo(null)); } -}
\ No newline at end of file +} diff --git a/src/java/com/jogamp/common/util/JogampVersion.java b/src/java/com/jogamp/common/util/JogampVersion.java new file mode 100644 index 0000000..229fd13 --- /dev/null +++ b/src/java/com/jogamp/common/util/JogampVersion.java @@ -0,0 +1,194 @@ +/** + * Copyright 2010 JogAmp Community. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of JogAmp Community. + */ + +package com.jogamp.common.util; + +import com.jogamp.common.os.Platform; +import java.util.Iterator; +import java.util.Set; +import java.util.jar.Attributes; +import java.util.jar.Manifest; + +public class JogampVersion { + + public static Attributes.Name IMPLEMENTATION_BRANCH = new Attributes.Name("Implementation-Branch"); + public static Attributes.Name IMPLEMENTATION_COMMIT = new Attributes.Name("Implementation-Commit"); + + private String packageName; + private Manifest mf; + private int hash; + private Attributes mainAttributes; + private Set/*<Attributes.Name>*/ mainAttributeNames; + + protected JogampVersion(String packageName, Manifest mf) { + this.packageName = packageName; + this.mf = mf; + this.hash = mf.hashCode(); + mainAttributes = mf.getMainAttributes(); + mainAttributeNames = mainAttributes.keySet(); + } + + public final int hashCode() { + return hash; + } + + public final boolean equals(Object o) { + if (o instanceof GlueGenVersion) { + return mf.equals(((GlueGenVersion) o).getManifest()); + } + return false; + } + + public final Manifest getManifest() { + return mf; + } + + public final String getPackageName() { + return packageName; + } + + public final String getAttribute(Attributes.Name attributeName) { + return (null != attributeName) ? (String) mainAttributes.get(attributeName) : null; + } + + public final String getAttribute(String attributeName) { + return getAttribute(getAttributeName(attributeName)); + } + + public final Attributes.Name getAttributeName(String attributeName) { + for (Iterator iter = mainAttributeNames.iterator(); iter.hasNext();) { + Attributes.Name an = (Attributes.Name) iter.next(); + if (an.toString().equals(attributeName)) { + return an; + } + } + return null; + } + + public final Set getAttributeNames() { + return mainAttributeNames; + } + + public final String getExtensionName() { + return this.getAttribute(Attributes.Name.EXTENSION_NAME); + } + + public final String getImplementationBranch() { + return this.getAttribute(GlueGenVersion.IMPLEMENTATION_BRANCH); + } + + public final String getImplementationCommit() { + return this.getAttribute(GlueGenVersion.IMPLEMENTATION_COMMIT); + } + + public final String getImplementationTitle() { + return this.getAttribute(Attributes.Name.IMPLEMENTATION_TITLE); + } + + public final String getImplementationVendor() { + return this.getAttribute(Attributes.Name.IMPLEMENTATION_VENDOR); + } + + public final String getImplementationVendorID() { + return this.getAttribute(Attributes.Name.IMPLEMENTATION_VENDOR_ID); + } + + public final String getImplementationVersion() { + return this.getAttribute(Attributes.Name.IMPLEMENTATION_VERSION); + } + + public final String getSpecificationTitle() { + return this.getAttribute(Attributes.Name.SPECIFICATION_TITLE); + } + + public final String getSpecificationVendor() { + return this.getAttribute(Attributes.Name.SPECIFICATION_VENDOR); + } + + public final String getSpecificationVersion() { + return this.getAttribute(Attributes.Name.SPECIFICATION_VERSION); + } + + public final StringBuffer getFullManifestInfo(StringBuffer sb) { + return VersionUtil.getFullManifestInfo(getManifest(), sb); + } + + public StringBuffer getManifestInfo(StringBuffer sb) { + if(null==sb) { + sb = new StringBuffer(); + } + sb.append("Package: "); + sb.append(getPackageName()); + sb.append(Platform.getNewline()); + sb.append("Specification Title: "); + sb.append(getSpecificationTitle()); + sb.append(Platform.getNewline()); + sb.append("Specification Vendor: "); + sb.append(getSpecificationVendor()); + sb.append(Platform.getNewline()); + sb.append("Specification Version: "); + sb.append(getSpecificationVersion()); + sb.append(Platform.getNewline()); + sb.append("Implementation Title: "); + sb.append(getImplementationTitle()); + sb.append(Platform.getNewline()); + sb.append("Implementation Vendor: "); + sb.append(getImplementationVendor()); + sb.append(Platform.getNewline()); + sb.append("Implementation Vendor ID: "); + sb.append(getImplementationVendorID()); + sb.append(Platform.getNewline()); + sb.append("Implementation Version: "); + sb.append(getImplementationVersion()); + sb.append(Platform.getNewline()); + sb.append("Implementation Branch: "); + sb.append(getImplementationBranch()); + sb.append(Platform.getNewline()); + sb.append("Implementation Commit: "); + sb.append(getImplementationCommit()); + sb.append(Platform.getNewline()); + return sb; + } + + public StringBuffer getInfo(StringBuffer sb) { + if(null==sb) { + sb = new StringBuffer(); + } + + sb.append(Platform.getNewline()); + sb.append("-----------------------------------------------------------------------------------------------------"); + sb.append(Platform.getNewline()); + VersionUtil.getPlatformInfo(sb); + sb.append(Platform.getNewline()); + getManifestInfo(sb); + sb.append("-----------------------------------------------------------------------------------------------------"); + sb.append(Platform.getNewline()); + + return sb; + } +} diff --git a/src/java/com/jogamp/common/util/VersionUtil.java b/src/java/com/jogamp/common/util/VersionUtil.java index 6138388..a4e625e 100644 --- a/src/java/com/jogamp/common/util/VersionUtil.java +++ b/src/java/com/jogamp/common/util/VersionUtil.java @@ -41,35 +41,16 @@ import java.util.jar.Manifest; public class VersionUtil { - public static StringBuffer getInfo(ClassLoader cl, String prefix, String pkgName, String clazzName, StringBuffer sb) { - - if(null==sb) { - sb = new StringBuffer(); - } - - sb.append(Platform.getNewline()); - sb.append("-----------------------------------------------------------------------------------------------------"); - sb.append(Platform.getNewline()); - getPlatformInfo(sb, prefix); - sb.append(Platform.getNewline()); - getManifestInfo(cl, prefix, pkgName, clazzName, sb); - sb.append("-----------------------------------------------------------------------------------------------------"); - sb.append(Platform.getNewline()); - - return sb; - } - - public static StringBuffer getPlatformInfo(StringBuffer sb, String prefix) { + public static StringBuffer getPlatformInfo(StringBuffer sb) { if(null==sb) { sb = new StringBuffer(); } - sb.append(prefix+" Platform: " + Platform.getOS() + " " + Platform.getOSVersion() + " (os), " + Platform.getArch() + " (arch)"); + sb.append("Platform: ").append(Platform.getOS()).append(" ").append(Platform.getOSVersion()).append(" (os), ").append(Platform.getArch()).append(" (arch)"); sb.append(Platform.getNewline()); - sb.append(prefix+" Platform: littleEndian " + Platform.isLittleEndian() + ", 32Bit "+Platform.is32Bit() + ", a-ptr bit-size "+Platform.getPointerSizeInBits()); + sb.append("Platform: littleEndian ").append(Platform.isLittleEndian()).append(", 32Bit ").append(Platform.is32Bit()).append(", a-ptr bit-size ").append(Platform.getPointerSizeInBits()); sb.append(Platform.getNewline()); - sb.append(prefix+" Platform: Java " + Platform.getJavaVersion()+", " - +Platform.getJavaVendor()+", "+Platform.getJavaVendorURL()+", is JavaSE: "+Platform.isJavaSE()); + sb.append("Platform: Java ").append(Platform.getJavaVersion()).append(", ").append(Platform.getJavaVendor()).append(", ").append(Platform.getJavaVendorURL()).append(", is JavaSE: ").append(Platform.isJavaSE()); sb.append(Platform.getNewline()); return sb; @@ -88,33 +69,20 @@ public class VersionUtil { return mf; } - public static StringBuffer getManifestInfo(ClassLoader cl, String prefix, - String pkgName, String className, StringBuffer sb) { - if(null==sb) { - sb = new StringBuffer(); - } - - Manifest mf = getManifest(cl, pkgName + "." + className); - - if(null==mf) { - sb.append("Manifest for <"); - sb.append(pkgName); - sb.append("> not available"); - sb.append(Platform.getNewline()); + public static StringBuffer getFullManifestInfo(Manifest mf, StringBuffer sb) { + if(null==mf) { return sb; } - sb.append(prefix); - sb.append(" package "); - sb.append(pkgName); - sb.append(Platform.getNewline()); + if(null==sb) { + sb = new StringBuffer(); + } Attributes attr = mf.getMainAttributes(); Set keys = attr.keySet(); for(Iterator iter=keys.iterator(); iter.hasNext(); ) { Attributes.Name key = (Attributes.Name) iter.next(); String val = attr.getValue(key); - sb.append(prefix); sb.append(" "); sb.append(key); sb.append(" = "); diff --git a/src/java/com/jogamp/gluegen/GlueGen.java b/src/java/com/jogamp/gluegen/GlueGen.java index 7a0ed3c..eccd1ca 100644 --- a/src/java/com/jogamp/gluegen/GlueGen.java +++ b/src/java/com/jogamp/gluegen/GlueGen.java @@ -39,6 +39,7 @@ */ package com.jogamp.gluegen; +import com.jogamp.common.util.GlueGenVersion; import java.io.*; import java.util.*; @@ -307,6 +308,7 @@ public class GlueGen implements GlueEmitterControls { public static void main(String... args) { if (args.length == 0) { + System.err.println(GlueGenVersion.getInstance().getInfo(null)); usage(); } |