You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ga...@apache.org on 2010/02/09 18:03:09 UTC

svn commit: r908117 - in /incubator/aries/trunk/web/web-urlhandler/src: main/java/org/apache/aries/web/converter/impl/ main/java/org/apache/aries/web/url/ test/java/org/apache/aries/web/converter/impl/

Author: gawor
Date: Tue Feb  9 17:03:09 2010
New Revision: 908117

URL: http://svn.apache.org/viewvc?rev=908117&view=rev
Log:
bunch of minor improvments: 1) updated default imports, 2) updated 'bundle' detection, 3) moved bundle manifest version checking to the converter code, and 4) more efficient jar data copying

Modified:
    incubator/aries/trunk/web/web-urlhandler/src/main/java/org/apache/aries/web/converter/impl/WarToWabConverterImpl.java
    incubator/aries/trunk/web/web-urlhandler/src/main/java/org/apache/aries/web/url/WARConnection.java
    incubator/aries/trunk/web/web-urlhandler/src/test/java/org/apache/aries/web/converter/impl/WabConverterTest.java

Modified: incubator/aries/trunk/web/web-urlhandler/src/main/java/org/apache/aries/web/converter/impl/WarToWabConverterImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/web/web-urlhandler/src/main/java/org/apache/aries/web/converter/impl/WarToWabConverterImpl.java?rev=908117&r1=908116&r2=908117&view=diff
==============================================================================
--- incubator/aries/trunk/web/web-urlhandler/src/main/java/org/apache/aries/web/converter/impl/WarToWabConverterImpl.java (original)
+++ incubator/aries/trunk/web/web-urlhandler/src/main/java/org/apache/aries/web/converter/impl/WarToWabConverterImpl.java Tue Feb  9 17:03:09 2010
@@ -49,12 +49,19 @@
   private static final String DEFAULT_BUNDLE_MANIFESTVERSION = "2";
   private static final String INITIAL_CLASSPATH_ENTRY = "WEB-INF/classes";
   private static final String CLASSPATH_LIB_PREFIX = "WEB-INF/lib/";
-  private static final String DEFAULT_IMPORT_PACKAGE_LIST = "javax.servlet;version=2.5,"
-      + "javax.servlet.http;version=2.5,"
-      + "javax.el;version=2.1,"
-      + "javax.servlet.jsp;version=2.1,"
-      + "javax.servlet.jsp.el;version=2.1,"
-      + "javax.servlet.jsp.tagext;version=2.1";
+  
+  private static final String SERVLET_IMPORTS = 
+      "javax.servlet;version=2.5," +
+      "javax.servlet.http;version=2.5";
+  
+  private static final String JSP_IMPORTS =
+      "javax.servlet.jsp;version=2.1," +
+      "javax.servlet.jsp.el;version=2.1," +
+      "javax.servlet.jsp.tagext;version=2.1," +
+      "javax.servlet.jsp.resources;version=2.1";
+    
+  private static final String DEFAULT_IMPORT_PACKAGE_LIST = 
+      SERVLET_IMPORTS + "," + JSP_IMPORTS;
 
   private Properties properties;
 
