Generate bind/unbind only if reference has single cardinality (either optional or required)
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@572887 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
index 760c282..e22c970 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
@@ -514,7 +514,13 @@
ref.setName(name);
ref.setInterfacename(type);
ref.setCardinality(reference.getNamedParameter(Constants.REFERENCE_CARDINALITY));
+ if ( ref.getCardinality() == null ) {
+ ref.setCardinality("1..1");
+ }
ref.setPolicy(reference.getNamedParameter(Constants.REFERENCE_POLICY));
+ if ( ref.getPolicy() == null ) {
+ ref.setPolicy("static");
+ }
ref.setTarget(reference.getNamedParameter(Constants.REFERENCE_TARGET));
final String bindValue = reference.getNamedParameter(Constants.REFERENCE_BIND);
if ( bindValue != null ) {
@@ -524,23 +530,26 @@
if ( unbindValue != null ) {
ref.setUnbind(unbindValue);
}
- // if this is a field we look for the bind/unbind methods
+ // if this is a field with a single cardinality,
+ // we look for the bind/unbind methods
// and create them if they are not availabe and the component is not abstract
if ( !component.isAbstract() && this.generateAccessors ) {
if ( reference.getField() != null && component.getJavaClassDescription() instanceof ModifiableJavaClassDescription ) {
- boolean createBind = false;
- boolean createUnbind = false;
- // Only create method if no bind name has been specified
- if ( bindValue == null && ref.findMethod(ref.getBind()) == null ) {
- // create bind method
- createBind = true;
- }
- if ( unbindValue == null && ref.findMethod(ref.getUnbind()) == null ) {
- // create unbind method
- createUnbind = true;
- }
- if ( createBind || createUnbind ) {
- ((ModifiableJavaClassDescription)component.getJavaClassDescription()).addMethods(name, type, createBind, createUnbind);
+ if ( ref.getCardinality().equals("0..1") || ref.getCardinality().equals("1..1") ) {
+ boolean createBind = false;
+ boolean createUnbind = false;
+ // Only create method if no bind name has been specified
+ if ( bindValue == null && ref.findMethod(ref.getBind()) == null ) {
+ // create bind method
+ createBind = true;
+ }
+ if ( unbindValue == null && ref.findMethod(ref.getUnbind()) == null ) {
+ // create unbind method
+ createUnbind = true;
+ }
+ if ( createBind || createUnbind ) {
+ ((ModifiableJavaClassDescription)component.getJavaClassDescription()).addMethods(name, type, createBind, createUnbind);
+ }
}
}
}
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/om/Reference.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/om/Reference.java
index fe151f1..79f13d5 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/om/Reference.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/om/Reference.java
@@ -63,42 +63,55 @@
public String getName() {
return this.name;
}
+
public void setName(String name) {
this.name = name;
}
+
public String getInterfacename() {
return this.interfacename;
}
+
public void setInterfacename(String interfacename) {
this.interfacename = interfacename;
}
+
public String getTarget() {
return this.target;
}
+
public void setTarget(String target) {
this.target = target;
}
+
public String getCardinality() {
return this.cardinality;
}
+
public void setCardinality(String cardinality) {
this.cardinality = cardinality;
}
+
public String getPolicy() {
return this.policy;
}
+
public void setPolicy(String policy) {
this.policy = policy;
}
+
public String getBind() {
return this.bind;
}
+
public void setBind(String bind) {
this.bind = bind;
}
+
public String getUnbind() {
return this.unbind;
}
+
public void setUnbind(String unbind) {
this.unbind = unbind;
}