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();
}