You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/06/28 16:17:41 UTC
svn commit: r551568 -
/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/DefaultBeanModelProcessor.java
Author: jsdelfino
Date: Thu Jun 28 07:17:40 2007
New Revision: 551568
URL: http://svn.apache.org/viewvc?view=rev&rev=551568
Log:
Added resolution of component type to the default bean processor, similar to what's done in the POJO2 extension sample.
Modified:
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/DefaultBeanModelProcessor.java
Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/DefaultBeanModelProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/DefaultBeanModelProcessor.java?view=diff&rev=551568&r1=551567&r2=551568
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/DefaultBeanModelProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/DefaultBeanModelProcessor.java Thu Jun 28 07:17:40 2007
@@ -33,6 +33,8 @@
import javax.xml.stream.XMLStreamWriter;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Base;
+import org.apache.tuscany.sca.assembly.ComponentType;
import org.apache.tuscany.sca.assembly.Implementation;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
@@ -65,6 +67,9 @@
// Index the bean's property descriptors
PropertyDescriptor[] pd = beanInfo.getPropertyDescriptors();
for (int i =0; i < pd.length; i++) {
+ if (pd[i].getWriteMethod() == null) {
+ continue;
+ }
// Map an uppercase property name to a lowercase attribute name
String name = pd[i].getName();
@@ -110,6 +115,11 @@
// TODO read extension elements
+ // By default mark the model object unresolved
+ if (bean instanceof Base) {
+ ((Base)bean).setUnresolved(true);
+ }
+
// Skip to end element
while (reader.hasNext()) {
if (reader.next() == END_ELEMENT && artifactType.equals(reader.getName())) {
@@ -144,6 +154,45 @@
}
public void resolve(Object bean, ModelResolver resolver) throws ContributionResolveException {
+
+ // Resolve and merge the component type associated with an
+ // implementation model
+ if (bean instanceof Implementation) {
+ Implementation implementation = (Implementation)bean;
+ String uri = implementation.getURI();
+ if (uri != null) {
+ int d = uri.lastIndexOf('.');
+ if (d != -1) {
+ uri = uri.substring(0, d) + ".componentType";
+
+ // Resolve the component type
+ ComponentType componentType = assemblyFactory.createComponentType();
+ componentType.setURI(uri);
+ componentType.setUnresolved(true);
+
+ componentType = resolver.resolveModel(ComponentType.class, componentType);
+ if (componentType != null && !componentType.isUnresolved()) {
+
+ // We found a component type, merge it into the implementation model
+ implementation.getServices().addAll(componentType.getServices());
+ implementation.getReferences().addAll(componentType.getReferences());
+ implementation.getProperties().addAll(componentType.getProperties());
+ implementation.setConstrainingType(componentType.getConstrainingType());
+ if (implementation.getPolicySets() != null) {
+ implementation.getPolicySets().addAll(componentType.getPolicySets());
+ }
+ if (implementation.getRequiredIntents() != null) {
+ implementation.getRequiredIntents().addAll(componentType.getRequiredIntents());
+ }
+ }
+ }
+ }
+ }
+
+ // Mark the model resolved
+ if (bean instanceof Base) {
+ ((Base)bean).setUnresolved(false);
+ }
}
public QName getArtifactType() {
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org