ace-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ma...@apache.org
Subject svn commit: r1629677 - in /ace/trunk/org.apache.ace.obr: src/org/apache/ace/obr/metadata/bindex/ src/org/osgi/impl/bundle/bindex/ src/org/osgi/impl/bundle/obr/resource/ test/org/apache/ace/obr/metadata/bindeximpl/
Date Mon, 06 Oct 2014 15:25:07 GMT
Author: marrs
Date: Mon Oct  6 15:25:07 2014
New Revision: 1629677

URL: http://svn.apache.org/r1629677
Log:
ACE-482 Implemented a fix and test for bundles with invalid metadata. They are now ignored.

Modified:
    ace/trunk/org.apache.ace.obr/src/org/apache/ace/obr/metadata/bindex/BIndexMetadataGenerator.java
    ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/bindex/Index.java
    ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/obr/resource/BundleInfo.java
    ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/obr/resource/Manifest.java
    ace/trunk/org.apache.ace.obr/test/org/apache/ace/obr/metadata/bindeximpl/BindexMetadataTest.java

Modified: ace/trunk/org.apache.ace.obr/src/org/apache/ace/obr/metadata/bindex/BIndexMetadataGenerator.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.obr/src/org/apache/ace/obr/metadata/bindex/BIndexMetadataGenerator.java?rev=1629677&r1=1629676&r2=1629677&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.obr/src/org/apache/ace/obr/metadata/bindex/BIndexMetadataGenerator.java
(original)
+++ ace/trunk/org.apache.ace.obr/src/org/apache/ace/obr/metadata/bindex/BIndexMetadataGenerator.java
Mon Oct  6 15:25:07 2014
@@ -42,6 +42,7 @@ public class BIndexMetadataGenerator imp
             File index = new File(directory, INDEX_FILENAME + INDEX_EXTENSION);
             try {
                 tempIndex = File.createTempFile("repo", INDEX_EXTENSION, directory);
+                Index.m_log = m_log;
                 Index.main(new String[] { "-q", "-a", "-r", tempIndex.getAbsolutePath(),
directory.getAbsolutePath() });
                 renameFile(tempIndex, index);
             }

Modified: ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/bindex/Index.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/bindex/Index.java?rev=1629677&r1=1629676&r2=1629677&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/bindex/Index.java (original)
+++ ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/bindex/Index.java Mon Oct  6 15:25:07
2014
@@ -46,6 +46,7 @@ import org.osgi.impl.bundle.obr.resource
 import org.osgi.impl.bundle.obr.resource.ResourceImpl;
 import org.osgi.impl.bundle.obr.resource.Tag;
 import org.osgi.impl.bundle.obr.resource.VersionRange;
+import org.osgi.service.log.LogService;
 
 /**
  * Iterate over a set of given bundles and convert them to resources. When -a is specified,
other resources than bundles
@@ -68,6 +69,25 @@ public class Index
         .getAbsoluteFile();
     static RepositoryImpl repository;
     static String root;
+	public static LogService m_log;
+	
+	static void error(String message) {
+		if (m_log != null) {
+			m_log.log(LogService.LOG_ERROR, message);
+		}
+		else {
+			System.err.println(message);
+		}
+	}
+	static void error(String message, Throwable t) {
+		if (m_log != null) {
+			m_log.log(LogService.LOG_ERROR, message, t);
+		}
+		else {
+			System.err.println(message);
+			t.printStackTrace(System.err);
+		}
+	}
 
     /**
      * Main entry. See -help for options.
@@ -76,9 +96,6 @@ public class Index
      * @throws Exception
      */
     public static void main(String args[]) throws Exception {
-        System.err.println("Bundle Indexer | v2.2");
-        System.err.println("(c) 2007 OSGi, All Rights Reserved");
-
         Set<ResourceImpl> resources = new HashSet<ResourceImpl>();
         root = rootFile.toURI().toURL().toString();
         repository = new RepositoryImpl(rootFile.toURI().toURL());
@@ -104,8 +121,7 @@ public class Index
                         args[++i]);
                 }
                 else if (args[i].startsWith("-help")) {
-                    System.err
-                        .println("bindex [-t \"%s\" symbolic name \"%v\" version \"%f\" filename
\"%p\" dirpath ] [ -r repository.(xml|zip) ] [-help] [-l file:license.html ] [-quiet] [-all]
<jar file>*");
+                    error("bindex [-t \"%s\" symbolic name \"%v\" version \"%f\" filename
\"%p\" dirpath ] [ -r repository.(xml|zip) ] [-help] [-l file:license.html ] [-quiet] [-all]
<jar file>*");
                 }
                 else if (args[i].startsWith("-a")) {
                     all = true;
@@ -115,9 +131,7 @@ public class Index
                 }
             }
             catch (Exception e) {
-                System.err.println("Error in " + args[i] + " : " +
-                    e.getMessage());
-                e.printStackTrace();
+            	error("Error in " + args[i] + " : " + e.getMessage(), e);
             }
         }
 
