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 2007/08/14 16:30:11 UTC
svn commit: r565771 - in
/felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin:
SCRDescriptorMojo.java om/Component.java om/metatype/MetaData.java
xml/MetaTypeIO.java
Author: cziegeler
Date: Tue Aug 14 07:30:10 2007
New Revision: 565771
URL: http://svn.apache.org/viewvc?view=rev&rev=565771
Log:
Separate meta type information from descriptors and make metatype file name configurable.
Added:
felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/om/metatype/MetaData.java (with props)
Modified:
felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/SCRDescriptorMojo.java
felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/om/Component.java
felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/xml/MetaTypeIO.java
Modified: felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/SCRDescriptorMojo.java
URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/SCRDescriptorMojo.java?view=diff&rev=565771&r1=565770&r2=565771
==============================================================================
--- felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/SCRDescriptorMojo.java (original)
+++ felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/SCRDescriptorMojo.java Tue Aug 14 07:30:10 2007
@@ -32,6 +32,7 @@
import org.apache.felix.sandbox.scrplugin.om.metatype.AttributeDefinition;
import org.apache.felix.sandbox.scrplugin.om.metatype.Designate;
import org.apache.felix.sandbox.scrplugin.om.metatype.MTObject;
+import org.apache.felix.sandbox.scrplugin.om.metatype.MetaData;
import org.apache.felix.sandbox.scrplugin.om.metatype.OCD;
import org.apache.felix.sandbox.scrplugin.tags.JavaClassDescription;
import org.apache.felix.sandbox.scrplugin.tags.JavaClassDescriptorManager;
@@ -80,6 +81,13 @@
*/
private String finalName;
+ /**
+ * Name of the generated meta type file.
+ *
+ * @parameter default-value="metatype.xml"
+ */
+ private String metaTypeName;
+
public void execute() throws MojoExecutionException, MojoFailureException {
this.getLog().debug("Starting SCRDescriptorMojo....");
@@ -92,14 +100,15 @@
final Components components = new Components();
final Components abstractComponents = new Components();
- boolean hasMetaTypeInfo = false;
+ final MetaData metaData = new MetaData();
+ metaData.setLocalization("metatype");
for (int i = 0; i < javaSources.length; i++) {
this.getLog().debug("Testing source " + javaSources[i].getName());
final JavaTag tag = javaSources[i].getTagByName(Constants.COMPONENT);
if (tag != null) {
this.getLog().debug("Processing service class " + javaSources[i].getName());
- final Component comp = this.createComponent(javaSources[i]);
+ final Component comp = this.createComponent(javaSources[i], metaData);
if (comp != null) {
if ( comp.isAbstract() ) {
this.getLog().debug("Adding abstract descriptor " + comp);
@@ -107,9 +116,6 @@
} else {
this.getLog().debug("Adding descriptor " + comp);
components.addComponent(comp);
- if ( comp.getOcd() != null ) {
- hasMetaTypeInfo = true;
- }
}
} else {
hasFailures = true;
@@ -129,7 +135,7 @@
adFile.getParentFile().mkdirs();
ComponentDescriptorIO.write(abstractComponents, adFile);
} else {
- this.getLog().debug("No abstract SCR Descriptors found in project");
+ this.getLog().debug("No abstract SCR Descriptors found in project.");
// remove file
if ( adFile.exists() ) {
this.getLog().debug("Removing obsolete abstract service descriptor " + adFile);
@@ -139,13 +145,13 @@
// terminate if there is nothing else to write
if (components.getComponents().isEmpty()) {
- this.getLog().debug("No SCR Descriptors found in project");
+ this.getLog().debug("No SCR Descriptors found in project.");
return;
}
// check file name
if (StringUtils.isEmpty(this.finalName)) {
- this.getLog().error("Descriptor file name must not be empty");
+ this.getLog().error("Descriptor file name must not be empty.");
return;
}
@@ -158,11 +164,17 @@
ComponentDescriptorIO.write(components, descriptorFile);
+ // check file name
+ if (StringUtils.isEmpty(this.metaTypeName)) {
+ this.getLog().error("Meta type file name must not be empty.");
+ return;
+ }
+
// create metatype information
- File mtFile = new File(this.outputDirectory, "OSGI-INF" + File.separator + "metatype" + File.separator + "metatype.xml");
+ File mtFile = new File(this.outputDirectory, "OSGI-INF" + File.separator + "metatype" + File.separator + this.metaTypeName);
mtFile.getParentFile().mkdirs();
- if ( hasMetaTypeInfo ) {
- MetaTypeIO.write(components, mtFile);
+ if ( metaData.getDescriptors().size() > 0 ) {
+ MetaTypeIO.write(metaData, mtFile);
} else {
if ( mtFile.exists() ) {
mtFile.delete();
@@ -192,7 +204,7 @@
* @return The generated component descriptor or null if any error occurs.
* @throws MojoExecutionException
*/
- protected Component createComponent(JavaClassDescription description)
+ protected Component createComponent(JavaClassDescription description, MetaData metaData)
throws MojoExecutionException {
final JavaTag componentTag = description.getTagByName(Constants.COMPONENT);
@@ -201,7 +213,7 @@
// set implementation
component.setImplementation(new Implementation(description.getName()));
- this.doComponent(componentTag, component);
+ final OCD ocd = this.doComponent(componentTag, component, metaData);
boolean inherited = this.getBoolean(componentTag, Constants.COMPONENT_INHERIT, false);
boolean serviceFactory = this.doServices(description.getTagsByName(Constants.SERVICE, inherited), component, description);
@@ -211,7 +223,7 @@
final JavaTag[] properties = description.getTagsByName(Constants.PROPERTY, inherited);
if (properties != null && properties.length > 0) {
for (int i=0; i < properties.length; i++) {
- this.doProperty(properties[i], null, component);
+ this.doProperty(properties[i], null, component, ocd);
}
}
@@ -234,7 +246,7 @@
tag = fields[i].getTagByName(Constants.PROPERTY);
if (tag != null) {
- this.doProperty(tag, fields[i].getInitializationExpression(), component);
+ this.doProperty(tag, fields[i].getInitializationExpression(), component, ocd);
}
}
@@ -264,7 +276,7 @@
* @param tag
* @param component
*/
- protected void doComponent(JavaTag tag, Component component) {
+ protected OCD doComponent(JavaTag tag, Component component, MetaData metaData) {
// check if this is an abstract definition
final String abstractType = tag.getNamedParameter(Constants.COMPONENT_ABSTRACT);
@@ -284,7 +296,7 @@
if ( hasMetaType ) {
// ocd
final OCD ocd = new OCD();
- component.setOcd(ocd);
+ metaData.addOCD(ocd);
ocd.setId(component.getName());
String ocdName = tag.getNamedParameter(Constants.COMPONENT_LABEL);
if ( ocdName == null ) {
@@ -298,13 +310,15 @@
ocd.setDescription(ocdDescription);
// designate
final Designate designate = new Designate();
- component.setDesignate(designate);
+ metaData.addDesignate(designate);
designate.setPid(component.getName());
// designate.object
final MTObject mtobject = new MTObject();
designate.setObject(mtobject);
mtobject.setOcdref(component.getName());
+ return ocd;
}
+ return null;
}
/**
@@ -357,7 +371,7 @@
* @param defaultName
* @param component
*/
- protected void doProperty(JavaTag property, String defaultName, Component component) {
+ protected void doProperty(JavaTag property, String defaultName, Component component, OCD ocd) {
String name = property.getNamedParameter(Constants.PROPERTY_NAME);
if (StringUtils.isEmpty(name) && defaultName!= null) {
name = defaultName.trim();
@@ -391,8 +405,7 @@
final boolean isPrivate = this.getBoolean(property, Constants.PROPERTY_PRIVATE, false);
// if this is a public property and the component is generating metatype info
// store the information!
- if ( !isPrivate && component.getOcd() != null ) {
- final OCD ocd = component.getOcd();
+ if ( !isPrivate && ocd != null ) {
final AttributeDefinition ad = new AttributeDefinition();
ocd.getProperties().add(ad);
ad.setId(prop.getName());
Modified: felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/om/Component.java
URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/om/Component.java?view=diff&rev=565771&r1=565770&r2=565771
==============================================================================
--- felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/om/Component.java (original)
+++ felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/om/Component.java Tue Aug 14 07:30:10 2007
@@ -22,8 +22,6 @@
import java.util.Iterator;
import java.util.List;
-import org.apache.felix.sandbox.scrplugin.om.metatype.Designate;
-import org.apache.felix.sandbox.scrplugin.om.metatype.OCD;
import org.apache.felix.sandbox.scrplugin.tags.JavaClassDescription;
import org.apache.felix.sandbox.scrplugin.tags.JavaMethod;
import org.apache.felix.sandbox.scrplugin.tags.JavaParameter;
@@ -66,10 +64,6 @@
protected boolean serviceFactory;
- protected OCD ocd;
-
- protected Designate designate;
-
/**
* Default constructor.
*/
@@ -293,21 +287,5 @@
if (!"org.osgi.service.component.ComponentContext".equals(param.getType())) {
warnings.add(this.getMessage("Activation method " + methodName + " has wrong argument type " + param.getType()));
}
- }
-
- public OCD getOcd() {
- return this.ocd;
- }
-
- public void setOcd(OCD ocd) {
- this.ocd = ocd;
- }
-
- public Designate getDesignate() {
- return this.designate;
- }
-
- public void setDesignate(Designate designate) {
- this.designate = designate;
}
}
Added: felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/om/metatype/MetaData.java
URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/om/metatype/MetaData.java?view=auto&rev=565771
==============================================================================
--- felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/om/metatype/MetaData.java (added)
+++ felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/om/metatype/MetaData.java Tue Aug 14 07:30:10 2007
@@ -0,0 +1,49 @@
+/*
+ * 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
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.sandbox.scrplugin.om.metatype;
+
+import java.util.List;
+import java.util.ArrayList;
+
+public class MetaData {
+
+ protected String localization;
+
+ protected List descriptors = new ArrayList();
+
+ public String getLocalization() {
+ return this.localization;
+ }
+
+ public void setLocalization(String localization) {
+ this.localization = localization;
+ }
+
+ public List getDescriptors() {
+ return this.descriptors;
+ }
+
+ public void addOCD(OCD ocd) {
+ this.descriptors.add(ocd);
+ }
+
+ public void addDesignate(Designate d) {
+ this.descriptors.add(d);
+ }
+}
Propchange: felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/om/metatype/MetaData.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/om/metatype/MetaData.java
------------------------------------------------------------------------------
svn:keywords = author date id revision url
Modified: felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/xml/MetaTypeIO.java
URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/xml/MetaTypeIO.java?view=diff&rev=565771&r1=565770&r2=565771
==============================================================================
--- felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/xml/MetaTypeIO.java (original)
+++ felix/sandbox/cziegeler/maven-scr-plugin/src/main/java/org/apache/felix/sandbox/scrplugin/xml/MetaTypeIO.java Tue Aug 14 07:30:10 2007
@@ -32,11 +32,10 @@
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;
-import org.apache.felix.sandbox.scrplugin.om.Component;
-import org.apache.felix.sandbox.scrplugin.om.Components;
import org.apache.felix.sandbox.scrplugin.om.metatype.AttributeDefinition;
import org.apache.felix.sandbox.scrplugin.om.metatype.Designate;
import org.apache.felix.sandbox.scrplugin.om.metatype.MTObject;
+import org.apache.felix.sandbox.scrplugin.om.metatype.MetaData;
import org.apache.felix.sandbox.scrplugin.om.metatype.OCD;
import org.apache.maven.plugin.MojoExecutionException;
import org.xml.sax.ContentHandler;
@@ -73,7 +72,7 @@
protected static final String AD_ELEMENT = "AD";
protected static final String AD_ELEMENT_QNAME = PREFIX + ':' + AD_ELEMENT;
- public static void write(Components components, File file)
+ public static void write(MetaData metaData, File file)
throws MojoExecutionException {
try {
FileWriter writer = new FileWriter(file);
@@ -85,7 +84,7 @@
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformerHandler.setResult(new StreamResult(writer));
- generateXML(components, transformerHandler);
+ generateXML(metaData, transformerHandler);
} catch (TransformerException e) {
throw new MojoExecutionException("Unable to write xml to " + file, e);
} catch (SAXException e) {
@@ -97,27 +96,28 @@
/**
* Generate the xml top level element and start streaming
- * the components.
- * @param components
+ * the meta data.
+ * @param metaData
* @param contentHandler
* @throws SAXException
*/
- protected static void generateXML(Components components, ContentHandler contentHandler)
+ protected static void generateXML(MetaData metaData, ContentHandler contentHandler)
throws SAXException {
contentHandler.startDocument();
contentHandler.startPrefixMapping(PREFIX, NAMESPACE_URI);
final AttributesImpl ai = new AttributesImpl();
- addAttribute(ai, "localization", "metatype");
+ addAttribute(ai, "localization", metaData.getLocalization());
contentHandler.startElement(NAMESPACE_URI, METADATA_ELEMENT, METADATA_ELEMENT_QNAME, ai);
- final Iterator i = components.getComponents().iterator();
+ final Iterator i = metaData.getDescriptors().iterator();
while ( i.hasNext() ) {
- final Component component = (Component)i.next();
- if ( component.getOcd() != null ) {
- generateXML(component.getOcd(), contentHandler);
- generateXML(component.getDesignate(), contentHandler);
+ final Object obj = i.next();
+ if ( obj instanceof OCD ) {
+ generateXML((OCD)obj, contentHandler);
+ } else {
+ generateXML((Designate)obj, contentHandler);
}
}
// end wrapper element