Author: gawor
Date: Fri Dec  4 04:55:36 2009
New Revision: 887058

URL: http://svn.apache.org/viewvc?rev=887058&view=rev
Log:
fix manifest parsing and blueprint xml

Modified:
    
incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java
    
incubator/aries/trunk/application/application-utils/src/main/resources/OSGI-INF/blueprint/app-manager.xml
    
incubator/aries/trunk/application/application-utils/src/test/java/org/apache/aries/application/utils/ManifestProcessorTest.java
    
incubator/aries/trunk/application/application-utils/src/test/resources/META-INF/APPLICATION.MF

Modified: 
incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java?rev=887058&r1=887057&r2=887058&view=diff
==============================================================================
--- 
incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java
 (original)
+++ 
incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java
 Fri Dec  4 04:55:36 2009
@@ -99,29 +99,40 @@
         attribute = new StringBuilder(line);
       } else if (attribute != null) {
         // We have fully parsed an attribute
-        int index = attribute.indexOf(":");
-        String attributeName = attribute.substring(0, index).trim();
-        // TODO cope with index + 1 being after the end of attribute
-        String attributeValue = attribute.substring(index + 1).trim();
-        
-        if ("Name".equals(attributeName)) {
-          man.getEntries().put(attributeValue, new Attributes());
-          namedAttribute = attributeValue;
-        } else {
-          if (namedAttribute == null) {
-            man.getMainAttributes().put(new Attributes.Name(attributeName), 
attributeValue);
-          } else {
-            man.getAttributes(namedAttribute).put(new 
Attributes.Name(attributeName), attributeValue);
-          }
-        }
+        namedAttribute = setAttribute(man, namedAttribute, attribute);
         
         attribute = new StringBuilder(line);
       }
     }
     
+    if (attribute != null) {
+        setAttribute(man, namedAttribute, attribute);
+    }
+    
     return man;
   }
   
