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/09/10 15:44:44 UTC
svn commit: r995791 - 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-deployment-management/src/main/java/org/apache/a...
Author: mnuttall
Date: Fri Sep 10 13:44:43 2010
New Revision: 995791
URL: http://svn.apache.org/viewvc?rev=995791&view=rev
Log:
ARIES-361: Refactoring and tidy up.
Added:
incubator/aries/trunk/application/application-modeller/src/test/java/org/apache/aries/application/modelling/impl/
incubator/aries/trunk/application/application-modeller/src/test/java/org/apache/aries/application/modelling/impl/ParserProxyImplTest.java
incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/
incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/
incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/META-INF/
incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/META-INF/APPLICATION.MF
incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/META-INF/DEPLOYMENT.MF
incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/
incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/META-INF/
incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/META-INF/MANIFEST.MF
incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/
incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/
incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bp.xml
incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bp2.xml
incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bpMultiValues.xml
incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/ext/
incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/ext/BundleResource.java
- copied, changed from r989604, incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/BundleResource.java
incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/ext/BundleResourceTransformer.java
Removed:
incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/BundleResource.java
Modified:
incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/PostResolveTransformer.java
incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/DeploymentManifestManager.java
incubator/aries/trunk/application/application-deployment-management/src/main/java/org/apache/aries/application/deployment/management/impl/DeploymentManifestManagerImpl.java
incubator/aries/trunk/application/application-deployment-management/src/test/java/org/apache/aries/application/deployment/management/DeploymentGeneratorTest.java
incubator/aries/trunk/application/application-management/src/test/java/org/apache/aries/application/management/impl/AriesApplicationManagerImplTest.java
incubator/aries/trunk/application/application-modeller/pom.xml
incubator/aries/trunk/application/application-modeller/src/main/java/org/apache/aries/application/modelling/utils/DeployedBundles.java
incubator/aries/trunk/application/application-modeller/src/main/resources/OSGI-INF/blueprint/app-modeller.xml
incubator/aries/trunk/application/application-obr-resolver/pom.xml
incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/RepositoryGeneratorImpl.java
incubator/aries/trunk/application/application-obr-resolver/src/main/resources/OSGI-INF/blueprint/obr-resolver.xml
incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java
Modified: incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/PostResolveTransformer.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/PostResolveTransformer.java?rev=995791&r1=995790&r2=995791&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/PostResolveTransformer.java (original)
+++ incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/PostResolveTransformer.java Fri Sep 10 13:44:43 2010
@@ -21,7 +21,6 @@ package org.apache.aries.application;
import java.util.Collection;
import java.util.Map;
-import org.apache.aries.application.management.AriesApplication;
import org.apache.aries.application.management.ResolverException;
import org.apache.aries.application.modelling.ModelledResource;
@@ -29,11 +28,10 @@ public interface PostResolveTransformer
{
/**
* This method is to perform any post process after the resolver returns back a collection of bundles. It returns the updated manifest map.
- * @param app Aries application
* @param bundles A collection of bundles required by this application.
* @param deploymentHeaders the deployment manifest map
* @throws ResolverException
*/
- void postResolveProcess(AriesApplication app, Collection<ModelledResource> bundles, Map<String, String> deploymentHeaders) throws ResolverException;
+ void postResolveProcess(Collection<ModelledResource> bundles, Map<String, String> deploymentHeaders) throws ResolverException;
}
Modified: incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/DeploymentManifestManager.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/DeploymentManifestManager.java?rev=995791&r1=995790&r2=995791&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/DeploymentManifestManager.java (original)
+++ incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/DeploymentManifestManager.java Fri Sep 10 13:44:43 2010
@@ -22,6 +22,7 @@ import java.util.Collection;
import java.util.jar.Manifest;
import org.apache.aries.application.Content;
+import org.apache.aries.application.ServiceDeclaration;
import org.apache.aries.application.modelling.ModelledResource;
public interface DeploymentManifestManager
@@ -38,14 +39,22 @@ public interface DeploymentManifestManag
/**
* Generate the deployment manifest map. The method can be used for some advanced scenarios.
- * @param app The Aries application
+ * @param appMeta The Aries application metadata
* @param byValueBundles By value bundles
* @param useBundleSet Use Bundle set
* @param otherBundles Other bundles to be used to narrow the resolved bundles
+ * @param appImportServices the Application-ImportService header
* @return the deployment manifest
* @throws ResolverException
*/
- Manifest generateDeploymentManifest( AriesApplication app, Collection<ModelledResource> byValueBundles, Collection<Content> useBundleSet, Collection<Content> otherBundles) throws ResolverException;
+ Manifest generateDeploymentManifest(
+ String appName,
+ String appVersion,
+ Collection<Content> appContent,
+ Collection<ModelledResource> byValueBundles,
+ Collection<Content> useBundleSet,
+ Collection<Content> otherBundles,
+ Collection<ServiceDeclaration> appImportServices) throws ResolverException;
/**
*
Modified: incubator/aries/trunk/application/application-deployment-management/src/main/java/org/apache/aries/application/deployment/management/impl/DeploymentManifestManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-deployment-management/src/main/java/org/apache/aries/application/deployment/management/impl/DeploymentManifestManagerImpl.java?rev=995791&r1=995790&r2=995791&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-deployment-management/src/main/java/org/apache/aries/application/deployment/management/impl/DeploymentManifestManagerImpl.java (original)
+++ incubator/aries/trunk/application/application-deployment-management/src/main/java/org/apache/aries/application/deployment/management/impl/DeploymentManifestManagerImpl.java Fri Sep 10 13:44:43 2010
@@ -162,7 +162,9 @@ public class DeploymentManifestManagerIm
Content content = ManifestHeaderProcessor.parseContent(constraint.getBundleName(), constraint.getVersionRange().toString());
restrictedReqs.add(content);
}
- Manifest man = generateDeploymentManifest(app, byValueBundles, useBundles, restrictedReqs);
+ Manifest man = generateDeploymentManifest(appMetadata.getApplicationSymbolicName(),
+ appMetadata.getApplicationVersion().toString(), appMetadata.getApplicationContents(),
+ byValueBundles, useBundles, restrictedReqs, appMetadata.getApplicationImportServices());
_logger.debug(LOG_EXIT, "generateDeploymentManifest", new Object[] {man});
return man;
}
@@ -176,26 +178,32 @@ public class DeploymentManifestManagerIm
* @throws ResolverException
*/
public Manifest generateDeploymentManifest(
- AriesApplication app, Collection<ModelledResource> provideByValueBundles, Collection<Content> useBundleSet, Collection<Content> otherBundles) throws ResolverException {
- _logger.debug(LOG_ENTRY, "generateDeploymentManifest", new Object[]{app, provideByValueBundles,useBundleSet,otherBundles });
+ String appSymbolicName,
+ String appVersion,
+ Collection<Content> appContent,
+ Collection<ModelledResource> provideByValueBundles,
+ Collection<Content> useBundleSet,
+ Collection<Content> otherBundles,
+ Collection<ServiceDeclaration> applicationImportService) throws ResolverException {
+
+ _logger.debug(LOG_ENTRY, "generateDeploymentManifest", new Object[]{appSymbolicName, appVersion,
+ appContent, provideByValueBundles,useBundleSet,otherBundles });
Map<String, String> deploymentManifestMap = Collections.EMPTY_MAP;
- ApplicationMetadata appMetadata = app.getApplicationMetadata();
Collection<Content> bundlesToResolve = new ArrayList<Content>();
Set<ImportedBundle> appContentIB = null;
- Collection<Content> appContent = appMetadata.getApplicationContents();
Set<ImportedBundle> useBundleIB = null;
useBundleIB = new HashSet<ImportedBundle> (toImportedBundle(useBundleSet));
- appContentIB = new HashSet<ImportedBundle>(toImportedBundle(appMetadata.getApplicationContents()));
+ appContentIB = new HashSet<ImportedBundle>(toImportedBundle(appContent));
bundlesToResolve.addAll(useBundleSet);
- bundlesToResolve.addAll(appMetadata.getApplicationContents());
+ bundlesToResolve.addAll(appContent);
bundlesToResolve.addAll(otherBundles);
Collection<ModelledResource> byValueBundles = new ArrayList<ModelledResource>(provideByValueBundles);
ModelledResource fakeBundleResource;
try {
- fakeBundleResource = createFakeBundle(appMetadata);
+ fakeBundleResource = createFakeBundle(applicationImportService);
} catch (InvalidAttributeException iax) {
ResolverException rx = new ResolverException (iax);
_logger.debug(LOG_EXIT, "generateDeploymentManifest", new Object[] {rx});
@@ -203,10 +211,8 @@ public class DeploymentManifestManagerIm
throw rx;
}
byValueBundles.add(fakeBundleResource);
- String appSymbolicName = appMetadata.getApplicationSymbolicName();
- String appVersion = appMetadata.getApplicationVersion().toString();
String uniqueName = appSymbolicName + "_" + appVersion;
- deployedBundles = new DeployedBundles(appMetadata.getApplicationName(), appContentIB, useBundleIB, Arrays.asList(fakeBundleResource));
+ deployedBundles = new DeployedBundles(appSymbolicName, appContentIB, useBundleIB, Arrays.asList(fakeBundleResource));
bundlesToBeProvisioned = resolver.resolve(
appSymbolicName, appVersion, byValueBundles, bundlesToResolve);
pruneFakeBundleFromResults (bundlesToBeProvisioned);
@@ -223,7 +229,7 @@ public class DeploymentManifestManagerIm
if (requiredUseBundle.size() < useBundleSet.size())
{
// Some of the use-bundle entries were redundant so resolve again with just the good ones.
- deployedBundles = new DeployedBundles(appMetadata.getApplicationName(), appContentIB, useBundleIB, Arrays.asList(fakeBundleResource));
+ deployedBundles = new DeployedBundles(appSymbolicName, appContentIB, useBundleIB, Arrays.asList(fakeBundleResource));
bundlesToResolve.clear();
bundlesToResolve.addAll(appContent);
Collection<ImportedBundle> slimmedDownUseBundle = narrowUseBundles(useBundleIB, requiredUseBundle);
@@ -317,7 +323,7 @@ public class DeploymentManifestManagerIm
// Well! if the msgs is empty, no need to throw an exception
if (msgs.length() !=0) {
String message = MessageUtil.getMessage(
- "SUSPECTED_CIRCULAR_DEPENDENCIES", new Object[] {appMetadata.getApplicationSymbolicName(), msgs});
+ "SUSPECTED_CIRCULAR_DEPENDENCIES", new Object[] {appSymbolicName, msgs});
ResolverException rx = new ResolverException (message);
rx.setUnsatisfiedRequirements(unsatisfiedRequirements);
_logger.debug(LOG_EXIT, "generateDeploymentManifest", new Object[] {rx});
@@ -327,16 +333,16 @@ public class DeploymentManifestManagerIm
requiredUseBundle = deployedBundles.getRequiredUseBundle();
importPackages = deployedBundles.getImportPackage();
- Collection<ModelledResource> requriedBundles = new HashSet<ModelledResource>();
- requriedBundles.addAll(deployedBundles.getDeployedContent());
- requriedBundles.addAll(deployedBundles.getRequiredUseBundle());
- requriedBundles.addAll(deployedBundles.getDeployedProvisionBundle());
- deploymentManifestMap = generateDeploymentAttributes(appMetadata);
+ Collection<ModelledResource> requiredBundles = new HashSet<ModelledResource>();
+ requiredBundles.addAll(deployedBundles.getDeployedContent());
+ requiredBundles.addAll(deployedBundles.getRequiredUseBundle());
+ requiredBundles.addAll(deployedBundles.getDeployedProvisionBundle());
+ deploymentManifestMap = generateDeploymentAttributes(appSymbolicName, appVersion);
// Perform some post process if there are any.
if ((postResolveTransformers != null) && (!postResolveTransformers.isEmpty())) {
// validate the contents
for (PostResolveTransformer prt : postResolveTransformers) {
- prt.postResolveProcess(app, requriedBundles, deploymentManifestMap);
+ prt.postResolveProcess(requiredBundles, deploymentManifestMap);
}
}
}
@@ -373,15 +379,15 @@ public class DeploymentManifestManagerIm
- private Map<String,String> generateDeploymentAttributes(ApplicationMetadata appMetadata) throws ResolverException
+ private Map<String,String> generateDeploymentAttributes(String appSymbolicName, String version) throws ResolverException
{
- _logger.debug(LOG_ENTRY, "generateDeploymentAttributes", new Object[] {appMetadata});
+ _logger.debug(LOG_ENTRY, "generateDeploymentAttributes", new Object[] {appSymbolicName, version});
Map<String,String> result = new HashMap<String, String>();
String content = deployedBundles.getContent();
if (!content.isEmpty()) {
result.put(AppConstants.DEPLOYMENT_CONTENT, content);
} else {
- throw new ResolverException(MessageUtil.getMessage("EMPTY_DEPLOYMENT_CONTENT", appMetadata.getApplicationSymbolicName()));
+ throw new ResolverException(MessageUtil.getMessage("EMPTY_DEPLOYMENT_CONTENT", appSymbolicName));
}
String useBundle = deployedBundles.getUseBundle();
@@ -405,9 +411,8 @@ public class DeploymentManifestManagerIm
result.put(Constants.IMPORT_PACKAGE, importPackages);
}
- result.put(AppConstants.APPLICATION_VERSION, appMetadata.getApplicationVersion().toString());
- result.put(AppConstants.APPLICATION_SYMBOLIC_NAME, appMetadata.getApplicationSymbolicName());
-
+ result.put(AppConstants.APPLICATION_VERSION, version);
+ result.put(AppConstants.APPLICATION_SYMBOLIC_NAME, appSymbolicName);
_logger.debug(LOG_ENTRY, "generateDeploymentAttributes", new Object[] {result});
return result;
}
@@ -432,16 +437,15 @@ public class DeploymentManifestManagerIm
// create a 'mock' bundle that does nothing but export services required by
// Application-ImportService
- private ModelledResource createFakeBundle (ApplicationMetadata appMetadata) throws InvalidAttributeException
+ private ModelledResource createFakeBundle (Collection<ServiceDeclaration> appImportServices) throws InvalidAttributeException
{
- _logger.debug(LOG_ENTRY, "createFakeBundle", new Object[]{appMetadata});
+ _logger.debug(LOG_ENTRY, "createFakeBundle", new Object[]{appImportServices});
Attributes attrs = new Attributes();
attrs.putValue(Constants.BUNDLE_SYMBOLICNAME, FAKE_BUNDLE_NAME);
attrs.putValue(Constants.BUNDLE_VERSION_ATTRIBUTE, "1.0");
attrs.putValue(Constants.BUNDLE_MANIFESTVERSION, "2");
// Build an ExportedService for every Application-ImportService entry
- List<ServiceDeclaration> appImportServices = appMetadata.getApplicationImportServices();
Collection<ExportedService> exportedServices = new ArrayList<ExportedService>();
for (ServiceDeclaration sDec : appImportServices) {
Collection<String> ifaces = Arrays.asList(sDec.getInterfaceName());
Modified: incubator/aries/trunk/application/application-deployment-management/src/test/java/org/apache/aries/application/deployment/management/DeploymentGeneratorTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-deployment-management/src/test/java/org/apache/aries/application/deployment/management/DeploymentGeneratorTest.java?rev=995791&r1=995790&r2=995791&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-deployment-management/src/test/java/org/apache/aries/application/deployment/management/DeploymentGeneratorTest.java (original)
+++ incubator/aries/trunk/application/application-deployment-management/src/test/java/org/apache/aries/application/deployment/management/DeploymentGeneratorTest.java Fri Sep 10 13:44:43 2010
@@ -228,12 +228,11 @@ public class DeploymentGeneratorTest
{
Skeleton.getSkeleton(appMetadata).setReturnValue(new MethodCall(ApplicationMetadata.class, "getApplicationContents"), Arrays.asList(mockContent("aries.test.a", "1.0.0"), mockContent("aries.test.b", "[1.0.0, 2.0.0)" )));
-
- app = Skeleton.newMock(AriesApplication.class);
- Skeleton.getSkeleton(app).setReturnValue(new MethodCall(AriesApplication.class, "getApplicationMetadata"), appMetadata);
-
- Manifest man = sut.generateDeploymentManifest(app, new ArrayList<ModelledResource>(), Arrays.asList(BUNDLE_C, BUNDLE_D), Collections.<Content>emptyList());
-
+ Manifest man = sut.generateDeploymentManifest(appMetadata.getApplicationSymbolicName(),
+ appMetadata.getApplicationVersion().toString(), appMetadata.getApplicationContents(),
+ new ArrayList<ModelledResource>(),
+ Arrays.asList(BUNDLE_C, BUNDLE_D), Collections.<Content>emptyList(),
+ appMetadata.getApplicationImportServices());
Attributes attrs = man.getMainAttributes();
assertEquals("aries.test", attrs.getValue(AppConstants.APPLICATION_SYMBOLIC_NAME));
@@ -276,8 +275,11 @@ public class DeploymentGeneratorTest
try {
- sut.generateDeploymentManifest(app, new ArrayList<ModelledResource>(), new ArrayList<Content>(),
- Collections.<Content>emptyList());
+ sut.generateDeploymentManifest(appMetadata.getApplicationSymbolicName(),
+ appMetadata.getApplicationVersion().toString(), appMetadata.getApplicationContents(),
+ new ArrayList<ModelledResource>(), new ArrayList<Content>(),
+ Collections.<Content>emptyList(),
+ appMetadata.getApplicationImportServices());
} catch (ResolverException rx) {
List<String> usr = rx.getUnsatisfiedRequirements();
assertEquals ("One unsatisfied requirement expected, not " + usr.size(), usr.size(), 1);
@@ -325,7 +327,11 @@ public class DeploymentGeneratorTest
Skeleton.getSkeleton(app).setReturnValue(new MethodCall(AriesApplication.class, "getApplicationMetadata"), appMetadata);
try {
- sut.generateDeploymentManifest(app, Arrays.asList(new ModelledResource[] {testIsolated1.getBundle(), testIsolated2.getBundle()}), new ArrayList<Content>(), Collections.<Content>emptyList());
+ sut.generateDeploymentManifest(appMetadata.getApplicationSymbolicName(),
+ appMetadata.getApplicationVersion().toString(),
+ appMetadata.getApplicationContents(),
+ Arrays.asList(new ModelledResource[] {testIsolated1.getBundle(), testIsolated2.getBundle()}), new ArrayList<Content>(), Collections.<Content>emptyList(),
+ appMetadata.getApplicationImportServices());
} catch (ResolverException rx) {
// Get the unsatisfied Requirements
Modified: incubator/aries/trunk/application/application-management/src/test/java/org/apache/aries/application/management/impl/AriesApplicationManagerImplTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-management/src/test/java/org/apache/aries/application/management/impl/AriesApplicationManagerImplTest.java?rev=995791&r1=995790&r2=995791&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-management/src/test/java/org/apache/aries/application/management/impl/AriesApplicationManagerImplTest.java (original)
+++ incubator/aries/trunk/application/application-management/src/test/java/org/apache/aries/application/management/impl/AriesApplicationManagerImplTest.java Fri Sep 10 13:44:43 2010
@@ -19,7 +19,10 @@
package org.apache.aries.application.management.impl;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.io.File;
import java.io.FileInputStream;
@@ -43,6 +46,7 @@ import org.apache.aries.application.Cont
import org.apache.aries.application.DeploymentContent;
import org.apache.aries.application.DeploymentMetadata;
import org.apache.aries.application.DeploymentMetadataFactory;
+import org.apache.aries.application.ServiceDeclaration;
import org.apache.aries.application.filesystem.IDirectory;
import org.apache.aries.application.filesystem.IFile;
import org.apache.aries.application.impl.ApplicationMetadataFactoryImpl;
@@ -123,17 +127,6 @@ public class AriesApplicationManagerImpl
return man;
}
-
-
- public Manifest generateDeploymentManifest(AriesApplication app,
- Collection<ModelledResource> byValueBundles, Collection<Content> useBundleSet,
- Collection<Content> otherBundles) throws ResolverException
- {
-
- return null;
- }
-
-
public void setResolver(AriesApplicationResolver resolver) {
this.resolver = resolver;
}
@@ -143,6 +136,15 @@ public class AriesApplicationManagerImpl
return resolver;
}
+
+ public Manifest generateDeploymentManifest(String appName,
+ String appVersion, Collection<Content> appContent,
+ Collection<ModelledResource> byValueBundles,
+ Collection<Content> useBundleSet, Collection<Content> otherBundles,
+ Collection<ServiceDeclaration> appImportServices)
+ throws ResolverException {
+ return null;
+ }
}
Modified: incubator/aries/trunk/application/application-modeller/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-modeller/pom.xml?rev=995791&r1=995790&r2=995791&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-modeller/pom.xml (original)
+++ incubator/aries/trunk/application/application-modeller/pom.xml Fri Sep 10 13:44:43 2010
@@ -68,6 +68,11 @@
<scope>provided</scope>
</dependency>
<dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<scope>provided</scope>
Modified: incubator/aries/trunk/application/application-modeller/src/main/java/org/apache/aries/application/modelling/utils/DeployedBundles.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-modeller/src/main/java/org/apache/aries/application/modelling/utils/DeployedBundles.java?rev=995791&r1=995790&r2=995791&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-modeller/src/main/java/org/apache/aries/application/modelling/utils/DeployedBundles.java (original)
+++ incubator/aries/trunk/application/application-modeller/src/main/java/org/apache/aries/application/modelling/utils/DeployedBundles.java Fri Sep 10 13:44:43 2010
@@ -402,8 +402,7 @@ public final class DeployedBundles
{
return AppConstants.DEPLOYMENT_CONTENT + '=' + deployedContent + ' ' +
AppConstants.DEPLOYMENT_USE_BUNDLE + '=' + deployedUseBundle + ' ' +
- AppConstants.DEPLOYMENT_PROVISION_BUNDLE + '=' + deployedProvisionBundle;/* + ' ' /*+
- AppConstants.WAS_FEATURE_REQUIRED + "=" + requiredFeatures;*/
+ AppConstants.DEPLOYMENT_PROVISION_BUNDLE + '=' + deployedProvisionBundle;
}
/**
Modified: incubator/aries/trunk/application/application-modeller/src/main/resources/OSGI-INF/blueprint/app-modeller.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-modeller/src/main/resources/OSGI-INF/blueprint/app-modeller.xml?rev=995791&r1=995790&r2=995791&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-modeller/src/main/resources/OSGI-INF/blueprint/app-modeller.xml (original)
+++ incubator/aries/trunk/application/application-modeller/src/main/resources/OSGI-INF/blueprint/app-modeller.xml Fri Sep 10 13:44:43 2010
@@ -25,4 +25,11 @@
<reference id="parser-service" interface="org.apache.aries.blueprint.ParserService"/>
<service id = "modelledResourceManagerService" ref="modelledResourceManager" interface="org.apache.aries.application.modelling.ModelledResourceManager"/>
+ <bean id="parserProxy" class="org.apache.aries.application.modelling.impl.ParserProxyImpl">
+ <argument index="0" ref="parser-service"/>
+ <argument index="1" ref="blueprintBundleContext"/>
+ </bean>
+ <service id="parserProxyService" ref="parserProxy" interface="org.apache.aries.application.modelling.ParserProxy"/>
+
+
</blueprint>
\ No newline at end of file
Added: incubator/aries/trunk/application/application-modeller/src/test/java/org/apache/aries/application/modelling/impl/ParserProxyImplTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-modeller/src/test/java/org/apache/aries/application/modelling/impl/ParserProxyImplTest.java?rev=995791&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-modeller/src/test/java/org/apache/aries/application/modelling/impl/ParserProxyImplTest.java (added)
+++ incubator/aries/trunk/application/application-modeller/src/test/java/org/apache/aries/application/modelling/impl/ParserProxyImplTest.java Fri Sep 10 13:44:43 2010
@@ -0,0 +1,213 @@
+/*
+ * 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.modelling.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.aries.application.modelling.ParsedServiceElements;
+import org.apache.aries.application.modelling.ParserProxy;
+import org.apache.aries.application.modelling.WrappedReferenceMetadata;
+import org.apache.aries.application.modelling.WrappedServiceMetadata;
+import org.apache.aries.application.modelling.utils.ModellingManager;
+import org.apache.aries.blueprint.ParserService;
+import org.apache.aries.blueprint.container.NamespaceHandlerRegistry;
+import org.apache.aries.blueprint.container.ParserServiceImpl;
+import org.apache.aries.blueprint.namespace.NamespaceHandlerRegistryImpl;
+import org.apache.aries.mocks.BundleContextMock;
+import org.apache.aries.unittest.mocks.Skeleton;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.osgi.framework.BundleContext;
+
+public class ParserProxyImplTest {
+
+ static ParserProxy _parserProxy;
+
+ @BeforeClass
+ public static void setup() {
+ BundleContext mockCtx = Skeleton.newMock(new BundleContextMock(), BundleContext.class);
+ NamespaceHandlerRegistry nhri = new NamespaceHandlerRegistryImpl (mockCtx);
+ ParserService parserService = new ParserServiceImpl(nhri);
+ mockCtx.registerService(ParserService.class.getName(), parserService, new Hashtable<String, String>());
+ _parserProxy = new ParserProxyImpl(parserService, mockCtx);
+ }
+
+
+
+ @AfterClass
+ public static void teardown() {
+ BundleContextMock.clear();
+ }
+
+
+
+ @Test
+ public void basicTest1() throws Exception {
+ File bpXml = new File ("../src/test/resources", "appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bp.xml");
+ File bp2Xml = new File ("../src/test/resources", "appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bp2.xml");
+ List<URL> urls = new ArrayList<URL>();
+ urls.add ((bpXml.toURI()).toURL());
+ urls.add ((bp2Xml.toURI()).toURL());
+
+ List<? extends WrappedServiceMetadata> results = _parserProxy.parse(urls);
+ assertTrue ("Four results expected, not " + results.size(), results.size() == 4);
+
+ Set<WrappedServiceMetadata> resultSet = new HashSet<WrappedServiceMetadata>(results);
+ Set<WrappedServiceMetadata> expectedResults = getTest1ExpectedResults();
+ assertEquals ("Blueprint parsed xml is not as expected: " + resultSet.toString() + " != " + expectedResults,
+ resultSet, expectedResults);
+ }
+
+ @Test
+ public void testParseAllServiceElements() throws Exception {
+ File bpXml = new File ("../src/test/resources", "appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bp.xml");
+ File bp2Xml = new File ("../src/test/resources", "appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bp2.xml");
+
+ List<WrappedServiceMetadata> services = new ArrayList<WrappedServiceMetadata>();
+ List<WrappedReferenceMetadata> references = new ArrayList<WrappedReferenceMetadata>();
+
+ FileInputStream fis = new FileInputStream (bpXml);
+ ParsedServiceElements bpelem = _parserProxy.parseAllServiceElements(fis);
+ services.addAll(bpelem.getServices());
+ references.addAll(bpelem.getReferences());
+
+ fis = new FileInputStream (bp2Xml);
+ bpelem = _parserProxy.parseAllServiceElements(fis);
+ services.addAll(bpelem.getServices());
+ references.addAll(bpelem.getReferences());
+
+ // We expect:
+ // bp.xml: 3 services and a reference
+ // bp2.xml: 3 services and a reference list
+ //
+ assertTrue ("Six services expected, not " + services.size(), services.size() == 6);
+ assertTrue ("Two references expected, not " + references.size(), references.size() == 2);
+
+ Set<WrappedServiceMetadata> expectedServices = getTest2ExpectedServices();
+ // ServiceResultSet will contain some services with autogenerated names starting '.' so we can't
+ // use a straight Set.equals(). We could add the autogenerated names to the expected results but instead
+ // let's test that differsOnlyByName() works
+ int serviceMatchesFound = 0;
+ for (WrappedServiceMetadata result : services) {
+ Iterator<WrappedServiceMetadata> it = expectedServices.iterator();
+ while (it.hasNext()) {
+ WrappedServiceMetadata next = it.next();
+ if (result.equals(next) || result.identicalOrDiffersOnlyByName(next)) {
+ serviceMatchesFound++;
+ it.remove();
+ }
+ }
+ }
+
+ assertEquals ("Parsed services are wrong: " + expectedServices + " unmatched ",
+ 6, serviceMatchesFound);
+
+ Set<WrappedReferenceMetadata> expectedReferences = getTest2ExpectedReferences();
+ Set<WrappedReferenceMetadata> results = new HashSet<WrappedReferenceMetadata>(references);
+ assertTrue ("Parsed references are not as we'd expected: " + results.toString() + " != " + expectedReferences,
+ results.equals(expectedReferences));
+ }
+
+ @Test
+ public void checkMultiValues() throws Exception {
+ File bpXml = new File ("../src/test/resources", "appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bpMultiValues.xml");
+ List<WrappedServiceMetadata> services = new ArrayList<WrappedServiceMetadata>();
+ FileInputStream fis = new FileInputStream (bpXml);
+ ParsedServiceElements bpelem = _parserProxy.parseAllServiceElements(fis);
+ services.addAll(bpelem.getServices());
+
+ assertEquals ("Multi valued service not parsed correctly", services.size(), 1);
+
+ WrappedServiceMetadata wsm = services.get(0);
+ Map<String, Object> props = wsm.getServiceProperties();
+ String [] intents = (String[]) props.get("service.intents");
+
+ assertEquals ("Service.intents[0] wrong", intents[0], "propagatesTransaction");
+ assertEquals ("Service.intents[1] wrong", intents[1], "confidentiality");
+
+ }
+
+ // model
+ // <reference id="fromOutside" interface="foo.bar.MyInjectedService"/>
+ // <reference-list id="refList1" interface="my.logging.services" filter="(active=true)"/>
+ //
+ private Set<WrappedReferenceMetadata> getTest2ExpectedReferences() throws Exception {
+ Set<WrappedReferenceMetadata> expectedResults = new HashSet<WrappedReferenceMetadata>();
+
+ expectedResults.add(ModellingManager.getImportedService(false, "foo.bar.MyInjectedService", null,
+ null, "fromOutside", false));
+ expectedResults.add(ModellingManager.getImportedService(false, "my.logging.service", null, "(&(trace=on)(debug=true))", "refList1", true));
+
+ return expectedResults;
+ }
+
+ // Test 2 includes anonymous services: the expected results are a superset of test1
+ private Set<WrappedServiceMetadata> getTest2ExpectedServices() {
+ Set<WrappedServiceMetadata> expectedResults = getTest1ExpectedResults();
+
+ expectedResults.add(ModellingManager.getExportedService("", 0, Arrays.asList("foo.bar.AnonService"), null));
+ expectedResults.add(ModellingManager.getExportedService("", 0, Arrays.asList("foo.bar.NamedInnerBeanService"), null));
+ return expectedResults;
+ }
+
+ private Set<WrappedServiceMetadata> getTest1ExpectedResults() {
+ Set<WrappedServiceMetadata> expectedResults = new HashSet<WrappedServiceMetadata>();
+ Map<String, Object> props = new HashMap<String, Object>();
+ props.put ("priority", "9");
+ props.put("volume", "11");
+ props.put("osgi.service.blueprint.compname", "myBean");
+ expectedResults.add(ModellingManager.getExportedService("myService", 0, Arrays.asList("foo.bar.MyService"), props));
+
+ props = new HashMap<String, Object>();
+ props.put ("priority", "7");
+ props.put ("volume", "11");
+ props.put ("osgi.service.blueprint.compname", "bean1");
+ expectedResults.add(ModellingManager.getExportedService("service1.should.be.exported", 0, Arrays.asList("foo.bar.MyService"), props));
+
+ props = new HashMap<String, Object>();
+ props.put ("customer", "pig");
+ props.put ("osgi.service.blueprint.compname", "bean2");
+ expectedResults.add(ModellingManager.getExportedService("service2.should.not.be.exported", 0, Arrays.asList("com.acme.Delivery"), props));
+
+ props = new HashMap<String, Object>();
+ props.put ("customer", "pig");
+ props.put ("target", "rabbit");
+ props.put ("payload", "excessive");
+ props.put ("osgi.service.blueprint.compname", "bean3");
+ expectedResults.add(ModellingManager.getExportedService("bean3", 0, Arrays.asList("com.acme.Delivery"), props));
+
+ return expectedResults;
+ }
+}
Added: incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/META-INF/APPLICATION.MF
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/META-INF/APPLICATION.MF?rev=995791&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/META-INF/APPLICATION.MF (added)
+++ incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/META-INF/APPLICATION.MF Fri Sep 10 13:44:43 2010
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Application-ManifestVersion: 1.0
+Application-Name: test1.eba
+Application-SymbolicName: com.ibm.ws.eba.admin.application.modeller.test1.eba
+Application-Version: 1.0
+Application-Content: com.ibm.ws.eba.admin.application.modeller.bundle1;version=1.0.0
+Application-ImportService: foo.bar.MyInjectedService;filter="(security.authority=intranet)",
+ com.ibm.infrastructure.Manager;filter="(hands.off=true)"
+Application-ExportService: foo.bar.MyService;filter="(volume=11)",
+ com.acme.Delivery;filter="(&(customer=pig)(target=rabbit))"
Added: incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/META-INF/DEPLOYMENT.MF
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/META-INF/DEPLOYMENT.MF?rev=995791&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/META-INF/DEPLOYMENT.MF (added)
+++ incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/META-INF/DEPLOYMENT.MF Fri Sep 10 13:44:43 2010
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Application-ManifestVersion: 2
+Application-SymbolicName: com.ibm.ws.eba.admin.application.modeller.test1.eba
+Application-Version: 1.0
+Deployed-Content: com.ibm.ws.eba.admin.application.modeller.bundle1;deployed-version=1.0.0
Added: incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/META-INF/MANIFEST.MF?rev=995791&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/META-INF/MANIFEST.MF (added)
+++ incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/META-INF/MANIFEST.MF Fri Sep 10 13:44:43 2010
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Version: 1.0.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: com.ibm.ws.eba.admin.application.modeller.bundle1
+Bundle-Name: bundle1
+
+
Added: incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bp.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bp.xml?rev=995791&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bp.xml (added)
+++ incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bp.xml Fri Sep 10 13:44:43 2010
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ IBM Confidential OCO Source Material
+ 5724-J08, 5724-I63, 5724-H88, 5724-H89, 5655-N02, 5733-W70 COPYRIGHT International Business Machines Corp. 2009
+ The source code for this program is not published or otherwise divested
+ of its trade secrets, irrespective of what has been deposited with the
+ U.S. Copyright Office.
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <bean id="myBean" class="foo.bar.MyBean" activation="lazy">
+ <property name="myInjectedService" ref="fromOutside"/>
+ </bean>
+
+ <service id="myService" ref="myBean" interface="foo.bar.MyService">
+ <service-properties>
+ <entry key="priority" value="9"/>
+ <entry key="volume" value="11"/>
+ </service-properties>
+ </service>
+
+ <!-- Services for which we can generate no name should not be exposed -->
+ <service interface="foo.bar.AnonService">
+ <bean class="an.anonymous.Bean"/>
+ </service>
+
+ <!-- All inlined classes will be given null IDs as per 121.4.8 of the OSGi 4.2 spec -->
+ <service interface="foo.bar.NamedInnerBeanService">
+ <bean id="namedInnerBean" class="an.anonymous.Bean"/>
+ </service>
+
+
+ <reference id="fromOutside" interface="foo.bar.MyInjectedService"/>
+
+</blueprint>
\ No newline at end of file
Added: incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bp2.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bp2.xml?rev=995791&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bp2.xml (added)
+++ incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bp2.xml Fri Sep 10 13:44:43 2010
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ IBM Confidential OCO Source Material
+ 5724-J08, 5724-I63, 5724-H88, 5724-H89, 5655-N02, 5733-W70 COPYRIGHT International Business Machines Corp. 2009
+ The source code for this program is not published or otherwise divested
+ of its trade secrets, irrespective of what has been deposited with the
+ U.S. Copyright Office.
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <bean id="bean1" class="com.ibm.useful.Bean"/>
+
+ <bean id="bean2" class="com.ibm.useful.Bean"/>
+
+ <bean id="bean3" class="com.ibm.useful.Bean"/>
+
+ <service id="service1.should.be.exported" ref="bean1" interface="foo.bar.MyService">
+ <service-properties>
+ <entry key="volume" value="11"/>
+ <entry key="priority" value="7"/>
+ </service-properties>
+ </service>
+
+ <service id="service2.should.not.be.exported" ref="bean2" interface="com.acme.Delivery">
+ <service-properties>
+ <entry key="customer" value="pig"/>
+ </service-properties>
+ </service>
+
+ <!-- Let's put no id on this service - it should come from the bean -->
+ <service ref="bean3" interface="com.acme.Delivery">
+ <service-properties>
+ <entry key="customer" value="pig"/>
+ <entry key="target" value="rabbit"/>
+ <entry key="payload" value="excessive"/>
+ </service-properties>
+ </service>
+
+ <reference-list id="refList1" interface="my.logging.service" filter="(&(trace=on)(debug=true))"/>
+
+</blueprint>
\ No newline at end of file
Added: incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bpMultiValues.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bpMultiValues.xml?rev=995791&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bpMultiValues.xml (added)
+++ incubator/aries/trunk/application/application-modeller/src/test/resources/appModeller/test1.eba/bundle1.jar/OSGI-INF/blueprint/bpMultiValues.xml Fri Sep 10 13:44:43 2010
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ IBM Confidential OCO Source Material
+ 5724-J08, 5724-I63, 5724-H88, 5724-H89, 5655-N02, 5733-W70 COPYRIGHT International Business Machines Corp. 2009
+ The source code for this program is not published or otherwise divested
+ of its trade secrets, irrespective of what has been deposited with the
+ U.S. Copyright Office.
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <bean id="myBean" class="foo.bar.MyBean" activation="lazy">
+ </bean>
+
+ <service id="greeting" ref="myBean" interface="greeting.Greeting">
+ <service-properties>
+ <entry key="service.exported.interfaces" value="greeting.Greeting"/>
+ <entry key="service.intents">
+ <array>
+ <value>propagatesTransaction</value>
+ <value>confidentiality</value>
+ </array>
+ </entry>
+ </service-properties>
+ </service>
+
+</blueprint>
\ No newline at end of file
Modified: incubator/aries/trunk/application/application-obr-resolver/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-obr-resolver/pom.xml?rev=995791&r1=995790&r2=995791&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-obr-resolver/pom.xml (original)
+++ incubator/aries/trunk/application/application-obr-resolver/pom.xml Fri Sep 10 13:44:43 2010
@@ -29,6 +29,7 @@
</description>
<properties>
<aries.osgi.export.pkg>
+ org.apache.aries.application.resolver.obr.ext;
</aries.osgi.export.pkg>
<aries.osgi.private.pkg>
org.apache.aries.application.resolver.obr;
Copied: incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/ext/BundleResource.java (from r989604, incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/BundleResource.java)
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/ext/BundleResource.java?p2=incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/ext/BundleResource.java&p1=incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/BundleResource.java&r1=989604&r2=995791&rev=995791&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/BundleResource.java (original)
+++ incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/ext/BundleResource.java Fri Sep 10 13:44:43 2010
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.aries.application.resolver.obr.impl;
+package org.apache.aries.application.resolver.obr.ext;
import static org.apache.aries.application.utils.AppConstants.LOG_ENTRY;
import static org.apache.aries.application.utils.AppConstants.LOG_EXIT;
@@ -37,6 +37,8 @@ import org.apache.aries.application.mode
import org.apache.aries.application.modelling.ImportedService;
import org.apache.aries.application.modelling.ModelledResource;
import org.apache.aries.application.modelling.utils.ModellingConstants;
+import org.apache.aries.application.resolver.obr.impl.OBRCapability;
+import org.apache.aries.application.resolver.obr.impl.RequirementImpl;
import org.apache.felix.bundlerepository.Capability;
import org.apache.felix.bundlerepository.RepositoryAdmin;
import org.apache.felix.bundlerepository.Requirement;
@@ -53,6 +55,22 @@ public class BundleResource implements R
private final Collection<Requirement> _requirements;
private final String _displayName;
private Logger logger = LoggerFactory.getLogger(BundleResource.class);
+
+ /**
+ * Build a BundleResource from another BundleResource and some optional extra capabilities and requirements
+ * @param br
+ * @param extraCapabilities can be null
+ * @param extraRequirements can be null
+ */
+ public BundleResource (BundleResource br, Collection<Capability> extraCapabilities, Collection<Requirement> extraRequirements) {
+ _modelledBundle = br._modelledBundle;
+ _capabilities = new ArrayList<Capability> (br._capabilities);
+ _requirements = new ArrayList<Requirement> (br._requirements);
+ _displayName = new String (br._displayName);
+ if (extraCapabilities != null) _capabilities.addAll(extraCapabilities);
+ if (extraRequirements != null) _requirements.addAll(extraRequirements);
+ }
+
public BundleResource (ModelledResource mb, RepositoryAdmin repositoryAdmin) {
logger.debug(LOG_ENTRY,"BundleResource", mb);
_modelledBundle = mb;
@@ -92,10 +110,16 @@ public class BundleResource implements R
_displayName = possibleDisplayName;
}
+
+
logger.debug(LOG_EXIT,"BundleResource");
}
+ public ModelledResource getModelledResource() {
+ return _modelledBundle;
+ }
+
public Capability[] getCapabilities() {
logger.debug(LOG_ENTRY,"getCapabilities");
Added: incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/ext/BundleResourceTransformer.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/ext/BundleResourceTransformer.java?rev=995791&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/ext/BundleResourceTransformer.java (added)
+++ incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/ext/BundleResourceTransformer.java Fri Sep 10 13:44:43 2010
@@ -0,0 +1,9 @@
+package org.apache.aries.application.resolver.obr.ext;
+
+
+public interface BundleResourceTransformer {
+
+ BundleResource transform (BundleResource b);
+}
+
+
Modified: incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/RepositoryGeneratorImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/RepositoryGeneratorImpl.java?rev=995791&r1=995790&r2=995791&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/RepositoryGeneratorImpl.java (original)
+++ incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/RepositoryGeneratorImpl.java Fri Sep 10 13:44:43 2010
@@ -23,7 +23,9 @@ import static org.apache.aries.applicati
import java.io.IOException;
import java.io.OutputStream;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
@@ -37,6 +39,8 @@ import javax.xml.transform.stream.Stream
import org.apache.aries.application.management.RepositoryGenerator;
import org.apache.aries.application.management.ResolverException;
import org.apache.aries.application.modelling.ModelledResource;
+import org.apache.aries.application.resolver.obr.ext.BundleResource;
+import org.apache.aries.application.resolver.obr.ext.BundleResourceTransformer;
import org.apache.felix.bundlerepository.Capability;
import org.apache.felix.bundlerepository.Property;
import org.apache.felix.bundlerepository.RepositoryAdmin;
@@ -51,6 +55,11 @@ public final class RepositoryGeneratorIm
{
private RepositoryAdmin repositoryAdmin;
private static Logger logger = LoggerFactory.getLogger(RepositoryGeneratorImpl.class);
+ private static Collection<BundleResourceTransformer> bundleResourceTransformers = new ArrayList<BundleResourceTransformer>();
+
+ public void setBundleResourceTransformers (List<BundleResourceTransformer> brts) {
+ bundleResourceTransformers = brts;
+ }
public RepositoryGeneratorImpl(RepositoryAdmin repositoryAdmin) {
this.repositoryAdmin = repositoryAdmin;
@@ -66,6 +75,8 @@ public final class RepositoryGeneratorIm
capability.appendChild(p);
logger.debug(LOG_ENTRY, "addProperty", new Object[]{});
}
+
+
/**
* Write out the resource element
@@ -198,8 +209,13 @@ public final class RepositoryGeneratorIm
root.setAttribute("name", repositoryName);
doc.appendChild(root);
for (ModelledResource mr : byValueBundles) {
- writeResource(new BundleResource(mr, repositoryAdmin), mr.getLocation(), doc, root);
-
+ BundleResource bundleResource = new BundleResource(mr, repositoryAdmin);
+ if (bundleResourceTransformers.size() > 0) {
+ for (BundleResourceTransformer brt : bundleResourceTransformers) {
+ bundleResource = brt.transform (bundleResource);
+ }
+ }
+ writeResource (bundleResource, mr.getLocation(), doc, root);
}
try {
Modified: incubator/aries/trunk/application/application-obr-resolver/src/main/resources/OSGI-INF/blueprint/obr-resolver.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-obr-resolver/src/main/resources/OSGI-INF/blueprint/obr-resolver.xml?rev=995791&r1=995790&r2=995791&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-obr-resolver/src/main/resources/OSGI-INF/blueprint/obr-resolver.xml (original)
+++ incubator/aries/trunk/application/application-obr-resolver/src/main/resources/OSGI-INF/blueprint/obr-resolver.xml Fri Sep 10 13:44:43 2010
@@ -33,9 +33,15 @@
<argument>
<reference interface="org.apache.felix.bundlerepository.RepositoryAdmin"/>
</argument>
+ <property name="bundleResourceTransformers" ref="bundle-resource-transformers"/>
</bean>
<service id="repository-generator-service" ref="repository-generator" interface="org.apache.aries.application.management.RepositoryGenerator"/>
<service interface="org.apache.aries.application.management.AriesApplicationResolver" ref="obr-resolver"/>
+
+ <reference-list id="bundle-resource-transformers"
+ interface="org.apache.aries.application.resolver.obr.ext.BundleResourceTransformer"
+ availability="optional"/>
+
</blueprint>
Modified: incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java?rev=995791&r1=995790&r2=995791&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java (original)
+++ incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java Fri Sep 10 13:44:43 2010
@@ -26,13 +26,14 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.Map.Entry;
+import java.util.Set;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
import org.apache.aries.application.filesystem.IDirectory;
import org.apache.aries.application.filesystem.IFile;
+import org.apache.aries.application.utils.AppConstants;
/**
* This class contains utilities for parsing manifests. It provides methods to
@@ -70,6 +71,20 @@ public class ManifestProcessor
}
/**
+ * mapToManifest
+ */
+ public static Manifest mapToManifest (Map<String,String> attributes)
+ {
+ Manifest man = new Manifest();
+ Attributes att = man.getMainAttributes();
+ att.putValue(Attributes.Name.MANIFEST_VERSION.toString(), AppConstants.MANIFEST_VERSION);
+ for (Map.Entry<String, String> entry : attributes.entrySet()) {
+ att.putValue(entry.getKey(), entry.getValue());
+ }
+ return man;
+ }
+
+ /**
* This method parses the manifest using a custom manifest parsing routine.
* This means that we can avoid the 76 byte line length in a manifest providing
* a better developer experience.