You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by fm...@apache.org on 2011/10/22 12:15:36 UTC

svn commit: r1187688 - in /felix/trunk/metatype: ./ src/main/java/org/apache/felix/metatype/ src/main/java/org/apache/felix/metatype/internal/

Author: fmeschbe
Date: Sat Oct 22 10:15:36 2011
New Revision: 1187688

URL: http://svn.apache.org/viewvc?rev=1187688&view=rev
Log:
FELIX-2868 Fix the resolution of the icon path according to the specification:
  - use the metatype XML file's URL as the base URL
  - have the URL constructor resolve the icon Path against that URL
  - increase o.a.f.metatype export version to 1.2 due to extended API

Modified:
    felix/trunk/metatype/pom.xml
    felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaData.java
    felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java
    felix/trunk/metatype/src/main/java/org/apache/felix/metatype/OCD.java
    felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/LocalizedObjectClassDefinition.java

Modified: felix/trunk/metatype/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/metatype/pom.xml?rev=1187688&r1=1187687&r2=1187688&view=diff
==============================================================================
--- felix/trunk/metatype/pom.xml (original)
+++ felix/trunk/metatype/pom.xml Sat Oct 22 10:15:36 2011
@@ -69,7 +69,7 @@
                             http://felix.apache.org/site/apache-felix-metatype-service.html
                         </Bundle-DocURL>
                         <Export-Package>
-                            org.apache.felix.metatype; version=${pom.version},
+                            org.apache.felix.metatype; version=1.2,
                             org.osgi.service.metatype; version=1.1
                         </Export-Package>
                         <Private-Package>

Modified: felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaData.java
URL: http://svn.apache.org/viewvc/felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaData.java?rev=1187688&r1=1187687&r2=1187688&view=diff
==============================================================================
--- felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaData.java (original)
+++ felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaData.java Sat Oct 22 10:15:36 2011
@@ -1,4 +1,4 @@
-/* 
+/*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -19,6 +19,7 @@
 package org.apache.felix.metatype;
 
 
+import java.net.URL;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -27,7 +28,7 @@ import java.util.Map;
 /**
  * The <code>MetaData</code> class represents the <code>MetaData</code>
  * element of the meta type descriptor.
- * 
+ *
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
 public class MetaData
@@ -36,7 +37,7 @@ public class MetaData
     private String localePrefix;
     private Map objectClassDefinitions;
     private Map designates;
-
+    private URL source;
 
     public String getLocalePrefix()
     {
@@ -66,6 +67,7 @@ public class MetaData
             }
 
             objectClassDefinitions.put( objectClassDefinition.getID(), objectClassDefinition );
+            objectClassDefinition.setMetadata( this );
         }
     }
 
@@ -88,4 +90,16 @@ public class MetaData
             designates.put( designate.getPid(), designate );
         }
     }
+
+
+    public URL getSource()
+    {
+        return source;
+    }
+
+
+    public void setSource( URL source )
+    {
+        this.source = source;
+    }
 }

Modified: felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java
URL: http://svn.apache.org/viewvc/felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java?rev=1187688&r1=1187687&r2=1187688&view=diff
==============================================================================
--- felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java (original)
+++ felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java Sat Oct 22 10:15:36 2011
@@ -83,7 +83,12 @@ public class MetaDataReader
             this.parser.setProperty( "http://xmlpull.org/v1/doc/properties.html#location", url.toString() );
             this.parser.setFeature(KXmlParser.FEATURE_PROCESS_NAMESPACES, true);
             this.parser.setFeature(KXmlParser.FEATURE_REPORT_NAMESPACE_ATTRIBUTES, false);
-            return this.parse( ins );
+            MetaData md = this.parse( ins );
+            if ( md != null )
+            {
+                md.setSource( url );
+            }
+            return md;
         }
         finally
         {

Modified: felix/trunk/metatype/src/main/java/org/apache/felix/metatype/OCD.java
URL: http://svn.apache.org/viewvc/felix/trunk/metatype/src/main/java/org/apache/felix/metatype/OCD.java?rev=1187688&r1=1187687&r2=1187688&view=diff
==============================================================================
--- felix/trunk/metatype/src/main/java/org/apache/felix/metatype/OCD.java (original)
+++ felix/trunk/metatype/src/main/java/org/apache/felix/metatype/OCD.java Sat Oct 22 10:15:36 2011
@@ -1,4 +1,4 @@
-/* 
+/*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -38,6 +38,7 @@ public class OCD
     private String description;
     private Map attributes;
     private Map icons;
+    private MetaData metadata;
 
 
     public String getID()
@@ -83,7 +84,7 @@ public class OCD
 
 
     /**
-     * 
+     *
      * @param size
      * @param icon The icon, either an URL or a string designating a resource
      *      which may be a localized string
@@ -120,4 +121,16 @@ public class OCD
             attributes.put( attribute.getID(), attribute );
         }
     }
+
+
+    public MetaData getMetadata()
+    {
+        return metadata;
+    }
+
+
+    public void setMetadata( MetaData metadata )
+    {
+        this.metadata = metadata;
+    }
 }

Modified: felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/LocalizedObjectClassDefinition.java
URL: http://svn.apache.org/viewvc/felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/LocalizedObjectClassDefinition.java?rev=1187688&r1=1187687&r2=1187688&view=diff
==============================================================================
--- felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/LocalizedObjectClassDefinition.java (original)
+++ felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/LocalizedObjectClassDefinition.java Sat Oct 22 10:15:36 2011
@@ -145,23 +145,18 @@ public class LocalizedObjectClassDefinit
             iconPath = ( String ) icons.get( selectedSize );
         }
 
-        // fail if no icon could be found
-        if ( iconPath == null )
-        {
-            return null;
-        }
-
         // localize the path
         iconPath = localize( iconPath );
 
-        // try to resolve the path in the bundle
-        URL url = bundle.getEntry( iconPath );
-        if ( url == null )
+        // fail if no icon could be found (or localization returned null)
+        if ( iconPath == null )
         {
             return null;
         }
 
-        // open the stream on the URL - this may throw an IOException
+        // just create an URL based on the source of the metadata
+        // see FELIX2868
+        URL url = new URL(this.ocd.getMetadata().getSource(), iconPath);
         return url.openStream();
     }