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 2012/05/22 21:48:22 UTC
svn commit: r1341602 - in
/felix/sandbox/cziegeler/scrplugin/generator/src/main/java/org/apache/felix/scrplugin:
SCRDescriptorGenerator.java description/ClassDescription.java
Author: cziegeler
Date: Tue May 22 19:48:22 2012
New Revision: 1341602
URL: http://svn.apache.org/viewvc?rev=1341602&view=rev
Log:
Add service information
Modified:
felix/sandbox/cziegeler/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java
felix/sandbox/cziegeler/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/description/ClassDescription.java
Modified: felix/sandbox/cziegeler/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java
URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java?rev=1341602&r1=1341601&r2=1341602&view=diff
==============================================================================
--- felix/sandbox/cziegeler/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java (original)
+++ felix/sandbox/cziegeler/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java Tue May 22 19:48:22 2012
@@ -24,6 +24,9 @@ import java.util.List;
import org.apache.felix.scrplugin.description.ClassDescription;
import org.apache.felix.scrplugin.description.ComponentDescription;
+import org.apache.felix.scrplugin.description.PropertyDescription;
+import org.apache.felix.scrplugin.description.ReferenceDescription;
+import org.apache.felix.scrplugin.description.ServiceDescription;
import org.apache.felix.scrplugin.description.SpecVersion;
import org.apache.felix.scrplugin.helper.AnnotationProcessorManager;
import org.apache.felix.scrplugin.helper.ClassScanner;
@@ -33,7 +36,9 @@ import org.apache.felix.scrplugin.om.Com
import org.apache.felix.scrplugin.om.Components;
import org.apache.felix.scrplugin.om.Context;
import org.apache.felix.scrplugin.om.Implementation;
+import org.apache.felix.scrplugin.om.Interface;
import org.apache.felix.scrplugin.om.Reference;
+import org.apache.felix.scrplugin.om.Service;
import org.apache.felix.scrplugin.om.metatype.MetaData;
import org.apache.felix.scrplugin.xml.ComponentDescriptorIO;
import org.apache.felix.scrplugin.xml.MetaTypeIO;
@@ -123,8 +128,7 @@ public class SCRDescriptorGenerator {
/**
* Actually generates the Declarative Services and Metatype descriptors
- * scanning the java sources provided by the {@link #setDescriptorManager(JavaClassDescriptorManager) descriptor
- * manager}.
+ * scanning the java sources provided by the {@link #setProject(Project)
*
* @return <code>true</code> if descriptors have been generated.
*
@@ -271,7 +275,7 @@ public class SCRDescriptorGenerator {
boolean addResources = false;
// write meta type info if there is a file name
if (!StringUtils.isEmpty(this.metaTypeName)) {
- File mtFile = new File(this.outputDirectory, "OSGI-INF" + File.separator + "metatype" + File.separator
+ final File mtFile = new File(this.outputDirectory, "OSGI-INF" + File.separator + "metatype" + File.separator
+ this.metaTypeName);
final int size = metaData.getOCDs().size() + metaData.getDesignates().size();
if (size > 0) {
@@ -319,9 +323,12 @@ public class SCRDescriptorGenerator {
return addResources;
}
+ /**
+ * Create the SCR objects based on the descriptions
+ */
private Component createComponent(final ClassDescription desc, final MetaData metaData, final IssueLog iLog)
throws SCRDescriptorException {
- final ComponentDescription componentDesc = desc.getDescriptions(ComponentDescription.class).get(0);
+ final ComponentDescription componentDesc = desc.getDescription(ComponentDescription.class);
final Component comp = new Component(desc, desc.getSource(), componentDesc.getAnnotation().getName());
comp.setAbstract(componentDesc.isAbstract());
@@ -347,6 +354,45 @@ public class SCRDescriptorGenerator {
final Implementation impl = new Implementation(desc.getDescribedClass().getName());
comp.setImplementation(impl);
+ this.processServices(desc, comp);
+ this.processProperties(desc, comp);
+ this.processReferences(desc, comp);
+
return comp;
}
+
+ /**
+ * Process service directives
+ */
+ private void processServices(final ClassDescription desc, final Component component) {
+ final ServiceDescription serviceDesc = desc.getDescription(ServiceDescription.class);
+ if ( serviceDesc != null ) {
+ final Service service = new Service();
+ service.setServiceFactory(serviceDesc.isServiceFactory());
+ for(final String className : serviceDesc.getInterfaces()) {
+ final Interface interf = new Interface();
+ interf.setInterfaceName(className);
+ service.addInterface(interf);
+ }
+ component.setService(service);
+ }
+ }
+
+ /**
+ * Process property directives
+ */
+ private void processProperties(final ClassDescription desc, final Component component) {
+ for(final PropertyDescription pd : desc.getDescriptions(PropertyDescription.class)) {
+
+ }
+ }
+
+ /**
+ * Process reference directives
+ */
+ private void processReferences(final ClassDescription desc, final Component component) {
+ for(final ReferenceDescription rd : desc.getDescriptions(ReferenceDescription.class)) {
+
+ }
+ }
}
Modified: felix/sandbox/cziegeler/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/description/ClassDescription.java
URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/description/ClassDescription.java?rev=1341602&r1=1341601&r2=1341602&view=diff
==============================================================================
--- felix/sandbox/cziegeler/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/description/ClassDescription.java (original)
+++ felix/sandbox/cziegeler/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/description/ClassDescription.java Tue May 22 19:48:22 2012
@@ -60,10 +60,18 @@ public class ClassDescription {
return result;
}
+ public <T extends AbstractDescription> T getDescription(final Class<T> descType) {
+ final List<T> result = this.getDescriptions(descType);
+ if ( result.size() > 0 ) {
+ return result.get(0);
+ }
+ return null;
+ }
+
@Override
public String toString() {
return "ClassDescription [descriptions=" + descriptions
- + ", describedClass=" + describedClass + ", source=" + source
- + "]";
+ + ", describedClass=" + describedClass + ", source=" + source
+ + "]";
}
}
\ No newline at end of file