Hi Simon, Thanks for your detailed comments, that gives a clear picture. I have now opened a JIRA (TUSCANY-2277) to address this issue. By this defect we will standardize the way messages are logged into the monitor.
Will keep things posted in this thread for any complicated situations and if i am not sure about any exceptions that are thrown. -- Thanks & Regards, Ramkumar Ramalingam On 4/29/08, Simon Laws <[EMAIL PROTECTED]> wrote: > > On Mon, Apr 28, 2008 at 1:42 PM, Ramkumar R <[EMAIL PROTECTED]> wrote: > > > 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> > > > > > > > > > > > > > > > < > 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 > > > > Hi Ram > > Good analysis. Looks like we've some work to do. I've just posted to an > oldish thread [1] about the implications of raising errors and warnings. I > think from what you say we have to. > > 1. Make sure we are raising errors/warnings on the monitor rather than > throwing exceptions in code that is processing user input. I.e. we want > all > processing to complete as far as possible through each phase. > 2. Make those errors/exception available from the monitor. We need a > resettable cache > 3. Allow problems to be retrieved from the monitor and analyzed (printed > out > to the console in our case) > > Regards > > Simon > > [1] http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg29766.html >