@@ -197,24 +211,34 @@ public class Index
                 return;
             }
             if (path.getName().endsWith(".jar")) {
-                BundleInfo info = new BundleInfo(repository, path);
-                ResourceImpl resource = info.build();
-                if (urlTemplate != null) {
-                    doTemplate(path, resource);
-                }
-                else {
-                    resource.setURL(path.toURI().toURL());
-                }
-
-                resources.add(resource);
+            	try {
+	                BundleInfo info = new BundleInfo(repository, path);
+	                ResourceImpl resource = info.build();
+	                if (urlTemplate != null) {
+	                    doTemplate(path, resource);
+	                }
+	                else {
+	                    resource.setURL(path.toURI().toURL());
+	                }
+	
+	                resources.add(resource);
+            	}
+            	catch (Exception e) {
+            		error("could not parse bundle " + path.getName() + ": " + e.getMessage(), e);
+            	}
             }
             else {
                 // this is some other resource, we might want to include it.
                 if (all) {
-                    ResourceMetaData metadata = ResourceMetaData.getArtifactMetaData(path.getName());
-                    ResourceImpl impl = new ResourceImpl(repository, metadata.getSymbolicName(),
new VersionRange(metadata.getVersion()));
-                    impl.setURL(path.toURI().toURL());
-                    resources.add(impl);
+                	try {
+	                    ResourceMetaData metadata = ResourceMetaData.getArtifactMetaData(path.getName());
+	                    ResourceImpl impl = new ResourceImpl(repository, metadata.getSymbolicName(),
new VersionRange(metadata.getVersion()));
+	                    impl.setURL(path.toURI().toURL());
+	                    resources.add(impl);
+                	}
+                	catch (Exception e) {
+                		error("could not parse resource " + path.getName() + ": " + e.getMessage(),
e);
+                	}
                 }
             }
         }

Modified: ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/obr/resource/BundleInfo.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/obr/resource/BundleInfo.java?rev=1629677&r1=1629676&r2=1629677&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/obr/resource/BundleInfo.java (original)
+++ ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/obr/resource/BundleInfo.java Mon
Oct  6 15:25:07 2014
@@ -17,10 +17,21 @@
  */
 package org.osgi.impl.bundle.obr.resource;
 
-import java.io.*;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
 import java.net.URL;
-import java.util.*;
-import java.util.zip.*;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.StringTokenizer;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
 
 import org.osgi.service.obr.Resource;
 
@@ -78,8 +89,8 @@ public class BundleInfo {
 		ResourceImpl resource;
 		// Setup the manifest
 		// and create a resource
-		resource = new ResourceImpl(repository, manifest.getSymbolicName(), manifest
-				.getVersion());
+		resource = new ResourceImpl(repository, manifest.getSymbolicName(), new VersionRange(manifest
+				.getVersion().toString()));
 
 		try {
 

Modified: ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/obr/resource/Manifest.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/obr/resource/Manifest.java?rev=1629677&r1=1629676&r2=1629677&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/obr/resource/Manifest.java (original)
+++ ace/trunk/org.apache.ace.obr/src/org/osgi/impl/bundle/obr/resource/Manifest.java Mon Oct
 6 15:25:07 2014
@@ -17,8 +17,22 @@
  */
 package org.osgi.impl.bundle.obr.resource;
 
-import java.io.*;
-import java.util.*;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StreamTokenizer;
+import java.io.StringReader;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import org.osgi.framework.Version;
 
 import aQute.bnd.annotation.ProviderType;
 
@@ -38,7 +52,7 @@ public class Manifest extends Hashtable 
 	Vector				duplicates	= new Vector();
 	final static String	wordparts	= "~!@#$%^&*_:/?><.-+";
 	ManifestEntry		bsn;
-	VersionRange			version;
+	Version				version;
 	ManifestEntry		host;
 	List				require;
 
@@ -112,12 +126,10 @@ public class Manifest extends Hashtable 
 				}
 				if (header.equals("bundle-version")) {
 					try {
-						version = new VersionRange(value.trim());
+						version = new Version(value.trim());
 					}
 					catch (Exception e) {
-						version = new VersionRange("0");
-						System.err.println("Invalid version attr for: " + bsn
-								+ " value is " + value);
+						throw new IOException("Invalid version attr for: " + bsn + " value is " + value);
 					}
 				}
 				if (header.equals("fragment-host"))
@@ -317,9 +329,10 @@ public class Manifest extends Hashtable 
 			return null;
 	}
 
