[FELIX-2893] Enabled propagation by default
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1088058 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/configuration/ConfigurationHandler.java b/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/configuration/ConfigurationHandler.java
index bac697b..2b68234 100644
--- a/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/configuration/ConfigurationHandler.java
+++ b/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/configuration/ConfigurationHandler.java
@@ -127,7 +127,7 @@
if (fieldName == null && methodName == null && paramIndex == null) {
throw new ConfigurationException("Malformed property : The property needs to contain" +
- " at least a field, a method or a constructor-parameter");
+ " at least a field, a method or a constructor-parameter");
}
String name = configurables[i].getAttribute("name");
@@ -135,9 +135,9 @@
if (fieldName == null && methodName != null) {
name = methodName;
} else if (fieldName == null && paramIndex != null) {
- name = paramIndex;
+ name = paramIndex;
} else {
- name = fieldName;
+ name = fieldName;
}
configurables[i].addAttribute(new Attribute("name", name)); // Add the type to avoid configure checking
}
@@ -167,18 +167,18 @@
type = field.getFieldType();
configurables[i].addAttribute(new Attribute("type", type)); // Add the type to avoid configure checking
} else if (paramIndex != null) {
- int index = Integer.parseInt(paramIndex);
- type = configurables[i].getAttribute("type");
- MethodMetadata[] cts = manipulation.getConstructors();
- // If we don't have a type, try to get the first constructor and get the type of the parameter
- // we the index 'index'.
- if (type == null && cts.length > 0 && cts[0].getMethodArguments().length > index) {
- type = cts[0].getMethodArguments()[index];
- } else if (type == null) { // Applied only if type was not determined.
- throw new ConfigurationException("Cannot determine the type of the property " + index +
- ", please use the type attribute");
- }
- configurables[i].addAttribute(new Attribute("type", type));
+ int index = Integer.parseInt(paramIndex);
+ type = configurables[i].getAttribute("type");
+ MethodMetadata[] cts = manipulation.getConstructors();
+ // If we don't have a type, try to get the first constructor and get the type of the parameter
+ // we the index 'index'.
+ if (type == null && cts.length > 0 && cts[0].getMethodArguments().length > index) {
+ type = cts[0].getMethodArguments()[index];
+ } else if (type == null) { // Applied only if type was not determined.
+ throw new ConfigurationException("Cannot determine the type of the property " + index +
+ ", please use the type attribute");
+ }
+ configurables[i].addAttribute(new Attribute("type", type));
}
// Is the property set to immutable
@@ -222,11 +222,13 @@
Element[] configurables = confs[0].getElements("Property");
// Check if the component is dynamically configurable
- m_mustPropagate = false;
+ // Propagation enabled by default.
+ m_mustPropagate = true;
+ m_toPropagate = configuration; // Instance configuration to propagate.
String propa = confs[0].getAttribute("propagation");
- if (propa != null && propa.equalsIgnoreCase("true")) {
- m_mustPropagate = true;
- m_toPropagate = configuration; // Instance configuration to propagate.
+ if (propa != null && propa.equalsIgnoreCase("false")) {
+ m_mustPropagate = false;
+ m_toPropagate = null;
}
// Check if the component support ConfigurationADmin reconfiguration
@@ -239,19 +241,19 @@
// updated method
String upd = confs[0].getAttribute("updated");
if (upd != null) {
- MethodMetadata method = getPojoMetadata().getMethod(upd);
- if (method == null) {
- throw new ConfigurationException("The updated method is not found in the class "
- + getInstanceManager().getClassName());
- } else if (method.getMethodArguments().length == 0) {
- m_updated = new Callback(upd, new Class[0], false, getInstanceManager());
- } else if (method.getMethodArguments().length == 1
- && method.getMethodArguments()[0].equals(Dictionary.class.getName())) {
- m_updated = new Callback(upd, new Class[] {Dictionary.class}, false, getInstanceManager());
- } else {
- throw new ConfigurationException("The updated method is found in the class "
- + getInstanceManager().getClassName() + " must have either no argument or a Dictionary");
- }
+ MethodMetadata method = getPojoMetadata().getMethod(upd);
+ if (method == null) {
+ throw new ConfigurationException("The updated method is not found in the class "
+ + getInstanceManager().getClassName());
+ } else if (method.getMethodArguments().length == 0) {
+ m_updated = new Callback(upd, new Class[0], false, getInstanceManager());
+ } else if (method.getMethodArguments().length == 1
+ && method.getMethodArguments()[0].equals(Dictionary.class.getName())) {
+ m_updated = new Callback(upd, new Class[] {Dictionary.class}, false, getInstanceManager());
+ } else {
+ throw new ConfigurationException("The updated method is found in the class "
+ + getInstanceManager().getClassName() + " must have either no argument or a Dictionary");
+ }
}
for (int i = 0; configurables != null && i < configurables.length; i++) {
@@ -267,11 +269,11 @@
Property prop = null;
if (paramIndex == null) {
- prop = new Property(name, fieldName, methodName, value, type, getInstanceManager(), this);
+ prop = new Property(name, fieldName, methodName, value, type, getInstanceManager(), this);
} else {
- index = Integer.parseInt(paramIndex);
- prop = new Property(name, fieldName, methodName, index,
- value, type, getInstanceManager(), this);
+ index = Integer.parseInt(paramIndex);
+ prop = new Property(name, fieldName, methodName, index,
+ value, type, getInstanceManager(), this);
}
addProperty(prop);
@@ -290,7 +292,7 @@
}
if (index != -1) {
- getInstanceManager().register(index, prop);
+ getInstanceManager().register(index, prop);
}
}
@@ -336,11 +338,11 @@
// Give initial values and reset the 'invoked' flag.
for (int i = 0; i < m_configurableProperties.size(); i++) {
- Property prop = (Property) m_configurableProperties.get(i);
- prop.reset(); // Clear the invoked flag.
- if (prop.hasField() && prop.getValue() != Property.NO_VALUE && prop.getValue() != null) {
- getInstanceManager().onSet(null, prop.getField(), prop.getValue());
- }
+ Property prop = (Property) m_configurableProperties.get(i);
+ prop.reset(); // Clear the invoked flag.
+ if (prop.hasField() && prop.getValue() != Property.NO_VALUE && prop.getValue() != null) {
+ getInstanceManager().onSet(null, prop.getField(), prop.getValue());
+ }
}
if (m_managedServicePID != null && m_sr == null) {
@@ -518,9 +520,9 @@
}
if (m_updated.getArguments().length == 0) {
- // We don't have to compute the properties,
- // we just call the callback.
- try {
+ // We don't have to compute the properties,
+ // we just call the callback.
+ try {
if (instance == null) {
m_updated.call(new Object[0]);
} else {