You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2009/07/28 16:42:21 UTC
svn commit: r798540 - in /felix/trunk:
scr-annotations/src/main/java/org/apache/felix/scr/annotations/
scrplugin/src/main/java/org/apache/felix/scrplugin/
scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/
Author: cziegeler
Date: Tue Jul 28 14:42:21 2009
New Revision: 798540
URL: http://svn.apache.org/viewvc?rev=798540&view=rev
Log:
FELIX-1225 : factoryPid attribute of Designate elements for metatype data is not set
Modified:
felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/Component.java
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/Constants.java
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ComponentTag.java
Modified: felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/Component.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/Component.java?rev=798540&r1=798539&r2=798540&view=diff
==============================================================================
--- felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/Component.java (original)
+++ felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/Component.java Tue Jul 28 14:42:21 2009
@@ -108,6 +108,12 @@
boolean createPid() default true;
/**
+ * Set the metatype factory pid property (only for non factory components).
+ * @since 1.0
+ */
+ boolean getMetatypeFactoryPid() default false;
+
+ /**
* The configuration policy
* @since 1.0
*/
Modified: felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/Constants.java
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/Constants.java?rev=798540&r1=798539&r2=798540&view=diff
==============================================================================
--- felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/Constants.java (original)
+++ felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/Constants.java Tue Jul 28 14:42:21 2009
@@ -56,6 +56,8 @@
public static final String COMPONENT_CREATE_PID = "create-pid";
+ public static final String COMPONENT_SET_METATYPE_FACTORY_PID = "set-metatype-factory-pid";
+
// The component configuration policy (V1.1)
public static final String COMPONENT_CONFIG_POLICY = "policy";
public static final String COMPONENT_CONFIG_POLICY_OPTIONAL = "optional";
Modified: felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java?rev=798540&r1=798539&r2=798540&view=diff
==============================================================================
--- felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java (original)
+++ felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java Tue Jul 28 14:42:21 2009
@@ -367,7 +367,7 @@
// set implementation
component.setImplementation(new Implementation(description.getName()));
- final OCD ocd = this.doComponent(componentTag, component, metaData);
+ final OCD ocd = this.doComponent(componentTag, component, metaData, iLog);
boolean inherited = getBoolean(componentTag, Constants.COMPONENT_INHERIT, true);
this.doServices(description.getTagsByName(Constants.SERVICE, inherited), component, description);
@@ -443,7 +443,8 @@
* @param tag
* @param component
*/
- protected OCD doComponent(JavaTag tag, Component component, MetaData metaData) {
+ protected OCD doComponent(JavaTag tag, Component component, MetaData metaData,
+ final IssueLog iLog) {
// check if this is an abstract definition
final String abstractType = tag.getNamedParameter(Constants.COMPONENT_ABSTRACT);
@@ -513,8 +514,17 @@
final Designate designate = new Designate();
metaData.addDesignate(designate);
designate.setPid(component.getName());
- if (component.getFactory() != null) {
- designate.setFactoryPid( component.getFactory() );
+
+ // factory pid
+ final String setFactoryPidValue = tag.getNamedParameter(Constants.COMPONENT_SET_METATYPE_FACTORY_PID);
+ final boolean setFactoryPid = setFactoryPidValue != null &&
+ ("yes".equalsIgnoreCase(setFactoryPidValue) || "true".equalsIgnoreCase(setFactoryPidValue));
+ if ( setFactoryPid ) {
+ if ( component.getFactory() == null ) {
+ designate.setFactoryPid( component.getName() );
+ } else {
+ iLog.addWarning("Component factory " + component.getName() + " should not set metatype factory pid.");
+ }
}
// designate.object
final MTObject mtobject = new MTObject();
Modified: felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ComponentTag.java
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ComponentTag.java?rev=798540&r1=798539&r2=798540&view=diff
==============================================================================
--- felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ComponentTag.java (original)
+++ felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ComponentTag.java Tue Jul 28 14:42:21 2009
@@ -94,6 +94,10 @@
return Util.getEnumValue(annotation, "policy", ConfigurationPolicy.class, Component.class, false);
}
+ public boolean getMetatypeFactoryPid() {
+ return Util.getBooleanValue(annotation, "getMetatypeFactoryPid", Component.class);
+ }
+
public Class<? extends java.lang.annotation.Annotation> annotationType() {
return null;
}
@@ -114,6 +118,8 @@
map.put(Constants.COMPONENT_DESCRIPTION, emptyToNull(this.annotation.description()));
map.put(Constants.COMPONENT_ENABLED, String.valueOf(this.annotation.enabled()));
map.put(Constants.COMPONENT_FACTORY, emptyToNull(this.annotation.factory()));
+ map.put(Constants.COMPONENT_SET_METATYPE_FACTORY_PID, String.valueOf(this.annotation.getMetatypeFactoryPid()));
+
// FELIX-593: immediate attribute does not default to true all the
// times hence we only set it if declared in the tag
if ( this.sourceAnnotation.getNamedParameter("immediate") != null) {