-	public VersionRange getVersion() {
-		if (version == null)
-			return new VersionRange("0");
+	public Version getVersion() {
+		if (version == null) {
+			throw new IllegalStateException("bundle version is null");
+		}
 		return version;
 	}
 

Modified: ace/trunk/org.apache.ace.obr/test/org/apache/ace/obr/metadata/bindeximpl/BindexMetadataTest.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.obr/test/org/apache/ace/obr/metadata/bindeximpl/BindexMetadataTest.java?rev=1629677&r1=1629676&r2=1629677&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.obr/test/org/apache/ace/obr/metadata/bindeximpl/BindexMetadataTest.java
(original)
+++ ace/trunk/org.apache.ace.obr/test/org/apache/ace/obr/metadata/bindeximpl/BindexMetadataTest.java
Mon Oct  6 15:25:07 2014
@@ -36,6 +36,7 @@ public class BindexMetadataTest {
     private ArtifactData generateBundle(File file, String symbolicName, String version) throws
Exception {
         // create a mock bundle, which is only used to generate the bundle on disk, and not
used for anything else...
         ArtifactData bundle = new ArtifactDataImpl(file.getName(), symbolicName, -1L, version,
file.toURI().toURL(), false);
+        System.out.println("GETVERSION: " + bundle.getVersion());
         BundleStreamGenerator.generateBundle(bundle);
         return bundle;
     }
@@ -65,7 +66,7 @@ public class BindexMetadataTest {
             }
         }
         in.close();
-        assert count == 3 : "Expected 3 resources in the repositoty index, found " + count
+ ".";
+        assert count == 3 : "Expected 3 resources in the repository index, found " + count
+ ".";
     }
 
     /**
@@ -94,6 +95,34 @@ public class BindexMetadataTest {
             }
         }
         in.close();
-        assert count == 0 : "Expected 0 resources in the repositoty index, found " + count
+ ".";
+        assert count == 0 : "Expected 0 resources in the repository index, found " + count
+ ".";
+    }
+
+    /**
+     * Generate metadata index with partially invalid contents, verify contents
+     */
+    @Test(groups = { UNIT })
+    public void generatePartiallyInvalidMetaData() throws Exception {
+        File dir = File.createTempFile("meta", "");
+        dir.delete();
+        dir.mkdir();
+        generateBundle(File.createTempFile("bundle", ".jar", dir), "bundle.symbolicname.1",
"1.0.0");
+        generateBundle(File.createTempFile("bundle", ".jar", dir), "bundle.symbolicname.2",
"1.0_0");
+        generateBundle(File.createTempFile("bundle", ".jar", dir), "bundle.symbolicname.3",
"1.0.0");
+        MetadataGenerator meta = new BIndexMetadataGenerator();
+        meta.generateMetadata(dir);
+        File index = new File(dir, "repository.xml");
+        assert index.exists() : "No repository index was generated";
+        assert index.length() > 0 : "Repository index can not be size 0";
+        int count = 0;
+        String line;
+        BufferedReader in = new BufferedReader(new FileReader(index));
+        while ((line = in.readLine()) != null) {
+            if (line.contains("<resource")) {
+                count++;
+            }
+        }
+        in.close();
+        assert count == 2 : "Expected 2 resources in the repository index, found " + count
+ ".";
     }
 }



Mime
View raw message