You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by hu...@apache.org on 2010/02/15 18:21:32 UTC

svn commit: r910270 - in /incubator/aries/trunk: application/ application/application-install/ application/application-install/src/ application/application-install/src/main/ application/application-install/src/main/java/ application/application-install...

Author: hughesj
Date: Mon Feb 15 17:21:29 2010
New Revision: 910270

URL: http://svn.apache.org/viewvc?rev=910270&view=rev
Log:
ARIES-163 Simple installer for Aries applications (.eba files).

Run a "mvn install"
cd samples/blog-sample/blog-assembly/target
java org.apache.derby.tools.ij blogDB.sql
java -jar osgi-3.5.0.v20090520.jar -console -clean

Point your web browser at http://localhost:8080/org.apache.aries.samples.blog-servlet

Added:
    incubator/aries/trunk/application/application-install/
    incubator/aries/trunk/application/application-install/pom.xml
    incubator/aries/trunk/application/application-install/src/
    incubator/aries/trunk/application/application-install/src/main/
    incubator/aries/trunk/application/application-install/src/main/java/
    incubator/aries/trunk/application/application-install/src/main/java/org/
    incubator/aries/trunk/application/application-install/src/main/java/org/apache/
    incubator/aries/trunk/application/application-install/src/main/java/org/apache/aries/
    incubator/aries/trunk/application/application-install/src/main/java/org/apache/aries/application/
    incubator/aries/trunk/application/application-install/src/main/java/org/apache/aries/application/install/
    incubator/aries/trunk/application/application-install/src/main/java/org/apache/aries/application/install/EBAInstaller.java
    incubator/aries/trunk/application/application-install/src/main/resources/
    incubator/aries/trunk/application/application-install/src/main/resources/OSGI-INF/
    incubator/aries/trunk/application/application-install/src/main/resources/OSGI-INF/blueprint/
    incubator/aries/trunk/application/application-install/src/main/resources/OSGI-INF/blueprint/app-install.xml
Modified:
    incubator/aries/trunk/application/pom.xml
    incubator/aries/trunk/samples/blog-sample/blog-assembly/pom.xml
    incubator/aries/trunk/samples/blog-sample/blog-assembly/src/main/resources/configuration/config.ini

Added: incubator/aries/trunk/application/application-install/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-install/pom.xml?rev=910270&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-install/pom.xml (added)
+++ incubator/aries/trunk/application/application-install/pom.xml Mon Feb 15 17:21:29 2010
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<project>
+    <parent>
+        <artifactId>application</artifactId>
+        <groupId>org.apache.aries.application</groupId>
+        <version>1.0.0-incubating-SNAPSHOT</version>
+    </parent>
+    
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.apache.aries.application.install</artifactId>
+    <version>1.0.0-incubating-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+    <name>Apache Aries application installer</name>
+    <description>
+        A very basic application installer
+    </description>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.fileinstall</artifactId>
+            <version>2.0.8</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.aries.application</groupId>
+            <artifactId>org.apache.aries.application.api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.aries.testsupport</groupId>
+            <artifactId>org.apache.aries.testsupport.unit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.aries.application</groupId>
+            <artifactId>org.apache.aries.application.utils</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                        <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
+                        <_removeheaders>Ignore-Package,Include-Resource,Private-Package,Bundle-DocURL</_removeheaders>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

