You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cl...@apache.org on 2008/04/30 00:30:56 UTC
svn commit: r652175 - in /felix/trunk/ipojo:
annotations/src/main/java/org/apache/felix/ipojo/annotations/
core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/
core/src/main/java/org/apache/felix/ipojo/util/
manipulator/src/main/java/org...
Author: clement
Date: Tue Apr 29 15:30:56 2008
New Revision: 652175
URL: http://svn.apache.org/viewvc?rev=652175&view=rev
Log:
Update annotations to add latest added feature on dependency management
Modified:
felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Bind.java
felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Requires.java
felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Unbind.java
felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java
felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/util/DependencyModel.java
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/annotations/FieldCollector.java
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/annotations/MethodCollector.java
Modified: felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Bind.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Bind.java?rev=652175&r1=652174&r2=652175&view=diff
==============================================================================
--- felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Bind.java (original)
+++ felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Bind.java Tue Apr 29 15:30:56 2008
@@ -20,6 +20,7 @@
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
+import java.util.Comparator;
/**
* This annotation declares a bind method.
@@ -64,5 +65,11 @@
* Default: dynamic.
*/
String policy() default "dynamic";
+
+ /**
+ * Set the comparator.
+ * The indicated class must implement {@link Comparator}
+ */
+ Class comparator() default Comparator.class;
}
Modified: felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Requires.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Requires.java?rev=652175&r1=652174&r2=652175&view=diff
==============================================================================
--- felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Requires.java (original)
+++ felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Requires.java Tue Apr 29 15:30:56 2008
@@ -20,6 +20,7 @@
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
+import java.util.Comparator;
/**
* This annotation declares a service requirement.
@@ -55,9 +56,10 @@
/**
* Set the default-implementation to use if the dependency is optional,
* and no providers are available.
+ * The class must implement the required service interface.
* Default : no default-implementation
*/
- String defaultimplementation() default "";
+ Class defaultimplementation() default Class.class;
/**
* Set the binding policy.
@@ -65,4 +67,10 @@
* Default: dynamic.
*/
String policy() default "dynamic";
+
+ /**
+ * Set the comparator.
+ * The indicated class must implement {@link Comparator}
+ */
+ Class comparator() default Comparator.class;
}
Modified: felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Unbind.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Unbind.java?rev=652175&r1=652174&r2=652175&view=diff
==============================================================================
--- felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Unbind.java (original)
+++ felix/trunk/ipojo/annotations/src/main/java/org/apache/felix/ipojo/annotations/Unbind.java Tue Apr 29 15:30:56 2008
@@ -20,6 +20,7 @@
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
+import java.util.Comparator;
/**
* This annotation declares an unbind method.
@@ -65,5 +66,11 @@
* Default: dynamic.
*/
String policy() default "dynamic";
+
+ /**
+ * Set the comparator.
+ * The indicated class must implement {@link Comparator}
+ */
+ Class comparator() default Comparator.class;
}
Modified: felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java?rev=652175&r1=652174&r2=652175&view=diff
==============================================================================
--- felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java (original)
+++ felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java Tue Apr 29 15:30:56 2008
@@ -557,7 +557,7 @@
// Check type if not already set
if (type == null) {
if (field == null) {
- throw new ConfigurationException("The property " + name + " has neither type neither field.");
+ throw new ConfigurationException("The property " + name + " has neither type nor field.");
}
FieldMetadata fieldMeta = manipulation.getField(field);
if (fieldMeta == null) {
Modified: felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/util/DependencyModel.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/util/DependencyModel.java?rev=652175&r1=652174&r2=652175&view=diff
==============================================================================
--- felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/util/DependencyModel.java (original)
+++ felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/util/DependencyModel.java Tue Apr 29 15:30:56 2008
@@ -32,7 +32,7 @@
/**
* Abstract dependency model. This class is the parent class of every service dependency. It manages the most part of dependency management. This
- * class creates an insterface between the service tracker and the concrete dependency.
+ * class creates an interface between the service tracker and the concrete dependency.
* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
public abstract class DependencyModel implements TrackerCustomizer {
Modified: felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/annotations/FieldCollector.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/annotations/FieldCollector.java?rev=652175&r1=652174&r2=652175&view=diff
==============================================================================
--- felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/annotations/FieldCollector.java (original)
+++ felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/annotations/FieldCollector.java Tue Apr 29 15:30:56 2008
@@ -22,6 +22,7 @@
import org.apache.felix.ipojo.metadata.Element;
import org.objectweb.asm.AnnotationVisitor;
import org.objectweb.asm.FieldVisitor;
+import org.objectweb.asm.Type;
import org.objectweb.asm.commons.EmptyVisitor;
/**
@@ -151,6 +152,11 @@
private String m_nullable;
/**
+ * Comparator.
+ */
+ private String m_comparator;
+
+ /**
* Constructor.
* @param name : field name.
*/
@@ -182,7 +188,8 @@
return;
}
if (arg0.equals("defaultimplementation")) {
- m_defaultImplementation = arg1.toString();
+ Type type = Type.getType(arg1.toString());
+ m_defaultImplementation = type.getClassName();
return;
}
if (arg0.equals("specification")) {
@@ -193,6 +200,11 @@
m_id = arg1.toString();
return;
}
+ if (arg0.equals("comparator")) {
+ Type type = Type.getType(arg1.toString());
+ m_comparator = type.getClassName();
+ return;
+ }
}
/**
@@ -237,6 +249,9 @@
if (m_id != null) {
req.addAttribute(new Attribute("id", m_id));
}
+ if (m_comparator != null) {
+ req.addAttribute(new Attribute("comparator", m_comparator));
+ }
if (m_id != null) {
m_collector.getIds().put(m_id, req);
Modified: felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/annotations/MethodCollector.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/annotations/MethodCollector.java?rev=652175&r1=652174&r2=652175&view=diff
==============================================================================
--- felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/annotations/MethodCollector.java (original)
+++ felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/annotations/MethodCollector.java Tue Apr 29 15:30:56 2008
@@ -21,6 +21,7 @@
import org.apache.felix.ipojo.metadata.Attribute;
import org.apache.felix.ipojo.metadata.Element;
import org.objectweb.asm.AnnotationVisitor;
+import org.objectweb.asm.Type;
import org.objectweb.asm.commons.EmptyVisitor;
/**
@@ -192,6 +193,11 @@
* Binding policy.
*/
private String m_policy;
+
+ /**
+ * Comparator.
+ */
+ private String m_comparator;
/**
* Constructor.
@@ -234,6 +240,12 @@
m_id = arg1.toString();
return;
}
+ if (arg0.equals("comparator")) {
+ Type type = Type.getType(arg1.toString());
+ m_comparator = type.getClassName();
+ return;
+ }
+
}
/**
@@ -275,6 +287,71 @@
if (m_id != null) {
req.addAttribute(new Attribute("id", m_id));
}
+ if (m_comparator != null) {
+ req.addAttribute(new Attribute("comparator", m_comparator));
+ }
+ } else {
+ String itf = req.getAttribute("interface");
+ String aggregate = req.getAttribute("aggregate");
+ String optional = req.getAttribute("optional");
+ String filter = req.getAttribute("filter");
+ String policy = req.getAttribute("policy");
+ String comparator = req.getAttribute("comparator");
+
+ if (m_specification != null) {
+ if (itf == null) {
+ req.addAttribute(new Attribute("interface", m_specification));
+ } else if (! m_specification.equals(itf)) {
+ System.err.println("The required specification is not the same than previouly : " + m_specification + " & " + itf);
+ return;
+ }
+ }
+
+ if (m_optional != null) {
+ if (optional == null) {
+ req.addAttribute(new Attribute("optional", m_optional));
+ } else if (! m_optional.equals(optional)) {
+ System.err.println("The optional attribute is not always the same");
+ return;
+ }
+ }
+
+ if (m_aggregate != null) {
+ if (aggregate == null) {
+ req.addAttribute(new Attribute("aggregate", m_aggregate));
+ } else if (! m_aggregate.equals(aggregate)) {
+ System.err.println("The aggregate attribute is not always the same");
+ return;
+ }
+ }
+
+ if (m_filter != null) {
+ if (filter == null) {
+ req.addAttribute(new Attribute("filter", m_filter));
+ } else if (! m_filter.equals(filter)) {
+ System.err.println("The filter attribute is not always the same");
+ return;
+ }
+ }
+
+ if (m_policy != null) {
+ if (policy == null) {
+ req.addAttribute(new Attribute("policy", m_policy));
+ } else if (! m_policy.equals(policy)) {
+ System.err.println("The policy attribute is not always the same");
+ return;
+ }
+ }
+
+ if (m_comparator != null) {
+ if (comparator == null) {
+ req.addAttribute(new Attribute("comparator", m_comparator));
+ } else if (! m_comparator.equals(policy)) {
+ System.err.println("The comparator attribute is not always the same");
+ return;
+ }
+ }
+
}
Element method = new Element("callback", "");
method.addAttribute(new Attribute("method", m_name));