Method from org.apache.struts.tiles.xmlDefinition.FactorySet Detail: |
abstract protected DefinitionsFactory createFactory(Object key,
ServletRequest request,
ServletContext servletContext) throws DefinitionsFactoryException
Create a factory for specified key.
This method is called by getFactory() when the requested factory doesn't already exist.
Must return a factory, or a default one.
Real implementation needs to provide this method. |
abstract protected DefinitionsFactory getDefaultFactory()
|
public ComponentDefinition getDefinition(String name,
ServletRequest request,
ServletContext servletContext) throws NoSuchDefinitionException, DefinitionsFactoryException {
if( factories == null )
throw new FactoryNotFoundException( "No definitions factory defined" );
Object key = getDefinitionsFactoryKey( name, request, servletContext);
DefinitionsFactory factory = getFactory( key, request, servletContext);
return factory.getDefinition( name, request, servletContext );
}
Get a definition by its name. |
abstract protected Object getDefinitionsFactoryKey(String name,
ServletRequest request,
ServletContext servletContext)
Extract key that will be used to get the sub factory. |
protected DefinitionsFactory getFactory(Object key,
ServletRequest request,
ServletContext servletContext) throws DefinitionsFactoryException {
if(key == null )
return getDefaultFactory();
Object factory = factories.get( key );
if( factory == null )
{
// synchronize creation to avoid double creation by separate threads.
// Also, check if factory hasn't been created while waiting for synchronized
// section.
synchronized(factories)
{
factory = factories.get( key );
if( factory == null )
{
factory = createFactory( key, request, servletContext);
factories.put( key, factory );
} // end if
} // end synchronized
} // end if
return (DefinitionsFactory)factory;
}
Get a factory by its key.
If key is null , return defaultFactory.
Search in loaded factories. If not found, create factory and store return value in
loaded factories. |
abstract public void initFactory(ServletContext servletContext,
Map properties) throws DefinitionsFactoryException
|
public String toString() {
Iterator i = factories.values().iterator();
StringBuffer buff = new StringBuffer( "all FactorySet's factory : \n" );
while( i.hasNext() )
{
buff.append( i.next().toString() ).append("\n");
}
return buff.toString();
}
Return String representation. |