Added: incubator/aries/trunk/application/application-install/src/main/java/org/apache/aries/application/install/EBAInstaller.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-install/src/main/java/org/apache/aries/application/install/EBAInstaller.java?rev=910270&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-install/src/main/java/org/apache/aries/application/install/EBAInstaller.java (added)
+++ incubator/aries/trunk/application/application-install/src/main/java/org/apache/aries/application/install/EBAInstaller.java Mon Feb 15 17:21:29 2010
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIESOR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.aries.application.install;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.aries.application.management.ApplicationContext;
+import org.apache.aries.application.management.AriesApplication;
+import org.apache.aries.application.management.AriesApplicationManager;
+import org.apache.felix.fileinstall.ArtifactInstaller;
+import org.osgi.framework.Version;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class EBAInstaller implements ArtifactInstaller
+{
+
+  private static final Logger LOGGER = LoggerFactory.getLogger(EBAInstaller.class);
+
+  private Map<File, ApplicationContext> appContexts = new HashMap<File, ApplicationContext>();
+
+  private AriesApplicationManager applicationManager;
+
+  public AriesApplicationManager getApplicationManager()
+  {
+    return applicationManager;
+  }
+
+  public void setApplicationManager(AriesApplicationManager applicationManager)
+  {
+    this.applicationManager = applicationManager;
+  }
+
+  public boolean canHandle(File fileToHandlerLocation)
+  {
+    return fileToHandlerLocation.getName().toLowerCase().endsWith(".eba");
+  }
+
+  public void install(File applicationLocation) throws Exception
+  {
+    AriesApplication app = applicationManager
+        .createApplication(applicationLocation.toURI().toURL());
+    
+    String appSymName = app.getApplicationMetadata().getApplicationSymbolicName();
+    Version appVersion = app.getApplicationMetadata().getApplicationVersion();
+
+    LOGGER.debug("created app from {} : {} {} with contents {}", new Object[] {
+        applicationLocation.getName(), appSymName, appVersion,
+        app.getApplicationMetadata().getApplicationContents() });
+
+    ApplicationContext context = applicationManager.install(app);
+
+    LOGGER.debug("installed app {} {} state: {}", new Object[] {
+        appSymName, appVersion,
+        context.getApplicationState() });
+    
+    context.start();
+
+    LOGGER.debug("started app {} {} state: {}", new Object[] {
+        appSymName, appVersion,
+        context.getApplicationState() });
+    
+    // Store the application context away because it is the application context we need
+    // to pass to the application manager if we're later asked to uninstall the application
+    appContexts.put(applicationLocation, context);
+  }
+
+  public void uninstall(File applicationLocation) throws Exception
+  {
+    ApplicationContext context = appContexts.get(applicationLocation);
+    
+    String appSymName = context.getApplication().getApplicationMetadata().getApplicationSymbolicName();
+    Version appVersion = context.getApplication().getApplicationMetadata().getApplicationVersion();
+
+    LOGGER.debug("uninstalling {} {} ", new Object[] {
+        appSymName, appVersion });
+
+    if (context != null) {
+      context.stop();
+      applicationManager.uninstall(context);
+    }
+
+    appContexts.remove(applicationLocation);
+    
+    LOGGER.debug("uninstalled {} {} state: {}", new Object[] {
+        appSymName, appVersion,
+        context.getApplicationState() });
+  }
+
+  public void update(File arg0) throws Exception
+  {
+    throw new UnsupportedOperationException("Updating .eba file is not supported");
+  }
+}

Added: incubator/aries/trunk/application/application-install/src/main/resources/OSGI-INF/blueprint/app-install.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-install/src/main/resources/OSGI-INF/blueprint/app-install.xml?rev=910270&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-install/src/main/resources/OSGI-INF/blueprint/app-install.xml (added)
+++ incubator/aries/trunk/application/application-install/src/main/resources/OSGI-INF/blueprint/app-install.xml Mon Feb 15 17:21:29 2010
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+  
+  <reference id="app-manager" interface="org.apache.aries.application.management.AriesApplicationManager"/>
+  
+  <bean id="app-artifact-installer" class="org.apache.aries.application.install.EBAInstaller" scope="singleton" activation="lazy">
+    <property name="applicationManager" ref="app-manager"/>
+  </bean>
+
+  <service interface="org.apache.felix.fileinstall.ArtifactInstaller" ref="app-artifact-installer" />
+  
+</blueprint>

Modified: incubator/aries/trunk/application/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/pom.xml?rev=910270&r1=910269&r2=910270&view=diff
==============================================================================
--- incubator/aries/trunk/application/pom.xml (original)
+++ incubator/aries/trunk/application/pom.xml Mon Feb 15 17:21:29 2010
@@ -188,6 +188,7 @@
 		<module>application-runtime</module>
 		<module>application-itest-interface</module>
 		<module>application-itests</module>
+		<module>application-install</module>
 	</modules>
 
-</project>
\ No newline at end of file
+</project>

Modified: incubator/aries/trunk/samples/blog-sample/blog-assembly/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blog-sample/blog-assembly/pom.xml?rev=910270&r1=910269&r2=910270&view=diff
==============================================================================
--- incubator/aries/trunk/samples/blog-sample/blog-assembly/pom.xml (original)
+++ incubator/aries/trunk/samples/blog-sample/blog-assembly/pom.xml Mon Feb 15 17:21:29 2010
@@ -108,7 +108,41 @@
 			<version>1.0.0-incubating-SNAPSHOT</version>
 		</dependency>
 
+		<dependency>
+			<groupId>org.apache.aries.application</groupId>
+			<artifactId>org.apache.aries.application.install</artifactId>
+			<version>1.0.0-incubating-SNAPSHOT</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.fileinstall</artifactId>
+			<version>2.0.8</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.aries.application</groupId>
+			<artifactId>org.apache.aries.application.api</artifactId>
+			<version>1.0.0-incubating-SNAPSHOT</version>
+		</dependency>
 
