You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2010/05/05 06:50:17 UTC
svn commit: r941144 - in /geronimo/server/trunk/plugins/aries: ./
aries-deployer/ aries-deployer/src/main/history/
geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/
Author: gawor
Date: Wed May 5 04:50:17 2010
New Revision: 941144
URL: http://svn.apache.org/viewvc?rev=941144&view=rev
Log:
GERONIMO-5285: Update some of the aries application code so that it works better with the standard deploy/undeploy/start/stop operations
Modified:
geronimo/server/trunk/plugins/aries/aries-deployer/pom.xml
geronimo/server/trunk/plugins/aries/aries-deployer/src/main/history/dependencies.xml
geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationConfigBuilder.java
geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationGBean.java
geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationInstaller.java
geronimo/server/trunk/plugins/aries/pom.xml
Modified: geronimo/server/trunk/plugins/aries/aries-deployer/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/aries/aries-deployer/pom.xml?rev=941144&r1=941143&r2=941144&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/aries/aries-deployer/pom.xml (original)
+++ geronimo/server/trunk/plugins/aries/aries-deployer/pom.xml Wed May 5 04:50:17 2010
@@ -48,12 +48,13 @@
<version>${version}</version>
</dependency>
+<!--
<dependency>
<groupId>org.apache.geronimo.modules</groupId>
<artifactId>geronimo-aries-shell</artifactId>
<version>${version}</version>
</dependency>
-
+-->
<dependency>
<groupId>org.apache.geronimo.modules</groupId>
<artifactId>geronimo-aries-resolver</artifactId>
Modified: geronimo/server/trunk/plugins/aries/aries-deployer/src/main/history/dependencies.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/aries/aries-deployer/src/main/history/dependencies.xml?rev=941144&r1=941143&r2=941144&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/aries/aries-deployer/src/main/history/dependencies.xml (original)
+++ geronimo/server/trunk/plugins/aries/aries-deployer/src/main/history/dependencies.xml Wed May 5 04:50:17 2010
@@ -32,21 +32,6 @@
<type>jar</type>
</dependency>
<dependency>
- <groupId>org.apache.felix.gogo</groupId>
- <artifactId>org.apache.felix.gogo.commands</artifactId>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.apache.felix.gogo</groupId>
- <artifactId>org.apache.felix.gogo.runtime</artifactId>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.apache.felix.karaf.shell</groupId>
- <artifactId>org.apache.felix.karaf.shell.console</artifactId>
- <type>jar</type>
- </dependency>
- <dependency>
<groupId>org.apache.geronimo.components</groupId>
<artifactId>geronimo-jaspi</artifactId>
<type>jar</type>
@@ -103,11 +88,6 @@
</dependency>
<dependency>
<groupId>org.apache.geronimo.modules</groupId>
- <artifactId>geronimo-aries-shell</artifactId>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.apache.geronimo.modules</groupId>
<artifactId>geronimo-j2ee</artifactId>
<type>jar</type>
</dependency>
Modified: geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationConfigBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationConfigBuilder.java?rev=941144&r1=941143&r2=941144&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationConfigBuilder.java (original)
+++ geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationConfigBuilder.java Wed May 5 04:50:17 2010
@@ -18,12 +18,21 @@ package org.apache.geronimo.aries.builde
import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
import java.util.Collection;
import java.util.jar.JarFile;
+import java.util.jar.Manifest;
+import org.apache.aries.application.ApplicationMetadata;
+import org.apache.aries.application.ApplicationMetadataFactory;
+import org.apache.aries.application.filesystem.IDirectory;
+import org.apache.aries.application.filesystem.IFile;
import org.apache.aries.application.management.AriesApplication;
import org.apache.aries.application.management.AriesApplicationManager;
+import org.apache.aries.application.utils.AppConstants;
import org.apache.aries.application.utils.filesystem.FileSystem;
+import org.apache.aries.application.utils.manifest.ManifestDefaultsInjector;
+import org.apache.aries.application.utils.manifest.ManifestProcessor;
import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.deployment.ConfigurationBuilder;
import org.apache.geronimo.deployment.DeploymentContext;
@@ -55,8 +64,8 @@ public class ApplicationConfigBuilder im
private ApplicationInstaller installer;
public ApplicationConfigBuilder(@ParamReference(name="Installer") ApplicationInstaller installer,
- @ParamSpecial(type = SpecialAttributeType.kernel) Kernel kernel,
- @ParamSpecial(type = SpecialAttributeType.bundleContext) BundleContext bundleContext)
+ @ParamSpecial(type = SpecialAttributeType.kernel) Kernel kernel,
+ @ParamSpecial(type = SpecialAttributeType.bundleContext) BundleContext bundleContext)
throws GBeanNotFoundException {
this.installer = installer;
this.bundleContext = bundleContext;
@@ -82,6 +91,16 @@ public class ApplicationConfigBuilder im
}
}
+ private ApplicationMetadataFactory getApplicationMetadataFactory() {
+ ServiceReference ref =
+ bundleContext.getServiceReference(ApplicationMetadataFactory.class.getName());
+ if (ref != null) {
+ return (ApplicationMetadataFactory) bundleContext.getService(ref);
+ } else {
+ return null;
+ }
+ }
+
public Object getDeploymentPlan(File planFile,
JarFile jarFile,
ModuleIDBuilder idBuilder)
@@ -100,11 +119,24 @@ public class ApplicationConfigBuilder im
public Artifact getConfigurationID(Object plan,
JarFile jarFile,
ModuleIDBuilder idBuilder)
- throws IOException, DeploymentException {
-
- Artifact name = new Artifact("eba", "application", "0.0.0", "jar");
-
- return name;
+ throws IOException, DeploymentException {
+ ApplicationMetadataFactory factory = getApplicationMetadataFactory();
+ IDirectory ebaFile = FileSystem.getFSRoot(new File(jarFile.getName()));
+ IFile applicationManifestFile = ebaFile.getFile(AppConstants.APPLICATION_MF);
+ Manifest applicationManifest;
+ if (applicationManifestFile != null) {
+ InputStream in = applicationManifestFile.open();
+ try {
+ applicationManifest = ManifestProcessor.parseManifest(in);
+ } finally {
+ try { in.close(); } catch (IOException ignore) {}
+ }
+ } else {
+ applicationManifest = new Manifest();
+ }
+ ManifestDefaultsInjector.updateManifest(applicationManifest, ebaFile.getName(), ebaFile);
+ ApplicationMetadata metadata = factory.createApplicationMetadata(applicationManifest);
+ return ApplicationInstaller.getConfigId(metadata);
}
public DeploymentContext buildConfiguration(boolean inPlaceDeployment,
Modified: geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationGBean.java?rev=941144&r1=941143&r2=941144&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationGBean.java (original)
+++ geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationGBean.java Wed May 5 04:50:17 2010
@@ -238,11 +238,13 @@ public class ApplicationGBean implements
for (Bundle bundle : applicationBundles) {
try {
- bundle.stop();
+ bundle.uninstall();
} catch (Exception e) {
e.printStackTrace();
}
}
+ applicationBundles.clear();
+
applicationState = ApplicationState.RESOLVED;
}
@@ -262,7 +264,6 @@ public class ApplicationGBean implements
protected void applicationStop() throws BundleException {
try {
installer.getConfigurationManager().unloadConfiguration(configId);
- bundle.stop();
} catch (Exception e) {
throw new BundleException("Failed to start application", e);
}
@@ -270,27 +271,15 @@ public class ApplicationGBean implements
protected void applicationUninstall() {
LOG.debug("Uninstalling {}", application.getApplicationMetadata().getApplicationScope());
-
- // uninstall application bundles
- for (Bundle bundle : applicationBundles) {
- try {
- bundle.uninstall();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- applicationBundles.clear();
- // uninstall configuration
- installer.uninstall(application);
-
- // uninstall application bundle
try {
- bundle.uninstall();
+ installer.getConfigurationManager().unloadConfiguration(configId);
+ installer.getConfigurationManager().uninstallConfiguration(configId);
} catch (Exception e) {
- e.printStackTrace();
- }
-
+ // ignore
+ }
+
applicationState = ApplicationState.UNINSTALLED;
}
+
}
Modified: geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationInstaller.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationInstaller.java?rev=941144&r1=941143&r2=941144&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationInstaller.java (original)
+++ geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/ApplicationInstaller.java Wed May 5 04:50:17 2010
@@ -20,6 +20,7 @@ import java.io.File;
import java.io.IOException;
import java.util.Collection;
+import org.apache.aries.application.ApplicationMetadata;
import org.apache.aries.application.management.AriesApplication;
import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.deployment.DeploymentContext;
@@ -41,7 +42,6 @@ import org.apache.geronimo.kernel.config
import org.apache.geronimo.kernel.config.ConfigurationUtil;
import org.apache.geronimo.kernel.repository.Artifact;
import org.apache.geronimo.kernel.repository.Environment;
-import org.apache.geronimo.kernel.repository.Repository;
import org.apache.geronimo.kernel.util.FileUtils;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
@@ -95,19 +95,21 @@ public class ApplicationInstaller implem
}
public DeploymentContext startInstall(AriesApplication app, ConfigurationStore targetConfigurationStore)
- throws ConfigurationAlreadyExistsException, DeploymentException {
+ throws ConfigurationAlreadyExistsException, IOException, DeploymentException {
- Artifact configId = getConfigId(app);
+ Artifact configId = getConfigId(app.getApplicationMetadata());
- File configDir = targetConfigurationStore.createNewConfigurationDir(configId);
+ targetConfigurationStore.createNewConfigurationDir(configId);
Environment environment = new Environment();
environment.setConfigId(configId);
Naming naming = kernel.getNaming();
AbstractName moduleName = naming.createRootName(configId, configId.toString(), "AriesApplication");
+ //Use a temporary folder to hold the extracted files for analysis use
+ File tempDirectory = FileUtils.createTempDir();
try {
- DeploymentContext context = new DeploymentContext(configDir,
+ DeploymentContext context = new DeploymentContext(tempDirectory,
null,
environment,
moduleName,
@@ -120,7 +122,7 @@ public class ApplicationInstaller implem
context.flush();
context.initializeConfiguration();
- app.store(configDir);
+ app.store(tempDirectory);
AbstractName name = naming.createChildName(moduleName, "AriesApplication", "GBean");
GBeanData data = new GBeanData(name, ApplicationGBean.class);
@@ -153,7 +155,7 @@ public class ApplicationInstaller implem
}
}
- public void install(AriesApplication app) throws ConfigurationAlreadyExistsException, DeploymentException {
+ public void install(AriesApplication app) throws ConfigurationAlreadyExistsException, IOException, DeploymentException {
ConfigurationStore store = configurationStores.iterator().next();
if (store == null) {
throw new DeploymentException("No ConfigurationStore");
@@ -169,39 +171,13 @@ public class ApplicationInstaller implem
throw new DeploymentException("", e);
}
}
-
- public void uninstall(AriesApplication app) {
- Artifact configId = getConfigId(app);
- try {
- Repository repository = findRepository(configId);
- File location = repository.getLocation(configId);
-
- configurationManager.unloadConfiguration(configId);
- configurationManager.uninstallConfiguration(configId);
- FileUtils.recursiveDelete(location.getParentFile());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- private Repository findRepository(Artifact configId) {
- for (Repository repository : configurationManager.getRepositories()) {
- if (repository.contains(configId)) {
- return repository;
- }
- }
- return null;
- }
-
- private static Artifact getConfigId(AriesApplication app) {
- return createArtifact("aries-app",
- app.getApplicationMetadata().getApplicationSymbolicName(),
- app.getApplicationMetadata().getApplicationVersion());
+ public static Artifact getConfigId(ApplicationMetadata metadata) {
+ return createArtifact("application", metadata.getApplicationSymbolicName(), metadata.getApplicationVersion());
}
private static Artifact createArtifact(String group, String symbolicName, Version version) {
- return new Artifact(group, symbolicName, getVersion(version), "jar");
+ return new Artifact(group, symbolicName, getVersion(version), "eba");
}
private static String getVersion(Version version) {
Modified: geronimo/server/trunk/plugins/aries/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/aries/pom.xml?rev=941144&r1=941143&r2=941144&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/aries/pom.xml (original)
+++ geronimo/server/trunk/plugins/aries/pom.xml Wed May 5 04:50:17 2010
@@ -39,7 +39,9 @@
<modules>
<module>geronimo-aries-builder</module>
<module>geronimo-aries-resolver</module>
+<!--
<module>geronimo-aries-shell</module>
+-->
<module>aries-deployer</module>
</modules>
@@ -48,17 +50,17 @@
<dependency>
<groupId>org.apache.aries.application</groupId>
<artifactId>org.apache.aries.application.utils</artifactId>
- <version>0.1-incubating</version>
+ <version>0.1-incubating-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.aries.application</groupId>
<artifactId>org.apache.aries.application.api</artifactId>
- <version>0.1-incubating</version>
+ <version>0.1-incubating-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.aries.application</groupId>
<artifactId>org.apache.aries.application.management</artifactId>
- <version>0.1-incubating</version>
+ <version>0.1-incubating-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>