+  private static String setAttribute(Manifest man, String namedAttribute, 
StringBuilder attribute) 
+  {
+      int index = attribute.indexOf(":");
+      String attributeName = attribute.substring(0, index).trim();
+      // TODO cope with index + 1 being after the end of attribute
+      String attributeValue = attribute.substring(index + 1).trim();
+      
+      if ("Name".equals(attributeName)) {
+        man.getEntries().put(attributeValue, new Attributes());
+        namedAttribute = attributeValue;
+      } else {
+        if (namedAttribute == null) {
+          man.getMainAttributes().put(new Attributes.Name(attributeName), 
attributeValue);
+        } else {
+          man.getAttributes(namedAttribute).put(new 
Attributes.Name(attributeName), attributeValue);
+        }
+      }
+      
+      return namedAttribute;
+  }
+  
   /**
    * 
    * Splits a delimiter separated string, tolerating presence of non separator 
commas

Modified: 
incubator/aries/trunk/application/application-utils/src/main/resources/OSGI-INF/blueprint/app-manager.xml
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-utils/src/main/resources/OSGI-INF/blueprint/app-manager.xml?rev=887058&r1=887057&r2=887058&view=diff
==============================================================================
--- 
incubator/aries/trunk/application/application-utils/src/main/resources/OSGI-INF/blueprint/app-manager.xml
 (original)
+++ 
incubator/aries/trunk/application/application-utils/src/main/resources/OSGI-INF/blueprint/app-manager.xml
 Fri Dec  4 04:55:36 2009
@@ -21,9 +21,9 @@
   
   <bean id="core-manager" 
class="org.apache.aries.application.impl.ApplicationMetadataManagerImpl" 
scope="singleton" activation="lazy"/>
   
-  <bean id="manager-service" 
class="org.apache.aries.application.impl.ApplicationMetadataManagerServiceImpl" 
scope="prototype" destroy-method="close">
+  <bean id="manager-service" 
class="org.apache.aries.application.impl.ApplicationMetadataManagerServiceImpl" 
scope="singleton" destroy-method="close">
     <property name="manager" ref="core-manager"/>
   </bean>
   
   <service interface="org.apache.aries.application.ApplicationMetadataManager" 
ref="manager-service" />
-</blueprint>
\ No newline at end of file
+</blueprint>

Modified: 
incubator/aries/trunk/application/application-utils/src/test/java/org/apache/aries/application/utils/ManifestProcessorTest.java
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-utils/src/test/java/org/apache/aries/application/utils/ManifestProcessorTest.java?rev=887058&r1=887057&r2=887058&view=diff
==============================================================================
--- 
incubator/aries/trunk/application/application-utils/src/test/java/org/apache/aries/application/utils/ManifestProcessorTest.java
 (original)
+++ 
incubator/aries/trunk/application/application-utils/src/test/java/org/apache/aries/application/utils/ManifestProcessorTest.java
 Fri Dec  4 04:55:36 2009
@@ -47,22 +47,11 @@
 public class ManifestProcessorTest
 {
 
-  private static final String APP_FOLDER_NAME = "myAppFolder";
-  private static final String META_NAME = "META-INF";
-  private static final String SEP = ": ";
-  
-  private static File appFolder = new File(APP_FOLDER_NAME);
-  private static File f = new File(appFolder, APPLICATION_MF);
-  private static File metaFolder = new File(appFolder,META_NAME);
-  
   private static Map<String,String> pairs = null;
   
   @Before
   public void setUp() throws Exception{
     
-    //clean up in case of a bad previous run
-    tearDown();
-    
     //enforce ordering of the keys
     String[] keys = new String[]{
         "Manifest-Version",
@@ -96,39 +85,8 @@
       pairs.put(key, values[i]);
       i++;
     }
-    
-    appFolder.mkdir();
-    metaFolder.mkdir();
-    f.createNewFile();
-    PrintWriter pw = new PrintWriter(f);
-    //use write line for all but the last line
-    //count so we don't do the last line
-    i = 0;
-    for (String key : keys){
-      if (i < keys.length-1){
-        pw.println(key + SEP + pairs.get(key));
-      }
-      else{
-        //intentionally fail to print a new line at the end of the file
-        pw.print(key + SEP + pairs.get(key));
-      }
-      i++;
-    }
-    pw.write("\n\n");
-    
-    //finish writing the file
-    pw.flush();
-    pw.close();
   }
-  
-  @After
-  public void tearDown() throws Exception {
-    if (f.exists()) f.delete();
-    if (metaFolder.exists()) metaFolder.delete();
-    if (appFolder.exists()) appFolder.delete();
-  }
-  
-
+ 
   /**
    * Check a simple manifest can be read.
    * @throws Exception
@@ -136,29 +94,46 @@
   @Test
   public void testSimpleManifest() throws Exception
   {
-       Manifest mf = new Manifest(new FileInputStream(new 
File(appFolder,"/META-INF/APPLICATION.MF")));
-    Map<String, String> map = ManifestProcessor.readManifestIntoMap(mf);
-    assertNotNull(map);
-
-    //check all the expected keys and values
-    for (String key : pairs.keySet()){
-      assertTrue("Key: " + key + " was not found",map.containsKey(key));
-      String value = map.get(key);
-      assertNotNull("Value was not present for key: " + key ,value);
-      assertEquals("Value was not correct for key: " + key 
,pairs.get(key),value);
-    }
-    //check there aren't any extra entries in the map that weren't expected
-    assertEquals("The maps did not match",pairs,map);
+       Manifest mf = new 
Manifest(getClass().getClassLoader().getResourceAsStream("META-INF/APPLICATION.MF"));
+       checkManifest(mf);
   }
   
   /**
+   * Check a simple manifest can be parsed.
+   * @throws Exception
+   */
+  @Test
+  public void testParseManifest() throws Exception
+  {
+    Manifest mf = 
ManifestProcessor.parseManifest(getClass().getClassLoader().getResourceAsStream("META-INF/APPLICATION.MF"));
+    checkManifest(mf);
+  }
+  
+  private void checkManifest(Manifest mf) throws Exception 
+  {
+      Map<String, String> map = ManifestProcessor.readManifestIntoMap(mf);
+      assertNotNull(map);
+
+      assertEquals("Unexpected number of manifest entires", pairs.size(), 
map.size());
+      
+      //check all the expected keys and values
+      for (String key : pairs.keySet()){
+        assertTrue("Key: " + key + " was not found",map.containsKey(key));
+        String value = map.get(key);
+        assertNotNull("Value was not present for key: " + key ,value);
+        assertEquals("Value was not correct for key: " + key 
,pairs.get(key),value);
+      }
+      //check there aren't any extra entries in the map that weren't expected
+      assertEquals("The maps did not match",pairs,map);  
+  }
+  /**
    * Check metadata can be extracted from a simple manifest.
    */
   @Test
   public void testManifestMetadata() throws Exception
   {
     ApplicationMetadataManagerImpl manager = new 
ApplicationMetadataManagerImpl();
-    ApplicationMetadata am = manager.parseApplication(new FileInputStream(new 
File(appFolder,"/META-INF/APPLICATION.MF")));
+    ApplicationMetadata am = 
manager.parseApplication(getClass().getClassLoader().getResourceAsStream("META-INF/APPLICATION.MF"));
     assertNotNull(am);
 
     String appName = pairs.get("Application-Name");

Modified: 
incubator/aries/trunk/application/application-utils/src/test/resources/META-INF/APPLICATION.MF
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-utils/src/test/resources/META-INF/APPLICATION.MF?rev=887058&r1=887057&r2=887058&view=diff
==============================================================================
--- 
incubator/aries/trunk/application/application-utils/src/test/resources/META-INF/APPLICATION.MF
 (original)
+++ 
incubator/aries/trunk/application/application-utils/src/test/resources/META-INF/APPLICATION.MF
 Fri Dec  4 04:55:36 2009
@@ -1,10 +1,9 @@
-Manifest-Version: 1.0
-Application-ManifestVersion: 1.0
-Application-Name: Travel Reservation
-Application-SymbolicName: com.travel.reservation
-Application-Version: 1.2
-Application-Content: 
com.travel.reservation.web;version="[1.1.0,1.2.0)",com.travel.reservation.business
-Export-Package: com.travel.reservation.api;version=1.2
-Import-Package: 
com.travel.flight.api;version="[2.1.1,3.0.0)",com.travel.rail.api;version="[1.0.0,2.0.0)"
+Manifest-Version: 1.0
+Application-ManifestVersion: 1.0
+Application-Name: Travel Reservation
+Application-SymbolicName: com.travel.reservation
+Application-Version: 1.2
+Application-Content: 
com.travel.reservation.web;version="[1.1.0,1.2.0)",com.travel.reservation.business
+Export-Package: com.travel.reservation.api;version=1.2
+Import-Package: 
com.travel.flight.api;version="[2.1.1,3.0.0)",com.travel.rail.api;version="[1.0.0,2.0.0)"
 Application-Services: services.xml
-


Reply via email to