You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by mn...@apache.org on 2010/01/04 18:18:35 UTC
svn commit: r895710 - in /incubator/aries/trunk/application:
application-api/src/main/java/org/apache/aries/application/
application-api/src/main/java/org/apache/aries/application/management/
application-management/src/main/java/org/apache/aries/applic...
Author: mnuttall
Date: Mon Jan 4 17:18:30 2010
New Revision: 895710
URL: http://svn.apache.org/viewvc?rev=895710&view=rev
Log:
ARIES-89: Implement application support: Create deployment metadata
Added:
incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/ExplodedEBA.java
incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentContentImpl.java
Modified:
incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/ApplicationMetadata.java
incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/Content.java
incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/DeploymentMetadata.java
incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/AriesApplicationResolver.java
incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/BundleConverter.java
incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationImpl.java
incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java
incubator/aries/trunk/application/application-management/src/main/resources/OSGI-INF/blueprint/app-management.xml
incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/ApplicationMetadataImpl.java
incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/ContentImpl.java
incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataFactoryImpl.java
incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataImpl.java
incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/messages/APPUTILSmessages.properties
Modified: incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/ApplicationMetadata.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/ApplicationMetadata.java?rev=895710&r1=895709&r2=895710&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/ApplicationMetadata.java (original)
+++ incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/ApplicationMetadata.java Mon Jan 4 17:18:30 2010
@@ -18,6 +18,8 @@
*/
package org.apache.aries.application;
+import java.io.File;
+import java.io.OutputStream;
import java.util.List;
import org.osgi.framework.Version;
@@ -70,4 +72,8 @@
* @return the value of the AppScope
*/
public String getApplicationScope();
+
+ /** Stores any changes to disk using this implementation's storage form */
+ public void store(File f);
+ public void store(OutputStream out);
}
Modified: incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/Content.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/Content.java?rev=895710&r1=895709&r2=895710&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/Content.java (original)
+++ incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/Content.java Mon Jan 4 17:18:30 2010
@@ -34,12 +34,6 @@
public String getContentName();
/**
- * get the entire content including the content name, directives & attributes
- * @return the entire content in String format
- */
- public String getContent();
-
- /**
* get the attributes of the content
* @return the attributes of the content
*/
Modified: incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/DeploymentMetadata.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/DeploymentMetadata.java?rev=895710&r1=895709&r2=895710&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/DeploymentMetadata.java (original)
+++ incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/DeploymentMetadata.java Mon Jan 4 17:18:30 2010
@@ -19,6 +19,8 @@
package org.apache.aries.application;
+import java.io.File;
+import java.io.OutputStream;
import java.util.List;
import org.osgi.framework.Version;
@@ -53,4 +55,8 @@
* @return the application.
*/
public ApplicationMetadata getApplicationMetadata();
+
+ /** Stores any changes to disk using this implementation's storage form */
+ public void store(File f);
+ public void store(OutputStream in);
}
Modified: incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/AriesApplicationResolver.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/AriesApplicationResolver.java?rev=895710&r1=895709&r2=895710&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/AriesApplicationResolver.java (original)
+++ incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/AriesApplicationResolver.java Mon Jan 4 17:18:30 2010
@@ -26,7 +26,8 @@
/** Resolve an AriesApplication
*
* @param app The application to resolve
- * @return The complete set of bundles required to resolve the application
+ * @return The additional bundles required to ensure that the application resolves. This
+ * set will not include those provided by value within the application.
*/
Set<BundleInfo> resolve (AriesApplication app);
}
Modified: incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/BundleConverter.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/BundleConverter.java?rev=895710&r1=895709&r2=895710&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/BundleConverter.java (original)
+++ incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/BundleConverter.java Mon Jan 4 17:18:30 2010
@@ -21,6 +21,8 @@
import java.io.InputStream;
+import org.apache.aries.application.filesystem.IDirectory;
+
/**
* A BundleConverter turns a .jar that is not an OSGi bundle into a well formed OSGi bundle,
* or a .war that is not a WAB into a WAB.
@@ -29,9 +31,11 @@
/**
*
* @param inputBundle Stream to the input bundle
- * @param bundleFileName Used to infer which type of conversion is required.
+ * @param artifact The root of the eba containing the artifact being converted -
+ * currently a .zip file. In time we may come to support this
+ * being an exploded directory.
* @return valid input stream or null if the bundle could not be converted.
*/
- public InputStream convert (InputStream inputBundle, String bundleFileName);
+ public InputStream convert (InputStream inputBundle, IDirectory parentEba);
}
Modified: incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationImpl.java?rev=895710&r1=895709&r2=895710&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationImpl.java (original)
+++ incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationImpl.java Mon Jan 4 17:18:30 2010
@@ -20,8 +20,10 @@
package org.apache.aries.application.management.impl;
import java.io.File;
+import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.apache.aries.application.ApplicationMetadata;
@@ -35,6 +37,10 @@
private ApplicationMetadata _applicationMetadata;
private DeploymentMetadata _deploymentMetadata;
+ // Placeholders for information we'll need for store()
+ private boolean _applicationManifestChanged = false;
+ private Map<String, InputStream> _modifiedBundles = null;
+
public AriesApplicationImpl(ApplicationMetadata meta, Set<BundleInfo> bundleInfo) {
_applicationMetadata = meta;
_bundleInfo = bundleInfo;
@@ -51,8 +57,7 @@
}
public DeploymentMetadata getDeploymentMetadata() {
- // TODO Auto-generated method stub
- return null;
+ return _deploymentMetadata;
}
public void store(File f) {
@@ -69,4 +74,14 @@
_deploymentMetadata = dm;
}
+ // When store() is called we'll need to know whether application.mf was changed,
+ // or any constituent .wars or .jars migrated to bundles in the course of constructing
+ // the AriesApplication.
+ void setApplicationManifestChanged (boolean changed) {
+ _applicationManifestChanged = changed;
+ }
+
+ void setModifiedBundles (Map<String, InputStream> modifiedBundles) {
+ _modifiedBundles = modifiedBundles;
+ }
}
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=895710&r1=895709&r2=895710&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 Mon Jan 4 17:18:30 2010
@@ -29,7 +29,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.jar.Attributes;
import java.util.jar.Manifest;
import org.apache.aries.application.ApplicationMetadata;
@@ -91,6 +90,7 @@
DeploymentMetadata deploymentMetadata;
Map<String, InputStream> modifiedBundles = new HashMap<String, InputStream>();
AriesApplicationImpl application = null;
+ boolean manifestChanged = false;
try {
if (!ebaFile.isFile()) {
@@ -101,22 +101,20 @@
// Locate META-INF/APPLICATION.MF and ensure that the
// manifest has the necessary fields set
Manifest applicationManifest = parseManifest (ebaFile, AppConstants.APPLICATION_MF);
- boolean manifestChanged = ManifestDefaultsInjector.updateManifest(applicationManifest, ebaFile.getName(), ebaFile);
+ manifestChanged = ManifestDefaultsInjector.updateManifest(applicationManifest, ebaFile.getName(), ebaFile);
applicationMetadata = _applicationMetadataManager.createApplicationMetadata(applicationManifest);
Manifest deploymentManifest = parseManifest (ebaFile, AppConstants.DEPLOYMENT_MF);
if (deploymentManifest != null) {
// If there's a deployment.mf present, check it matches applicationManifest, and if so, use it
} else {
- // -- Look for application.xml to support .war file migration
- // -- Process any other files in the .eba, i.e. migrate wars to wabs, plain jars to bundles
+ // -- Process any other files in the .eba, i.e. migrate wars to wabs, plain jars to bundles
IDirectory eba = FileSystem.getFSRoot(ebaFile);
- IFile appXml = eba.getFile(AppConstants.APPLICATION_XML);
+
Set<BundleInfo> bundleInfo = new HashSet<BundleInfo>();
for (IFile f : eba) {
BundleManifest bm = getBundleManifest (f);
if (bm != null) {
- Attributes bundleAttributes;
if (bm.isValid()) {
bundleInfo.add(new BundleInfoImpl(bm, null));
} else {
@@ -128,13 +126,15 @@
Iterator<BundleConverter> converters = _bundleConverters.iterator();
while (converters.hasNext() && convertedBinary == null) {
try {
- convertedBinary = converters.next().convert(is, f.getName());
+ // WarToWabConverter can extract application.xml via
+ // eba.getFile(AppConstants.APPLICATION_XML);
+ convertedBinary = converters.next().convert(is, eba);
} catch (ServiceException sx) {
// We'll get this if our optional BundleConverter has not been injected.
}
}
if (convertedBinary != null) {
- modifiedBundles.put (f.getName(), convertedBinary); // I expect I'll need the filename in a bit
+ modifiedBundles.put (f.getName(), convertedBinary);
bm = BundleManifest.fromBundle(is);
bundleInfo.add(new BundleInfoImpl(bm, null));
}
@@ -144,19 +144,22 @@
} catch (IOException iox) {}
}
}
- }
+ }
}
application = new AriesApplicationImpl (applicationMetadata, bundleInfo);
- Set<BundleInfo> resolvedBundles = _resolver.resolve(application);
- deploymentMetadata = _deploymentMetadataFactory.createDeploymentMetadata(application, resolvedBundles);
+ Set<BundleInfo> additionalBundlesRequired = _resolver.resolve(application);
+ deploymentMetadata = _deploymentMetadataFactory.createDeploymentMetadata(application, additionalBundlesRequired);
application.setDeploymentMetadata(deploymentMetadata);
+
+ // We may have changed parts of its content. The application's store()
+ // method needs to be able to work. Do something with modifiedBundles
+ // and manifestChanged. We'll save them in the application for now.
+ application.setApplicationManifestChanged (manifestChanged);
+ application.setModifiedBundles (modifiedBundles);
+
}
-
- // We may have changed parts of its content. The application's store()
- // method needs to be able to work. Do something with modifiedBundles
- // and manifestChanged
-
} catch (IOException iox) {
+ // Log an error
throw new ManagementException(iox);
}
Added: incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/ExplodedEBA.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/ExplodedEBA.java?rev=895710&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/ExplodedEBA.java (added)
+++ incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/ExplodedEBA.java Mon Jan 4 17:18:30 2010
@@ -0,0 +1,35 @@
+/*
+ * 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.management.impl;
+
+/**
+ * An administrator may supply an application.eba file that will be changed before deployment.
+ * We may augment, or even create, META-INF/APPLICATION.MF.
+ * We will create META-INF/DEPLOYMENT.MF if one does not exist.
+ * We may migrate plain .war files to WABs, and may also migrate plain .jar files to become
+ * well formed bundles. Thus the .eba file that will be subsequently used to provide bundles into
+ * the application server's runtime may differ from that originally provided by the administrator.
+ * This class handles the creation of the modified .eba artifact.
+ */
+public class ExplodedEBA {
+
+ // TODO
+
+}
Modified: incubator/aries/trunk/application/application-management/src/main/resources/OSGI-INF/blueprint/app-management.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-management/src/main/resources/OSGI-INF/blueprint/app-management.xml?rev=895710&r1=895709&r2=895710&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-management/src/main/resources/OSGI-INF/blueprint/app-management.xml (original)
+++ incubator/aries/trunk/application/application-management/src/main/resources/OSGI-INF/blueprint/app-management.xml Mon Jan 4 17:18:30 2010
@@ -32,8 +32,6 @@
interface="org.apache.aries.application.management.BundleConverter"
availability="optional"/>
<reference id="resolver" interface="org.apache.aries.application.management.AriesApplicationResolver"/>
-
-
<service interface="org.apache.aries.application.management.AriesApplicationManager" ref="manager-service" />
Modified: incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/ApplicationMetadataImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/ApplicationMetadataImpl.java?rev=895710&r1=895709&r2=895710&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/ApplicationMetadataImpl.java (original)
+++ incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/ApplicationMetadataImpl.java Mon Jan 4 17:18:30 2010
@@ -18,6 +18,8 @@
*/
package org.apache.aries.application.impl;
+import java.io.File;
+import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -169,4 +171,14 @@
{
return appScope.hashCode();
}
+
+ public void store(File f) {
+ // TODO when writing AriesApplication.store()
+
+ }
+
+ public void store(OutputStream out) {
+ // TODO when writing AriesApplication.store()
+
+ }
}
\ No newline at end of file
Modified: incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/ContentImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/ContentImpl.java?rev=895710&r1=895709&r2=895710&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/ContentImpl.java (original)
+++ incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/ContentImpl.java Mon Jan 4 17:18:30 2010
@@ -24,6 +24,11 @@
import org.apache.aries.application.Content;
import org.apache.aries.application.VersionRange;
+import org.apache.aries.application.utils.internal.MessageUtil;
+import org.apache.aries.application.utils.manifest.ManifestHeaderProcessor;
+import org.apache.aries.application.utils.manifest.ManifestHeaderProcessor.NameValueMap;
+import org.osgi.framework.Constants;
+import org.osgi.framework.Version;
/**
@@ -32,24 +37,44 @@
*/
public final class ContentImpl implements Content
{
- private String content;
private String contentName;
protected Map<String, String> attributes;
private Map<String, String> directives;
+ private NameValueMap<String, String> nameValueMap;
/**
*
* @param content Application-Content, Import-Package content
*/
public ContentImpl(String content) {
- this.content = content;
- this.attributes = new HashMap<String, String>();
- this.directives = new HashMap<String, String>();
- setup(content, this.attributes, this.directives);
+ Map<String, NameValueMap<String, String>> appContentsMap = ManifestHeaderProcessor.parseImportString(content);
+ if (appContentsMap.size() != 1) {
+ throw new IllegalArgumentException(MessageUtil.getMessage("APPUTILS0004E",content));
+ }
+ for (Map.Entry<String, NameValueMap<String, String>> entry : appContentsMap.entrySet()) {
+ this.contentName = entry.getKey();
+ this.nameValueMap= entry.getValue();
+ setup();
+ break;
+ }
+ }
+
+ public ContentImpl (String bundleSymbolicName, Version version) {
+ this.contentName = bundleSymbolicName;
+ this.nameValueMap = new NameValueMap<String, String>();
+ nameValueMap.put("version", version.toString());
+ setup();
}
- public String getContent() {
- return this.content;
+ /**
+ *
+ * @param contentName
+ * @param nameValueMap
+ */
+ public ContentImpl(String contentName, NameValueMap<String, String> nameValueMap) {
+ this.contentName = contentName;
+ this.nameValueMap= nameValueMap;
+ setup();
}
public String getContentName() {
@@ -94,10 +119,12 @@
public VersionRange getVersion() {
VersionRange vi = null;
- if (this.attributes.get("version") != null && this.attributes.get("version").length() > 0) {
- vi = new VersionRangeImpl(this.attributes.get("version"));
+ if (this.attributes.get(Constants.VERSION_ATTRIBUTE) != null
+ && this.attributes.get(Constants.VERSION_ATTRIBUTE).length() > 0) {
+ vi = ManifestHeaderProcessor.parseVersionRange(this.attributes.get(Constants.VERSION_ATTRIBUTE));
} else {
- vi = new VersionRangeImpl("0.0.0");
+ // what if version is not specified? let's interpret it as 0.0.0
+ vi = ManifestHeaderProcessor.parseVersionRange("0.0.0");
}
return vi;
}
@@ -105,7 +132,7 @@
@Override
public String toString()
{
- return content;
+ return this.contentName + ";" + this.nameValueMap.toString();
}
@Override
@@ -147,43 +174,18 @@
}
/**
- * setup attributes and directives from the Application-Content or Import-Package
- * @param content
- * @param attributes
- * @param directives
+ * set up directives and attributes
*/
- protected void setup(String content, Map<String, String> attributes, Map<String, String> directives)
- {
- String[] tokens = content.split(";");
- if (tokens.length < 1) {
- throw new IllegalArgumentException("Invalid content: " + content);
- }
- this.contentName = tokens[0].trim();
- for (int i = 1; i < tokens.length; i++) {
- int pos = tokens[i].indexOf('=');
- if (pos != -1) {
- if (pos > 0 && tokens[i].charAt(pos - 1) == ':') {
- String name = tokens[i].substring(0, pos - 1).trim();
- String value = tokens[i].substring(pos + 1).trim();
- directives.put(name, trimDoubleQuotes(value));
- } else {
- String name = tokens[i].substring(0, pos).trim();
- String value = tokens[i].substring(pos + 1).trim();
- attributes.put(name, trimDoubleQuotes(value));
- }
+ protected void setup() {
+ this.attributes = new HashMap<String, String>();
+ this.directives = new HashMap<String, String>();
+
+ for (String key : this.nameValueMap.keySet()) {
+ if (key.endsWith(":")) {
+ this.directives.put(key.substring(0, key.length() - 1), this.nameValueMap.get(key));
+ } else {
+ this.attributes.put(key, this.nameValueMap.get(key));
}
}
}
-
- /**
- * this method trims the double quotes at the beginning and end, for example version="1.0.0"
- * @param value
- * @return
- */
- private String trimDoubleQuotes(String value) {
- if (value.startsWith("\"") && value.endsWith("\"")) {
- value = value.substring(1, value.length() -1);
- }
- return value;
- }
}
Added: incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentContentImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentContentImpl.java?rev=895710&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentContentImpl.java (added)
+++ incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentContentImpl.java Mon Jan 4 17:18:30 2010
@@ -0,0 +1,68 @@
+/*
+ * 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.impl;
+
+import java.util.Map;
+
+import org.apache.aries.application.DeploymentContent;
+import org.apache.aries.application.VersionRange;
+import org.osgi.framework.Version;
+
+public class DeploymentContentImpl implements DeploymentContent {
+
+ private ContentImpl _content;
+
+ public DeploymentContentImpl (String content) {
+ _content = new ContentImpl (content);
+ }
+
+ public DeploymentContentImpl (String bundleSymbolicName, Version version) {
+ _content = new ContentImpl (bundleSymbolicName, version);
+ }
+
+ public Version getExactVersion() {
+ return getVersion().getExactVersion();
+ }
+
+ public String getAttribute(String key) {
+ return _content.getAttribute(key);
+ }
+
+ public Map<String, String> getAttributes() {
+ return _content.getAttributes();
+ }
+
+ public String getContentName() {
+ return _content.getContentName();
+ }
+
+ public String getDirective(String key) {
+ return _content.getDirective(key);
+ }
+
+ public Map<String, String> getDirectives() {
+ return _content.getDirectives();
+ }
+
+ public VersionRange getVersion() {
+ return _content.getVersion();
+ }
+
+}
Modified: incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataFactoryImpl.java?rev=895710&r1=895709&r2=895710&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataFactoryImpl.java (original)
+++ incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataFactoryImpl.java Mon Jan 4 17:18:30 2010
@@ -20,9 +20,7 @@
package org.apache.aries.application.impl;
import java.util.Set;
-import java.util.jar.Manifest;
-import org.apache.aries.application.ApplicationMetadata;
import org.apache.aries.application.DeploymentMetadata;
import org.apache.aries.application.DeploymentMetadataFactory;
import org.apache.aries.application.management.AriesApplication;
@@ -31,11 +29,7 @@
public class DeploymentMetadataFactoryImpl implements DeploymentMetadataFactory {
public DeploymentMetadata createDeploymentMetadata(AriesApplication app,
- Set<BundleInfo> bundleInfo) {
- // TODO Auto-generated method stub
- return null;
+ Set<BundleInfo> additionalBundlesRequired) {
+ return new DeploymentMetadataImpl (app, additionalBundlesRequired);
}
-
-
-
}
Modified: incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataImpl.java?rev=895710&r1=895709&r2=895710&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataImpl.java (original)
+++ incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataImpl.java Mon Jan 4 17:18:30 2010
@@ -19,33 +19,61 @@
package org.apache.aries.application.impl;
+import java.io.File;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import java.util.Set;
import org.apache.aries.application.ApplicationMetadata;
import org.apache.aries.application.DeploymentContent;
import org.apache.aries.application.DeploymentMetadata;
+import org.apache.aries.application.management.AriesApplication;
+import org.apache.aries.application.management.BundleInfo;
import org.osgi.framework.Version;
public class DeploymentMetadataImpl implements DeploymentMetadata {
+
+ ApplicationMetadata _applicationMetadata;
+ List<DeploymentContent> _deploymentContent;
+
+ public DeploymentMetadataImpl (AriesApplication app, Set<BundleInfo> additionalBundlesRequired) {
+ _applicationMetadata = app.getApplicationMetadata();
+ _deploymentContent = new ArrayList<DeploymentContent>();
+ for (BundleInfo bundleInfo : additionalBundlesRequired) {
+ DeploymentContentImpl dci = new DeploymentContentImpl(bundleInfo.getSymbolicName(),
+ bundleInfo.getVersion());
+ _deploymentContent.add(dci);
+ }
+ }
public List<DeploymentContent> getApplicationDeploymentContents() {
- // TODO Auto-generated method stub
- return null;
+ return Collections.unmodifiableList(_deploymentContent);
}
public ApplicationMetadata getApplicationMetadata() {
- // TODO Auto-generated method stub
- return null;
+ return _applicationMetadata;
}
public String getApplicationSymbolicName() {
- // TODO Auto-generated method stub
- return null;
+ return _applicationMetadata.getApplicationSymbolicName();
}
public Version getApplicationVersion() {
- // TODO Auto-generated method stub
- return null;
+ return _applicationMetadata.getApplicationVersion();
+ }
+
+
+ public void store(File f) {
+ // TODO when writing AriesApplication.store()
+
+ }
+
+
+ public void store(OutputStream in) {
+ // TODO when writing AriesApplication.store()
+
}
}
Modified: incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/messages/APPUTILSmessages.properties
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/messages/APPUTILSmessages.properties?rev=895710&r1=895709&r2=895710&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/messages/APPUTILSmessages.properties (original)
+++ incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/messages/APPUTILSmessages.properties Mon Jan 4 17:18:30 2010
@@ -1,3 +1,4 @@
+APPUTILS0004E=APPUTILS0004E: Unable to create ContentImpl object based on content: {0}.
APPUTILS0007E=APPUTILS0007E: The path {0} does not denote a valid file.
APPUTILS0008E=APPUTILS0008E: Unable to parse the string, because one of the quotations marks (") is missing: {0}.
APPUTILS0009E=APPUTILS0009E: Unable to parse the version. Could not parse {0}.