You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2009/06/17 22:54:47 UTC
svn commit: r785793 - in
/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container:
BlueprintContainerImpl.java Parser.java
Author: gawor
Date: Wed Jun 17 20:54:47 2009
New Revision: 785793
URL: http://svn.apache.org/viewvc?rev=785793&view=rev
Log:
parse compliance attribute
Modified:
geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java
geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/Parser.java
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java?rev=785793&r1=785792&r2=785793&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java Wed Jun 17 20:54:47 2009
@@ -118,6 +118,7 @@
private long timeout = 5 * 60 * 1000;
private boolean waitForDependencies = true;
private boolean xmlValidation = true;
+ private int compliance = COMPLIANCE_STRICT;
private ScheduledFuture timeoutFuture;
private final AtomicBoolean scheduled = new AtomicBoolean();
private final AtomicBoolean running = new AtomicBoolean();
@@ -136,8 +137,7 @@
}
public int getCompliance() {
- // TODO
- return COMPLIANCE_STRICT;
+ return compliance;
}
public Bundle getExtenderBundle() {
@@ -244,6 +244,7 @@
return;
}
parser.populate(handlers, componentDefinitionRegistry);
+ compliance = parser.getCompliance();
state = State.Populated;
break;
}
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/Parser.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/Parser.java?rev=785793&r1=785792&r2=785793&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/Parser.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/Parser.java Wed Jun 17 20:54:47 2009
@@ -68,6 +68,7 @@
import org.apache.geronimo.blueprint.reflect.ServiceMetadataImpl;
import org.apache.geronimo.blueprint.reflect.ServiceReferenceMetadataImpl;
import org.apache.geronimo.blueprint.reflect.ValueMetadataImpl;
+import org.osgi.service.blueprint.container.BlueprintContainer;
import org.osgi.service.blueprint.container.ComponentDefinitionException;
import org.osgi.service.blueprint.reflect.BeanArgument;
import org.osgi.service.blueprint.reflect.BeanMetadata;
@@ -97,8 +98,6 @@
/**
* TODO: javadoc
*
- * TODO: parse compliance attribute on <blueprint>
- *
* @author <a href="mailto:dev@geronimo.apache.org">Apache Geronimo Project</a>
* @version $Rev: 760378 $, $Date: 2009-03-31 11:31:38 +0200 (Tue, 31 Mar 2009) $
*/
@@ -187,6 +186,10 @@
public static final String INITIALIZATION_EAGER = "eager";
public static final String INITIALIZATION_LAZY = "lazy";
public static final String INITIALIZATION_DEFAULT = INITIALIZATION_EAGER;
+
+ public static final String COMPLIANCE_ATTRIBUTE = "compliance";
+ public static final String COMPLIANCE_STRICT = "strict";
+ public static final String COMPLIANCE_LOOSE = "loose";
private static final Logger LOGGER = LoggerFactory.getLogger(Parser.class);
@@ -202,6 +205,7 @@
private String defaultTimeout;
private String defaultAvailability;
private String defaultInitialization;
+ private int compliance = BlueprintContainer.COMPLIANCE_STRICT;
private Set<URI> namespaces;
private boolean validation;
private boolean validated;
@@ -235,6 +239,17 @@
this.documents = documents;
}
+ public int getCompliance() {
+ return this.compliance;
+ }
+
+ private void setCompliance(int compliance) {
+ // If one config specifies loose compliance, we stick with it
+ if (this.compliance != BlueprintContainer.COMPLIANCE_LOOSE) {
+ this.compliance = compliance;
+ }
+ }
+
public Set<URI> getNamespaces() {
if (this.namespaces == null) {
if (documents == null) {
@@ -333,7 +348,18 @@
if (root.hasAttribute(DEFAULT_AVAILABILITY_ATTRIBUTE)) {
defaultAvailability = root.getAttribute(DEFAULT_AVAILABILITY_ATTRIBUTE);
}
-
+
+ if (root.hasAttribute(COMPLIANCE_ATTRIBUTE)) {
+ String attribute = root.getAttribute(COMPLIANCE_ATTRIBUTE);
+ if (COMPLIANCE_STRICT.equals(attribute)) {
+ setCompliance(BlueprintContainer.COMPLIANCE_STRICT);
+ } else if (COMPLIANCE_LOOSE.equals(attribute)) {
+ setCompliance(BlueprintContainer.COMPLIANCE_LOOSE);
+ } else {
+ throw new ComponentDefinitionException("Attribute " + COMPLIANCE_ATTRIBUTE + " must be equal to " + COMPLIANCE_STRICT + " or " + COMPLIANCE_LOOSE);
+ }
+ }
+
/*
TODO: uncomment this part as the <blueprint/> element can have custom attributes
// Parse custom attributes
@@ -462,14 +488,7 @@
} else {
metadata.setScope(BeanMetadata.SCOPE_SINGLETON);
}
- String initialization = element.hasAttribute(INITIALIZATION_ATTRIBUTE) ? element.getAttribute(INITIALIZATION_ATTRIBUTE) : defaultInitialization;
- if (INITIALIZATION_EAGER.equals(initialization)) {
- metadata.setInitialization(ComponentMetadata.INITIALIZATION_EAGER);
- } else if (INITIALIZATION_LAZY.equals(initialization)) {
- metadata.setInitialization(ComponentMetadata.INITIALIZATION_LAZY);
- } else {
- throw new ComponentDefinitionException("Attribute " + INITIALIZATION_ATTRIBUTE + " must be equals to " + INITIALIZATION_EAGER + " or " + INITIALIZATION_LAZY);
- }
+ metadata.setInitialization(parseInitialization(element));
} else {
metadata.setScope(BeanMetadata.SCOPE_PROTOTYPE);
metadata.setInitialization(ComponentMetadata.INITIALIZATION_LAZY);
@@ -549,14 +568,7 @@
boolean hasInterfaceNameAttribute = false;
if (topElement) {
service.setId(getId(element));
- String initialization = element.hasAttribute(INITIALIZATION_ATTRIBUTE) ? element.getAttribute(INITIALIZATION_ATTRIBUTE) : defaultInitialization;
- if (INITIALIZATION_EAGER.equals(initialization)) {
- service.setInitialization(ComponentMetadata.INITIALIZATION_EAGER);
- } else if (INITIALIZATION_LAZY.equals(initialization)) {
- service.setInitialization(ComponentMetadata.INITIALIZATION_LAZY);
- } else {
- throw new ComponentDefinitionException("Attribute " + INITIALIZATION_ATTRIBUTE + " must be equals to " + INITIALIZATION_EAGER + " or " + INITIALIZATION_LAZY);
- }
+ service.setInitialization(parseInitialization(element));
} else {
service.setInitialization(ComponentMetadata.INITIALIZATION_LAZY);
}
@@ -908,14 +920,7 @@
private void parseReference(Element element, ServiceReferenceMetadataImpl reference, boolean topElement) {
// Parse attributes
if (topElement) {
- String initialization = element.hasAttribute(INITIALIZATION_ATTRIBUTE) ? element.getAttribute(INITIALIZATION_ATTRIBUTE) : defaultInitialization;
- if (INITIALIZATION_EAGER.equals(initialization)) {
- reference.setInitialization(ComponentMetadata.INITIALIZATION_EAGER);
- } else if (INITIALIZATION_LAZY.equals(initialization)) {
- reference.setInitialization(ComponentMetadata.INITIALIZATION_LAZY);
- } else {
- throw new ComponentDefinitionException("Attribute " + INITIALIZATION_ATTRIBUTE + " must be equals to " + INITIALIZATION_EAGER + " or " + INITIALIZATION_LAZY);
- }
+ reference.setInitialization(parseInitialization(element));
} else {
reference.setInitialization(ComponentMetadata.INITIALIZATION_LAZY);
}
@@ -1124,6 +1129,17 @@
return new IdRefMetadataImpl(component);
}
+ private int parseInitialization(Element element) {
+ String initialization = element.hasAttribute(INITIALIZATION_ATTRIBUTE) ? element.getAttribute(INITIALIZATION_ATTRIBUTE) : defaultInitialization;
+ if (INITIALIZATION_EAGER.equals(initialization)) {
+ return ComponentMetadata.INITIALIZATION_EAGER;
+ } else if (INITIALIZATION_LAZY.equals(initialization)) {
+ return ComponentMetadata.INITIALIZATION_LAZY;
+ } else {
+ throw new ComponentDefinitionException("Attribute " + INITIALIZATION_ATTRIBUTE + " must be equal to " + INITIALIZATION_EAGER + " or " + INITIALIZATION_LAZY);
+ }
+ }
+
private ComponentMetadata handleCustomAttributes(NamedNodeMap attributes, ComponentMetadata enclosingComponent) {
if (attributes != null) {
for (int i = 0; i < attributes.getLength(); i++) {