Author: jboynes
Date: Wed May 3 16:58:37 2006
New Revision: 399491
URL: http://svn.apache.org/viewcvs?rev=399491&view=rev
Log:
refactor property value setting
Added:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidReferenceException.java
(with props)
Modified:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/AssemblyConstants.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXPropertyFactory.java
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireFactory.java
Modified:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/AssemblyConstants.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/AssemblyConstants.java?rev=399491&r1=399490&r2=399491&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/AssemblyConstants.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/AssemblyConstants.java
Wed May 3 16:58:37 2006
@@ -27,17 +27,11 @@
public static final QName COMPONENT = new QName(SCA_NAMESPACE,
"component");
public static final QName COMPONENT_TYPE = new QName(SCA_NAMESPACE,
"componentType");
public static final QName COMPOSITE = new QName(SCA_NAMESPACE,
"composite");
- public static final QName ENTRY_POINT = new QName(SCA_NAMESPACE,
"entryPoint");
- public static final QName EXTERNAL_SERVICE = new QName(SCA_NAMESPACE,
"externalService");
public static final QName IMPORT_WSDL = new QName(SCA_NAMESPACE,
"import.wsdl");
public static final QName INTERFACE_JAVA = new QName(SCA_NAMESPACE,
"interface.java");
public static final QName INTERFACE_WSDL = new QName(SCA_NAMESPACE,
"interface.wsdl");
- public static final QName MODULE = new QName(SCA_NAMESPACE, "module");
- public static final QName MODULE_FRAGMENT = new QName(SCA_NAMESPACE,
"moduleFragment");
public static final QName PROPERTY = new QName(SCA_NAMESPACE, "property");
- public static final QName PROPERTIES = new QName(SCA_NAMESPACE,
"properties");
public static final QName REFERENCE = new QName(SCA_NAMESPACE,
"reference");
- public static final QName REFERENCES = new QName(SCA_NAMESPACE,
"references");
public static final QName SERVICE = new QName(SCA_NAMESPACE, "service");
public static final QName WIRE = new QName(SCA_NAMESPACE, "wire");
Modified:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java?rev=399491&r1=399490&r2=399491&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
Wed May 3 16:58:37 2006
@@ -16,16 +16,24 @@
*/
package org.apache.tuscany.core.loader;
+import java.net.URI;
+import java.net.URISyntaxException;
import javax.xml.namespace.QName;
import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import org.apache.tuscany.common.ObjectFactory;
import org.apache.tuscany.model.Component;
+import org.apache.tuscany.model.ComponentType;
import org.apache.tuscany.model.Implementation;
import org.apache.tuscany.model.ModelObject;
+import org.apache.tuscany.model.Property;
+import org.apache.tuscany.model.PropertyValue;
+import org.apache.tuscany.model.ReferenceTarget;
import org.apache.tuscany.spi.annotation.Autowire;
+import org.apache.tuscany.spi.loader.InvalidReferenceException;
import org.apache.tuscany.spi.loader.LoaderContext;
import org.apache.tuscany.spi.loader.LoaderException;
import org.apache.tuscany.spi.loader.LoaderSupport;
@@ -38,10 +46,10 @@
*/
@Scope("MODULE")
public class ComponentLoader extends LoaderSupport {
- private StAXPropertyFactory<?> defaultPropertyFactory;
+ private StAXPropertyFactory defaultPropertyFactory;
@Autowire
- public void setDefaultPropertyFactory(StAXPropertyFactory<?>
defaultPropertyFactory) {
+ public void setDefaultPropertyFactory(StAXPropertyFactory
defaultPropertyFactory) {
this.defaultPropertyFactory = defaultPropertyFactory;
}
@@ -67,13 +75,11 @@
switch (reader.next()) {
case START_ELEMENT:
QName qname = reader.getName();
-/*
- if (AssemblyConstants.PROPERTIES.equals(qname)) {
- loadProperties(reader, loaderContext.getResourceLoader(),
component);
- } else if (AssemblyConstants.REFERENCES.equals(qname)) {
- loadReferences(reader, component);
+ if (AssemblyConstants.PROPERTY.equals(qname)) {
+ loadProperty(reader, loaderContext, component);
+ } else if (AssemblyConstants.REFERENCE.equals(qname)) {
+ loadReference(reader, loaderContext, component);
}
-*/
reader.next();
break;
case END_ELEMENT:
@@ -82,49 +88,33 @@
}
}
-/*
- protected void loadProperties(XMLStreamReader reader, ResourceLoader
resourceLoader, Component<?> component) throws XMLStreamException,
ConfigurationLoadException {
- ComponentInfo componentType =
component.getImplementation().getComponentInfo();
- List<ConfiguredProperty> configuredProperties =
component.getConfiguredProperties();
+ protected <T> void loadProperty(XMLStreamReader reader, LoaderContext
loaderContext, Component<?> component) throws XMLStreamException,
LoaderException {
+ String name = reader.getAttributeValue(null, "name");
+ Implementation<?> implementation = component.getImplementation();
+ ComponentType componentType = implementation.getComponentType();
+ Property<T> property = (Property<T>)
componentType.getProperties().get(name);
+ // todo allow property to specify the factory to use
+ ObjectFactory<T> factory =
defaultPropertyFactory.createObjectFactory(reader, property);
+ PropertyValue<T> value = new PropertyValue<T>();
+ value.setName(name);
+ value.setValueFactory(factory);
+ component.add(value);
+ }
- while (true) {
- switch (reader.next()) {
- case START_ELEMENT:
- String name = reader.getLocalName();
- Property property = componentType.getProperty(name);
- if (property == null) {
- throw new ConfigurationLoadException(name);
- }
- OverrideOption override =
StAXUtil.overrideOption(reader.getAttributeValue(null, "override"),
OverrideOption.NO);
-
- // get a factory for the property
- StAXPropertyFactory<?> propertyFactory;
- String factoryName = reader.getAttributeValue(null, "factory");
- if (factoryName == null) {
- propertyFactory = defaultPropertyFactory;
- } else {
- propertyFactory = getPropertyFactory(factoryName,
resourceLoader);
- }
-
- // create the property value
- // FIXME to support complex types we probably should store the
factory in the ConfiguredProperty
- // FIXME instead of the value as the value may be mutable and
should not be shared between instances
- ObjectFactory<?> objectFactory =
propertyFactory.createObjectFactory(reader, property);
- Object value = objectFactory.getInstance();
-
- // create the configured property definition
- ConfiguredProperty configuredProperty =
factory.createConfiguredProperty();
- configuredProperty.setName(name);
- configuredProperty.setValueFactory(value);
- configuredProperty.setOverrideOption(override);
- configuredProperties.add(configuredProperty);
- break;
- case END_ELEMENT:
- return;
- }
+ protected void loadReference(XMLStreamReader reader, LoaderContext
loaderContext, Component<?> component) throws XMLStreamException,
LoaderException {
+ String name = reader.getAttributeValue(null, "name");
+ String target = reader.getAttributeValue(null, "target");
+ ReferenceTarget referenceTarget = new ReferenceTarget();
+ referenceTarget.setReferenceName(name);
+ try {
+ referenceTarget.setTarget(new URI(target));
+ } catch (URISyntaxException e) {
+ InvalidReferenceException le = new InvalidReferenceException(e);
+ le.setIdentifier(target);
+ throw le;
}
+ component.add(referenceTarget);
}
-*/
/*
protected StAXPropertyFactory<?> getPropertyFactory(String factoryName,
ResourceLoader resourceLoader) throws InvalidPropertyFactoryException {
@@ -148,31 +138,6 @@
throw new InvalidPropertyFactoryException(factoryName, e);
} catch (ClassCastException e) {
throw new InvalidPropertyFactoryException(factoryName, e);
- }
- }
-*/
-
-/*
- protected void loadReferences(XMLStreamReader reader, Component<?>
component) throws XMLStreamException {
- List<ConfiguredReference> configuredReferences =
component.getConfiguredReferences();
- while (true) {
- switch (reader.next()) {
- case START_ELEMENT:
- String name = reader.getLocalName();
- String uri = reader.getElementText();
-
- ConfiguredReference configuredReference =
component.getConfiguredReference(name);
- if (configuredReference == null) {
- configuredReference = factory.createConfiguredReference();
- configuredReference.setName(name);
- configuredReferences.add(configuredReference);
- }
-
- configuredReference.getTargets().add(uri);
- break;
- case END_ELEMENT:
- return;
- }
}
}
*/
Modified:
incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java?rev=399491&r1=399490&r2=399491&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java
Wed May 3 16:58:37 2006
@@ -51,4 +51,12 @@
public Map<String, PropertyValue<?>> getPropertyValues() {
return propertyValues;
}
+
+ public void add(PropertyValue<?> value) {
+ propertyValues.put(value.getName(), value);
+ }
+
+ public void add(ReferenceTarget target) {
+ referenceTargets.put(target.getReferenceName(), target);
+ }
}
Added:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidReferenceException.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidReferenceException.java?rev=399491&view=auto
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidReferenceException.java
(added)
+++
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidReferenceException.java
Wed May 3 16:58:37 2006
@@ -0,0 +1,39 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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.tuscany.spi.loader;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class InvalidReferenceException extends LoaderException {
+ private static final long serialVersionUID = -4346666572527197558L;
+
+ public InvalidReferenceException() {
+ }
+
+ public InvalidReferenceException(String message) {
+ super(message);
+ }
+
+ public InvalidReferenceException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public InvalidReferenceException(Throwable cause) {
+ super(cause);
+ }
+}
Propchange:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidReferenceException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidReferenceException.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Modified:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXPropertyFactory.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXPropertyFactory.java?rev=399491&r1=399490&r2=399491&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXPropertyFactory.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXPropertyFactory.java
Wed May 3 16:58:37 2006
@@ -27,7 +27,7 @@
*
* @version $Rev$ $Date$
*/
-public interface StAXPropertyFactory<T> {
+public interface StAXPropertyFactory {
/**
* Return an ObjectFactory for instances of a property defined in an XML
stream.
*
@@ -37,5 +37,5 @@
* @throws javax.xml.stream.XMLStreamException if there is a problem
reading the stream
* @throws LoaderException if there is a problem creating the ObjectFactory
*/
- ObjectFactory<T> createObjectFactory(XMLStreamReader reader, Property
property) throws XMLStreamException, LoaderException;
+ <T> ObjectFactory<T> createObjectFactory(XMLStreamReader reader,
Property<T> property) throws XMLStreamException, LoaderException;
}
Modified:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireFactory.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireFactory.java?rev=399491&r1=399490&r2=399491&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireFactory.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireFactory.java
Wed May 3 16:58:37 2006
@@ -30,7 +30,7 @@
* <p/>
* Unmanaged code, i.e. clients that are not components, that perform a locate
operation are handled differently. In this case, a
* target-side proxy will be returned by the locate operation created by the
<code>WireFactory</code> associated with the target
- * service. This target-side proxy will only contain the target-side wire and
its handlers/interceptors.Ê
+ * service. This target-side proxy will only contain the target-side wire and
its handlers/interceptors.
* <p/>
* Wires are structured by operation; that is, they contain an invocation
chain per operation on a service. Note that the service
* specified by a reference may differ in type from the target service
specified by the wire. In this case, a mediation may be