@@ -111,10 +118,11 @@
     try {
       jarOutput = new JarOutputStream(output, wabManifest);
       jarInput = new JarInputStream(input.getInputStream());
+      byte[] buffer = new byte[2048];
       while ((entry = jarInput.getNextEntry()) != null) {
-        jarOutput.putNextEntry(entry);
-        while ((val = jarInput.read()) != -1)
-          jarOutput.write(val);
+        jarOutput.putNextEntry(entry);        
+        while ((val = jarInput.read(buffer)) > 0)
+          jarOutput.write(buffer, 0, val);
       }
     }
     finally {
@@ -132,9 +140,13 @@
       if (manifest == null) {
           return false;          
       }
+      // Presence of _any_ of these headers indicates a bundle...
       Attributes attributes = manifest.getMainAttributes();
-      // TODO: need to check for other headers too
-      if (attributes.getValue(Constants.BUNDLE_SYMBOLICNAME) != null) {
+      if (attributes.getValue(Constants.BUNDLE_SYMBOLICNAME) != null ||
+          attributes.getValue(Constants.BUNDLE_VERSION) != null ||
+          attributes.getValue(Constants.BUNDLE_MANIFESTVERSION) != null ||
+          attributes.getValue(Constants.IMPORT_PACKAGE) != null ||
+          attributes.getValue(WEB_CONTEXT_PATH) != null) {
           return true;
       }
       return false;
@@ -264,10 +276,16 @@
     // Bundle-ManifestVersion
     //
 
-    if (manifest.getMainAttributes().getValue(Constants.BUNDLE_MANIFESTVERSION) == null
-        && !properties.containsKey(Constants.BUNDLE_MANIFESTVERSION)) {
-      properties.put(Constants.BUNDLE_MANIFESTVERSION, DEFAULT_BUNDLE_MANIFESTVERSION);
+    String manifestVersion = properties.getProperty(Constants.BUNDLE_MANIFESTVERSION);
+    if (manifestVersion == null) {
+        manifestVersion = manifest.getMainAttributes().getValue(Constants.BUNDLE_MANIFESTVERSION);
+        if (manifestVersion == null) {
+            manifestVersion = DEFAULT_BUNDLE_MANIFESTVERSION;
+        }
+    } else if (!manifestVersion.equals("2")) {
+        throw new IOException("Unsupported bundle manifest version " + manifestVersion);
     }
+    properties.put(Constants.BUNDLE_MANIFESTVERSION, manifestVersion);
 
     //
     // Bundle-SymbolicName

Modified: incubator/aries/trunk/web/web-urlhandler/src/main/java/org/apache/aries/web/url/WARConnection.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/web/web-urlhandler/src/main/java/org/apache/aries/web/url/WARConnection.java?rev=908117&r1=908116&r2=908117&view=diff
==============================================================================
--- incubator/aries/trunk/web/web-urlhandler/src/main/java/org/apache/aries/web/url/WARConnection.java (original)
+++ incubator/aries/trunk/web/web-urlhandler/src/main/java/org/apache/aries/web/url/WARConnection.java Tue Feb  9 17:03:09 2010
@@ -27,7 +27,6 @@
 
 import org.apache.aries.web.converter.WarToWabConverter.InputStreamProvider;
 import org.apache.aries.web.converter.impl.WarToWabConverterImpl;
-import org.osgi.framework.Constants;
 
 public class WARConnection extends URLConnection
 {
@@ -38,14 +37,6 @@
   {
     super(url);
     this.properties = properties;
-    
-    // Validate properties
-    
-    String bundleManifestVersion = (String) properties.get(Constants.BUNDLE_MANIFESTVERSION);
-    if (bundleManifestVersion != null && !bundleManifestVersion.equals("2")) {
-      throw new MalformedURLException("Incorrect bundle version supplied in URL : " + bundleManifestVersion);
-    }
-    
   }
 
   @Override

Modified: incubator/aries/trunk/web/web-urlhandler/src/test/java/org/apache/aries/web/converter/impl/WabConverterTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/web/web-urlhandler/src/test/java/org/apache/aries/web/converter/impl/WabConverterTest.java?rev=908117&r1=908116&r2=908117&view=diff
==============================================================================
--- incubator/aries/trunk/web/web-urlhandler/src/test/java/org/apache/aries/web/converter/impl/WabConverterTest.java (original)
+++ incubator/aries/trunk/web/web-urlhandler/src/test/java/org/apache/aries/web/converter/impl/WabConverterTest.java Tue Feb  9 17:03:09 2010
@@ -47,6 +47,19 @@
   public static final String WAR_FILE_NAME_WO_SUFFIX = "test";
   public static final String WAR_FILE_NAME = WAR_FILE_NAME_WO_SUFFIX + ".war";
   
+  private static final String SERVLET_IMPORTS = 
+      "javax.servlet;version=2.5," +
+      "javax.servlet.http;version=2.5";
+  
+  private static final String JSP_IMPORTS =
+      "javax.servlet.jsp;version=2.1," +
+      "javax.servlet.jsp.el;version=2.1," +
+      "javax.servlet.jsp.tagext;version=2.1," +
+      "javax.servlet.jsp.resources;version=2.1";
+      
+  private static final String DEFAULT_IMPORTS = 
+      SERVLET_IMPORTS + "," + JSP_IMPORTS;
+  
   /**
    * Test that we can handle a null manifest (in case a jar archive was created without manifest)
    */
@@ -80,10 +93,7 @@
         "com.ibm.test,"+
         "javax.servlet.http,"+
         "javax.servlet;version=2.5,"+
-        "javax.el;version=2.1,"+
-        "javax.servlet.jsp;version=2.1,"+
-        "javax.servlet.jsp.el;version=2.1,"+
-        "javax.servlet.jsp.tagext;version=2.1",
+        JSP_IMPORTS,
         attrs.getValue("Import-Package"));
   }
     
@@ -101,8 +111,8 @@
            "javax.servlet.jsp.tagext; version=\"[2.0,2.1]\"," +
            "javax.servlet;version=2.5," +
            "javax.servlet.http;version=2.5," +
-           "javax.el;version=2.1," +
-           "javax.servlet.jsp.el;version=2.1",
+           "javax.servlet.jsp.el;version=2.1," +
+           "javax.servlet.jsp.resources;version=2.1",
           actual);
   }
 
@@ -133,10 +143,7 @@
     
     assertTrue(attrs.getValue(Constants.BUNDLE_SYMBOLICNAME).startsWith(WAR_FILE_NAME_WO_SUFFIX));
     assertEquals("1.0", attrs.getValue(Constants.BUNDLE_VERSION));
-    assertEquals("javax.servlet;version=2.5,javax.servlet.http;version=2.5,javax.el;version=2.1," +
-        "javax.servlet.jsp;version=2.1,javax.servlet.jsp.el;version=2.1," +
-        "javax.servlet.jsp.tagext;version=2.1",
-        attrs.getValue(Constants.IMPORT_PACKAGE));
+    assertEquals(DEFAULT_IMPORTS, attrs.getValue(Constants.IMPORT_PACKAGE));
     assertEquals("WEB-INF/classes",attrs.getValue(Constants.BUNDLE_CLASSPATH));
   }
   
@@ -149,11 +156,8 @@
     
     assertEquals("/WebFiles", attrs.getValue(WarToWabConverter.WEB_CONTEXT_PATH));
     assertEquals("2.0", attrs.getValue(Constants.BUNDLE_VERSION));
-    assertEquals("org.apache.aries.test;version=2.5,org.apache.aries.test.eba;version=1.0,"+
-        "javax.servlet;version=2.5,javax.servlet.http;version=2.5,javax.el;version=2.1," +
-        "javax.servlet.jsp;version=2.1,javax.servlet.jsp.el;version=2.1," +
-        "javax.servlet.jsp.tagext;version=2.1",
-        attrs.getValue(Constants.IMPORT_PACKAGE));
+    assertEquals("org.apache.aries.test;version=2.5,org.apache.aries.test.eba;version=1.0," + DEFAULT_IMPORTS,
+                 attrs.getValue(Constants.IMPORT_PACKAGE));
   }
   
   @Test