On Thu, Mar 13, 2008 at 12:37 PM, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote: > Venkata Krishnan wrote: > I set up the targetnamespace for the names of > > Intents and PolicySets in the SCADefnsProcessor after an Intent or > PolicySet > > has been read by a downstream processor. > > Given how the policy code is currently organized that seems the simplest > option: SCADefinitionsProcessor is responsible for handling the > targetNamespace, and setting it in the qnames of the policy intents and > policySets that it adds to its lists of policy intents and policySets. > > This could be much simplified though, with the following changes: > > 1) cosmetic but it'll help make that code more readable, change > > if (extension != null) { > if ( extension instanceof Intent ) { > ((Intent)extension).setName(new QName(targetNamespace, > > ((Intent)extension).getName().getLocalPart())); > > to > > if (extension instanceof Intent ) { > Intent intent = (Intent)extension; > intent.setName(new QName(targetNamespace, > intent.getName().getLocalPart())); > > as the double 'if' is not necessary, and a local variable will help > avoid repeating the casts. > > 2) Unless I'm missing something, I don't think that you need to set the > targetNamespace of QualifiedIntent.qualifiableIntents, as it looks like > it's already read as a QName from the XML stream (and this QName does > not have to be in the current targetNamespace). > > 3) Finally a bigger change: it seems that you have StAXArtifactProcessor > extensions for Intent, PolicySet etc... but these elements are not > extensions, so you didn't have to go through all that, as they are part > of the SCA core namespace. So, a much simpler approach would be to just > read them in, directly from SCADefinitionsProcessor. This is similar to > CompositeProcessor for example, if we had made a separate processor for > Component, we would have had to pass a lot of context to it. > > In short, it looks like you've created a maze of processor extensions > for things that didn't have to be extensions, and are now wondering how > to pass context through this maze :) > > The solution is simple, just don't make them extensions :) You can > either move this code to SCADefinitionsProcessor.read() or to private > methods of SCADefinitionsProcessor to which you'll be able to pass > whatever context you need. >
+1, I started looking into this approach, but didn't have time to finish the changes. Venkat, if you still need help, I can probably get something on this path by early next week, otherwise, please feel free to do it :) > Hope this helps. > -- > Jean-Sebastien > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Luciano Resende Apache Tuscany Committer http://people.apache.org/~lresende http://lresende.blogspot.com/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]