On 4/25/08, Simon Laws <[EMAIL PROTECTED]> wrote:
>
> On Thu, Apr 24, 2008 at 5:36 PM, Simon Laws <[EMAIL PROTECTED]>
> wrote:
>
> >
> >
> > On Wed, Apr 23, 2008 at 5:39 AM, Hasan Muhammad <[EMAIL PROTECTED]>
> wrote:
> >
> > > Hi Simon,
> > >
> > > I opened JIRA 2260 and attached a second batch of validation test
> cases.
> > >
> > > regards
> > > Hasan
> > >
> > > On Tue, Apr 22, 2008 at 8:16 AM, Hasan Muhammad <[EMAIL PROTECTED]>
> > > wrote:
> > >
> > > > Hi Simon
> > > >
> > > > I opened JIRA 2255 and attached a patch for the new testcases.
> > > >
> > > > Hasan
> > > >
> > > >
> > > > On Fri, Apr 18, 2008 at 12:58 PM, Simon Laws <
> > > [EMAIL PROTECTED]>
> > > > wrote:
> > > >
> > > > > On Thu, Apr 17, 2008 at 5:44 PM, Simon Laws <
> > > [EMAIL PROTECTED]>
> > > > > wrote:
> > > > >
> > > > > >
> > > > > >
> > > > > > On Thu, Apr 17, 2008 at 5:02 PM, Hasan Muhammad <
> [EMAIL PROTECTED]>
> > > > > wrote:
> > > > > >
> > > > > > > Hi Simon,
> > > > > > >
> > > > > > > We should have an api for plugins to provide a resource bundle.
> > > This
> > > > > api
> > > > > > > probably needs to be on the monitor or somewhere, i am not
> sure.
> > > But
> > > > > the
> > > > > > > scenario occurs when plugins want to use the default Monitor
> but
> > > > > still
> > > > > > > want
> > > > > > > to use their own resource bundle for messageIDs.
> > > > > > >
> > > > > > > regards
> > > > > > > Hasan
> > > > > > >
> > > > > > > On Wed, Apr 16, 2008 at 3:30 PM, Hasan Muhammad <
> > > [EMAIL PROTECTED]>
> > > > > > > wrote:
> > > > > > >
> > > > > > > > Hi Simon,
> > > > > > > >
> > > > > > > > I looked at the new Monitor and Problem interfaces. What do
> > > > > > > getMessageId()
> > > > > > > > and getMessageParams() actually return? is MessageId a way to
> > > > > > > categorize the
> > > > > > > > error message?
> > > > > > > >
> > > > > > > > regards
> > > > > > > > Hasan
> > > > > > > >
> > > > > > > >
> > > > > > > > On Tue, Apr 15, 2008 at 10:59 AM, Hasan Muhammad <
> > > [EMAIL PROTECTED]
> > > > > >
> > > > > > > wrote:
> > > > > > > >
> > > > > > > > > Hi Simon,
> > > > > > > > >
> > > > > > > > > I was wondering if i can cook up some validation test cases
> > > if
> > > > > they
> > > > > > > do
> > > > > > > > > not exist. Or should we wait until the monitor issue is
> > > resolved
> > > > > ?
> > > > > > > > >
> > > > > > > > > Hasan
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On Thu, Apr 10, 2008 at 4:34 PM, Hasan Muhammad <
> > > > > [EMAIL PROTECTED]>
> > > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > Hi Simon,
> > > > > > > > > >
> > > > > > > > > > I dont think using an underlying tuscany jdk logger would
> > > be
> > > > > > > useful to
> > > > > > > > > > plugins as they may not want to log, rather show it
> > > somewhere
> > > > > else
> > > > > > > such as
> > > > > > > > > > console etc. Tuscany can use an underlying logger in it's
> > > own
> > > > > > > monitor ( as
> > > > > > > > > > it uses today). But i think the first approach of using a
> > > > > monitor
> > > > > > > is better
> > > > > > > > > > along with the condition that it be made more usable by
> > > the
> > > > > > > plugins by
> > > > > > > > > > giving them greater control.
> > > > > > > > > >
> > > > > > > > > > Another point is that tuscany should use ResourceBundle
> > > for
> > > > > > > validation
> > > > > > > > > > messages as well. I dont think this is being done today.
> > > > > > > > > >
> > > > > > > > > > regards
> > > > > > > > > > Hasan
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > On Wed, Apr 9, 2008 at 1:22 PM, Simon Laws <
> > > > > > > [EMAIL PROTECTED]>
> > > > > > > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > > On Wed, Apr 9, 2008 at 12:49 PM, Simon Laws <
> > > > > > > > > > > [EMAIL PROTECTED]>
> > > > > > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > On Wed, Apr 9, 2008 at 12:00 PM, Hasan Muhammad <
> > > > > > > [EMAIL PROTECTED]>
> > > > > > > > > > > wrote:
> > > > > > > > > > > >
> > > > > > > > > > > > > Hi Simon,
> > > > > > > > > > > > >
> > > > > > > > > > > > > I am on revision 634808. The
> ContributionServiceImpl
> > > has
> > > > > > > changed
> > > > > > > > > > > since
> > > > > > > > > > > > > then,
> > > > > > > > > > > > > and with the one that i have, it would lead through
> > > the
> > > > > > > > > > > > > CompositeProcessor
> > > > > > > > > > > > > instead of the CompositeDocumentProcessor. Hence
> the
> > > > > > > difference
> > > > > > > > > > > in
> > > > > > > > > > > > > exceptions..
> > > > > > > > > > > > >
> > > > > > > > > > > > > Also, dont you think that with the error that you
> > > got
> > > > > should
> > > > > > > > > > > throw an
> > > > > > > > > > > > > exception with schema validation, rather than just
> a
> > > > > > > warning?
> > > > > > > > > > > > >
> > > > > > > > > > > > > Hasan
> > > > > > > > > > > > >
> > > > > > > > > > > > > On Wed, Apr 9, 2008 at 6:36 AM, Simon Laws <
> > > > > > > > > > > [EMAIL PROTECTED]>
> > > > > > > > > > > > > wrote:
> > > > > > > > > > > > >
> > > > > > > > > > > > > > On Tue, Apr 8, 2008 at 2:58 PM, Hasan Muhammad <
> > > > > > > > > > > [EMAIL PROTECTED]>
> > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > > 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
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Hi Hasan
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > The change you suggest should cause a schema
> > > > > validation
> > > > > > > error.
> > > > > > > > > > > I made
> > > > > > > > > > > > > the
> > > > > > > > > > > > > > change locally in samples/calculator and see the
> > > > > following
> > > > > > > > > > > output in
> > > > > > > > > > > > > > stdout
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > 08-Apr-2008 22:41:54
> > > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > >
> > >
> org.apache.tuscany.sca.contribution.processor.ValidatingXMLStreamReader$1
> > > > > > > > > > > > > > error
> > > > > > > > > > > > > > WARNING: XMLSchema validation problem in: null,
> > > line:
> > > > > 28,
> > > > > > > > > > > column: 5
> > > > > > > > > > > > > > cvc-complex-type.2.4.a: Invalid content was found
> > > > > starting
> > > > > > > > > > > with
> > > > > > > > > > > > > element '
> > > > > > > > > > > > > > binding.ws'. One of '{"
> > > > > http://www.osoa.org/xmlns/sca/1.0
> > > > > > > ":include,
> > > > > > > > > > > "
> > > > > > > > > > > > > > http://www.osoa.org/xmlns/sca/1.0":service, "
> > > > > > > > > > > > > > http://www.osoa.org/xmlns/sca/1.0":property, "
> > > > > > > > > > > > > > http://www.osoa.org/xmlns/sca/1.0":component, "
> > > > > > > > > > > > > > http://www.osoa.org/xmlns/sca/1.0":reference, "
> > > > > > > > > > > > > > http://www.osoa.org/xmlns/sca/1.0":wire,
> > > WC[##other:"
> > > > > > > > > > > > > > http://www.osoa.org/xmlns/sca/1.0"]}' is
> expected.
> > > > > > > > > > > > > > 08-Apr-2008 22:41:54
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > >
> > >
> org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor
> > > > > > > > > > > > > > read
> > > > > > > > > > > > > > WARNING: Element {
> > > > > > > http://www.osoa.org/xmlns/sca/1.0}binding.ws<
> http://www.osoa.org/xmlns/sca/1.0%7Dbinding.ws>
> > > <http://www.osoa.org/xmlns/sca/1.0%7Dbinding.ws>
> > > > > <http://www.osoa.org/xmlns/sca/1.0%7Dbinding.ws>
> > > > > > > <http://www.osoa.org/xmlns/sca/1.0%7Dbinding.ws>
> > > > > > > > > > > <http://www.osoa.org/xmlns/sca/1.0%7Dbinding.ws>
> > > > > > > > > > > > > <http://www.osoa.org/xmlns/sca/1.0%7Dbinding.ws
> > > >cannot
> > > > > be
> > > > > > > > > > > > > > processed. ([row,col {unknown-source}]: [28,5])
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > No exception is raised though.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Let me take a look at what has changed.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Simon
> > > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > Ok, thanks for that Hasan. I see the change you are
> > > > > > > referencing.
> > > > > > > > > > > I'm not
> > > > > > > > > > > > sure why the exception is no longer thrown. The code
> > > is
> > > > > still
> > > > > > > in
> > > > > > > > > > > the
> > > > > > > > > > > > CompositeProcessor to trap the case but maybe the
> > > > > offending
> > > > > > > > > > > element is
> > > > > > > > > > > > removed from the stream because of the validation
> > > warning.
> > > > > > > > > > > >
> > > > > > > > > > > > I would argue that we shouldn't mandate that an
> > > exception
> > > > > is
> > > > > > > > > > > thrown in
> > > > > > > > > > > > this case but that the validation mechanism is opened
> > > up
> > > > > to
> > > > > > > the
> > > > > > > > > > > monitor API
> > > > > > > > > > > > so that a monitor can be attached and those who are
> > > > > embedding
> > > > > > > > > > > tuscany can
> > > > > > > > > > > > decide how they want to deal with errors like this.
> > > > > > > > > > > >
> > > > > > > > > > > > Simon
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > Hi
> > > > > > > > > > >
> > > > > > > > > > > I've just been through the original list again looking
> > > at
> > > > > what
> > > > > > > > > > > happens with
> > > > > > > > > > > validation types errors (by which I mean a workspace
> > > type
> > > > > admin
> > > > > > > > > > > console
> > > > > > > > > > > would reasonably want to display based on user
> > > > > input/changes).
> > > > > > > This
> > > > > > > > > > > is what
> > > > > > > > > > > I found.
> > > > > > > > > > >
> > > > > > > > > > > - Contribution processing
> > > > > > > > > > >   - dependency (imports/exports) analysis
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > >
> > >
> org.apache.tuscany.sca.workspace.builder.impl.ContributionDependencyBuilderImpl
> > > > > > > > > > >      uses a ContributionDependencyBuilderMonitor
> > > > > > > > > > > - Composite read
> > > > > > > > > > >   - schema compliance
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > >
> > >
> org.apache.tuscany.sca.contribution.processor.DefaultValidatingXMLInputFactory
> > > > > > > > > > >      Uses writes to local JDK Logger
> > > > > > > > > > >    - policy intent matching
> > > > > > > > > > >
> > > > > > > org.apache.tuscany.sca.assembly.xml.CompositeDocumentProcessor
> > > > > > > > > > >      Throws exceptions
> > > > > > > > > > >    - extension availability
> > > > > > > > > > >     General artifact processor hierarchy
> > > > > > > > > > >      Throws exceptions
> > > > > > > > > > >   - SCA compliance, e.g. annotation correctness
> > > > > > > > > > >     General artifact processor hierarchy
> > > > > > > > > > >     Throws exceptions
> > > > > > > > > > > - Composite resolve
> > > > > > > > > > >   - ensure that artifacts required by the composite are
> > > > > > > available
> > > > > > > > > > >     General artifact resolver hierarchy
> > > > > > > > > > >      Throws exceptions
> > > > > > > > > > > - 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
> > > > > > > > > > >      uses a CompositeBuilderMonitor
> > > > > > > > > > >
> > > > > > > > > > > I would like to look for a more consistent approach
> > > across
> > > > > these
> > > > > > > > > > > various
> > > > > > > > > > > elements of validation. The aim being to make it more
> > > > > obvious
> > > > > > > how to
> > > > > > > > > > > recognize validation type errors and act accordingly.
> > > There
> > > > > has
> > > > > > > been
> > > > > > > > > > > a
> > > > > > > > > > > relatively lengthy debate about how to group and report
> > > > > errors
> > > > > > > in
> > > > > > > > > > > [1] which
> > > > > > > > > > > is worth a read. The scenarios I have in mind are
> > > workspace
> > > > > > > > > > > administration
> > > > > > > > > > > type scenarios where, for example,  A user may
> > > > > > > > > > >
> > > > > > > > > > > Add a contribution and be notified that contributions
> > > that
> > > > > it
> > > > > > > > > > > depends on are
> > > > > > > > > > > not available
> > > > > > > > > > > Look at a composite and be notified that there are XML
> > > > > and/or
> > > > > > > SCA
> > > > > > > > > > > errors
> > > > > > > > > > > etc.
> > > > > > > > > > >
> > > > > > > > > > > From [1] we want to capture as many errors as possible
> > > > > before
> > > > > > > > > > > reporting back
> > > > > > > > > > > to the user. Two things come immediately to mind.
> > > > > > > > > > >
> > > > > > > > > > > 1 - Pull up the Monitor API and make it more generic
> > > (and
> > > > > from
> > > > > > > > > > > previous
> > > > > > > > > > > comments here make it an extension point)
> > > > > > > > > > > 2 - Rely on a Tuscany specific JDK logger and remove
> the
> > > > > monitor
> > > > > > > (or
> > > > > > > > > > > at
> > > > > > > > > > > least don't extend it further).
> > > > > > > > > > >
> > > > > > > > > > > I'm going to think some more about these options. Any
> > > > > thoughts
> > > > > > > or
> > > > > > > > > > > more
> > > > > > > > > > > options?
> > > > > > > > > > >
> > > > > > > > > > > Simon
> > > > > > > > > > >
> > > > > > > > > > > [1]
> > > > > > > > > > >
> > > > > > >
> > > http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg29878.html
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > > > Hi Hasan
> > > > > >
> > > > > > What do you mean in your question by "plugin". If you mean an
> > > Tuscany
> > > > > > extension then I think we have that covered as each extension
> will
> > > > > ship with
> > > > > > any bundles that it needs and stll the default monitor can be
> > > used.
> > > > > >
> > > > > > Here is the model I have in my head of this.
> > > > > >
> > > > > > runtime
> > > > > >   monitor
> > > > > >   module (there are many of these in the runtime)
> > > > > >     resource bundle
> > > > > >     raises problems - each problem references the name of a
> > > resource
> > > > > > bundle for the modules in question (I don't believe I can get the
> > > name
> > > > > of
> > > > > > the module automatically)
> > > > > >
> > > > > > So I'm anticipating that the runtime will create a single monitor
> > > but
> > > > > this
> > > > > > is not a hard and fast rule.
> > > > > >
> > > > > > Each module/extension raises problems referencing the resource
> > > bundle
> > > > > that
> > > > > > it contains. Hence the module provides messages appropriate to
> > > errors
> > > > > that
> > > > > > it will raise. The resource bundle reference is by root name so
> > > there
> > > > > is not
> > > > > > reason why the resource bundle couldn't be put somewhere else.
> > > > > >
> > > > > > If you want to change the default messages that are provided, as
> > > > > opposed
> > > > > > to create a new extension with new messages, there are a number
> of
> > > > > options.
> > > > > >
> > > > > > - The source code approach - i.e. change the bundles  provided
> > > > > > - Provide new bundles first on the classpath - I think they will
> > > get
> > > > > > picked up in preference to the default ones but I would have to
> > > test
> > > > > it to
> > > > > > see
> > > > > > - We could reorganize the bundles so they are in their in their
> > > own
> > > > > > separate jars. Then you would provide a replacement jar.
> > > > > > - Add an API to the monitor to allow a bundle mapping to be
> > > specified.
> > > > > In
> > > > > > this case though it seems easier to provide a new monitor
> > > > > implementation
> > > > > > rather than providing a new API.
> > > > > >
> > > > > > There are probably more options so any thoughts are welcome. I'm
> > > > > currently
> > > > > > working on getting the new monitor integrated into the existing
> > > > > modules
> > > > > > (primarily assembly) so we will have something to try out. We can
> > > take
> > > > > a
> > > > > > look at these options for real when I'm done.
> > > > > >
> > > > > > Simon
> > > > > >
> > > > >
> > > > > Hi
> > > > >
> > > > > I've just checked in the changes to do the basic integration of the
> > > > > monitor
> > > > > extension with the rest of the code base. Its a light touch end to
> > > end
> > > > > integration at the moment. Here are some of the TODOs
> > > > >
> > > > > - Move messages into resource bundles.
> > > > > - Local monitors are still created in some places.
> > > > > - If a monitor implementation is not found then a warning is raised
> > > but
> > > > > execution continues so that I don't have to change the dependencies
> > > of
> > > > > the
> > > > > many tests that now don't pull in a monitor but also don't raise
> any
> > > > > warnings. May want to address this but It's OK for the time being.
> > > > >
> > > > > Hopefully now the validation itests make more sense now. The test
> to
> > > > > look at
> > > > > is the duplicate component name test. This is the only message I've
> > > > > moved
> > > > > out into a resource bundle at the moment. Now I have the basics in
> > > I'll
> > > > > move
> > > > > all the messages and do the tidying up.
> > > > >
> > > > >  Also I've switched to using node instead of domain in the tests. I
> > > > > notice
> > > > > we need to do some work on the constructor for this type of use.
> > > I'll
> > > > > work
> > > > > on this too.
> > > > >
> > > > > Regards
> > > > >
> > > > > Simon
> > > > >
> > > >
> > > >
> > >
> > Hi Hasan
> >
> > have been running some of the validation code today and I notice that
> > quite a few of the reported error messages have their parameters
> > miss-aligned. I.e. I often see an unexpanded {1}. This is down the the
> > builder warning() method being called with too few parameters. It takes
> >
> >  warning(String message, Object model, String... messageParameters)
> >
> > So if i had a {0} and a {1} in the message I would use something like
> >
> > warning("ReferenceIncompatibleInterface", composite,
> > componentReference.getName(), componentService.getName());
> >
> > Where the two parameters are passed in at the end.
> >
> > Easy enough for me to go and fix the ones I find but thought I would
> raise
> > it in case you are doing some more and spot mistakes.
> >
> > Regards
> >
> > Simon
> >
> Hi
>
> Actually I went through the places where warning is called and they are all
> pretty much perfect so I must have just hit the one bad one that have a
> missing parameter. As far as I know they are all good now.
>
> Simon
>

Hi Simon,
I had a chance to look at the monitors that are being hooked up with
different parts of the code and found some inconsistency interms of raising
warning & errors. In some places we throw exceptions and in other places we
raise a warning. I also believe there are instances where we need to do
both, the below examples might give us some clue.....

Here are some examples for the inconsistency.......

BaseConfigurationBuilderImpl.java
Here we raise only a warning for URISyntaxException, should we not throw an
exception too?

BaseWireBuilderImpl.java
Here we throw exceptions for IncompatibleInterfaceContractException, don't
you think we also need to register this message in our monitor?
In the same class, we raise a warning message for the PolicyRelated
Exceptions, should we also throw an exception here?

CompositeProcessor.java
There are instances where we throw new ContributionReadException, i believe
registering this msg with a monitor is also required as this is caused by
incorrect user input.

Like to know your views on this... so that we can consider a standard way of
raising warning/errors using the monitor.

-- 
Thanks & Regards,
Ramkumar Ramalingam

Reply via email to