You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cl...@apache.org on 2009/02/12 17:11:54 UTC

svn commit: r743789 - in /felix/trunk/ipojo/core: ./ src/main/java/org/apache/felix/ipojo/ src/main/java/org/apache/felix/ipojo/architecture/ src/main/java/org/apache/felix/ipojo/handlers/providedservice/

Author: clement
Date: Thu Feb 12 16:11:53 2009
New Revision: 743789

URL: http://svn.apache.org/viewvc?rev=743789&view=rev
Log:
Fix issue Felix-936.
Now, abstract and concrete classes can also be exposed as services is they are specified in the 'specifications' attribute.

Update package version to 1.3.0

Modified:
    felix/trunk/ipojo/core/pom.xml
    felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/ComponentFactory.java
    felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/HandlerManagerFactory.java
    felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/architecture/ComponentTypeDescription.java
    felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java

Modified: felix/trunk/ipojo/core/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/core/pom.xml?rev=743789&r1=743788&r2=743789&view=diff
==============================================================================
--- felix/trunk/ipojo/core/pom.xml (original)
+++ felix/trunk/ipojo/core/pom.xml Thu Feb 12 16:11:53 2009
@@ -31,7 +31,7 @@
 	<version>1.3.0-SNAPSHOT</version>
 	
 	<properties>
-		<ipojo.package.version>1.2.0</ipojo.package.version>
+		<ipojo.package.version>1.3.0</ipojo.package.version>
 	</properties>
 	
 	<dependencies>

Modified: felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/ComponentFactory.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/ComponentFactory.java?rev=743789&r1=743788&r2=743789&view=diff
==============================================================================
--- felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/ComponentFactory.java (original)
+++ felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/ComponentFactory.java Thu Feb 12 16:11:53 2009
@@ -463,7 +463,7 @@
          * Creates a PrimitiveTypeDescription object.
          * @param factory the factory attached to this component type description.
          */
-        public PrimitiveTypeDescription(Factory factory) {
+        public PrimitiveTypeDescription(IPojoFactory factory) {
             super(factory);
         }
 

Modified: felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/HandlerManagerFactory.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/HandlerManagerFactory.java?rev=743789&r1=743788&r2=743789&view=diff
==============================================================================
--- felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/HandlerManagerFactory.java (original)
+++ felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/HandlerManagerFactory.java Thu Feb 12 16:11:53 2009
@@ -182,7 +182,7 @@
          * @param factory the factory.
          * @see ComponentTypeDescription#ComponentTypeDescription(Factory)
          */
-        public HandlerTypeDescription(Factory factory) {
+        public HandlerTypeDescription(IPojoFactory factory) {
             super(factory);
         }
 

Modified: felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/architecture/ComponentTypeDescription.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/architecture/ComponentTypeDescription.java?rev=743789&r1=743788&r2=743789&view=diff
==============================================================================
--- felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/architecture/ComponentTypeDescription.java (original)
+++ felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/architecture/ComponentTypeDescription.java Thu Feb 12 16:11:53 2009
@@ -23,6 +23,7 @@
 
 import org.apache.felix.ipojo.ComponentFactory;
 import org.apache.felix.ipojo.Factory;
+import org.apache.felix.ipojo.IPojoFactory;
 import org.apache.felix.ipojo.metadata.Attribute;
 import org.apache.felix.ipojo.metadata.Element;
 import org.osgi.framework.BundleContext;
@@ -48,15 +49,23 @@
     /**
      * Represented factory.
      */
-    private final Factory m_factory;
+    private final IPojoFactory m_factory;
     
     /**
      * Constructor.
      * @param factory : represented factory.
      */
-    public ComponentTypeDescription(Factory factory) {
+    public ComponentTypeDescription(IPojoFactory factory) {
         m_factory = factory;
     }
+    
+    /**
+     * Gets the attached factory.
+     * @return the factory
+     */
+    public IPojoFactory getFactory() {
+        return m_factory;
+    }
 
     /**
      * Gets a printable form of the current component type description.
@@ -109,10 +118,7 @@
      * @param pd : the property to add
      */
     public void addProperty(PropertyDescription pd) { //NOPMD remove the instance name of the 'name' property.
-        String name = pd.getName();
-//        if ("name".equals(name)) {
-//            pd = new PropertyDescription(name, pd.getType(), null); //NOPMD Instance name case.
-//        } 
+        String name = pd.getName(); 
         
         // Check if the property is not already in the array
         for (int i = 0; i < m_properties.length; i++) {

Modified: felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java?rev=743789&r1=743788&r2=743789&view=diff
==============================================================================
--- felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java (original)
+++ felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java Thu Feb 12 16:11:53 2009
@@ -41,6 +41,7 @@
 import org.apache.felix.ipojo.parser.ParseException;
 import org.apache.felix.ipojo.parser.ParseUtils;
 import org.apache.felix.ipojo.parser.PojoMetadata;
+import org.apache.felix.ipojo.util.Logger;
 import org.apache.felix.ipojo.util.Property;
 import org.osgi.framework.Bundle;
 
@@ -511,7 +512,7 @@
         PojoMetadata manipulation = getFactory().getPojoMetadata();
 
         for (int i = 0; i < provides.length; i++) {
-         // First : create the serviceSpecification list
+            // First : create the serviceSpecification list
             String[] serviceSpecification = manipulation.getInterfaces();
             String parent = manipulation.getSuperClass();
             Set all = null;
@@ -532,8 +533,9 @@
             if (serviceSpecificationStr != null) {
                 List itfs = ParseUtils.parseArraysAsList(serviceSpecificationStr);
                 for (int j = 0; j < itfs.size(); j++) {
-                    if (! all.contains(itfs.get(j))) {
-                        throw new ConfigurationException("The specification " + itfs.get(j) + " is not implemented by " + metadata.getAttribute("classname"));
+                    if (! all.contains(itfs.get(j)) && ! parent.equals((String) itfs.get(i))) {
+                        desc.getFactory().getLogger().log(Logger.WARNING, "The specification " + itfs.get(j) + " is not implemented by " + metadata.getAttribute("classname") + 
+                                " it might be a superclass.");
                     }
                 }
                 all = new HashSet(itfs);