On Thu, Jun 11, 2009 at 12:46 AM, <[email protected]> wrote:
> Author: rfeng
> Date: Wed Jun 10 23:46:07 2009
> New Revision: 783575
>
> URL: http://svn.apache.org/viewvc?rev=783575&view=rev
> Log:
> Fix the class type for DefaultBeanModelProcessor
>
> Modified:
>    
> tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/DefaultBeanModelProcessor.java
>
> Modified: 
> tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/DefaultBeanModelProcessor.java
> URL: 
> http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/DefaultBeanModelProcessor.java?rev=783575&r1=783574&r2=783575&view=diff
> ==============================================================================
> --- 
> tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/DefaultBeanModelProcessor.java
>  (original)
> +++ 
> tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/DefaultBeanModelProcessor.java
>  Wed Jun 10 23:46:07 2009
> @@ -6,15 +6,15 @@
>  * to you 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.
> + * under the License.
>  */
>
>  package org.apache.tuscany.sca.assembly.xml;
> @@ -49,10 +49,10 @@
>  *
>  * @version $Rev$ $Date$
>  */
> -public class DefaultBeanModelProcessor extends BaseAssemblyProcessor 
> implements StAXArtifactProcessor {
> +public class DefaultBeanModelProcessor<T> extends BaseAssemblyProcessor 
> implements StAXArtifactProcessor<T> {
>
>     private QName artifactType;
> -    private Class<Implementation> modelClass;
> +    private Class<T> modelClass;
>     private Object modelFactory;
>     private Method factoryMethod;
>     private Map<String, Method> setterMethods = new HashMap<String, Method>();
> @@ -60,17 +60,17 @@
>
>     public DefaultBeanModelProcessor(FactoryExtensionPoint modeFactories,
>                                      QName artifactType,
> -                                     Class<Implementation> modelClass,
> +                                     Class<T> modelClass,
>                                      Object modelFactory,
>                                      Monitor monitor) {
>         super(modeFactories, null, monitor);
>         this.artifactType = artifactType;
>         this.modelClass = modelClass;
>         this.modelFactory = modelFactory;
> -
> +
>         // Introspect the factory class and bean model class
>         if (modelFactory != null) {
> -
> +
>             // Find the model create method
>             for (Method method: modelFactory.getClass().getMethods()) {
>                 if (method.getName().startsWith("create") && 
> method.getReturnType() == modelClass) {
> @@ -79,13 +79,13 @@
>                 }
>             }
>         }
> -
> +
>         // Index the bean's setter methods
>         for (Method method: modelClass.getMethods()) {
>             Method getter;
>             String name = method.getName();
>             if (name.startsWith("set") && name.length() > 3) {
> -
> +
>                 // Get the corresponding getter method
>                 try {
>                     getter = modelClass.getMethod("get" + name.substring(3));
> @@ -93,7 +93,7 @@
>                     getter = null;
>                     continue;
>                 }
> -
> +
>                 // Get the property name
>                 name = name.substring(3);
>                 if (name.length() > 1) {
> @@ -104,12 +104,12 @@
>             } else {
>                 continue;
>             }
> -
> -            // Map an uppercase property name to a lowercase attribute name
> +
> +            // Map an uppercase property name to a lowercase attribute name
>             if (name.toUpperCase().equals(name)) {
>                 name = name.toLowerCase();
>             }
> -
> +
>             // Trim trailing _ from property names
>             if (name.endsWith("_")) {
>                 name = name.substring(0, name.length()-1);
> @@ -119,11 +119,11 @@
>         }
>     }
>
> -    public Object read(XMLStreamReader reader) throws 
> ContributionReadException, XMLStreamException {
> +    public T read(XMLStreamReader reader) throws ContributionReadException, 
> XMLStreamException {
>
>         // Read an element
>         try {
> -
> +
>             // Create a new instance of the model
>             Object model;
>             if (modelFactory != null) {
> @@ -149,19 +149,19 @@
>             policyProcessor.readPolicies(model, reader);
>
>             // FIXME read extension elements
> -
> +
>             // By default mark the model object unresolved
>             if (model instanceof Base) {
>                 ((Base)model).setUnresolved(true);
>             }
> -
> +
>             // Skip to end element
>             while (reader.hasNext()) {
>                 if (reader.next() == END_ELEMENT && 
> artifactType.equals(reader.getName())) {
>                     break;
>                 }
>             }
> -            return model;
> +            return (T) model;
>
>         } catch (Exception e) {
>                ContributionReadException ce = new 
> ContributionReadException(e);
> @@ -170,7 +170,7 @@
>         }
>     }
>
> -    public void write(Object bean, XMLStreamWriter writer) throws 
> ContributionWriteException, XMLStreamException {
> +    public void write(T bean, XMLStreamWriter writer) throws 
> ContributionWriteException, XMLStreamException {
>         try {
>             // Write the bean properties as attributes
>             List<XAttr> attrs = new ArrayList<XAttr>();
> @@ -180,7 +180,7 @@
>                     attrs.add(new XAttr(entry.getKey(), value));
>                 }
>             }
> -
> +
>             // Write element
>             writeStart(writer, artifactType.getNamespaceURI(), 
> artifactType.getLocalPart(),
>                        policyProcessor.writePolicies(bean), new XAttr(null, 
> attrs));
> @@ -194,8 +194,8 @@
>         }
>     }
>
> -    public void resolve(Object bean, ModelResolver resolver) throws 
> ContributionResolveException {
> -
> +    public void resolve(T bean, ModelResolver resolver) throws 
> ContributionResolveException {
> +
>         // Resolve and merge the component type associated with an
>         // implementation model
>         if (bean instanceof Implementation) {
> @@ -205,26 +205,26 @@
>                 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 instanceof PolicySubject &&
>                                 componentType instanceof PolicySubject ) {
>                             PolicySubject policiedImpl = 
> (PolicySubject)implementation;
>                             PolicySubject policiedCompType = 
> (PolicySubject)componentType;
> -
> +
>                             if ( policiedImpl.getPolicySets() != null) {
>                                 
> policiedImpl.getPolicySets().addAll(policiedCompType.getPolicySets());
>                             }
> @@ -236,7 +236,7 @@
>                 }
>             }
>         }
> -
> +
>         // Mark the model resolved
>         if (bean instanceof Base) {
>             ((Base)bean).setUnresolved(false);
> @@ -247,7 +247,7 @@
>         return artifactType;
>     }
>
> -    public Class<?> getModelType() {
> +    public Class<T> getModelType() {
>         return modelClass;
>     }
>
>
>
>

Hi Raymond. Seems like something we need in 1.x also. Would you have
any concerns about having this change in 1.x? I've created
TUSCANY-3095 for this and if there are no concerns and I get to it
first I'll pull it across.

Simon

Reply via email to