You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2006/09/17 21:43:51 UTC

svn commit: r447121 [3/3] - in /incubator/felix/trunk/scr/src/main/java/org/apache/felix/scr: ComponentManagerImpl.java ComponentMetadata.java PropertyMetadata.java

Modified: incubator/felix/trunk/scr/src/main/java/org/apache/felix/scr/ComponentMetadata.java
URL: http://svn.apache.org/viewvc/incubator/felix/trunk/scr/src/main/java/org/apache/felix/scr/ComponentMetadata.java?view=diff&rev=447121&r1=447120&r2=447121
==============================================================================
--- incubator/felix/trunk/scr/src/main/java/org/apache/felix/scr/ComponentMetadata.java (original)
+++ incubator/felix/trunk/scr/src/main/java/org/apache/felix/scr/ComponentMetadata.java Sun Sep 17 12:43:50 2006
@@ -1,301 +1,298 @@
-/*
- *   Copyright 2006 The Apache Software Foundation
- *
- *   Licensed under the Apache License, Version 2.0 (the "License");
- *   you may not use this file except in compliance with the License.
- *   You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *   Unless required by applicable law or agreed to in writing, software
- *   distributed under the License is distributed on an "AS IS" BASIS,
- *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *   See the License for the specific language governing permissions and
- *   limitations under the License.
- *
- */
-package org.apache.felix.scr;
-
-import java.util.*;
-
-import org.osgi.service.component.ComponentException;
+/*
+ *   Copyright 2006 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+package org.apache.felix.scr;
+
+import java.util.*;
+
+import org.osgi.service.component.ComponentException;
 
 /**
- * This class holds the information associated to a component in the descriptor
 * 
 */