+		<dependency>
+			<groupId>org.apache.aries.application</groupId>
+			<artifactId>org.apache.aries.application.management</artifactId>
+			<version>1.0.0-incubating-SNAPSHOT</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.aries.application</groupId>
+			<artifactId>org.apache.aries.application.runtime</artifactId>
+			<version>1.0.0-incubating-SNAPSHOT</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.aries.application</groupId>
+			<artifactId>org.apache.aries.application.utils</artifactId>
+			<version>1.0.0-incubating-SNAPSHOT</version>
+		</dependency>
 
 		<dependency>
 			<groupId>org.apache.aries.samples</groupId>
@@ -184,15 +218,40 @@
 					</execution>
 				</executions>
 			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-antrun-plugin</artifactId>
+				<executions>
+					<execution>
+						<phase>package</phase>
+						<goals>
+							<goal>run</goal>
+						</goals>
+						<configuration>
+							<tasks>
+								<zip basedir="${project.build.directory}"
+								     destfile="${project.build.directory}/blog.eba"
+								     includes="blog*.jar"/>
+							</tasks>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+                        <plugin>
+                                <groupId>org.codehaus.mojo</groupId>
+				<artifactId>build-helper-maven-plugin</artifactId>
+                                <executions>
+					<execution>
+					<configuration>
+						<artifact>
+							<file>${project.build.directory}/blog.eba</file>
+							<type>zip</type>
+						</artifact>
+					</configuration>
+					</execution>
+				</executions>
+			</plugin>
 		</plugins>
 	</build>
 
 </project>
-
-        
-
-        
-        
-        
-        
-        

Modified: incubator/aries/trunk/samples/blog-sample/blog-assembly/src/main/resources/configuration/config.ini
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blog-sample/blog-assembly/src/main/resources/configuration/config.ini?rev=910270&r1=910269&r2=910270&view=diff
==============================================================================
--- incubator/aries/trunk/samples/blog-sample/blog-assembly/src/main/resources/configuration/config.ini (original)
+++ incubator/aries/trunk/samples/blog-sample/blog-assembly/src/main/resources/configuration/config.ini Mon Feb 15 17:21:29 2010
@@ -1,3 +1,3 @@
-osgi.bundles=cm-3.2.0-v20070116.jar@start,services-3.1.200-v20070605.jar@start,pax-logging-api-1.4.jar@start,pax-logging-service-1.4.jar@start,derby-10.5.3.0_1.jar@start,pax-web-jetty-bundle-0.7.2.jar@start,pax-web-extender-war-0.7.2.jar@start,pax-web-jsp-0.7.2.jar@start,org.apache.aries.jndi-1.0.0-incubating-SNAPSHOT.jar@start,org.apache.aries.util-1.0.0-incubating-SNAPSHOT.jar@start,org.apache.aries.blueprint-1.0.0-incubating-SNAPSHOT.jar@start,blog-1.0.0.jar@start,blog-api-1.0.0.jar@start,blog-servlet-1.0.0.jar@start,blog-persistence-1.0.0.jar@start
+osgi.bundles=cm-3.2.0-v20070116.jar@start,services-3.1.200-v20070605.jar@start,pax-logging-api-1.4.jar@start,pax-logging-service-1.4.jar@start,derby-10.5.3.0_1.jar@start,pax-web-jetty-bundle-0.7.2.jar@start,pax-web-extender-war-0.7.2.jar@start,pax-web-jsp-0.7.2.jar@start,org.apache.aries.jndi-1.0.0-incubating-SNAPSHOT.jar@start,org.apache.aries.util-1.0.0-incubating-SNAPSHOT.jar@start,org.apache.aries.blueprint-1.0.0-incubating-SNAPSHOT.jar@start,org.apache.aries.application.install-1.0.0-incubating-SNAPSHOT.jar@start,org.apache.aries.application.management-1.0.0-incubating-SNAPSHOT.jar@start,org.apache.aries.application.api-1.0.0-incubating-SNAPSHOT.jar@start,org.apache.aries.application.utils-1.0.0-incubating-SNAPSHOT.jar@start,org.apache.felix.fileinstall-2.0.8.jar@start,org.apache.aries.application.runtime-1.0.0-incubating-SNAPSHOT.jar@start
 eclipse.ignoreApp=true
-org.ops4j.pax.logging.DefaultServiceLog.level=DEBUG
\ No newline at end of file
+org.ops4j.pax.logging.DefaultServiceLog.level=DEBUG