You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by li...@apache.org on 2010/07/07 21:58:22 UTC

svn commit: r961489 - in /incubator/aries/trunk/application: application-itests/src/test/java/org/apache/aries/application/runtime/itests/ application-management/src/main/java/org/apache/aries/application/management/impl/

Author: linsun
Date: Wed Jul  7 19:58:22 2010
New Revision: 961489

URL: http://svn.apache.org/viewvc?rev=961489&view=rev
Log:
ARIES-352 Aries application name is not calculated correctly when it is not being provided

Modified:
    incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/BasicAppManagerTest.java
    incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java

Modified: incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/BasicAppManagerTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/BasicAppManagerTest.java?rev=961489&r1=961488&r2=961489&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/BasicAppManagerTest.java (original)
+++ incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/BasicAppManagerTest.java Wed Jul  7 19:58:22 2010
@@ -81,6 +81,9 @@ public class BasicAppManagerTest extends
     
     AriesApplicationManager manager = getOsgiService(AriesApplicationManager.class);
     AriesApplication app = manager.createApplication(FileSystem.getFSRoot(new File("test.eba")));
+    
+    // application name should be equal to eba name since application.mf is not provided
+    assertEquals("test.eba", app.getApplicationMetadata().getApplicationName());
     AriesApplicationContext ctx = manager.install(app);
     ctx.start();
     
@@ -96,6 +99,10 @@ public class BasicAppManagerTest extends
   public void testAppWithApplicationManifest() throws Exception {
     AriesApplicationManager manager = getOsgiService(AriesApplicationManager.class);
     AriesApplication app = manager.createApplication(FileSystem.getFSRoot(new File("test2.eba")));
+    
+    // application name should equal to whatever Application name provided in the application.mf
+    assertEquals("test application 2", app.getApplicationMetadata().getApplicationName());
+    
     AriesApplicationContext ctx = manager.install(app);
     ctx.start();
     

Modified: incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java?rev=961489&r1=961488&r2=961489&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java (original)
+++ incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java Wed Jul  7 19:58:22 2010
@@ -112,16 +112,23 @@ public class AriesApplicationManagerImpl
     DeploymentMetadata deploymentMetadata = null;
     Map<String, BundleConversion> modifiedBundles = new HashMap<String, BundleConversion>();
     AriesApplicationImpl application = null;
-    String appName = ebaFile.getName();
-    //If the application name is null, we will try to get the file name.
-    if ((appName == null) || (appName.isEmpty())) {
-        String fullPath = ebaFile.toString();
-        if (fullPath.endsWith("/"))
-            fullPath = fullPath.substring(0, fullPath.length() -1);
-        int last_slash = fullPath.lastIndexOf("/");
-        appName = fullPath.substring(last_slash + 1, fullPath.length()); 
-    }
-    try { 
+    String appPath = ebaFile.toString();
+    try {   
+      // try to read the app name out of the application.mf
+      Manifest applicationManifest = parseApplicationManifest (ebaFile);
+      String appName = applicationManifest.getMainAttributes().getValue(AppConstants.APPLICATION_NAME);
+
+      //If the application name is null, we will try to get the file name.
+      if (appName == null || appName.isEmpty()) {
+          String fullPath = appPath;
+          if (fullPath.endsWith("/")) {
+            fullPath = fullPath.substring(0, fullPath.length() -1);  
+          }
+              
+          int last_slash = fullPath.lastIndexOf("/");
+          appName = fullPath.substring(last_slash + 1, fullPath.length()); 
+      }
+      
       IFile deploymentManifest = ebaFile.getFile(AppConstants.DEPLOYMENT_MF);
       /* We require that all other .jar and .war files included by-value be valid bundles
        * because a DEPLOYMENT.MF has been provided. If no DEPLOYMENT.MF, migrate 
@@ -165,7 +172,7 @@ public class AriesApplicationManagerImpl
           }
         } 
       }
-      Manifest applicationManifest = parseApplicationManifest (ebaFile); 
+ 
       ManifestDefaultsInjector.updateManifest(applicationManifest, appName, ebaFile); 
       applicationMetadata = _applicationMetadataFactory.createApplicationMetadata(applicationManifest);
       
@@ -185,7 +192,7 @@ public class AriesApplicationManagerImpl
       // Store a reference to any modified bundles
       application.setModifiedBundles (modifiedBundles);
     } catch (IOException iox) {
-      _logger.error ("APPMANAGEMENT0006E", new Object []{appName, iox});
+      _logger.error ("APPMANAGEMENT0006E", new Object []{appPath, iox});
       throw new ManagementException(iox);
     }
     return application;