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 2014/06/02 14:55:02 UTC
svn commit: r1599198 -
/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/ApplicationServiceModeller.java
Author: mnuttall
Date: Mon Jun 2 12:55:01 2014
New Revision: 1599198
URL: http://svn.apache.org/r1599198
Log:
Aries-1196: Service dependency model may create filters with null objectClass. From a patch by Tom Watson.
Modified:
aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/ApplicationServiceModeller.java
Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/ApplicationServiceModeller.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/ApplicationServiceModeller.java?rev=1599198&r1=1599197&r2=1599198&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/ApplicationServiceModeller.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/ApplicationServiceModeller.java Mon Jun 2 12:55:01 2014
@@ -51,26 +51,39 @@ public class ApplicationServiceModeller
.build());
}
for (ImportedService service : elements.getReferences()) {
- StringBuilder builder = new StringBuilder("(&(")
+ StringBuilder builder = new StringBuilder();
+ String serviceInterface = service.getInterface();
+ String filter = service.getFilter();
+
+ if (serviceInterface != null && filter != null) {
+ builder.append("(&");
+ }
+ if (serviceInterface != null) {
+ builder.append('(')
.append(ServiceNamespace.CAPABILITY_OBJECTCLASS_ATTRIBUTE)
.append('=')
- .append(service.getInterface())
+ .append(serviceInterface)
.append(')');
- String filter = service.getFilter();
+ }
+
if (filter != null)
builder.append(filter);
- builder.append(')');
- model.requirements.add(new BasicRequirement.Builder()
- .namespace(ServiceNamespace.SERVICE_NAMESPACE)
- .directive(Namespace.REQUIREMENT_FILTER_DIRECTIVE, builder.toString())
- .directive(
- Namespace.REQUIREMENT_RESOLUTION_DIRECTIVE,
- service.isOptional() ? Namespace.RESOLUTION_OPTIONAL : Namespace.RESOLUTION_MANDATORY)
- .directive(
- Namespace.REQUIREMENT_CARDINALITY_DIRECTIVE,
- service.isMultiple() ? Namespace.CARDINALITY_MULTIPLE : Namespace.CARDINALITY_SINGLE)
- .resource(resource)
- .build());
+ if (serviceInterface != null && filter != null) {
+ builder.append(')');
+ }
+ if (builder.length() > 0) {
+ model.requirements.add(new BasicRequirement.Builder()
+ .namespace(ServiceNamespace.SERVICE_NAMESPACE)
+ .directive(Namespace.REQUIREMENT_FILTER_DIRECTIVE, builder.toString())
+ .directive(
+ Namespace.REQUIREMENT_RESOLUTION_DIRECTIVE,
+ service.isOptional() ? Namespace.RESOLUTION_OPTIONAL : Namespace.RESOLUTION_MANDATORY)
+ .directive(
+ Namespace.REQUIREMENT_CARDINALITY_DIRECTIVE,
+ service.isMultiple() ? Namespace.CARDINALITY_MULTIPLE : Namespace.CARDINALITY_SINGLE)
+ .resource(resource)
+ .build());
+ }
}
return model;
} catch (ModellerException e) {