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;