[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 {