You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Simon Laws <si...@googlemail.com> on 2009/02/09 23:47:02 UTC

Re: JMS Changes to allow access to definitions.xml, Re: svn commit: r689448 - in /tuscany/java/sca/modules: binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/ contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service

On Mon, Feb 9, 2009 at 10:07 PM, Luciano Resende <lu...@gmail.com>wrote:

> I noticed some changes in the modelResolvers to give access to
> definitions.xml to JMS binding. Could we just instantiate a unresolved
> model or a artifact and delegate resolution to the model resolver to
> properly get access to resolved definitions.xml ?
>
> On Wed, Aug 27, 2008 at 3:09 AM,  <an...@apache.org> wrote:
> > Author: antelder
> > Date: Wed Aug 27 04:09:51 2008
> > New Revision: 689448
> >
> > URL: http://svn.apache.org/viewvc?rev=689448&view=rev
> > Log:
> > Updates to get the JMS binding requestConnection and responseConnection
> attributes working using bindings defined in the definitions.xml file. This
> is not the final code for this as the definitions.xml processing is being
> refactored (by Simon Laws?) as part of TUSCANY-2499, this shows the type of
> function that the JMS binding will need as part of that work. Two parts that
> need work are that SCADefinitions.getBindings  currently returns a list of
> Objects not Bindings as otherwise theres a cyclic dependency in the maven
> modules, and there needs to be a way for bindings to get at the
> SCADefinitions which is currently being done by getting at the contribution
> processing internals with ExtensibleModelResolver.getDefaultModelResolver
> and DefaultModelResolver.getModels.
> >
> > Modified:
> >
>  tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java
> >
>  tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java
> >
>  tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
> >
>  tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java
> >
>  tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java
> >
>  tuscany/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsProcessor.java
> >
>  tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/SCADefinitions.java
> >
>  tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/impl/SCADefinitionsImpl.java
> >
>  tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/util/SCADefinitionsUtil.java
> >
> > Modified:
> tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java
> > URL:
> http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java?rev=689448&r1=689447&r2=689448&view=diff
> >
> ==============================================================================
> > ---
> tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java
> (original)
> > +++
> tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBinding.java
> Wed Aug 27 04:09:51 2008
> > @@ -102,6 +102,10 @@
> >     private Map<String, Long> operationJMSTimeToLives = new
> HashMap<String, Long>();
> >     private Map<String, Integer> operationJMSPriorities = new
> HashMap<String, Integer>();
> >     private String jmsSelector;
> > +    private String requestConnectionName;
> > +    private String responseConnectionName;
> > +    private JMSBinding requestConnectionBinding;
> > +    private JMSBinding responseConnectionBinding;
> >
> >     public JMSBinding() {
> >         super();
> > @@ -183,7 +187,11 @@
> >     }
> >
> >     public String getDestinationName() {
> > -        return destinationName;
> > +        if (requestConnectionBinding != null &&
> requestConnectionBinding.getDestinationName() != null) {
> > +            return requestConnectionBinding.getDestinationName();
> > +        } else {
> > +            return destinationName;
> > +        }
> >     }
> >
> >     public void setDestinationName(String destinationName) {
> > @@ -207,7 +215,11 @@
> >     }
> >
> >     public String getConnectionFactoryName() {
> > -        return connectionFactoryName;
> > +        if (requestConnectionBinding != null &&
> requestConnectionBinding.getConnectionFactoryName() != null) {
> > +            return requestConnectionBinding.getConnectionFactoryName();
> > +        } else {
> > +            return connectionFactoryName;
> > +        }
> >     }
> >
> >     public void setConnectionFactoryName(String connectionFactoryName) {
> > @@ -239,7 +251,11 @@
> >     }
> >
> >     public String getResponseDestinationName() {
> > -        return this.responseDestinationName;
> > +        if (requestConnectionBinding != null &&
> requestConnectionBinding.getResponseDestinationName() != null) {
> > +            return
> requestConnectionBinding.getResponseDestinationName();
> > +        } else {
> > +            return this.responseDestinationName;
> > +        }
> >     }
> >
> >     public void setResponseDestinationName(String name) {
> > @@ -263,7 +279,11 @@
> >     }
> >
> >     public String getResponseConnectionFactoryName() {
> > -        return responseConnectionFactoryName;
> > +        if (requestConnectionBinding != null &&
> requestConnectionBinding.getResponseConnectionFactoryName() != null) {
> > +            return
> requestConnectionBinding.getResponseConnectionFactoryName();
> > +        } else {
> > +            return responseConnectionFactoryName;
> > +        }
> >     }
> >
> >     public void setResponseConnectionFactoryName(String
> connectionFactoryName) {
> > @@ -483,4 +503,32 @@
> >         this.jmsSelector = jmsSelector;
> >     }
> >
> > +    public String getRequestConnectionName() {
> > +        return requestConnectionName;
> > +    }
> > +
> > +    public void setRequestConnectionName(String requestConnectionName) {
> > +        this.requestConnectionName = requestConnectionName;
> > +    }
> > +
> > +    public void setResponseConnectionName(String responseConnectionName)
> {
> > +        this.responseConnectionName = responseConnectionName;
> > +    }
> > +    public String getResponseConnectionName() {
> > +        return responseConnectionName;
> > +    }
> > +
> > +    public void setRequestConnectionBinding(JMSBinding binding) {
> > +        this.requestConnectionBinding = binding;
> > +    }
> > +    public JMSBinding getRequestConnectionBinding() {
> > +        return requestConnectionBinding;
> > +    }
> > +
> > +    public void setResponseConnectionBinding(JMSBinding binding) {
> > +        this.responseConnectionBinding = binding;
> > +    }
> > +    public JMSBinding getResponseConnectionBinding() {
> > +        return responseConnectionBinding;
> > +    }
> >  }
> >
> > Modified:
> tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java
> > URL:
> http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java?rev=689448&r1=689447&r2=689448&view=diff
> >
> ==============================================================================
> > ---
> tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java
> (original)
> > +++
> tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java
> Wed Aug 27 04:09:51 2008
> > @@ -22,6 +22,7 @@
> >  import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
> >  import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
> >
> > +import java.util.Map;
> >  import java.util.StringTokenizer;
> >
> >  import javax.xml.namespace.QName;
> > @@ -34,6 +35,8 @@
> >  import org.apache.tuscany.sca.assembly.xml.PolicyAttachPointProcessor;
> >  import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
> >  import
> org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
> > +import
> org.apache.tuscany.sca.contribution.resolver.DefaultModelResolver;
> > +import
> org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
> >  import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
> >  import
> org.apache.tuscany.sca.contribution.service.ContributionReadException;
> >  import
> org.apache.tuscany.sca.contribution.service.ContributionResolveException;
> > @@ -215,10 +218,14 @@
> >
> >         }
> >
> > -        // Read requestConnection
> > -        // TODO
> > -        // Read reponseConnection
> > -        // TODO
> > +        String requestConnectionName = reader.getAttributeValue(null,
> "requestConnection");
> > +        if (requestConnectionName != null &&
> requestConnectionName.length() > 0) {
> > +            jmsBinding.setRequestConnectionName(requestConnectionName);
> > +        }
> > +        String responseConnectionName = reader.getAttributeValue(null,
> "responseConnection");
> > +        if (responseConnectionName != null &&
> responseConnectionName.length() > 0) {
> > +
>  jmsBinding.setResponseConnectionName(responseConnectionName);
> > +        }
> >
> >         // Read sub-elements of binding.jms
> >         boolean endFound = false;
> > @@ -286,6 +293,28 @@
> >     }
> >
> >     public void resolve(JMSBinding model, ModelResolver resolver) throws
> ContributionResolveException {
> > +        if (model.getRequestConnectionName() != null) {
> > +
>  model.setRequestConnectionBinding(getConnectionBinding(model.getRequestConnectionName(),
> resolver));
> > +        }
> > +        if (model.getResponseConnectionName() != null) {
> > +
>  model.setResponseConnectionBinding(getConnectionBinding(model.getResponseConnectionName(),
> resolver));
> > +        }
> > +    }
> > +
> > +    private JMSBinding getConnectionBinding(String bindingName,
> ModelResolver resolver) {
> > +        if (resolver instanceof ExtensibleModelResolver) {
> > +            DefaultModelResolver dr =
> (DefaultModelResolver)((ExtensibleModelResolver)
> resolver).getDefaultModelResolver();
> > +            Map models = dr.getModels();
> > +            for (Object o : models.keySet()) {
> > +                if (o instanceof JMSBinding) {
> > +                    JMSBinding binding = (JMSBinding) o;
> > +                    if (bindingName.equals(binding.getName())) {
> > +                        return binding;
> > +                    }
> > +                }
> > +            }
> > +        }
> > +        return null;
> >     }
> >
> >     public void write(JMSBinding rmiBinding, XMLStreamWriter writer)
> throws ContributionWriteException,
> >
> > Modified:
> tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
> > URL:
> http://svn.apache.org/viewvc/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java?rev=689448&r1=689447&r2=689448&view=diff
> >
> ==============================================================================
> > ---
> tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
> (original)
> > +++
> tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
> Wed Aug 27 04:09:51 2008
> > @@ -474,6 +474,9 @@
> >                         for (IntentAttachPointType attachPointType :
> definitions.getImplementationTypes() ) {
> >
> policyDefinitionsResolver.addModel(attachPointType);
> >                         }
> > +                        for (Object binding : definitions.getBindings()
> ) {
> > +                            policyDefinitionsResolver.addModel(binding);
> > +                        }
> >                     }
> >                 }
> >             }
> >
> > Modified:
> tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java
> > URL:
> http://svn.apache.org/viewvc/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java?rev=689448&r1=689447&r2=689448&view=diff
> >
> ==============================================================================
> > ---
> tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java
> (original)
> > +++
> tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java
> Wed Aug 27 04:09:51 2008
> > @@ -57,4 +57,10 @@
> >         return map.remove(resolved);
> >     }
> >
> > +    // FIXME: TUSCANY-2499: temporarily  give access to the models to
> get the jms binding
> > +    //  use of definitions.xml working while the definitions.xml
> processing is being refactored
> > +    public Map getModels() {
> > +        return map;
> > +    }
> > +
> >  }
> >
> > Modified:
> tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java
> > URL:
> http://svn.apache.org/viewvc/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java?rev=689448&r1=689447&r2=689448&view=diff
> >
> ==============================================================================
> > ---
> tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java
> (original)
> > +++
> tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java
> Wed Aug 27 04:09:51 2008
> > @@ -191,5 +191,11 @@
> >
> >         return unresolved;
> >     }
> > +
> > +    // FIXME: TUSCANY-2499: temporarily  give access to the
> defaultResolver to get the jms binding
> > +    //  use of definitions.xml working while the definitions.xml
> processing is being refactored
> > +    public ModelResolver getDefaultModelResolver() {
> > +        return defaultResolver;
> > +    }
> >
> >  }
> >
> > Modified:
> tuscany/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsProcessor.java
> > URL:
> http://svn.apache.org/viewvc/tuscany/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsProcessor.java?rev=689448&r1=689447&r2=689448&view=diff
> >
> ==============================================================================
> > ---
> tuscany/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsProcessor.java
> (original)
> > +++
> tuscany/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsProcessor.java
> Wed Aug 27 04:09:51 2008
> > @@ -31,6 +31,7 @@
> >  import javax.xml.stream.XMLStreamReader;
> >  import javax.xml.stream.XMLStreamWriter;
> >
> > +import org.apache.tuscany.sca.assembly.Binding;
> >  import
> org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor;
> >  import
> org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
> >  import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
> > @@ -120,6 +121,9 @@
> >                                 policySet.setName(new
> QName(targetNamespace,
> >
> policySet.getName().getLocalPart()));
> >
> definitions.getPolicySets().add(policySet);
> > +                            } else if ( extension instanceof Binding ) {
> > +                                Binding binding = (Binding)extension;
> > +                                definitions.getBindings().add(binding);
> >                             } else if ( extension instanceof
> IntentAttachPointType ) {
> >                                 IntentAttachPointType type =
> (IntentAttachPointType)extension;
> >                                 if (
> type.getName().getLocalPart().startsWith(BINDING)) {
> >
> > Modified:
> tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/SCADefinitions.java
> > URL:
> http://svn.apache.org/viewvc/tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/SCADefinitions.java?rev=689448&r1=689447&r2=689448&view=diff
> >
> ==============================================================================
> > ---
> tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/SCADefinitions.java
> (original)
> > +++
> tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/SCADefinitions.java
> Wed Aug 27 04:09:51 2008
> > @@ -72,4 +72,11 @@
> >      * @return a list of domain wide Implementation Types
> >      */
> >     List<IntentAttachPointType> getImplementationTypes();
> > +
> > +    /**
> > +     * Returns a list of domain wide binding definition objects
> > +     *
> > +     * @return a list of domain wide binding definition objects
> > +     */
> > +    List<Object> getBindings();
> >  }
> >
> > Modified:
> tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/impl/SCADefinitionsImpl.java
> > URL:
> http://svn.apache.org/viewvc/tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/impl/SCADefinitionsImpl.java?rev=689448&r1=689447&r2=689448&view=diff
> >
> ==============================================================================
> > ---
> tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/impl/SCADefinitionsImpl.java
> (original)
> > +++
> tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/impl/SCADefinitionsImpl.java
> Wed Aug 27 04:09:51 2008
> > @@ -38,6 +38,7 @@
> >     private List<PolicySet> policySets = new
> CopyOnWriteArrayList<PolicySet>();
> >     private List<IntentAttachPointType> bindingTypes = new
> CopyOnWriteArrayList<IntentAttachPointType>();
> >     private List<IntentAttachPointType> implementationTypes = new
> CopyOnWriteArrayList<IntentAttachPointType>();
> > +    private List<Object> bindings = new CopyOnWriteArrayList<Object>();
> >
> >
> >     public List<IntentAttachPointType> getBindingTypes() {
> > @@ -63,4 +64,8 @@
> >     public void setTargetNamespace(String ns) {
> >        this.targetNamespace = ns;
> >     }
> > +
> > +    public List<Object> getBindings() {
> > +        return bindings;
> > +    }
> >  }
> >
> > Modified:
> tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/util/SCADefinitionsUtil.java
> > URL:
> http://svn.apache.org/viewvc/tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/util/SCADefinitionsUtil.java?rev=689448&r1=689447&r2=689448&view=diff
> >
> ==============================================================================
> > ---
> tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/util/SCADefinitionsUtil.java
> (original)
> > +++
> tuscany/java/sca/modules/definitions/src/main/java/org/apache/tuscany/sca/definitions/util/SCADefinitionsUtil.java
> Wed Aug 27 04:09:51 2008
> > @@ -73,6 +73,7 @@
> >         target.getPolicySets().addAll(source.getPolicySets());
> >         target.getBindingTypes().addAll(source.getBindingTypes());
> >
> target.getImplementationTypes().addAll(source.getImplementationTypes());
> > +        target.getBindings().addAll(source.getBindings());
> >     }
> >
> >     public static boolean isSCADefnsFile(URI uri) {
> >
> >
> >
>
>
>
> --
> Luciano Resende
> Apache Tuscany, Apache PhotArk
> http://people.apache.org/~lresende <http://people.apache.org/%7Elresende>
> http://lresende.blogspot.com/
>

Hi Luciano

Model resolver changes have gone into 2.x to properly resolve the
definitions.xml in the context  of a synthetic System Contribution. Two
thoughts here. Forstly you have to gather all defintions.xml from all
contributions and extensions before you start to resolve against them/
Secondly, having a system contribution to represent this will hopefully fit
into the domain model we have with the system contribution being made
available to nodes in a similar way that other contributions are made
available just on the fly.

The JMS binding hasn't been brought up in 2.x to take advantage of these
changes. When we do bring it up I think we can do as you suggest and just
resolve against the system contribution (well just resolve and it will find
the system contribution).

The next hurdle to jump in 2.x is to start sorting out the policy model. In
particular the way that XPaths are applied in order to calculate applicable
policy sets.

Simon