Hi Simon,
Thank you for the good information. First up i am trying to verify whether
the schema validation works when we point to our schemas. Can you let me
know what is a simple error that i can introduce so that i can verify this?
I tried doing this to my composite file (In block red):
<component name="MyServiceComponentNew">
<implementation.java class="mysca.test.myservice.impl.MyServiceImpl"/>
*<binding.ws/>*
<property name="location" source="$newLocation"/>
<property name="year" source="$newYear"/>
</component>
This resulted in the following exception, but i think this is part of the
validation done by artifact processor and would result even if we comment
out the schema validation.
org.apache.tuscany.sca.contribution.service.ContributionReadException:
Unexpected <binding> element found. It should appear inside a <service> or
<reference> element
at
org.apache.tuscany.sca.assembly.xml.CompositeProcessor.read(CompositeProcessor.java:373)
at
org.apache.tuscany.sca.assembly.xml.CompositeProcessor.read(CompositeProcessor.java:75)
at
org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor.read(ExtensibleStAXArtifactProcessor.java:83)
at
org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl.processReadPhase(ContributionServiceImpl.java:475)
at
org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl.addContribution(ContributionServiceImpl.java:383)
at
org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl.contribute(ContributionServiceImpl.java:202)
at
com.ibm.ws.soa.sca.runtime.impl.DomainCompositeHelper.addContribution(DomainCompositeHelper.java:75)
at
com.ibm.ws.soa.sca.runtime.impl.SCAContainerComponentImpl.startComposite(SCAContainerComponentImpl.java:235)
at
com.ibm.ws.soa.sca.admin.runtime.tuscany.SCATuscanyRuntimeHandlerImpl.startModule(SCATuscanyRuntimeHandlerImpl.java:125)
at
com.ibm.ws.soa.sca.admin.runtime.impl.SCARuntimeImpl.start(SCARuntimeImpl.java:349)
at
com.ibm.ws.soa.sca.admin.runtime.impl.SCARuntimeImpl.start(SCARuntimeImpl.java:446)
at
com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:331)
at
com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:126)
at
com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:281)
at
com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:768)
at
com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:348)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1487)
regards
On Tue, Apr 8, 2008 at 5:56 AM, Simon Laws <[EMAIL PROTECTED]>
wrote:
> On Mon, Apr 7, 2008 at 4:33 PM, Hasan Muhammad <[EMAIL PROTECTED]> wrote:
>
> > Currently, i see that we have various places where we can plug in
> > validation
> > monitoring. Some of the ones that i found are in the
> > ReallySmallRuntimeBuilder as shown below:
> >
> > public static CompositeBuilder createCompositeBuilder(AssemblyFactory
> > assemblyFactory,
> >
> SCABindingFactory
> > scaBindingFactory,
> >
> > IntentAttachPointTypeFactory intentAttachPointTypeFactory,
> >
> > InterfaceContractMapper interfaceContractMapper,
> > List<PolicySet>
> > domainPolicySets) {
> > return new CompositeBuilderImpl(assemblyFactory,
> scaBindingFactory,
> > intentAttachPointTypeFactory, interfaceContractMapper, domainPolicySets,
> > null);
> > }
> >
> > public static DomainBuilder createDomainBuilder(AssemblyFactory
> > assemblyFactory,
> > SCABindingFactory scaBindingFactory,
> > IntentAttachPointTypeFactory intentAttachPointTypeFactory,
> > InterfaceContractMapper interfaceContractMapper,
> > List<PolicySet> domainPolicySets) {
> > return new DomainWireBuilderImpl(assemblyFactory,
> > scaBindingFactory,
> > intentAttachPointTypeFactory, interfaceContractMapper, domainPolicySets,
> > null);
> > }
> >
> > Instead of passing null, we can pass in our own CompositeBuildMonitor.
> Are
> > these the only places where we need to do this? or are there other
> places
> > as
> > well?
> >
> > Hasan
> >
>
> Hi Hasan
>
> There are a few places that logically we need to be able to validate input
> and hence add monitors. The story is changing a little as we are moving
> toward the new "workspace" code for managing contributions but logically
> I
> would expect to be running validating on at least the following
>
> - Contribution processing
> - dependency (imports/exports) analysis
>
> [org.apache.tuscany.sca.workspace.builder.impl.ContributionDependencyBuilderImpl]
> - Composite read
> - schema compliance
>
> [org.apache.tuscany.sca.contribution.processor.DefaultValidatingXMLInputFactory
> - only appears to be initialized in ReallySmallRuntimeBuilder so need to
> look at this in context of workspace]
> - policy intent matching
> [org.apache.tuscany.sca.assembly.xml.CompositeDocumentProcessor]
> - extension availability [General artifact processor hierarchy]
> - Composite resolve
> - ensure that artifacts required by the composite are available [General
> artifact resolver hierarchy]
> - Composite build
> - ensure that the composite is valid and consistent, e.g. unique
> component names, valid reference targets etc.
> [org.apache.tuscany.sca.assembly.builder.impl.CompositeBuilderImpl]
>
> I've noted in the square brackets where this function currently is. Note
> also that I'm making no comment here about whether the construction of the
> in-memory composite model is for use purely for contribution processing or
> is going to activated and started in a runtime. This validation is
> appropriate in both cases although you may choose to use different
> monitors
> in the two cases.
>
> So what I suggest as a first step is that you go ahead and change
> ReallySmallRuntimeBuilder to plug a monitor into CompositeBuilderImpl to
> see
> how it works. We can work here to build a consistent view of
>
> - all the places a monitor is required
> - what should the plugin model for monitors be
> - the flow of control (monitors vs exceptions)
> - what extra features may be required, I18N etc.
>
> I'm going to try a few experiments too to familiarize myself with this a
> bit
> more.
>
> Regards
>
> Simon
>