-public class ComponentMetadata {
-	// 112.4.3: A Globally unique component name (required)
-	private String m_name;
-	
-	// 112.4.3: Controls whether the component is enabled when the bundle is started. (optional, default is true).
-	private boolean m_enabled = true;
-	
-	// 112.4.3: Factory identified. If set to a non empty string, it indicates that the component is a factory component (optional).
-	private String m_factory = null;
-	
-	// 112.4.3: Controls whether component configurations must be immediately activated after becoming 
-	// satisfied or whether activation should be delayed. (optional, default value is false).
-	private boolean m_immediate = false;
-	
-    // 112.4.4 Implementation Element (required)
-    private String m_implementationClassName = null;
-    
-    // Associated properties (0..*)
-    private Dictionary m_properties = new Hashtable();
-    
-    // List of Property metadata - used while building the meta data
-    // while validating the properties contained in the PropertyMetadata
-    // instances are copied to the m_properties Dictionary while this
-    // list will be cleared
-    private List m_propertyMetaData = new ArrayList();
-    
-    // Provided services (0..1)
-    private ServiceMetadata m_service = null;
-    
-    // List of service references, (required services 0..*)
-    private List m_references = new ArrayList();
-    
-    // Flag that is set once the component is verified (its properties cannot be changed)
-    private boolean m_validated = false;
-        
-       
-    /////////////////////////////////////////// SETTERS //////////////////////////////////////
-    
-    /**
-     * Setter for the name
-     * 
-     * @param name
-     */
-    public void setName(String name) {
-    	if(m_validated) {
-    		return;
-    	}
-    	m_name = name;
-    }
-    
-    /**
-     * Setter for the enabled property
-     * 
-     * @param enabled
-     */
-    public void setEnabled(boolean enabled) {
-    	if(m_validated) {
-    		return;
-    	}
-    	m_enabled = enabled;
-    }
-    
-    /**
-     * 
-     * @param factoryIdentifier
-     */
-    public void setFactoryIdentifier(String factoryIdentifier) {
-    	if(m_validated) {
-    		return;
-    	}
-    	m_factory = factoryIdentifier;
-    }
-    
-    /**
-     * Setter for the immediate property
-     * 
-     * @param immediate
-     */
-    public void setImmediate(boolean immediate) {
-    	if(m_validated) {
-    		return;
-    	}
-    	m_immediate = immediate;
-    }   
-    
-    /**
-     * Sets the name of the implementation class
-     * 
-     * @param implementationClassName a class name
-     */
-    public void setImplementationClassName(String implementationClassName) {
-    	if(m_validated) {
-    		return;
-    	}
-        m_implementationClassName = implementationClassName;
-    }
-
-    /**
-     * Used to add a property to the instance
-     *
-     * @param newProperty a property metadata object
-     */
-    public void addProperty(PropertyMetadata newProperty) {
-    	if(m_validated) {
-    		return;
-    	}
-    	if(newProperty == null) {
-    		throw new IllegalArgumentException ("Cannot add a null property");
-    	}
-    	m_propertyMetaData.add(newProperty);
-    }
-
-    /**
-     * Used to set a ServiceMetadata object.
-     *
-     * @param service a ServiceMetadata
-     */
-    public void setService(ServiceMetadata service) {
-    	if(m_validated) {
-    		return;
-    	}
-        m_service = service;
-    }
-
-    /**
-     * Used to add a reference metadata to the component
-     *
-     * @param newReference a new ReferenceMetadata to be added
-     */
-    public void addDependency(ReferenceMetadata newReference) {
-    	if(newReference == null) {
-    		throw new IllegalArgumentException ("Cannot add a null ReferenceMetadata");
-    	}
-        m_references.add(newReference);
-    }
-
-    
-    /////////////////////////////////////////// GETTERS //////////////////////////////////////
-    
-    /**
-     * Returns the name of the component
-     * 
-     * @return A string containing the name of the component 
-     */
-    public String getName() {
-    	return m_name;
-    }
-    
-    /**
-     * Returns the value of the enabled flag 
-     * 
-     * @return a boolean containing the value of the enabled flag
-     */
-    public boolean isEnabled() {
-    	return m_enabled;
-    }
-
-    /**
-     * Returns the factory identifier
-     * 
-     * @return A string containing a factory identifier or null
-     */
-    public String getFactoryIdentifier() {
-    	return m_factory;
-    }
-    
-    /**
-     * Returns the flag that defines the activation policy for the component
-     * 
-     * @return a boolean that defines the activation policy
-     */
-    public boolean isImmediate() {
-    	return m_immediate;
-    }
-    
-    /**
-     * Returns the name of the implementation class
-     *
-     * @return the name of the implementation class
-     */
-    public String getImplementationClassName() {
-        return m_implementationClassName;
-    }
-
-    /**
-     * Returns the associated ServiceMetadata
-     * 
-     * @return a ServiceMetadata object or null if the Component does not provide any service
-     */
-    public ServiceMetadata getServiceMetadata() {
-    	return m_service;
-    }
-
-    /**
-     * Returns the properties.
-     *
-     * @return the properties as a Dictionary
-     */
-    public Dictionary getProperties() {
-        return m_properties;
-    }
-
-    /**
-     * Returns the dependency descriptors
-     *
-     * @return a Collection of dependency descriptors
-     */
-    public List getDependencies() {
-        return m_references;
-    }
-
-    /**
-     * Test to see if this service is a factory
-     *
-     * @return true if it is a factory, false otherwise
-     */
-    public boolean isFactory() {
-        return m_factory != null;
-    }
-    
-    /**
-     * Method used to verify if the semantics of this metadata are correct
-     */
-    void validate() {
-    	
-        // First check if the properties are valid (and extract property values)
-        Iterator propertyIterator = m_propertyMetaData.iterator();
-    	while ( propertyIterator.hasNext() ) {
-    	    PropertyMetadata propMeta = (PropertyMetadata) propertyIterator.next();
-            propMeta.validate();
-            m_properties.put(propMeta.getName(), propMeta.getValue());
-        }
-    	m_propertyMetaData.clear();
-    	
-    	// Check that the provided services are valid too
-    	if(m_service != null) {
-    		m_service.validate();
-    	}
-    	
-    	// Check that the references are ok
-    	Iterator referenceIterator = m_references.iterator();
-    	while ( referenceIterator.hasNext() ) {
-    		((ReferenceMetadata)referenceIterator.next()).validate();
-    	}
-    	    	
-    	// 112.10 The name of the component is required
-    	if( m_name == null ) {
-    		throw new ComponentException("The component name has not been set");
-    	}
-    	
-    	// 112.10 There must be one implementation element and the class atribute is required
-    	if ( m_implementationClassName == null ) {
-    		throw new ComponentException("The implementation class name has not been set for this component");
-    	}
-    	
-    	// 112.2.3 A delayed component specifies a service, is not specified to be a factory component
-    	// and does not have the immediate attribute of the component element set to true.
-    	if(m_immediate == false && m_service == null) {
-    		throw new ComponentException("Component '"+m_name+"' is specified as being delayed but does not provide any service.");
-    	}    	
-    	
-    	if ( m_factory != null && m_immediate == false) {
-    		throw new ComponentException("A factory cannot be a delayed component");
-    	}
-    	
-    	// TODO: 112.4.6 The serviceFactory attribute (of a provided service) must not be true if 
-    	// the component is a factory component or an immediate component
-
-    	
-    	m_validated = true;
-    	// TODO: put a similar flag on the references and the services
-    }
-
-}
-
-
-
+ * This class holds the information associated to a component in the descriptor *  */
+public class ComponentMetadata {
+	// 112.4.3: A Globally unique component name (required)
+	private String m_name;
+	
+	// 112.4.3: Controls whether the component is enabled when the bundle is started. (optional, default is true).
+	private boolean m_enabled = true;
+	
+	// 112.4.3: Factory identified. If set to a non empty string, it indicates that the component is a factory component (optional).
+	private String m_factory = null;
+	
+	// 112.4.3: Controls whether component configurations must be immediately activated after becoming 
+	// satisfied or whether activation should be delayed. (optional, default value is false).
+	private boolean m_immediate = false;
+	
+    // 112.4.4 Implementation Element (required)
+    private String m_implementationClassName = null;
+    
+    // Associated properties (0..*)
+    private Dictionary m_properties = new Hashtable();
+    
+    // List of Property metadata - used while building the meta data
+    // while validating the properties contained in the PropertyMetadata
+    // instances are copied to the m_properties Dictionary while this
+    // list will be cleared
+    private List m_propertyMetaData = new ArrayList();
+    
+    // Provided services (0..1)
+    private ServiceMetadata m_service = null;
+    
+    // List of service references, (required services 0..*)
+    private List m_references = new ArrayList();
+    
+    // Flag that is set once the component is verified (its properties cannot be changed)
+    private boolean m_validated = false;
+        
+       
+    /////////////////////////////////////////// SETTERS //////////////////////////////////////
+    
+    /**
+     * Setter for the name
+     * 
+     * @param name
+     */
+    public void setName(String name) {
+    	if(m_validated) {
+    		return;
+    	}
+    	m_name = name;
+    }
+    
+    /**
+     * Setter for the enabled property
+     * 
+     * @param enabled
+     */
+    public void setEnabled(boolean enabled) {
+    	if(m_validated) {
+    		return;
+    	}
+    	m_enabled = enabled;
+    }
+    
+    /**
+     * 
+     * @param factoryIdentifier
+     */
+    public void setFactoryIdentifier(String factoryIdentifier) {
+    	if(m_validated) {
+    		return;
+    	}
+    	m_factory = factoryIdentifier;
+    }
+    
+    /**
+     * Setter for the immediate property
+     * 
+     * @param immediate
+     */
+    public void setImmediate(boolean immediate) {
+    	if(m_validated) {
+    		return;
+    	}
+    	m_immediate = immediate;
+    }   
+    
+    /**
+     * Sets the name of the implementation class
+     * 
+     * @param implementationClassName a class name
+     */
+    public void setImplementationClassName(String implementationClassName) {
+    	if(m_validated) {
+    		return;
+    	}
+        m_implementationClassName = implementationClassName;
+    }
+
+    /**
+     * Used to add a property to the instance
+     *
+     * @param newProperty a property metadata object
+     */
+    public void addProperty(PropertyMetadata newProperty) {
+    	if(m_validated) {
+    		return;
+    	}
+    	if(newProperty == null) {
+    		throw new IllegalArgumentException ("Cannot add a null property");
+    	}
+    	m_propertyMetaData.add(newProperty);
+    }
+
+    /**
+     * Used to set a ServiceMetadata object.
+     *
+     * @param service a ServiceMetadata
+     */
+    public void setService(ServiceMetadata service) {
+    	if(m_validated) {
+    		return;
+    	}
+        m_service = service;
+    }
+
+    /**
+     * Used to add a reference metadata to the component
+     *
+     * @param newReference a new ReferenceMetadata to be added
+     */
+    public void addDependency(ReferenceMetadata newReference) {
+    	if(newReference == null) {
+    		throw new IllegalArgumentException ("Cannot add a null ReferenceMetadata");
+    	}
+        m_references.add(newReference);
+    }
+
+    
+    /////////////////////////////////////////// GETTERS //////////////////////////////////////
+    
+    /**
+     * Returns the name of the component
+     * 
+     * @return A string containing the name of the component 
+     */
+    public String getName() {
+    	return m_name;
+    }
+    
+    /**
+     * Returns the value of the enabled flag 
+     * 
+     * @return a boolean containing the value of the enabled flag
+     */
+    public boolean isEnabled() {
+    	return m_enabled;
+    }
+
+    /**
+     * Returns the factory identifier
+     * 
+     * @return A string containing a factory identifier or null
+     */
+    public String getFactoryIdentifier() {
+    	return m_factory;
+    }
+    
+    /**
+     * Returns the flag that defines the activation policy for the component
+     * 
+     * @return a boolean that defines the activation policy
+     */
+    public boolean isImmediate() {
+    	return m_immediate;
+    }
+    
+    /**
+     * Returns the name of the implementation class
+     *
+     * @return the name of the implementation class
+     */
+    public String getImplementationClassName() {
+        return m_implementationClassName;
+    }
+
+    /**
+     * Returns the associated ServiceMetadata
+     * 
+     * @return a ServiceMetadata object or null if the Component does not provide any service
+     */
+    public ServiceMetadata getServiceMetadata() {
+    	return m_service;
+    }
+
+    /**
+     * Returns the properties.
+     *
+     * @return the properties as a Dictionary
+     */
+    public Dictionary getProperties() {
+        return m_properties;
+    }
+
+    /**
+     * Returns the dependency descriptors
+     *
+     * @return a Collection of dependency descriptors
+     */
+    public List getDependencies() {
+        return m_references;
+    }
+
+    /**
+     * Test to see if this service is a factory
+     *
+     * @return true if it is a factory, false otherwise
+     */
+    public boolean isFactory() {
+        return m_factory != null;
+    }
+    
+    /**
+     * Method used to verify if the semantics of this metadata are correct
+     */
+    void validate() {
+    	
+        // First check if the properties are valid (and extract property values)
+        Iterator propertyIterator = m_propertyMetaData.iterator();
+    	while ( propertyIterator.hasNext() ) {
+    	    PropertyMetadata propMeta = (PropertyMetadata) propertyIterator.next();
+            propMeta.validate();
+            m_properties.put(propMeta.getName(), propMeta.getValue());
+        }
+    	m_propertyMetaData.clear();
+    	
+    	// Check that the provided services are valid too
+    	if(m_service != null) {
+    		m_service.validate();
+    	}
+    	
+    	// Check that the references are ok
+    	Iterator referenceIterator = m_references.iterator();
+    	while ( referenceIterator.hasNext() ) {
+    		((ReferenceMetadata)referenceIterator.next()).validate();
+    	}
+    	    	
+    	// 112.10 The name of the component is required
+    	if( m_name == null ) {
+    		throw new ComponentException("The component name has not been set");
+    	}
+    	
+    	// 112.10 There must be one implementation element and the class atribute is required
+    	if ( m_implementationClassName == null ) {
+    		throw new ComponentException("The implementation class name has not been set for this component");
+    	}
+    	
+    	// 112.2.3 A delayed component specifies a service, is not specified to be a factory component
+    	// and does not have the immediate attribute of the component element set to true.
+    	if(m_immediate == false && m_service == null) {
+    		throw new ComponentException("Component '"+m_name+"' is specified as being delayed but does not provide any service.");
+    	}    	
+    	
+    	if ( m_factory != null && m_immediate == false) {
+    		throw new ComponentException("A factory cannot be a delayed component");
+    	}
+    	
+    	// TODO: 112.4.6 The serviceFactory attribute (of a provided service) must not be true if 
+    	// the component is a factory component or an immediate component
+
+    	
+    	m_validated = true;
+    	// TODO: put a similar flag on the references and the services
+    }
+
+}

