You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by da...@apache.org on 2005/06/08 00:32:52 UTC
svn commit: r189461 [3/3] - in /cocoon/whiteboard/osgi: ./ ant/
ant/html_template/ ant/src/ ant/src/org/ ant/src/org/knopflerfish/
ant/src/org/knopflerfish/ant/ ant/src/org/knopflerfish/ant/taskdefs/
ant/src/org/knopflerfish/ant/taskdefs/bundle/ bundles/ bundles/cocoon/
bundles/cocoon/src/ bundles/cocoon_testcase/ bundles/cocoon_testcase/src/
bundles/cocoon_testcase/src/org/ bundles/cocoon_testcase/src/org/apache/
bundles/cocoon_testcase/src/org/apache/cocoon/
bundles/cocoon_testcase/src/org/apache/cocoon/service/
bundles/cocoon_testcase/src/org/apache/cocoon/service/cocoon_testcase/
bundles/cocoon_testcase/src/org/apache/cocoon/service/cocoon_testcase/impl/
bundles/test/ bundles/test/src/ bundles/test/src/org/
bundles/test/src/org/apache/ bundles/test/src/org/apache/cocoon/
bundles/test/src/org/apache/cocoon/service/
bundles/test/src/org/apache/cocoon/service/test/
bundles/test/src/org/apache/cocoon/service/test/impl/ jars-external/
jars-external/junit/ jars/ legal/
Added: cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/EE.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/EE.java?rev=189461&view=auto
==============================================================================
--- cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/EE.java (added)
+++ cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/EE.java Tue Jun 7 15:32:48 2005
@@ -0,0 +1,1152 @@
+/*
+ * Copyright (c) 2003, KNOPFLERFISH project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * - 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.
+ *
+ * - Neither the name of the KNOPFLERFISH project nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE
+ * COPYRIGHT OWNER 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.
+ */
+
+package org.knopflerfish.ant.taskdefs.bundle;
+
+import java.util.Hashtable;
+
+/**
+ * Utility class with static methods for checking classes with
+ * the standard OSGi profiles. See r3.book.pdf för details.
+ */
+public class EE {
+
+
+
+ final static String[] EE_MINIMUM = {
+ "java.io.BufferedInputStream",
+ "java.io.FilterInputStream",
+ "java.io.InputStream",
+ "java.io.IOException",
+ "java.io.Serializable",
+ "java.io.PrintStream",
+ "java.io.FilterOutputStream",
+ "java.io.OutputStream",
+ "java.io.PrintWriter",
+ "java.io.Writer",
+ "java.io.UnsupportedEncodingException",
+ "java.io.BufferedOutputStream",
+ "java.io.BufferedReader",
+ "java.io.Reader",
+ "java.io.BufferedWriter",
+ "java.io.ByteArrayInputStream",
+ "java.io.ByteArrayOutputStream",
+ "java.io.CharConversionException",
+ "java.io.DataInput",
+ "java.io.DataInputStream",
+ "java.io.DataOutput",
+ "java.io.DataOutputStream",
+ "java.io.EOFException",
+ "java.io.Externalizable",
+ "java.io.ObjectInput",
+ "java.io.ObjectOutput",
+ "java.io.File",
+ "java.io.FileDescriptor",
+ "java.io.SyncFailedException",
+ "java.io.FileInputStream",
+ "java.io.FileNotFoundException",
+ "java.io.FileOutputStream",
+ "java.io.FilePermission",
+ "java.io.FileReader",
+ "java.io.InputStreamReader",
+ "java.io.FileWriter",
+ "java.io.OutputStreamWriter",
+ "java.io.InterruptedIOException",
+ "java.io.InvalidClassException",
+ "java.io.ObjectStreamException",
+ "java.io.InvalidObjectException",
+ "java.io.NotActiveException",
+ "java.io.NotSerializableException",
+ "java.io.ObjectInputStream$GetField",
+ "java.io.ObjectInputStream",
+ "java.io.ObjectStreamConstants",
+ "java.io.StreamCorruptedException",
+ "java.io.ObjectStreamClass",
+ "java.io.OptionalDataException",
+ "java.io.ObjectInputValidation",
+ "java.io.SerializablePermission",
+ "java.io.ObjectStreamField",
+ "java.io.ObjectOutputStream$PutField",
+ "java.io.ObjectOutputStream",
+ "java.io.PushbackInputStream",
+ "java.io.RandomAccessFile",
+ "java.io.StringReader",
+ "java.io.StringWriter",
+ "java.io.UTFDataFormatException",
+ "java.io.WriteAbortedException",
+ "java.lang.ref.PhantomReference",
+ "java.lang.ref.Reference",
+ "java.lang.ref.ReferenceQueue",
+ "java.lang.ref.SoftReference",
+ "java.lang.ref.WeakReference",
+ "java.lang.reflect.Constructor",
+ "java.lang.reflect.AccessibleObject",
+ "java.lang.reflect.Member",
+ "java.lang.reflect.Field",
+ "java.lang.reflect.Method",
+ "java.lang.reflect.InvocationTargetException",
+ "java.lang.reflect.Array",
+ "java.lang.reflect.InvocationHandler",
+ "java.lang.reflect.Modifier",
+ "java.lang.reflect.Proxy",
+ "java.lang.reflect.ReflectPermission",
+ "java.lang.reflect.UndeclaredThrowableException",
+ "java.lang.Object",
+ "java.lang.Exception",
+ "java.lang.Throwable",
+ "java.lang.CloneNotSupportedException",
+ "java.lang.Class",
+ "java.lang.String",
+ "java.lang.Comparable",
+ "java.lang.InterruptedException",
+ "java.lang.ClassNotFoundException",
+ "java.lang.ClassLoader",
+ "java.lang.NoSuchMethodException",
+ "java.lang.SecurityException",
+ "java.lang.RuntimeException",
+ "java.lang.NoSuchFieldException",
+ "java.lang.IllegalAccessException",
+ "java.lang.InstantiationException",
+ "java.lang.ClassFormatError",
+ "java.lang.LinkageError",
+ "java.lang.Error",
+ "java.lang.IllegalArgumentException",
+ "java.lang.StringBuffer",
+ "java.lang.AbstractMethodError",
+ "java.lang.IncompatibleClassChangeError",
+ "java.lang.ArithmeticException",
+ "java.lang.ArrayIndexOutOfBoundsException",
+ "java.lang.IndexOutOfBoundsException",
+ "java.lang.ArrayStoreException",
+ "java.lang.Boolean",
+ "java.lang.Byte",
+ "java.lang.Number",
+ "java.lang.NumberFormatException",
+ "java.lang.Character",
+ "java.lang.ClassCastException",
+ "java.lang.ClassCircularityError",
+ "java.lang.Cloneable",
+ "java.lang.Double",
+ "java.lang.ExceptionInInitializerError",
+ "java.lang.Float",
+ "java.lang.IllegalAccessError",
+ "java.lang.IllegalMonitorStateException",
+ "java.lang.IllegalStateException",
+ "java.lang.IllegalThreadStateException",
+ "java.lang.InstantiationError",
+ "java.lang.Integer",
+ "java.lang.InternalError",
+ "java.lang.VirtualMachineError",
+ "java.lang.Long",
+ "java.lang.Math",
+ "java.lang.NegativeArraySizeException",
+ "java.lang.NoClassDefFoundError",
+ "java.lang.NoSuchFieldError",
+ "java.lang.NoSuchMethodError",
+ "java.lang.NullPointerException",
+ "java.lang.OutOfMemoryError",
+ "java.lang.Process",
+ "java.lang.Runnable",
+ "java.lang.Runtime",
+ "java.lang.RuntimePermission",
+ "java.lang.SecurityManager",
+ "java.lang.Thread",
+ "java.lang.ThreadGroup",
+ "java.lang.Short",
+ "java.lang.System",
+ "java.lang.Void",
+ "java.lang.StackOverflowError",
+ "java.lang.StringIndexOutOfBoundsException",
+ "java.lang.ThreadDeath",
+ "java.lang.UnknownError",
+ "java.lang.UnsatisfiedLinkError",
+ "java.lang.UnsupportedOperationException",
+ "java.lang.VerifyError",
+ "java.net.URL",
+ "java.net.URLStreamHandlerFactory",
+ "java.net.MalformedURLException",
+ "java.net.URLStreamHandler",
+ "java.net.URLConnection",
+ "java.net.InetAddress",
+ "java.net.FileNameMap",
+ "java.net.ContentHandlerFactory",
+ "java.net.UnknownHostException",
+ "java.net.ContentHandler",
+ "java.net.Authenticator",
+ "java.net.PasswordAuthentication",
+ "java.net.BindException",
+ "java.net.SocketException",
+ "java.net.ConnectException",
+ "java.net.DatagramPacket",
+ "java.net.DatagramSocket",
+ "java.net.DatagramSocketImpl",
+ "java.net.SocketOptions",
+ "java.net.HttpURLConnection",
+ "java.net.ProtocolException",
+ "java.net.JarURLConnection",
+ "java.net.MulticastSocket",
+ "java.net.NetPermission",
+ "java.net.NoRouteToHostException",
+ "java.net.ServerSocket",
+ "java.net.Socket",
+ "java.net.SocketImpl",
+ "java.net.SocketImplFactory",
+ "java.net.SocketPermission",
+ "java.net.URLDecoder",
+ "java.net.URLEncoder",
+ "java.net.UnknownServiceException",
+ "java.security.cert.Certificate",
+ "java.security.ProtectionDomain",
+ "java.security.CodeSource",
+ "java.security.PermissionCollection",
+ "java.security.Permission",
+ "java.security.BasicPermission",
+ "java.security.AccessControlContext",
+ "java.security.AccessControlException",
+ "java.security.AccessController",
+ "java.security.PrivilegedAction",
+ "java.security.PrivilegedExceptionAction",
+ "java.security.PrivilegedActionException",
+ "java.security.AllPermission",
+ "java.security.Permissions",
+ "java.security.Policy",
+ "java.security.Principal",
+ "java.security.Security",
+ "java.security.SecurityPermission",
+ "java.security.UnresolvedPermission",
+ "java.util.zip.CRC32",
+ "java.util.zip.Checksum",
+ "java.util.zip.DataFormatException",
+ "java.util.zip.Inflater",
+ "java.util.zip.InflaterInputStream",
+ "java.util.zip.ZipConstants",
+ "java.util.zip.ZipEntry",
+ "java.util.zip.ZipException",
+ "java.util.zip.ZipFile",
+ "java.util.zip.ZipInputStream",
+ "java.util.Comparator",
+ "java.util.Enumeration",
+ "java.util.Properties",
+ "java.util.Hashtable",
+ "java.util.Dictionary",
+ "java.util.Map$Entry",
+ "java.util.Map",
+ "java.util.Set",
+ "java.util.Collection",
+ "java.util.Iterator",
+ "java.util.AbstractCollection",
+ "java.util.AbstractList",
+ "java.util.List",
+ "java.util.ListIterator",
+ "java.util.AbstractMap",
+ "java.util.AbstractSequentialList",
+ "java.util.AbstractSet",
+ "java.util.ArrayList",
+ "java.util.Arrays",
+ "java.util.Calendar",
+ "java.util.TimeZone",
+ "java.util.Date",
+ "java.util.Collections",
+ "java.util.Random",
+ "java.util.SortedMap",
+ "java.util.SortedSet",
+ "java.util.ConcurrentModificationException",
+ "java.util.EventListener",
+ "java.util.EventObject",
+ "java.util.GregorianCalendar",
+ "java.util.ListResourceBundle",
+ "java.util.ResourceBundle",
+ "java.util.MissingResourceException",
+ "java.util.Locale",
+ "java.util.NoSuchElementException",
+ "java.util.PropertyPermission",
+ "java.util.PropertyResourceBundle",
+ "java.util.SimpleTimeZone",
+ "java.util.StringTokenizer",
+ "java.util.Vector",
+ "java.util.WeakHashMap",
+ };
+
+ final static String[] EE_FOUNDATION = {
+ "java.io.BufferedInputStream",
+ "java.io.FilterInputStream",
+ "java.io.InputStream",
+ "java.io.IOException",
+ "java.io.Serializable",
+ "java.io.PrintStream",
+ "java.io.FilterOutputStream",
+ "java.io.OutputStream",
+ "java.io.PrintWriter",
+ "java.io.Writer",
+ "java.io.UnsupportedEncodingException",
+ "java.io.ObjectStreamException",
+ "java.io.BufferedOutputStream",
+ "java.io.BufferedReader",
+ "java.io.Reader",
+ "java.io.BufferedWriter",
+ "java.io.ByteArrayInputStream",
+ "java.io.ByteArrayOutputStream",
+ "java.io.CharArrayReader",
+ "java.io.CharArrayWriter",
+ "java.io.CharConversionException",
+ "java.io.DataInput",
+ "java.io.DataInputStream",
+ "java.io.DataOutput",
+ "java.io.DataOutputStream",
+ "java.io.EOFException",
+ "java.io.Externalizable",
+ "java.io.ObjectInput",
+ "java.io.ObjectOutput",
+ "java.io.File",
+ "java.io.FilenameFilter",
+ "java.io.FileFilter",
+ "java.io.FileDescriptor",
+ "java.io.SyncFailedException",
+ "java.io.FileInputStream",
+ "java.io.FileNotFoundException",
+ "java.io.FileOutputStream",
+ "java.io.FilePermission",
+ "java.io.FileReader",
+ "java.io.InputStreamReader",
+ "java.io.FileWriter",
+ "java.io.OutputStreamWriter",
+ "java.io.FilterReader",
+ "java.io.FilterWriter",
+ "java.io.InterruptedIOException",
+ "java.io.InvalidClassException",
+ "java.io.InvalidObjectException",
+ "java.io.LineNumberReader",
+ "java.io.NotActiveException",
+ "java.io.NotSerializableException",
+ "java.io.ObjectInputStream$GetField",
+ "java.io.ObjectInputStream",
+ "java.io.ObjectStreamConstants",
+ "java.io.StreamCorruptedException",
+ "java.io.ObjectStreamClass",
+ "java.io.OptionalDataException",
+ "java.io.ObjectInputValidation",
+ "java.io.SerializablePermission",
+ "java.io.ObjectStreamField",
+ "java.io.ObjectOutputStream",
+ "java.io.ObjectOutputStream$PutField",
+ "java.io.PipedInputStream",
+ "java.io.PipedOutputStream",
+ "java.io.PipedReader",
+ "java.io.PipedWriter",
+ "java.io.PushbackInputStream",
+ "java.io.PushbackReader",
+ "java.io.RandomAccessFile",
+ "java.io.SequenceInputStream",
+ "java.io.StreamTokenizer",
+ "java.io.StringReader",
+ "java.io.StringWriter",
+ "java.io.UTFDataFormatException",
+ "java.io.WriteAbortedException",
+ "java.lang.ref.PhantomReference",
+ "java.lang.ref.Reference",
+ "java.lang.ref.ReferenceQueue",
+ "java.lang.ref.SoftReference",
+ "java.lang.ref.WeakReference",
+ "java.lang.reflect.Constructor",
+ "java.lang.reflect.AccessibleObject",
+ "java.lang.reflect.Member",
+ "java.lang.reflect.Field",
+ "java.lang.reflect.Method",
+ "java.lang.reflect.InvocationTargetException",
+ "java.lang.reflect.Array",
+ "java.lang.reflect.InvocationHandler",
+ "java.lang.reflect.Modifier",
+ "java.lang.reflect.Proxy",
+ "java.lang.reflect.ReflectPermission",
+ "java.lang.reflect.UndeclaredThrowableException",
+ "java.lang.Object",
+ "java.lang.Exception",
+ "java.lang.Throwable",
+ "java.lang.CloneNotSupportedException",
+ "java.lang.Class",
+ "java.lang.String",
+ "java.lang.Comparable",
+ "java.lang.InterruptedException",
+ "java.lang.ClassNotFoundException",
+ "java.lang.ClassLoader",
+ "java.lang.NoSuchMethodException",
+ "java.lang.SecurityException",
+ "java.lang.RuntimeException",
+ "java.lang.NoSuchFieldException",
+ "java.lang.IllegalAccessException",
+ "java.lang.InstantiationException",
+ "java.lang.Package",
+ "java.lang.StringBuffer",
+ "java.lang.Cloneable",
+ "java.lang.ClassFormatError",
+ "java.lang.LinkageError",
+ "java.lang.Error",
+ "java.lang.IllegalArgumentException",
+ "java.lang.NumberFormatException",
+ "java.lang.AbstractMethodError",
+ "java.lang.IncompatibleClassChangeError",
+ "java.lang.ArithmeticException",
+ "java.lang.ArrayIndexOutOfBoundsException",
+ "java.lang.IndexOutOfBoundsException",
+ "java.lang.ArrayStoreException",
+ "java.lang.Boolean",
+ "java.lang.Byte",
+ "java.lang.Number",
+ "java.lang.Character$Subset",
+ "java.lang.Character$UnicodeBlock",
+ "java.lang.Character",
+ "java.lang.ClassCastException",
+ "java.lang.ClassCircularityError",
+ "java.lang.Compiler",
+ "java.lang.Double",
+ "java.lang.ExceptionInInitializerError",
+ "java.lang.Float",
+ "java.lang.IllegalAccessError",
+ "java.lang.IllegalMonitorStateException",
+ "java.lang.IllegalStateException",
+ "java.lang.IllegalThreadStateException",
+ "java.lang.InheritableThreadLocal",
+ "java.lang.ThreadLocal",
+ "java.lang.InstantiationError",
+ "java.lang.Integer",
+ "java.lang.InternalError",
+ "java.lang.VirtualMachineError",
+ "java.lang.Long",
+ "java.lang.Math",
+ "java.lang.NegativeArraySizeException",
+ "java.lang.NoClassDefFoundError",
+ "java.lang.Process",
+ "java.lang.NoSuchFieldError",
+ "java.lang.NoSuchMethodError",
+ "java.lang.NullPointerException",
+ "java.lang.OutOfMemoryError",
+ "java.lang.Runnable",
+ "java.lang.Runtime",
+ "java.lang.Thread",
+ "java.lang.ThreadGroup",
+ "java.lang.RuntimePermission",
+ "java.lang.SecurityManager",
+ "java.lang.Short",
+ "java.lang.StackOverflowError",
+ "java.lang.StrictMath",
+ "java.lang.StringIndexOutOfBoundsException",
+ "java.lang.System",
+ "java.lang.ThreadDeath",
+ "java.lang.UnknownError",
+ "java.lang.UnsatisfiedLinkError",
+ "java.lang.UnsupportedClassVersionError",
+ "java.lang.UnsupportedOperationException",
+ "java.lang.VerifyError",
+ "java.lang.Void",
+ "java.math.BigInteger",
+ "java.net.URL",
+ "java.net.URLStreamHandlerFactory",
+ "java.net.MalformedURLException",
+ "java.net.URLStreamHandler",
+ "java.net.URLConnection",
+ "java.net.InetAddress",
+ "java.net.FileNameMap",
+ "java.net.ContentHandlerFactory",
+ "java.net.UnknownHostException",
+ "java.net.ContentHandler",
+ "java.net.Authenticator",
+ "java.net.PasswordAuthentication",
+ "java.net.BindException",
+ "java.net.SocketException",
+ "java.net.ConnectException",
+ "java.net.DatagramPacket",
+ "java.net.DatagramSocket",
+ "java.net.DatagramSocketImplFactory",
+ "java.net.DatagramSocketImpl",
+ "java.net.SocketOptions",
+ "java.net.HttpURLConnection",
+ "java.net.ProtocolException",
+ "java.net.JarURLConnection",
+ "java.net.MulticastSocket",
+ "java.net.NetPermission",
+ "java.net.NoRouteToHostException",
+ "java.net.ServerSocket",
+ "java.net.Socket",
+ "java.net.SocketImpl",
+ "java.net.SocketImplFactory",
+ "java.net.SocketPermission",
+ "java.net.URLClassLoader",
+ "java.net.URLDecoder",
+ "java.net.URLEncoder",
+ "java.net.UnknownServiceException",
+ "java.security.acl.Acl",
+ "java.security.acl.Owner",
+ "java.security.acl.AclEntry",
+ "java.security.acl.NotOwnerException",
+ "java.security.acl.Permission",
+ "java.security.acl.LastOwnerException",
+ "java.security.acl.AclNotFoundException",
+ "java.security.acl.Group",
+ "java.security.cert.Certificate$CertificateRep",
+ "java.security.cert.Certificate",
+ "java.security.cert.CertificateEncodingException",
+ "java.security.cert.CertificateException",
+ "java.security.cert.CRL",
+ "java.security.cert.CRLException",
+ "java.security.cert.CertificateExpiredException",
+ "java.security.cert.CertificateFactory",
+ "java.security.cert.CertificateFactorySpi",
+ "java.security.cert.CertificateNotYetValidException",
+ "java.security.cert.CertificateParsingException",
+ "java.security.cert.X509CRL",
+ "java.security.cert.X509Extension",
+ "java.security.cert.X509CRLEntry",
+ "java.security.cert.X509Certificate",
+ "java.security.interfaces.DSAKey",
+ "java.security.interfaces.DSAParams",
+ "java.security.interfaces.DSAKeyPairGenerator",
+ "java.security.interfaces.DSAPrivateKey",
+ "java.security.interfaces.DSAPublicKey",
+ "java.security.interfaces.RSAKey",
+ "java.security.interfaces.RSAPrivateCrtKey",
+ "java.security.interfaces.RSAPrivateKey",
+ "java.security.interfaces.RSAPublicKey",
+ "java.security.spec.AlgorithmParameterSpec",
+ "java.security.spec.InvalidParameterSpecException",
+ "java.security.spec.KeySpec",
+ "java.security.spec.InvalidKeySpecException",
+ "java.security.spec.DSAParameterSpec",
+ "java.security.spec.DSAPrivateKeySpec",
+ "java.security.spec.DSAPublicKeySpec",
+ "java.security.spec.EncodedKeySpec",
+ "java.security.spec.PKCS8EncodedKeySpec",
+ "java.security.spec.RSAKeyGenParameterSpec",
+ "java.security.spec.RSAPrivateCrtKeySpec",
+ "java.security.spec.RSAPrivateKeySpec",
+ "java.security.spec.RSAPublicKeySpec",
+ "java.security.spec.X509EncodedKeySpec",
+ "java.security.ProtectionDomain",
+ "java.security.CodeSource",
+ "java.security.PermissionCollection",
+ "java.security.Permission",
+ "java.security.Guard",
+ "java.security.GeneralSecurityException",
+ "java.security.PublicKey",
+ "java.security.Key",
+ "java.security.NoSuchAlgorithmException",
+ "java.security.InvalidKeyException",
+ "java.security.KeyException",
+ "java.security.NoSuchProviderException",
+ "java.security.SignatureException",
+ "java.security.BasicPermission",
+ "java.security.SecureClassLoader",
+ "java.security.AccessControlContext",
+ "java.security.DomainCombiner",
+ "java.security.AccessControlException",
+ "java.security.AccessController",
+ "java.security.PrivilegedAction",
+ "java.security.PrivilegedExceptionAction",
+ "java.security.PrivilegedActionException",
+ "java.security.AlgorithmParameterGenerator",
+ "java.security.AlgorithmParameterGeneratorSpi",
+ "java.security.AlgorithmParameters",
+ "java.security.AlgorithmParametersSpi",
+ "java.security.Provider",
+ "java.security.SecureRandom",
+ "java.security.SecureRandomSpi",
+ "java.security.InvalidAlgorithmParameterException",
+ "java.security.AllPermission",
+ "java.security.Certificate",
+ "java.security.Principal",
+ "java.security.DigestException",
+ "java.security.DigestInputStream",
+ "java.security.MessageDigest",
+ "java.security.MessageDigestSpi",
+ "java.security.DigestOutputStream",
+ "java.security.GuardedObject",
+ "java.security.Identity",
+ "java.security.IdentityScope",
+ "java.security.KeyManagementException",
+ "java.security.InvalidParameterException",
+ "java.security.KeyFactory",
+ "java.security.KeyFactorySpi",
+ "java.security.PrivateKey",
+ "java.security.KeyPair",
+ "java.security.KeyPairGenerator",
+ "java.security.KeyPairGeneratorSpi",
+ "java.security.KeyStore",
+ "java.security.KeyStoreSpi",
+ "java.security.KeyStoreException",
+ "java.security.UnrecoverableKeyException",
+ "java.security.Permissions",
+ "java.security.Policy",
+ "java.security.ProviderException",
+ "java.security.Security",
+ "java.security.SecurityPermission",
+ "java.security.Signature",
+ "java.security.SignatureSpi",
+ "java.security.SignedObject",
+ "java.security.Signer",
+ "java.security.UnresolvedPermission",
+ "java.text.resources.BreakIteratorRules",
+ "java.text.resources.BreakIteratorRules_th",
+ "java.text.Annotation",
+ "java.text.AttributedCharacterIterator$Attribute",
+ "java.text.AttributedCharacterIterator",
+ "java.text.CharacterIterator",
+ "java.text.AttributedString",
+ "java.text.BreakIterator",
+ "java.text.ChoiceFormat",
+ "java.text.NumberFormat",
+ "java.text.Format",
+ "java.text.FieldPosition",
+ "java.text.ParsePosition",
+ "java.text.ParseException",
+ "java.text.CollationElementIterator",
+ "java.text.RuleBasedCollator",
+ "java.text.Collator",
+ "java.text.CollationKey",
+ "java.text.DateFormat",
+ "java.text.DateFormatSymbols",
+ "java.text.DecimalFormat",
+ "java.text.DecimalFormatSymbols",
+ "java.text.MessageFormat",
+ "java.text.SimpleDateFormat",
+ "java.text.StringCharacterIterator",
+ "java.util.jar.Attributes$Name",
+ "java.util.jar.Attributes",
+ "java.util.jar.JarEntry",
+ "java.util.jar.Manifest",
+ "java.util.jar.JarFile",
+ "java.util.jar.JarException",
+ "java.util.jar.JarInputStream",
+ "java.util.jar.JarOutputStream",
+ "java.util.zip.ZipEntry",
+ "java.util.zip.ZipConstants",
+ "java.util.zip.ZipFile",
+ "java.util.zip.ZipException",
+ "java.util.zip.ZipInputStream",
+ "java.util.zip.InflaterInputStream",
+ "java.util.zip.Inflater",
+ "java.util.zip.DataFormatException",
+ "java.util.zip.ZipOutputStream",
+ "java.util.zip.DeflaterOutputStream",
+ "java.util.zip.Deflater",
+ "java.util.zip.Adler32",
+ "java.util.zip.Checksum",
+ "java.util.zip.CRC32",
+ "java.util.zip.CheckedInputStream",
+ "java.util.zip.CheckedOutputStream",
+ "java.util.zip.GZIPInputStream",
+ "java.util.zip.GZIPOutputStream",
+ "java.util.Locale",
+ "java.util.Comparator",
+ "java.util.Enumeration",
+ "java.util.MissingResourceException",
+ "java.util.Properties",
+ "java.util.Hashtable",
+ "java.util.Dictionary",
+ "java.util.Map$Entry",
+ "java.util.Map",
+ "java.util.Set",
+ "java.util.Collection",
+ "java.util.Iterator",
+ "java.util.Random",
+ "java.util.Date",
+ "java.util.Calendar",
+ "java.util.TimeZone",
+ "java.util.ListResourceBundle",
+ "java.util.ResourceBundle",
+ "java.util.AbstractCollection",
+ "java.util.AbstractList",
+ "java.util.List",
+ "java.util.ListIterator",
+ "java.util.AbstractMap",
+ "java.util.AbstractSequentialList",
+ "java.util.AbstractSet",
+ "java.util.ArrayList",
+ "java.util.Arrays",
+ "java.util.BitSet",
+ "java.util.Collections",
+ "java.util.SortedMap",
+ "java.util.SortedSet",
+ "java.util.ConcurrentModificationException",
+ "java.util.EmptyStackException",
+ "java.util.EventListener",
+ "java.util.EventObject",
+ "java.util.GregorianCalendar",
+ "java.util.HashMap",
+ "java.util.HashSet",
+ "java.util.LinkedList",
+ "java.util.NoSuchElementException",
+ "java.util.Observable",
+ "java.util.Observer",
+ "java.util.PropertyPermission",
+ "java.util.PropertyResourceBundle",
+ "java.util.SimpleTimeZone",
+ "java.util.Stack",
+ "java.util.Vector",
+ "java.util.StringTokenizer",
+ "java.util.Timer",
+ "java.util.TimerTask",
+ "java.util.TooManyListenersException",
+ "java.util.TreeMap",
+ "java.util.TreeSet",
+ "java.util.WeakHashMap",
+ "javax.microedition.io.Connection",
+ "javax.microedition.io.ConnectionNotFoundException",
+ "javax.microedition.io.Connector",
+ "javax.microedition.io.ContentConnection",
+ "javax.microedition.io.StreamConnection",
+ "javax.microedition.io.InputConnection",
+ "javax.microedition.io.OutputConnection",
+ "javax.microedition.io.Datagram",
+ "javax.microedition.io.DatagramConnection",
+ "javax.microedition.io.HttpConnection",
+ "javax.microedition.io.StreamConnectionNotifier",
+ };
+
+
+ final static String[] EE_SMF = {
+ "java.io.BufferedInputStream",
+ "java.io.BufferedOutputStream",
+ "java.io.BufferedReader",
+ "java.io.BufferedWriter$1",
+ "java.io.BufferedWriter",
+ "java.io.ByteArrayInputStream",
+ "java.io.ByteArrayOutputStream",
+ "java.io.CharConversionException",
+ "java.io.DataInput",
+ "java.io.DataInputStream",
+ "java.io.DataOutput",
+ "java.io.DataOutputStream",
+ "java.io.EmulatedFields$ObjectSlot",
+ "java.io.EmulatedFields",
+ "java.io.EmulatedFieldsForDumping",
+ "java.io.EmulatedFieldsForLoading",
+ "java.io.EOFException",
+ "java.io.Externalizable",
+ "java.io.File$1",
+ "java.io.File$2",
+ "java.io.File",
+ "java.io.FileDescriptor",
+ "java.io.FileInputStream",
+ "java.io.FileNotFoundException",
+ "java.io.FileOutputStream",
+ "java.io.FilePermission$1",
+ "java.io.FilePermission",
+ "java.io.FilePermissionCollection",
+ "java.io.FileReader",
+ "java.io.FileWriter",
+ "java.io.FilterInputStream",
+ "java.io.FilterOutputStream",
+ "java.io.InputStream",
+ "java.io.InputStreamReader$1",
+ "java.io.InputStreamReader",
+ "java.io.InterruptedIOException",
+ "java.io.InvalidClassException",
+ "java.io.InvalidObjectException",
+ "java.io.IOException",
+ "java.io.NotActiveException",
+ "java.io.NotSerializableException",
+ "java.io.ObjectInput",
+ "java.io.ObjectInputStream$1",
+ "java.io.ObjectInputStream$2",
+ "java.io.ObjectInputStream$GetField",
+ "java.io.ObjectInputStream$InputValidationDesc",
+ "java.io.ObjectInputStream",
+ "java.io.ObjectInputValidation",
+ "java.io.ObjectOutput",
+ "java.io.ObjectOutputStream$1",
+ "java.io.ObjectOutputStream$2",
+ "java.io.ObjectOutputStream$PutField",
+ "java.io.ObjectOutputStream",
+ "java.io.ObjectStreamClass$1",
+ "java.io.ObjectStreamClass$2",
+ "java.io.ObjectStreamClass$3",
+ "java.io.ObjectStreamClass$4",
+ "java.io.ObjectStreamClass$5",
+ "java.io.ObjectStreamClass$6",
+ "java.io.ObjectStreamClass",
+ "java.io.ObjectStreamConstants",
+ "java.io.ObjectStreamException",
+ "java.io.ObjectStreamField$1",
+ "java.io.ObjectStreamField",
+ "java.io.OptionalDataException",
+ "java.io.OutputStream",
+ "java.io.OutputStreamWriter$1",
+ "java.io.OutputStreamWriter",
+ "java.io.PrintStream$1",
+ "java.io.PrintStream",
+ "java.io.PrintWriter$1",
+ "java.io.PrintWriter",
+ "java.io.PushbackInputStream",
+ "java.io.RandomAccessFile",
+ "java.io.Reader",
+ "java.io.Serializable",
+ "java.io.SerializablePermission",
+ "java.io.StreamCorruptedException",
+ "java.io.StringReader",
+ "java.io.StringWriter",
+ "java.io.SyncFailedException",
+ "java.io.UnsupportedEncodingException",
+ "java.io.UTFDataFormatException",
+ "java.io.WriteAbortedException",
+ "java.io.Writer",
+ "java.lang.AbstractMethodError",
+ "java.lang.ArithmeticException",
+ "java.lang.ArrayIndexOutOfBoundsException",
+ "java.lang.ArrayStoreException",
+ "java.lang.Boolean",
+ "java.lang.Byte",
+ "java.lang.Character",
+ "java.lang.Class",
+ "java.lang.ClassCastException",
+ "java.lang.ClassCircularityError",
+ "java.lang.ClassFormatError",
+ "java.lang.ClassLoader$1",
+ "java.lang.ClassLoader$2",
+ "java.lang.ClassLoader",
+ "java.lang.ClassNotFoundException",
+ "java.lang.Cloneable",
+ "java.lang.CloneNotSupportedException",
+ "java.lang.Comparable",
+ "java.lang.Double",
+ "java.lang.Error",
+ "java.lang.Exception",
+ "java.lang.ExceptionInInitializerError",
+ "java.lang.Float",
+ "java.lang.IllegalAccessError",
+ "java.lang.IllegalAccessException",
+ "java.lang.IllegalArgumentException",
+ "java.lang.IllegalMonitorStateException",
+ "java.lang.IllegalStateException",
+ "java.lang.IllegalThreadStateException",
+ "java.lang.IncompatibleClassChangeError",
+ "java.lang.IndexOutOfBoundsException",
+ "java.lang.InstantiationError",
+ "java.lang.InstantiationException",
+ "java.lang.Integer",
+ "java.lang.InternalError",
+ "java.lang.InterruptedException",
+ "java.lang.LinkageError",
+ "java.lang.Long",
+ "java.lang.Math",
+ "java.lang.NegativeArraySizeException",
+ "java.lang.NoClassDefFoundError",
+ "java.lang.NoSuchFieldError",
+ "java.lang.NoSuchFieldException",
+ "java.lang.NoSuchMethodError",
+ "java.lang.NoSuchMethodException",
+ "java.lang.NullPointerException",
+ "java.lang.Number",
+ "java.lang.NumberFormatException",
+ "java.lang.Object",
+ "java.lang.OutOfMemoryError",
+ "java.lang.Process",
+ "java.lang.ref.PhantomReference",
+ "java.lang.ref.Reference",
+ "java.lang.ref.ReferenceQueue",
+ "java.lang.ref.SoftReference",
+ "java.lang.ref.WeakReference",
+ "java.lang.reflect.AccessibleObject",
+ "java.lang.reflect.Array",
+ "java.lang.reflect.Constructor",
+ "java.lang.reflect.Field",
+ "java.lang.reflect.InvocationHandler",
+ "java.lang.reflect.InvocationTargetException",
+ "java.lang.reflect.Member",
+ "java.lang.reflect.Method",
+ "java.lang.reflect.Modifier",
+ "java.lang.reflect.Proxy",
+ "java.lang.reflect.ReflectPermission",
+ "java.lang.reflect.UndeclaredThrowableException",
+ "java.lang.Runnable",
+ "java.lang.Runtime",
+ "java.lang.RuntimeException",
+ "java.lang.RuntimePermission",
+ "java.lang.SecurityException",
+ "java.lang.SecurityManager$1",
+ "java.lang.SecurityManager$2",
+ "java.lang.SecurityManager",
+ "java.lang.Short",
+ "java.lang.StackOverflowError",
+ "java.lang.StackTraceElement",
+ "java.lang.String$CaseInsensitiveComparator",
+ "java.lang.String",
+ "java.lang.StringBuffer",
+ "java.lang.StringIndexOutOfBoundsException",
+ "java.lang.System",
+ "java.lang.Thread",
+ "java.lang.ThreadDeath",
+ "java.lang.ThreadGroup",
+ "java.lang.Throwable",
+ "java.lang.UnknownError",
+ "java.lang.UnsatisfiedLinkError",
+ "java.lang.UnsupportedOperationException",
+ "java.lang.VerifyError",
+ "java.lang.VirtualMachineError",
+ "java.lang.Void",
+ "java.net.Authenticator",
+ "java.net.BindException",
+ "java.net.ConnectException",
+ "java.net.ContentHandler",
+ "java.net.ContentHandlerFactory",
+ "java.net.DatagramPacket",
+ "java.net.DatagramSocket$1",
+ "java.net.DatagramSocket",
+ "java.net.DatagramSocketImpl",
+ "java.net.FileNameMap",
+ "java.net.HttpURLConnection",
+ "java.net.InetAddress$1",
+ "java.net.InetAddress$Cache",
+ "java.net.InetAddress$CacheElement",
+ "java.net.InetAddress",
+ "java.net.JarURLConnection",
+ "java.net.MalformedURLException",
+ "java.net.MulticastSocket",
+ "java.net.NetPermission",
+ "java.net.NoRouteToHostException",
+ "java.net.PasswordAuthentication",
+ "java.net.PlainDatagramSocketImpl$1",
+ "java.net.PlainDatagramSocketImpl",
+ "java.net.PlainSocketImpl$1",
+ "java.net.PlainSocketImpl$2",
+ "java.net.PlainSocketImpl$3",
+ "java.net.PlainSocketImpl",
+ "java.net.ProtocolException",
+ "java.net.ServerSocket",
+ "java.net.Socket",
+ "java.net.SocketException",
+ "java.net.SocketImpl",
+ "java.net.SocketImplFactory",
+ "java.net.SocketInputStream",
+ "java.net.SocketOptions",
+ "java.net.SocketOutputStream",
+ "java.net.SocketPermission",
+ "java.net.SocketPermissionCollection",
+ "java.net.Socks4Message",
+ "java.net.UnknownHostException",
+ "java.net.UnknownServiceException",
+ "java.net.URL$1",
+ "java.net.URL",
+ "java.net.URLConnection$1",
+ "java.net.URLConnection$2",
+ "java.net.URLConnection$DefaultContentHandler",
+ "java.net.URLConnection",
+ "java.net.URLDecoder",
+ "java.net.URLEncoder",
+ "java.net.URLStreamHandler",
+ "java.net.URLStreamHandlerFactory",
+ "java.security.AccessControlContext",
+ "java.security.AccessControlException",
+ "java.security.AccessController",
+ "java.security.AllPermission",
+ "java.security.AllPermissionCollection",
+ "java.security.BasicPermission",
+ "java.security.BasicPermissionCollection",
+ "java.security.cert.Certificate",
+ "java.security.CodeSource",
+ "java.security.Permission",
+ "java.security.PermissionCollection$1",
+ "java.security.PermissionCollection",
+ "java.security.Permissions$PermissionsEnumeration",
+ "java.security.Permissions",
+ "java.security.PermissionsHash",
+ "java.security.Policy",
+ "java.security.Principal",
+ "java.security.PrivilegedAction",
+ "java.security.PrivilegedActionException",
+ "java.security.PrivilegedExceptionAction",
+ "java.security.ProtectionDomain$1",
+ "java.security.ProtectionDomain",
+ "java.security.Security",
+ "java.security.SecurityPermission",
+ "java.security.UnresolvedPermission",
+ "java.security.UnresolvedPermissionCollection$1",
+ "java.security.UnresolvedPermissionCollection",
+ "java.util.AbstractCollection",
+ "java.util.AbstractList$FullListIterator",
+ "java.util.AbstractList$SimpleListIterator",
+ "java.util.AbstractList$SubList$SubListIterator",
+ "java.util.AbstractList$SubList",
+ "java.util.AbstractList",
+ "java.util.AbstractMap$1",
+ "java.util.AbstractMap$2",
+ "java.util.AbstractMap$3",
+ "java.util.AbstractMap$4",
+ "java.util.AbstractMap",
+ "java.util.AbstractSequentialList",
+ "java.util.AbstractSet",
+ "java.util.ArrayList",
+ "java.util.Arrays$ArrayList",
+ "java.util.Arrays",
+ "java.util.Calendar",
+ "java.util.Collection",
+ "java.util.Collections$1",
+ "java.util.Collections$2",
+ "java.util.Collections$3",
+ "java.util.Collections$4",
+ "java.util.Collections$5",
+ "java.util.Collections$6",
+ "java.util.Collections$7",
+ "java.util.Collections$8",
+ "java.util.Collections$9",
+ "java.util.Collections$CopiesList",
+ "java.util.Collections$EmptyList",
+ "java.util.Collections$EmptyMap",
+ "java.util.Collections$EmptySet",
+ "java.util.Collections$ReverseComparator",
+ "java.util.Collections$SingletonList",
+ "java.util.Collections$SingletonMap",
+ "java.util.Collections$SingletonSet",
+ "java.util.Collections$SynchronizedCollection",
+ "java.util.Collections$SynchronizedList",
+ "java.util.Collections$SynchronizedMap",
+ "java.util.Collections$SynchronizedSet",
+ "java.util.Collections$SynchronizedSortedMap",
+ "java.util.Collections$SynchronizedSortedSet",
+ "java.util.Collections$UnmodifiableCollection",
+ "java.util.Collections$UnmodifiableList",
+ "java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry",
+ "java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet",
+ "java.util.Collections$UnmodifiableMap",
+ "java.util.Collections$UnmodifiableSet",
+ "java.util.Collections$UnmodifiableSortedMap",
+ "java.util.Collections$UnmodifiableSortedSet",
+ "java.util.Collections",
+ "java.util.Comparator",
+ "java.util.ConcurrentModificationException",
+ "java.util.Date",
+ "java.util.Dictionary",
+ "java.util.Enumeration",
+ "java.util.EventListener",
+ "java.util.EventObject",
+ "java.util.GregorianCalendar",
+ "java.util.HashMapEntry",
+ "java.util.Hashtable$1",
+ "java.util.Hashtable$2",
+ "java.util.Hashtable$3",
+ "java.util.Hashtable$4",
+ "java.util.Hashtable$5",
+ "java.util.Hashtable$6",
+ "java.util.Hashtable$EmptyEnumerator",
+ "java.util.Hashtable$HashEnumerator",
+ "java.util.Hashtable$HashIterator",
+ "java.util.Hashtable",
+ "java.util.Iterator",
+ "java.util.List",
+ "java.util.ListIterator",
+ "java.util.ListResourceBundle$1",
+ "java.util.ListResourceBundle",
+ "java.util.Locale$1",
+ "java.util.Locale",
+ "java.util.Map$Entry",
+ "java.util.Map",
+ "java.util.MapEntry$Type",
+ "java.util.MapEntry",
+ "java.util.MissingResourceException",
+ "java.util.NoSuchElementException",
+ "java.util.Properties$1",
+ "java.util.Properties",
+ "java.util.PropertyPermission",
+ "java.util.PropertyPermissionCollection",
+ "java.util.PropertyResourceBundle$1",
+ "java.util.PropertyResourceBundle",
+ "java.util.Random",
+ "java.util.ResourceBundle$1",
+ "java.util.ResourceBundle$MissingBundle",
+ "java.util.ResourceBundle",
+ "java.util.Set",
+ "java.util.SimpleTimeZone",
+ "java.util.SortedMap",
+ "java.util.SortedSet",
+ "java.util.StringTokenizer",
+ "java.util.TimeZone$1",
+ "java.util.TimeZone",
+ "java.util.TimeZones",
+ "java.util.Vector$1",
+ "java.util.Vector",
+ "java.util.WeakHashMap$1",
+ "java.util.WeakHashMap$HashIterator",
+ "java.util.WeakHashMap$KeyEntry",
+ "java.util.WeakHashMap$WeakHashMapEntry",
+ "java.util.WeakHashMap",
+ "java.util.zip.Checksum",
+ "java.util.zip.CRC32",
+ "java.util.zip.DataFormatException",
+ "java.util.zip.Inflater",
+ "java.util.zip.InflaterInputStream",
+ "java.util.zip.ZipConstants",
+ "java.util.zip.ZipEntry",
+ "java.util.zip.ZipException",
+ "java.util.zip.ZipFile$ZFEnum",
+ "java.util.zip.ZipFile",
+ "java.util.zip.ZipInputStream",
+ };
+
+ static Hashtable foundationMap = new Hashtable();
+ static Hashtable minimumMap = new Hashtable();
+ static Hashtable smfMap = new Hashtable();
+
+
+ /**
+ * Check if a class is allowed by the "Foundation" profile.
+ */
+ public static boolean isFoundation(String className) {
+ return foundationMap.containsKey(className);
+ }
+
+ /**
+ * Check if a class is allowed by the "Mimimum" profile.
+ */
+ public static boolean isMinimum(String className) {
+ return minimumMap.containsKey(className);
+ }
+
+ /**
+ * Check if a class is allowed by the "Mimimum" profile.
+ */
+ public static boolean isSMF(String className) {
+ return smfMap.containsKey(className);
+ }
+
+
+ static {
+ for(int i = 0; i < EE_FOUNDATION.length; i++) {
+ foundationMap.put(EE_FOUNDATION[i], "");
+ }
+
+ for(int i = 0; i < EE_MINIMUM.length; i++) {
+ minimumMap.put(EE_MINIMUM[i], "");
+ }
+ for(int i = 0; i < EE_MINIMUM.length; i++) {
+ smfMap.put(EE_MINIMUM[i], "");
+ }
+ }
+
+}
Added: cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/OBRExtractorTask.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/OBRExtractorTask.java?rev=189461&view=auto
==============================================================================
--- cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/OBRExtractorTask.java (added)
+++ cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/OBRExtractorTask.java Tue Jun 7 15:32:48 2005
@@ -0,0 +1,390 @@
+/*
+ * Copyright (c) 2003, KNOPFLERFISH project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * - 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.
+ *
+ * - Neither the name of the KNOPFLERFISH project nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE
+ * COPYRIGHT OWNER 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.
+ */
+
+package org.knopflerfish.ant.taskdefs.bundle;
+
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.types.FileSet;
+import org.apache.tools.ant.util.FileUtils;
+import org.apache.tools.ant.util.StringUtils;
+import org.apache.tools.ant.util.JavaEnvUtils;
+
+import org.apache.bcel.Constants;
+import org.apache.bcel.classfile.*;
+import org.apache.bcel.generic.Type;
+import org.apache.bcel.generic.BasicType;
+
+import java.io.*;
+import java.util.*;
+import java.util.jar.*;
+import java.util.zip.*;
+
+/**
+ * <p>
+ * Task that analyzes a set of bundle jar files and builds OBR XML
+ * documentation from these bundles.
+ * </p>
+ *
+ * <p>
+ * Bundle jar files files are analyzed using the static manifest attributes.
+ * </p>
+ *
+ * <h3>Parameters</h3>
+ *
+ * <table border=>
+ * <tr>
+ * <td valign=top><b>Attribute</b></td>
+ * <td valign=top><b>Description</b></td>
+ * <td valign=top><b>Required</b></td>
+ * </tr>
+ *
+ * <tr>
+ * <td valign=top>baseDir</td>
+ * <td valign=top>
+ * Base directory for scanning for jar files.
+ * </td>
+ * <td valign=top>No.<br> Default value is "."</td>
+ * </tr>
+ *
+ * <tr>
+ * <td valign=top>baseURL</td>
+ * <td valign=top>
+ * Base URL for generated bundleupdate locations.
+ * </td>
+ * <td valign=top>No.<br> Default value is ""</td>
+ * </tr>
+ *
+ * <tr>
+ * <td valign=top>outFile</td>
+ * <td valign=top>
+ * File name of generated repository XML file
+ * </td>
+ * <td valign=top>No.<br> Default value is "repository.xml"</td>
+ * </tr>
+ *
+ * <tr>
+ * <td valign=top>repoName</td>
+ * <td valign=top>
+ * Repository name
+ * </td>
+ * <td valign=top>No.<br> Default value is "Knopflerfish bundle repository"</td>
+ * </tr>
+ *
+ * <h3>Parameters specified as nested elements</h3>
+ * <h4>fileset</h4>
+ *
+ * (required)<br>
+ * <p>
+ * All jar files must be specified as a fileset. If there exists
+ * jar files
+ * <code>[prefix]_all-[suffix].jar</code> and
+ * <code>[prefix]-[suffix].jar</code>,
+ * <b>only</b>
+ * <code>[prefix]-_all-[suffix].jar</code> will be included.
+ * </p>
+ *
+ */
+public class OBRExtractorTask extends Task {
+
+ private Vector filesets = new Vector();
+ private FileUtils fileUtils;
+
+ private File baseDir = new File(".");
+ private String baseURL = "";
+ private String outFile = "repository.xml";
+ private String repoName = "Knopflerfish bundle repository";
+ private String repoXSLURL = "";
+
+ public OBRExtractorTask() {
+
+ fileUtils = FileUtils.newFileUtils();
+
+ }
+
+ public void setBaseDir(String s) {
+ this.baseDir = new File((new File(s)).getAbsolutePath());
+ }
+
+ public void setBaseURL(String s) {
+ this.baseURL = s;
+ }
+
+ public void setRepoXSLURL(String s) {
+ this.repoXSLURL = s;
+ }
+
+ public void setOutFile(String s) {
+ this.outFile = s;
+ }
+
+ public void setRepoName(String s) {
+ this.repoName = s;
+ }
+
+ public void addFileset(FileSet set) {
+ filesets.addElement(set);
+ }
+
+ // File -> BundleInfo
+ Map jarMap = new HashMap();
+
+ // Implements Task
+ public void execute() throws BuildException {
+ if (filesets.size() == 0) {
+ throw new BuildException("No fileset specified");
+ }
+
+ jarMap = new HashMap();
+
+ System.out.println("loading bundle info...");
+
+ try {
+ for (int i = 0; i < filesets.size(); i++) {
+ FileSet fs = (FileSet) filesets.elementAt(i);
+ DirectoryScanner ds = fs.getDirectoryScanner(project);
+ File projDir = fs.getDir(project);
+
+ String[] srcFiles = ds.getIncludedFiles();
+ String[] srcDirs = ds.getIncludedDirectories();
+
+ for (int j = 0; j < srcFiles.length ; j++) {
+ File file = new File(projDir, srcFiles[j]);
+ if(file.getName().endsWith(".jar")) {
+ jarMap.put(file, new BundleInfo(file));
+ }
+ }
+ }
+
+ Set removeSet = new HashSet();
+
+ for(Iterator it = jarMap.keySet().iterator(); it.hasNext();) {
+ File file = (File)it.next();
+ String name = file.getAbsolutePath();
+ if(-1 != name.indexOf("_all-")) {
+ File f2 = new File(Util.replace(name, "_all-", "-"));
+ removeSet.add(f2);
+ System.out.println("skip " + f2);
+ }
+ }
+
+ if(removeSet.size() > 0) {
+ System.out.println("skipping " + removeSet.size() + " bundles");
+ }
+
+ for(Iterator it = removeSet.iterator(); it.hasNext();) {
+ File f = (File)it.next();
+ jarMap.remove(f);
+ }
+
+ System.out.println("analyzing " + jarMap.size() + " bundles");
+
+ for(Iterator it = jarMap.keySet().iterator(); it.hasNext();) {
+ File file = (File)it.next();
+ BundleInfo info = (BundleInfo)jarMap.get(file);
+
+ info.load();
+ }
+
+ System.out.println("writing bundle OBR to " + outFile);
+
+ OutputStream out = null;
+ try {
+ out = new FileOutputStream(outFile);
+ PrintStream ps = new PrintStream(out);
+
+ ps.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+ if(repoXSLURL != null && !"".equals(repoXSLURL)) {
+ ps.println("<?xml-stylesheet type=\"text/xsl\" href=\"" +
+ repoXSLURL + "\"?>");
+ }
+ ps.println("");
+ ps.println("<!-- Generated by " + getClass().getName() +
+ " -->");
+ ps.println("");
+ ps.println("<bundles>");
+ ps.print(" <repository-bundle-name>");
+ ps.print(repoName);
+ ps.println("</repository-bundle-name>");
+ ps.println(" <date>" + (new Date()) + "</date>");
+ ps.println(" <dtd-version>1.0</dtd-version>");
+
+ for(Iterator it = jarMap.keySet().iterator(); it.hasNext();) {
+ File file = (File)it.next();
+ BundleInfo info = (BundleInfo)jarMap.get(file);
+
+ info.writeBundleXML(ps);
+ }
+ ps.println("</bundles>");
+ ps.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ try { out.close(); } catch (Exception ignored) { }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new BuildException("Failed to extract bundle info: " + e, e);
+ }
+ }
+
+ class BundleInfo {
+ File file;
+ Attributes attribs;
+ String path;
+ Map pkgExportMap;
+ Map pkgImportMap;
+
+ public BundleInfo(File file) throws IOException {
+ this.file = file;
+ path = Util.replace(file.getCanonicalPath().substring(1 + baseDir.getCanonicalPath().length()), "\\", "/");
+ }
+
+ public void load() throws Exception {
+ JarFile jarFile = new JarFile(file);
+ Manifest mf = jarFile.getManifest();
+ attribs = mf.getMainAttributes();
+
+ pkgExportMap = parseNames(attribs.getValue("Export-Package"));
+ pkgImportMap = parseNames(attribs.getValue("Import-Package"));
+
+ }
+
+
+ Map parseNames(String s) {
+
+ Map map = new TreeMap();
+
+ // System.out.println(file + ": " + s);
+ if(s != null) {
+ s = s.trim();
+ String[] lines = Util.splitwords(s, ",", '\"');
+ for(int i = 0; i < lines.length; i++) {
+ String[] words = Util.splitwords(lines[i].trim(), ";", '\"');
+ if(words.length < 1) {
+ throw new RuntimeException("bad package spec '" + s + "'");
+ }
+ String spec = ArrayInt.UNDEF;
+ String name = words[0].trim();
+
+ for(int j = 1; j < words.length; j++) {
+ String[] info = Util.splitwords(words[j], "=", '\"');
+
+ if(info.length == 2) {
+ if("specification-version".equals(info[0].trim())) {
+ spec = info[1].trim();
+ }
+ }
+ }
+
+ ArrayInt version = new ArrayInt(spec);
+
+ map.put(name, spec);
+ }
+ }
+
+ return map;
+ }
+
+ public void writeBundleXML(PrintStream out) throws IOException {
+
+ out.println("");
+ out.println(" <!-- " + path + " -->");
+ out.println(" <bundle>");
+
+ printAttrib(out, "bundle-name", "Bundle-Name");
+ printAttrib(out, "bundle-version", "Bundle-Version");
+ printAttrib(out, "bundle-docurl", "Bundle-DocURL");
+ printAttrib(out, "bundle-category", "Bundle-Category");
+ printAttrib(out, "bundle-vendor", "Bundle-Vendor");
+ printAttrib(out, "bundle-description", "Bundle-Description");
+ printAttrib(out, "bundle-subversionurl", "Bundle-SubversionURL");
+ printAttrib(out, "bundle-apivendor", "Bundle-APIVendor");
+ printAttrib(out, "bundle-uuid", "Bundle-UUID");
+ printAttrib(out, "application-icon", "Application-Icon");
+
+
+ out.print(" <bundle-updatelocation>");
+ out.print(baseURL + path);
+ out.println("</bundle-updatelocation>");
+
+ dumpPackages(out, "export-package", pkgExportMap);
+ dumpPackages(out, "import-package", pkgImportMap);
+
+ out.print(" <bundle-filesize>");
+ out.print(Long.toString(file.length()));
+ out.println("</bundle-filesize>");
+
+
+ out.println(" </bundle>");
+
+ }
+
+ void dumpPackages(PrintStream out, String tag, Map map) {
+ for(Iterator it = map.keySet().iterator(); it.hasNext();) {
+ String pkg = (String)it.next();
+ String spec = (String)map.get(pkg);
+ boolean bSkip = false;
+ if("import-package".equals(tag)) {
+ String exportSpec = (String)pkgExportMap.get(pkg);
+ if(exportSpec != null && spec.equals(exportSpec)) {
+ // Skip import of exported packages
+ bSkip = true;
+ }
+ }
+ if(bSkip) {
+ out.println(" <!-- skip import " + pkg + "; " + spec + " -->");
+ } else {
+ out.print(" <" + tag + " package=\"" + pkg + "\"");
+ if("".equals(spec)) {
+ out.println("/>");
+ } else {
+ out.println("\n specification-version=\"" + spec + "\"/>");
+ }
+ }
+ }
+ }
+
+ void printAttrib(PrintStream out, String tag, String key) {
+ String val = attribs.getValue(key);
+ if(val == null) {
+ val = "";
+ }
+ out.println(" <" + tag + ">" + val + "</" + tag + ">");
+ }
+ }
+}
+
+
Added: cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/OSGiPackage.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/OSGiPackage.java?rev=189461&view=auto
==============================================================================
--- cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/OSGiPackage.java (added)
+++ cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/OSGiPackage.java Tue Jun 7 15:32:48 2005
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2004, KNOPFLERFISH project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * - 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.
+ *
+ * - Neither the name of the KNOPFLERFISH project nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE
+ * COPYRIGHT OWNER 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.
+ */
+
+package org.knopflerfish.ant.taskdefs.bundle;
+
+
+/**
+ * @author Kaspar Weilenmann <kaspar@weilenmann.se>
+ */
+public class OSGiPackage {
+
+ // private fields
+
+ private String name = null;
+ private String version = null;
+
+
+ // public methods
+
+ public String getName() { return name; }
+ public void setName(String name) { this.name = name; }
+
+ public String getVersion() { return version; }
+ public void setVersion(String version) { this.version = version; }
+
+} // OSGiPackage
Added: cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/Util.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/Util.java?rev=189461&view=auto
==============================================================================
--- cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/Util.java (added)
+++ cocoon/whiteboard/osgi/ant/src/org/knopflerfish/ant/taskdefs/bundle/Util.java Tue Jun 7 15:32:48 2005
@@ -0,0 +1,273 @@
+/*
+ * Copyright (c) 2003, KNOPFLERFISH project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * - 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.
+ *
+ * - Neither the name of the KNOPFLERFISH project nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE
+ * COPYRIGHT OWNER 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.
+ */
+
+package org.knopflerfish.ant.taskdefs.bundle;
+
+import java.net.*;
+import java.io.*;
+import java.util.*;
+
+/**
+ * Misc static utility code.
+ */
+public class Util {
+ public static byte [] loadURL(URL url) throws IOException {
+ int bufSize = 1024 * 2;
+ byte [] buf = new byte[bufSize];
+
+ ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ BufferedInputStream in = new BufferedInputStream(url.openStream());
+ int n;
+ while ((n = in.read(buf)) > 0) {
+ bout.write(buf, 0, n);
+ }
+ try { in.close(); } catch (Exception ignored) { }
+ return bout.toByteArray();
+ }
+
+ public static String loadFile(String fname) throws IOException {
+ byte[] bytes = loadURL(new URL("file:" + fname));
+ return new String(bytes);
+ }
+
+
+ /**
+ * Load entire contents of a file or URL into a string.
+ */
+ public static String load(String fileOrURL) throws IOException {
+ try {
+ URL url = new URL(fileOrURL);
+
+ return new String(loadURL(url));
+ } catch (Exception e) {
+ return loadFile(fileOrURL);
+ }
+ }
+
+ /**
+ * Create a Set from a comma-separated string.
+ */
+ public static Set makeSetFromStringList(String s) {
+ Set set = new HashSet();
+
+ String[] sa = Util.splitwords(s, ",", '"');
+ for(int i = 0; i < sa.length; i++) {
+ set.add(sa[i]);
+ }
+
+ return set;
+ }
+
+
+
+ public static String getRelativePath(File fromFile,
+ File toFile) {
+ File fromDir = fromFile.isDirectory()
+ ? fromFile
+ : fromFile.getParentFile();
+
+ File toDir = toFile.isDirectory()
+ ? toFile
+ : toFile.getParentFile();
+
+
+ File dir = fromDir;
+
+ String relPath = "";
+
+ while(dir != null && !dir.equals(toDir)) {
+ relPath += "../";
+ dir = dir.getParentFile();
+ }
+
+ if(dir == null) {
+ throw new RuntimeException(toFile + " is not in parent of " + fromFile);
+ }
+ return relPath + toFile.toString();
+ }
+
+ // String manipulation functions below by Erik Wistrand
+
+
+ /**
+ * Replace all occurences of a substring with another string.
+ *
+ * <p>
+ * If no replacements are needed, the methods returns the original string.
+ * </p>
+ *
+ * @param s Source string which will be scanned and modified.
+ * If <tt>null</tt>, return <tt>null</tt>
+ * @param v1 String to be replaced with <tt>v2</tt>.
+ * If <tt>null</tt>, return original string.
+ * @param v2 String replacing <tt>v1</tt>.
+ * If <tt>null</tt>, return original string.
+ * @return Modified string.
+ */
+ public static String replace(final String s,
+ final String v1,
+ final String v2) {
+
+ if(s == null
+ || v1 == null
+ || v2 == null
+ || v1.length() == 0
+ || v1.equals(v2)) {
+ return s;
+ }
+
+ int ix = 0;
+ int v1Len = v1.length();
+ int n = 0;
+
+ while(-1 != (ix = s.indexOf(v1, ix))) {
+ n++;
+ ix += v1Len;
+ }
+
+ if(n == 0) {
+ return s;
+ }
+
+ int start = 0;
+ int v2Len = v2.length();
+ char[] r = new char[s.length() + n * (v2Len - v1Len)];
+ int rPos = 0;
+
+ while(-1 != (ix = s.indexOf(v1, start))) {
+ while(start < ix) r[rPos++] = s.charAt(start++);
+ for(int j = 0; j < v2Len; j++) {
+ r[rPos++] = v2.charAt(j);
+ }
+ start += v1Len;
+ }
+
+ ix = s.length();
+ while(start < ix) r[rPos++] = s.charAt(start++);
+
+ return new String(r);
+ }
+
+ /**
+ * Split a string into words separated by whitespace
+ * SPACE | TAB | NEWLINE | CR
+
+ * Citation chars '"' may be used to group words
+ * with embedded whitespace.
+ * </p>
+ */
+ public static String [] splitwords(String s) {
+ return splitwords(s, " \t\n\r", '"');
+ }
+
+ /**
+ * Split a string into words separated by whitespace.
+ * Citation chars '"' may be used to group words with embedded
+ * whitespace.
+ *
+ * @param s String to split.
+ * @param whiteSpace whitespace to use for splitting. Any of the
+ * characters in the whiteSpace string are considered
+ * whitespace between words and will be removed
+ * from the result.
+ * @param citchar citation char used for enclosing words containing
+ * whitespace
+ */
+ public static String [] splitwords(String s,
+ String whiteSpace,
+ char citchar) {
+ boolean bCit = false; // true when inside citation chars.
+ Vector v = new Vector(); // (String) individual words after splitting
+ StringBuffer buf = null;
+ int i = 0;
+
+ while(i < s.length()) {
+ char c = s.charAt(i);
+
+ if(bCit || whiteSpace.indexOf(c) == -1) {
+ // Build up word until we breaks on
+ // either a citation char or whitespace
+ if(c == citchar) {
+ bCit = !bCit;
+ } else {
+ if(buf == null) {
+ buf = new StringBuffer();
+ }
+ buf.append(c);
+ }
+ i++;
+ } else {
+ // found whitespace or end of citation, append word if we have one
+ if(buf != null) {
+ v.addElement(buf.toString());
+ buf = null;
+ }
+
+ // and skip whitespace so we start clean on a word or citation char
+ while((i < s.length()) && (-1 != whiteSpace.indexOf(s.charAt(i)))) {
+ i++;
+ }
+ }
+ }
+ // Add possible remaining word
+ if(buf != null) {
+ v.addElement(buf.toString());
+ }
+
+ // Copy back into an array
+ String [] r = new String[v.size()];
+ v.copyInto(r);
+
+ return r;
+ }
+
+
+
+ static void writeStringToFile(File outFile, String s) throws IOException {
+ FileWriter writer = null;
+
+ try {
+ writer = new FileWriter(outFile);
+ writer.write(s, 0, s.length());
+ // System.out.println("wrote " + outFile);
+
+ } finally {
+ try { writer.close(); } catch (Exception ignored) { }
+ }
+ }
+
+}
+
+
+
+
+
Added: cocoon/whiteboard/osgi/bundles/cocoon/build.xml
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/bundles/cocoon/build.xml?rev=189461&view=auto
==============================================================================
--- cocoon/whiteboard/osgi/bundles/cocoon/build.xml (added)
+++ cocoon/whiteboard/osgi/bundles/cocoon/build.xml Tue Jun 7 15:32:48 2005
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE project [
+ <!ENTITY bundlebuild_include SYSTEM "../../ant/bundlebuild_include.xml">
+]>
+
+<project name="cocoon" default="all">
+
+ <property name = "cocoon.trunk" location="../../../trunk"/>
+ <property name = "cocoon.lib" location="${cocoon.trunk}/lib"/>
+ <property name = "cocoon.lib.cocoon" location="${cocoon.trunk}/build/cocoon-2.2.0-dev/cocoon.jar"/>
+ <property name = "cocoon.lib.core" location="${cocoon.lib}/core"/>
+ <property name = "cocoon.lib.endorsed" location="${cocoon.lib}/endorsed"/>
+
+ <path id="cocoon.libs">
+ <fileset file="${cocoon.lib.cocoon}"/>
+ <fileset dir="${cocoon.lib.core}"/>
+ <fileset dir="${cocoon.lib.endorsed}"/>
+ </path>
+
+ <property name = "topdir" location="../.."/>
+
+ <property name="bundle.activator" value=""/>
+ <property name="bundle.description" value="Cocoon bundle"/>
+ <property name="bundle.vendor" value="Cocoon"/>
+ <property name="bundle.category" value="library"/>
+ <property name="bundle.version" value="1.0.0"/>
+
+ <property name="api.pattern" value="org.apache.**"/>
+
+ <pathconvert property="bundle.classpath" pathsep=",">
+ <path refid="cocoon.libs"/>
+ <mapper type="flatten"/>
+ </pathconvert>
+
+ <property name="export.package" value="org.apache.avalon.framework.context,org.apache.avalon.framework.logger,org.apache.avalon.framework.service,org.apache.cocoon,org.apache.cocoon.components.blocks,org.apache.cocoon.components.modules.input,org.apache.cocoon.components.pipeline.impl,org.apache.cocoon.components.source.impl,org.apache.cocoon.core,org.apache.cocoon.environment,org.apache.cocoon.environment.impl,org.apache.cocoon.generation,org.apache.cocoon.matching,org.apache.cocoon.reading,org.apache.cocoon.serialization,org.apache.cocoon.transformation,org.apache.cocoon.util.log,org.apache.avalon.excalibur.logger,org.apache.excalibur.source,org.apache.log"/>
+
+ <property name = "bundle.build.lib" value = "false"/>
+ <property name = "bundle.build.api" value = "false"/>
+ <property name = "bundle.build.impl" value = "false"/>
+ <property name = "bundle.build.all" value = "true"/>
+
+ <property name="do.bundle.custom.pre" value="true"/>
+
+ <target name="bundle.custom.pre" depends="copy.libs">
+ <echo message="Bundle-Classpath=${bundle.classpath}"/>
+ </target>
+
+ <target name="copy.libs">
+ <mkdir dir="resources"/>
+ <copy todir="resources">
+ <fileset file="${cocoon.lib.cocoon}"/>
+ <fileset dir="${cocoon.lib.core}"/>
+ <fileset dir="${cocoon.lib.endorsed}"/>
+ </copy>
+ </target>
+
+ <target name="delete.libs">
+ <delete dir="resources"/>
+ </target>
+
+ &bundlebuild_include;
+
+</project>
Added: cocoon/whiteboard/osgi/bundles/cocoon_testcase/build.xml
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/bundles/cocoon_testcase/build.xml?rev=189461&view=auto
==============================================================================
--- cocoon/whiteboard/osgi/bundles/cocoon_testcase/build.xml (added)
+++ cocoon/whiteboard/osgi/bundles/cocoon_testcase/build.xml Tue Jun 7 15:32:48 2005
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE project [
+ <!ENTITY bundlebuild_include SYSTEM "../../ant/bundlebuild_include.xml">
+]>
+
+<project name="cocoon_testcase" default="all">
+
+ <property name="cocoon.trunk" location="../../../trunk"/>
+ <property name="lib.cocoon_testcase" location="${cocoon.trunk}/build/cocoon-2.2.0-dev/cocoon-testcase.jar"/>
+
+ <property name = "topdir" location="../.."/>
+
+ <path id="bundle.compile.path">
+ <pathelement location="resources/cocoon-testcase.jar"/>
+ <pathelement location="lib/cocoon.jar"/>
+ <pathelement location="lib/avalon-framework-api-4.1.5.jar"/>
+ <pathelement location="lib/avalon-framework-impl-4.1.5.jar"/>
+ <pathelement location="lib/excalibur-sourceresolve-1.1.jar"/>
+ <pathelement location="lib/junit.jar"/>
+ </path>
+
+ <property name="bundle.description" value="Cocoon testcase bundle"/>
+ <property name="bundle.vendor" value="Cocoon"/>
+ <property name="bundle.category" value="tests"/>
+ <property name="bundle.version" value="1.0.0"/>
+
+ <property name="impl.pattern" value="org/apache/cocoon/**"/>
+ <property name="bundle.classpath" value=".,cocoon-testcase.jar"/>
+ <property name="import.package" value="junit.framework,org.knopflerfish.service.junit,org.apache.avalon.framework.context,org.apache.avalon.framework.logger,org.apache.avalon.framework.service,org.apache.cocoon,org.apache.cocoon.components.blocks,org.apache.cocoon.components.modules.input,org.apache.cocoon.components.pipeline.impl,org.apache.cocoon.components.source.impl,org.apache.cocoon.core,org.apache.cocoon.environment,org.apache.cocoon.environment.impl,org.apache.cocoon.generation,org.apache.cocoon.matching,org.apache.cocoon.reading,org.apache.cocoon.serialization,org.apache.cocoon.transformation,org.apache.cocoon.util.log,org.apache.avalon.excalibur.logger,org.apache.excalibur.source,org.apache.log"/>
+
+ <property name="do.bundle.custom.pre" value="true"/>
+
+ <target name="bundle.custom.pre">
+ <mkdir dir="resources"/>
+ <copy todir="resources" file="${lib.cocoon_testcase}"/>
+ <mkdir dir="lib"/>
+ <unzip src="${topdir}/jars-external/junit/junit_all-1.0.0.jar"
+ dest="lib">
+ <fileset file="junit.jar"/>
+ </unzip>
+ <unzip src="${topdir}/jars/cocoon/cocoon_all-1.0.0.jar"
+ dest="lib">
+ <fileset dir=".">
+ <include name="cocoon.jar"/>
+ <include name="avalon-framework-api-4.1.5.jar"/>
+ <include name="avalon-framework-impl-4.1.5.jar"/>
+ <include name="excalibur-sourceresolve-1.1.jar"/>
+ </fileset>
+ </unzip>
+ </target>
+
+ <property name="do.bundle.custom.post" value="true"/>
+
+ <target name="bundle.custom.post">
+ <delete dir="resources"/>
+ <delete dir="lib"/>
+ </target>
+
+ &bundlebuild_include;
+
+</project>
+
+
+
+
+
+
+
Added: cocoon/whiteboard/osgi/bundles/cocoon_testcase/src/org/apache/cocoon/service/cocoon_testcase/impl/Activator.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/bundles/cocoon_testcase/src/org/apache/cocoon/service/cocoon_testcase/impl/Activator.java?rev=189461&view=auto
==============================================================================
--- cocoon/whiteboard/osgi/bundles/cocoon_testcase/src/org/apache/cocoon/service/cocoon_testcase/impl/Activator.java (added)
+++ cocoon/whiteboard/osgi/bundles/cocoon_testcase/src/org/apache/cocoon/service/cocoon_testcase/impl/Activator.java Tue Jun 7 15:32:48 2005
@@ -0,0 +1,42 @@
+/*
+ * Copyright 1999-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.
+ */
+package org.apache.cocoon.service.cocoon_testcase.impl;
+
+import java.util.Hashtable;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.cocoon.test.components.blocks.BlocksManagerTestCase;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+
+/**
+ * Activator which register the a test case
+ */
+public class Activator implements BundleActivator {
+
+ public void start(BundleContext bc) {
+ TestSuite suite = new TestSuite(BlocksManagerTestCase.class);
+
+ Hashtable props = new Hashtable();
+ props.put("service.pid", suite.getName());
+
+ bc.registerService(Test.class.getName(), suite, props);
+ }
+
+ public void stop(BundleContext bc) {
+ }
+}
Added: cocoon/whiteboard/osgi/bundles/test/build.xml
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/bundles/test/build.xml?rev=189461&view=auto
==============================================================================
--- cocoon/whiteboard/osgi/bundles/test/build.xml (added)
+++ cocoon/whiteboard/osgi/bundles/test/build.xml Tue Jun 7 15:32:48 2005
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE project [
+ <!ENTITY bundlebuild_include SYSTEM "../../ant/bundlebuild_include.xml">
+]>
+
+<project name="test" default="all">
+
+ <property name = "topdir" location="../.."/>
+
+ <property name = "impl.pattern"
+ value = "org/apache/cocoon/service/test/impl/*"/>
+
+
+ <path id="bundle.compile.path">
+ <pathelement location="${topdir}/jars/test/test-1.0.0.jar"/>
+ </path>
+
+
+ <property name="bundle.description" value="Test bundle"/>
+ <property name="bundle.vendor" value="Cocoon"/>
+ <property name="bundle.category" value="example"/>
+ <property name="bundle.version" value="1.0.0"/>
+
+ &bundlebuild_include;
+
+</project>
Added: cocoon/whiteboard/osgi/bundles/test/src/org/apache/cocoon/service/test/impl/Activator.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/bundles/test/src/org/apache/cocoon/service/test/impl/Activator.java?rev=189461&view=auto
==============================================================================
--- cocoon/whiteboard/osgi/bundles/test/src/org/apache/cocoon/service/test/impl/Activator.java (added)
+++ cocoon/whiteboard/osgi/bundles/test/src/org/apache/cocoon/service/test/impl/Activator.java Tue Jun 7 15:32:48 2005
@@ -0,0 +1,40 @@
+/*
+ * Copyright 1999-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.
+ */
+package org.apache.cocoon.service.test.impl;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+
+/**
+ * Activator which just test that it is activated.
+ */
+public class Activator implements BundleActivator {
+
+ static BundleContext bc;
+
+ public void start(BundleContext bc) {
+ System.out.println("start " + getClass().getName());
+
+ this.bc = bc;
+ }
+
+ public void stop(BundleContext bc) {
+ System.out.println("stop " + getClass().getName());
+
+ this.bc = null;
+ }
+}
Added: cocoon/whiteboard/osgi/framework.jar
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/framework.jar?rev=189461&view=auto
==============================================================================
Binary file - no diff available.
Propchange: cocoon/whiteboard/osgi/framework.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: cocoon/whiteboard/osgi/init.xargs
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/init.xargs?rev=189461&view=auto
==============================================================================
--- cocoon/whiteboard/osgi/init.xargs (added)
+++ cocoon/whiteboard/osgi/init.xargs Tue Jun 7 15:32:48 2005
@@ -0,0 +1,25 @@
+# Minimal start command file
+
+-Dorg.knopflerfish.verbosity=0
+-Dorg.knopflerfish.gosg.jars=file:jars/
+-Dorg.knopflerfish.framework.debug.packages=false
+-Dorg.knopflerfish.framework.debug.errors=true
+-Dorg.knopflerfish.framework.debug.classloader=false
+-Dorg.knopflerfish.framework.system.export.all_13=false
+-Dorg.osgi.framework.system.packages=
+
+-Dorg.knopflerfish.startlevel.use=true
+
+-init
+
+-install http://www.knopflerfish.org/releases/1.3.3/jars/log/log_api-1.0.0.jar
+-install http://www.knopflerfish.org/releases/1.3.3/jars/console/console_api-1.0.0.jar
+-istart http://www.knopflerfish.org/releases/1.3.3/jars/cm/cm_api-1.0.0.jar
+-istart http://www.knopflerfish.org/releases/1.3.3/jars/log/log-1.0.0.jar
+-istart http://www.knopflerfish.org/releases/1.3.3/jars/console/console-1.0.0.jar
+-istart http://www.knopflerfish.org/releases/1.3.3/jars/consoletty/consoletty-1.0.0.jar
+-istart http://www.knopflerfish.org/releases/1.3.3/jars/frameworkcommands/frameworkcommands-1.0.0.jar
+-istart http://www.knopflerfish.org/releases/1.3.3/jars/logcommands/logcommands-1.0.0.jar
+-istart http://www.knopflerfish.org/releases/1.3.3/jars/useradmin/useradmin_api-1.0.0.jar
+
+-launch
Added: cocoon/whiteboard/osgi/jars-external/junit/junit_all-1.0.0.jar
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/jars-external/junit/junit_all-1.0.0.jar?rev=189461&view=auto
==============================================================================
Binary file - no diff available.
Propchange: cocoon/whiteboard/osgi/jars-external/junit/junit_all-1.0.0.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: cocoon/whiteboard/osgi/legal/knopflerfish.license.txt
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/legal/knopflerfish.license.txt?rev=189461&view=auto
==============================================================================
--- cocoon/whiteboard/osgi/legal/knopflerfish.license.txt (added)
+++ cocoon/whiteboard/osgi/legal/knopflerfish.license.txt Tue Jun 7 15:32:48 2005
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2003-2004, KNOPFLERFISH project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - 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.
+ *
+ * - Neither the name of the KNOPFLERFISH project nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE
+ * COPYRIGHT OWNER 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.
+ */
Added: cocoon/whiteboard/osgi/legal/osgi_copyright.txt
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/legal/osgi_copyright.txt?rev=189461&view=auto
==============================================================================
--- cocoon/whiteboard/osgi/legal/osgi_copyright.txt (added)
+++ cocoon/whiteboard/osgi/legal/osgi_copyright.txt Tue Jun 7 15:32:48 2005
@@ -0,0 +1,65 @@
+Copyright (c) 2000, 2003
+
+The Open Services Gateway Initiative
+Bishop Ranch 2
+2694 Bishop Drive
+Suite 275
+San Ramon
+CA 94583 USA
+
+All Rights Reserved.
+
+LEGAL TERMS AND CONDITIONS REGARDING SPECIFICATION
+
+Implementation of certain elements of the Open Services Gateway
+Initiative (OSGi) Specification may be subject to third party
+intellectual property rights, including without limitation, patent
+rights (such a third party may or may not be a member of OSGi). OSGi is
+not responsible and shall not be held responsible in any manner for
+identifying or failing to identify any or all such third party
+intellectual property rights.
+
+THE RECIPIENT ACKNOWLEDGES AND AGREES THAT THE SPECIFICATION IS PROVIDED
+"AS IS" AND WITH NO WARRANTIES WHATSOEVER, WHETHER EXPRESS, IMPLIED OR
+STATUTORY, INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF
+MERCHANTABILITY, NONINFRINGEMENT, FITNESS OF ANY PARTICULAR PURPOSE, OR
+ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION, OR
+SAMPLE. THE RECIPIENT'S USE OF THE SPECIFICATION IS SOLELY AT THE
+RECIPIENT'S OWN RISK. THE RECIPIENT'S USE OF THE SPECIFICATION IS
+SUBJECT TO THE RECIPIENT'S OSGi MEMBER AGREEMENT, IN THE EVENT THAT THE
+RECIPIENT IS AN OSGi MEMBER. IN NO EVENT SHALL OSGi BE LIABLE OR
+OBLIGATED TO THE RECIPIENT OR ANY THIRD PARTY IN ANY MANNER FOR ANY
+SPECIAL, NON-COMPENSATORY, CONSEQUENTIAL, INDIRECT, INCIDENTAL,
+STATUTORY OR PUNITIVE DAMAGES OF ANY KIND, INCLUDING, WITHOUT
+LIMITATION, LOST PROFITS AND LOST REVENUE, REGARDLESS OF THE FORM OF
+ACTION, WHETHER IN CONTRACT, TORT, NEGLIGENCE, STRICT PRODUCT LIABILITY,
+OR OTHERWISE, EVEN IF OSGi HAS BEEN INFORMED OF OR IS AWARE OF THE
+POSSIBILITY OF ANY SUCH DAMAGES IN ADVANCE.
+
+THE LIMITATIONS SET FORTH ABOVE SHALL BE DEEMED TO APPLY TO THE MAXIMUM
+EXTENT PERMITTED BY APPLICABLE LAW AND NOTWITHSTANDING THE FAILURE OF
+THE ESSENTIAL PURPOSE OF ANY LIMITED REMEDIES AVAILABLE TO THE
+RECIPIENT. THE RECIPIENT ACKNOWLEDGES AND AGREES THAT THE RECIPIENT HAS
+FULLY CONSIDERED THE FOREGOING ALLOCATION OF RISK AND FINDS IT
+REASONABLE, AND THAT THE FOREGOING LIMITATIONS ARE AN ESSENTIAL BASIS OF
+THE BARGAIN BETWEEN THE RECIPIENT AND OSGi. IF THE RECIPIENT USES THE
+SPECIFICATION, THE RECIPIENT AGREES TO ALL OF THE FOREGOING TERMS AND
+CONDITIONS. IF THE RECIPIENT DOES NOT AGREE TO THESE TERMS AND
+CONDITIONS, THE RECIPIENT SHOULD NOT USE THE SPECIFICATION AND SHOULD
+CONTACT OSGi IMMEDIATELY.
+
+Trademarks
+
+OSGi(TM) is a trademark, registered trademark, or service mark of The
+Open Services Gateway Initiative in the US and other countries. Java is
+a trademark, registered trademark, or service mark of Sun Microsystems,
+Inc. in the US and other countries. All other trademarks, registered
+trademarks, or service marks used in this document are the property of
+their respective owners and are hereby recognized.
+
+Feedback
+
+This specification can be downloaded from the OSGi web site:
+http://www.osgi.org. Comments about this specification can be mailed
+to: speccomments@mail.osgi.org
+
Added: cocoon/whiteboard/osgi/props.xargs
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/props.xargs?rev=189461&view=auto
==============================================================================
--- cocoon/whiteboard/osgi/props.xargs (added)
+++ cocoon/whiteboard/osgi/props.xargs Tue Jun 7 15:32:48 2005
@@ -0,0 +1,42 @@
+#
+# Properties used by both init.xargs and restart.xargs
+#
+
+# The Service Platform ID should be used by bundles needing to
+# a unique ID for the platform itself
+-Dorg.osgi.provisioning.spid=knopflerfish
+
+# Initial startup verbosity, 0 is low verbosity
+-Dorg.knopflerfish.verbosity=0
+
+
+# URL to bundle repository
+-Doscar.repository.url=http://www.knopflerfish.org/repo/repository.xml
+
+# Various debug flags
+-Dorg.knopflerfish.framework.debug.packages=false
+-Dorg.knopflerfish.framework.debug.errors=true
+-Dorg.knopflerfish.framework.debug.classloader=false
+-Dorg.knopflerfish.framework.debug.startlevel=false
+-Dorg.knopflerfish.framework.debug.ldap=false
+
+# Comma-separated list of packges exported by system classloader
+-Dorg.osgi.framework.system.packages=
+
+# Web server properties
+-Dorg.knopflerfish.http.dnslookup=false
+-Dorg.osgi.service.http.port=8080
+
+-Dorg.knopflerfish.startlevel.use=true
+
+# Log service properties
+-Dorg.knopflerfish.log.out=false
+-Dorg.knopflerfish.log.level=info
+-Dorg.knopflerfish.log.grabio=true
+-Dorg.knopflerfish.log.file=true
+
+#consoletelnet properties
+-Dorg.knopflerfish.consoletelnet.user=admin
+-Dorg.knopflerfish.consoletelnet.pwd=admin
+-Dorg.knopflerfish.consoletelnet.port=23
+
Added: cocoon/whiteboard/osgi/restart.xargs
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/osgi/restart.xargs?rev=189461&view=auto
==============================================================================
--- cocoon/whiteboard/osgi/restart.xargs (added)
+++ cocoon/whiteboard/osgi/restart.xargs Tue Jun 7 15:32:48 2005
@@ -0,0 +1,4 @@
+# load common properties
+-xargs props.xargs
+
+-launch 0