You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by gn...@apache.org on 2010/02/16 22:17:08 UTC
svn commit: r910697 - in /incubator/aries/trunk/application: ./
application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/
application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/
Author: gnodet
Date: Tue Feb 16 21:17:08 2010
New Revision: 910697
URL: http://svn.apache.org/viewvc?rev=910697&view=rev
Log:
ARIES-174: basic support for service capabilities and requirements
Modified:
incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/OBRAriesResolver.java
incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/OBRBundleInfo.java
incubator/aries/trunk/application/pom.xml
Modified: incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/OBRAriesResolver.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/OBRAriesResolver.java?rev=910697&r1=910696&r2=910697&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/OBRAriesResolver.java (original)
+++ incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/OBRAriesResolver.java Tue Feb 16 21:17:08 2010
@@ -22,8 +22,11 @@
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -79,16 +82,15 @@
}
return result;
} else {
- throw new ResolverException("Could not resolve requirements: " + toString(obrResolver.getUnsatisfiedRequirements()));
+ throw new ResolverException("Could not resolve requirements: " + getUnsatifiedRequirements(obrResolver));
}
}
public BundleInfo getBundleInfo(String bundleSymbolicName, Version bundleVersion)
{
Map<String, String> attribs = new HashMap<String, String>();
- attribs.put("BundleSymbolic-Name", bundleSymbolicName);
- attribs.put("Bundle-Version", bundleVersion.toString());
- String filterString = ManifestHeaderProcessor.generateFilter("bundle", bundleSymbolicName, attribs);
+ attribs.put(Resource.VERSION, bundleVersion.toString());
+ String filterString = ManifestHeaderProcessor.generateFilter(Resource.SYMBOLIC_NAME, bundleSymbolicName, attribs);
Resource[] resources = repositoryAdmin.discoverResources(filterString);
if (resources != null && resources.length > 0) {
return toBundleInfo(resources[0]);
@@ -97,8 +99,20 @@
}
}
- private String toString(Requirement[] unsatisfiedRequirements)
+ private String getUnsatifiedRequirements(Resolver resolver)
{
+ Requirement[] reqs = resolver.getUnsatisfiedRequirements();
+ if (reqs != null) {
+ StringBuilder sb = new StringBuilder();
+ for (int reqIdx = 0; reqIdx < reqs.length; reqIdx++) {
+ sb.append(" " + reqs[reqIdx].getFilter()).append("\n");
+ Resource[] resources = resolver.getResources(reqs[reqIdx]);
+ for (int resIdx = 0; resIdx < resources.length; resIdx++) {
+ sb.append(" " + resources[resIdx].getPresentationName()).append("\n");
+ }
+ }
+ return sb.toString();
+ }
return null;
}
@@ -110,14 +124,20 @@
location,
null,
null,
+ null,
+ null,
null);
}
private Resource toResource(BundleInfo bundleInfo) throws ResolverException
{
String id = bundleInfo.getSymbolicName() + "_" + bundleInfo.getVersion();
- Requirement[] requirements = toRequirements(bundleInfo.getImportPackage());
- Capability[] capabilities = toCapabilities(bundleInfo.getExportPackage());
+ List<Requirement> requirements = new ArrayList<Requirement>();
+ requirements.addAll(toRequirements(bundleInfo.getImportPackage(), "package"));
+ requirements.addAll(toRequirements(bundleInfo.getImportService(), "service"));
+ List<Capability> capabilities = new ArrayList<Capability>();
+ capabilities.addAll(toPackageCapabilities(bundleInfo.getExportPackage()));
+ capabilities.addAll(toServiceCapabilities(bundleInfo.getExportService()));
URL url;
try {
url = new URL(bundleInfo.getLocation());
@@ -130,23 +150,22 @@
bundleInfo.getVersion(),
id,
url,
- requirements,
- capabilities,
+ requirements.toArray(new Requirement[requirements.size()]),
+ capabilities.toArray(new Capability[capabilities.size()]),
null,
null);
}
- private Requirement[] toRequirements(Set<Content> importPackage) throws ResolverException
+ private Collection<Requirement> toRequirements(Set<Content> imports, String type) throws ResolverException
{
- Requirement[] requirements = new Requirement[importPackage.size()];
- int i = 0;
- for (Content content: importPackage) {
- requirements[i++] = toRequirement(content);
+ Collection<Requirement> requirements = new ArrayList<Requirement>(imports.size());
+ for (Content content: imports) {
+ requirements.add(toRequirement(content, type));
}
return requirements;
}
- private Requirement toRequirement(Content content) throws ResolverException
+ private Requirement toRequirement(Content content, String type) throws ResolverException
{
Map<String, String> attributes = new HashMap<String, String>();
for (Map.Entry<String, String> entry: content.getNameValueMap().entrySet()) {
@@ -155,7 +174,7 @@
attributes.put(entry.getKey(), entry.getValue());
}
}
- String filterString = ManifestHeaderProcessor.generateFilter("package", content.getContentName(), attributes);
+ String filterString = ManifestHeaderProcessor.generateFilter(type, content.getContentName(), attributes);
Filter filter = null;
try {
filter = FrameworkUtil.createFilter(filterString);
@@ -173,18 +192,37 @@
null);
}
- private Capability[] toCapabilities(Set<Content> exportPackage)
+ private Collection<Capability> toPackageCapabilities(Set<Content> exportPackage)
+ {
+ Collection<Capability> capabilities = new ArrayList<Capability>(exportPackage.size());
+ for (Content content: exportPackage) {
+ capabilities.add(toPackageCapability(content));
+ }
+ return capabilities;
+ }
+
+ private Capability toPackageCapability(Content content)
{
- Capability[] capabilities = new Capability[exportPackage.size()];
- int i = 0;
+ Map<String,String> props = new HashMap<String,String>();
+ props.put("package", content.getContentName());
+ props.put("version", content.getVersion() != null ? content.getVersion().getMinimumVersion().toString() : Version.emptyVersion.toString());
+ return new CapabilityImpl("package", props);
+ }
+
+ private Collection<Capability> toServiceCapabilities(Set<Content> exportPackage)
+ {
+ Collection<Capability> capabilities = new ArrayList<Capability>(exportPackage.size());
for (Content content: exportPackage) {
- capabilities[i++] = toCapability(content);
+ capabilities.add(toServiceCapability(content));
}
return capabilities;
}
- private Capability toCapability(Content content)
+ private Capability toServiceCapability(Content content)
{
- return new CapabilityImpl(content.getContentName(), content.getNameValueMap());
+ Map<String,String> props = new HashMap<String,String>();
+ props.put("service", content.getContentName());
+ return new CapabilityImpl("service", props);
}
+
}
Modified: incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/OBRBundleInfo.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/OBRBundleInfo.java?rev=910697&r1=910696&r2=910697&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/OBRBundleInfo.java (original)
+++ incubator/aries/trunk/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/impl/OBRBundleInfo.java Tue Feb 16 21:17:08 2010
@@ -38,15 +38,22 @@
private final String location;
private final Set<Content> importPackage;
private final Set<Content> exportPackage;
+ private final Set<Content> importService;
+ private final Set<Content> exportService;
private final Map<String, String> headers;
- public OBRBundleInfo(String symbolicName, Version version, String location, Set<Content> importPackage, Set<Content> exportPackage, Map<String, String> headers)
+ public OBRBundleInfo(String symbolicName, Version version, String location,
+ Set<Content> importPackage, Set<Content> exportPackage,
+ Set<Content> importService, Set<Content> exportService,
+ Map<String, String> headers)
{
this.symbolicName = symbolicName;
this.version = version;
this.location = location;
this.importPackage = importPackage;
this.exportPackage = exportPackage;
+ this.importService = importService;
+ this.exportService = exportService;
this.headers = headers;
}
@@ -77,14 +84,12 @@
public Set<Content> getImportService()
{
- //TODO NYI
- return null;
+ return importService;
}
public Set<Content> getExportService()
{
- //TODO NYI
- return null;
+ return exportService;
}
public Map<String, String> getHeaders()
Modified: incubator/aries/trunk/application/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/pom.xml?rev=910697&r1=910696&r2=910697&view=diff
==============================================================================
--- incubator/aries/trunk/application/pom.xml (original)
+++ incubator/aries/trunk/application/pom.xml Tue Feb 16 21:17:08 2010
@@ -168,7 +168,7 @@
<artifactId>org.osgi.core</artifactId>
</exclusion>
</exclusions>
- <version>1.0.1</version>
+ <version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>