Some thoughts on B-1.

I'm looking at the otests and, because of the way the build is set up
at the moment, some of the types that policy intents constrain are not
found. A warning is raised to point this out and I would like to add
appropriate context to this warning. The information I think is
appropriate in this case is:

Contribution name
  definitions file name
     intent name *
       missing constrained type name *

Those items marked * are already included in the warning by the
current code as follows.

warn("ConstrainedTypeNotFound", intent, extensionType, intent);

So I need to be able to add the contribution name and the definitions
file name. The stack that leads to this particular warning is as
follows.

Thread [main] (Suspended (breakpoint at line 241 in IntentProcessor))   
        IntentProcessor.resolveContrainedTypes(Intent, ModelResolver) line: 241 
        IntentProcessor.resolve(Intent, ModelResolver) line: 313        
        IntentProcessor.resolve(Object, ModelResolver) line: 1  
        
DefaultStAXArtifactProcessorExtensionPoint$LazyStAXArtifactProcessor.resolve(Object,
ModelResolver) line: 416
        ExtensibleStAXArtifactProcessor.resolve(Object, ModelResolver) line: 
196        
        DefinitionsProcessor.resolve(Definitions, ModelResolver) line: 201      
        DefinitionsProcessor.resolve(Object, ModelResolver) line: 1     
        
DefaultStAXArtifactProcessorExtensionPoint$LazyStAXArtifactProcessor.resolve(Object,
ModelResolver) line: 416
        ExtensibleStAXArtifactProcessor.resolve(Object, ModelResolver) line: 
196        
        DefinitionsDocumentProcessor.resolve(Definitions, ModelResolver) line: 
199      
        DefinitionsDocumentProcessor.resolve(Object, ModelResolver) line: 1     
        
DefaultURLArtifactProcessorExtensionPoint$LazyURLArtifactProcessor.resolve(Object,
ModelResolver) line: 357
        ExtensibleURLArtifactProcessor.resolve(Object, ModelResolver) line: 121 
        ContributionContentProcessor.resolve(Contribution, ModelResolver) line: 
226     
        ContributionContentProcessor.resolve(Object, ModelResolver) line: 1     
        
DefaultURLArtifactProcessorExtensionPoint$LazyURLArtifactProcessor.resolve(Object,
ModelResolver) line: 357
        NodeFactoryImpl.configureNode(NodeConfiguration, List<Contribution>) 
line: 504  
        ...

As you can see the two items are not available in the intentProcessor.
This is nearly always the case when doing read/write/resolve as the
interfaces are very simple. So given B-2 we could thrown and exception
and add the context higher up. This is not an option here though as
it's a warning and I don't want to disrupt the processing. So I'll
have to extend the resolve interface to allow context to be passed
down. So how should this be provided? For example,

Change

void resolve(M model, ModelResolver resolver) throws
ContributionResolveException;

To be

void resolve(M model, ModelResolver resolver, MonitorContext context)
throws ContributionResolveException;

Where MonitorContext would be something like

class MonitorContext {
 List<String> contextInfo;
 ...
}

I'm laboring this point as this is going to affect a *lot* of things
if I dive in and start changing these interfaces. I rather only do it
once.

Simon

Reply via email to