Excalibur Component Lookup

MArtin Schumacher <[email protected]>
Newsgroups gmane.comp.jakarta.avalon.user
Message-ID <[email protected]>
Hi everyone,

I hope someon can help me in here.
We are using a pretty old part of avalon: an about 2 years old version 
of the excalibur-project. We just use the component lookup to have a 
loose coupling. This wors pretty fine the last years.

But now we want to make it possible that one component can choose the 
other component with hints. But we got the following Exception and have 
no idea what to do now...

The Exception:
------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------
org.apache.avalon.framework.component.ComponentException: 
UnnamedSelector: ComponentSelector could not find the component for 
hint: entega
------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------

The roles-definition:
------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------
<role name="mypackage.MyStrategySubServiceInterfaceSelector"
       shorthand="myStrategySubService"
default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector">
   <hint shorthand="entega"  	  			
         class="mypackage.EntegaSubServiceImpl"/>
   <hint shorthand="entegaTest"
         class="mypackage.EntegaTestSubServiceImpl"/>
</role>
------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------

The usage:
------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------
cs = (ComponentSelector)
            cm.lookup(MyStrategySubServiceInterface.ROLE+"Selector");

strategy = (MyStrategySubServiceInterface) cs.select("entega");
strategy.doIt();
cs.release(strategy);
------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------

The ComponentManager initialization:
------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------
this.componentManager = new ExcaliburComponentManager();
SAXParserFactory factory = SAXParserFactory.newInstance();
XMLReader reader = factory.newSAXParser().getXMLReader();

this.loggeravalon =
                  Hierarchy.getDefaultHierarchy().getLoggerFor("main");
this.componentManager.setLogger(this.loggeravalon);

// now configure it...
Configuration roleConfig = null;

SAXConfigurationHandler b = new SAXConfigurationHandler();
InputStream inputStream = this.getClass().getClassLoader().
                              getResourceAsStream(this.rolesfilename);

InputSource is = new InputSource(inputStream);

reader.setContentHandler(b);
reader.parse(is);

roleConfig = b.getConfiguration();

DefaultRoleManager drm = new DefaultRoleManager();
drm.setLogger(this.loggeravalon);
drm.configure(roleConfig);
roleConfig = null;

this.componentManager.setRoleManager(drm);

Configuration conf = null;
try {
   b = new SAXConfigurationHandler();
   inputStream = this.getClass().getClassLoader().
                       getResourceAsStream("application/config.xml");
   is = new InputSource(inputStream);

   reader.setContentHandler(b);
   reader.parse(is);

   conf = b.getConfiguration();
   this.componentManager.configure(conf);
} catch (java.net.MalformedURLException malex) {
logger.info("cannot load confix.xml. proceeding without...");
				}
// and finished
this.componentManager.initialize();
------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------

Really hope, that someone can help me!

MArtin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.