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
-