Modified: incubator/felix/trunk/scr/src/main/java/org/apache/felix/scr/PropertyMetadata.java
URL: http://svn.apache.org/viewvc/incubator/felix/trunk/scr/src/main/java/org/apache/felix/scr/PropertyMetadata.java?view=diff&rev=447121&r1=447120&r2=447121
==============================================================================
--- incubator/felix/trunk/scr/src/main/java/org/apache/felix/scr/PropertyMetadata.java (original)
+++ incubator/felix/trunk/scr/src/main/java/org/apache/felix/scr/PropertyMetadata.java Sun Sep 17 12:43:50 2006
@@ -1,111 +1,111 @@
-/*
- *   Copyright 2006 The Apache Software Foundation
- *
- *   Licensed under the Apache License, Version 2.0 (the "License");
- *   you may not use this file except in compliance with the License.
- *   You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *   Unless required by applicable law or agreed to in writing, software
- *   distributed under the License is distributed on an "AS IS" BASIS,
- *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *   See the License for the specific language governing permissions and
- *   limitations under the License.
- *
- */
-package org.apache.felix.scr;
-
-import org.osgi.service.component.ComponentException;
-
-/**
- * A property descriptor that contains the information for properties
- * defined in the descriptor
- *
- */
-public class PropertyMetadata {
-	
-	// Name of the property (required)
-	private String m_name;
-	
-	// Type of the property (optional)
-	private String m_type = "String";
-	
-	// Value of the type (optional)
-	private Object m_value;
-	
-	// Flag that indicates if this PropertyMetadata has been validated and thus has become immutable
-	private boolean m_validated = false;
-
-	/**
-	 * Set the name
-	 * 
-	 * @param name
-	 */
-	public void setName(String name) {
-		if (m_validated == true) {
-			return;
-		}
-		
-		m_name = name;
-	}
-	
-
-	/**
-	 * Set the type
-	 * 
-	 * @param type
-	 */
-	public void setType(String type) {
-		if (m_validated == true) {
-			return;
-		}
-		m_type = type;
-	}
-		
-	/**
-	 * Set the value
-	 * 
-	 * @param value
-	 */
-	public void setValue(String value) {
-		if (m_validated == true) {
-			return;
-		}
-		
-		// 112.4.5 Parsing of the value is done by the valueOf(String) method (P. 291)
-		// Should the type accept lowercase too?
-		if(m_type.equals("String")) {
-			m_value = String.valueOf(value);
-        }
-		else if(m_type.equals("Long")) {
-			m_value = Long.valueOf(value);
-        }
-		else if(m_type.equals("Double")) {
-			m_value = Double.valueOf(value);
-        }
-		else if(m_type.equals("Float")) {
-			m_value = Float.valueOf(value);
-        }
-		else if(m_type.equals("Integer")) {
-			m_value = Integer.valueOf(value);
-        }
-		else if(m_type.equals("Byte")) {
-			m_value = Byte.valueOf(value);
-        }
-		else if(m_type.equals("Char")) {
-			//TODO: verify if this is adequate for Characters
-			m_value = Byte.valueOf(value);
-        }
-		else if(m_type.equals("Boolean")) {
-			m_value = Boolean.valueOf(value);
-        }
-		else if(m_type.equals("Short")) {
-			m_value = Short.valueOf(value);
-        }
-		else {
-			throw new IllegalArgumentException("Undefined property type '"+m_type+"'");
-		}
+/*
+ *   Copyright 2006 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+package org.apache.felix.scr;
+
+import org.osgi.service.component.ComponentException;
+
+/**
+ * A property descriptor that contains the information for properties
+ * defined in the descriptor
+ *
+ */
+public class PropertyMetadata {
+	
+	// Name of the property (required)
+	private String m_name;
+	
+	// Type of the property (optional)
+	private String m_type = "String";
+	
+	// Value of the type (optional)
+	private Object m_value;
+	
+	// Flag that indicates if this PropertyMetadata has been validated and thus has become immutable
+	private boolean m_validated = false;
+
+	/**
+	 * Set the name
+	 * 
+	 * @param name
+	 */
+	public void setName(String name) {
+		if (m_validated == true) {
+			return;
+		}
+		
+		m_name = name;
+	}
+	
+
+	/**
+	 * Set the type
+	 * 
+	 * @param type
+	 */
+	public void setType(String type) {
+		if (m_validated == true) {
+			return;
+		}
+		m_type = type;
+	}
+		
+	/**
+	 * Set the value
+	 * 
+	 * @param value
+	 */
+	public void setValue(String value) {
+		if (m_validated == true) {
+			return;
+		}
+		
+		// 112.4.5 Parsing of the value is done by the valueOf(String) method (P. 291)
+		// Should the type accept lowercase too?
+		if(m_type.equals("String")) {
+			m_value = String.valueOf(value);
+        }
+		else if(m_type.equals("Long")) {
+			m_value = Long.valueOf(value);
+        }
+		else if(m_type.equals("Double")) {
+			m_value = Double.valueOf(value);
+        }
+		else if(m_type.equals("Float")) {
+			m_value = Float.valueOf(value);
+        }
+		else if(m_type.equals("Integer")) {
+			m_value = Integer.valueOf(value);
+        }
+		else if(m_type.equals("Byte")) {
+			m_value = Byte.valueOf(value);
+        }
+		else if(m_type.equals("Char")) {
+			//TODO: verify if this is adequate for Characters
+			m_value = Byte.valueOf(value);
+        }
+		else if(m_type.equals("Boolean")) {
+			m_value = Boolean.valueOf(value);
+        }
+		else if(m_type.equals("Short")) {
+			m_value = Short.valueOf(value);
+        }
+		else {
+			throw new IllegalArgumentException("Undefined property type '"+m_type+"'");
+		}
 	}
 
     /**
@@ -134,14 +134,14 @@
     public Object getValue() {
         return m_value;
     }
-
-    /**
-     * Method used to verify if the semantics of this metadata are correct
-     */
-    public void validate(){
-    	if(m_name == null)
-    	{
-    		throw new ComponentException("Property name attribute is mandatory");
-    	}
+
+    /**
+     * Method used to verify if the semantics of this metadata are correct
+     */
+    public void validate(){
+    	if(m_name == null)
+    	{
+    		throw new ComponentException("Property name attribute is mandatory");
+    	}
     }
-}
+}