org.nanocontainer.script
Class ScriptBuilderResolver

java.lang.Object
  extended by org.nanocontainer.script.ScriptBuilderResolver

public class ScriptBuilderResolver
extends java.lang.Object

ScriptBuilderResolver handles the task of resolving a file name to a builder name. Typical default resolution is for Groovy, BeanShell, JavaScript, Jython, and XML script names. However, you can register/replace your own builder implementations by using the registerBuilder() function.

Author:
Michael Rimov

Field Summary
static java.lang.String BEANSHELL
           
static java.lang.String DEFAULT_BEANSHELL_BUILDER
           
static java.lang.String DEFAULT_GROOVY_BUILDER
           
static java.lang.String DEFAULT_JAVASCRIPT_BUILDER
           
static java.lang.String DEFAULT_JYTHON_BUILDER
           
static java.lang.String DEFAULT_XML_BUILDER
           
static java.lang.String GROOVY
           
static java.lang.String JAVASCRIPT
           
static java.lang.String JYTHON
           
static java.lang.String XML
           
 
Constructor Summary
ScriptBuilderResolver()
           
 
Method Summary
 java.lang.String[] getAllSupportedExtensions()
          Retrieve a list of all supported extensions.
 java.lang.String getBuilderClassName(java.io.File compositionFile)
          Retrieve the classname of the appropriate ScriptedContainerBuilder given the file.
 java.lang.String getBuilderClassName(java.lang.String extension)
          Retrieve the classname of the builder to use given the provided extension.
 java.lang.String getBuilderClassName(java.net.URL compositionURL)
          Retrieve the classname of the appropriate ScriptedContainerBuilder given the file.
 void registerBuilder(java.lang.String extension, java.lang.String className)
          Registers/replaces a new handler for a given extension.
 void resetBuilders()
          Function to allow the resetting of the builder map to defaults.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

GROOVY

public static final java.lang.String GROOVY
See Also:
Constant Field Values

BEANSHELL

public static final java.lang.String BEANSHELL
See Also:
Constant Field Values

JAVASCRIPT

public static final java.lang.String JAVASCRIPT
See Also:
Constant Field Values

JYTHON

public static final java.lang.String JYTHON
See Also:
Constant Field Values

XML

public static final java.lang.String XML
See Also:
Constant Field Values

DEFAULT_GROOVY_BUILDER

public static final java.lang.String DEFAULT_GROOVY_BUILDER
See Also:
Constant Field Values

DEFAULT_BEANSHELL_BUILDER

public static final java.lang.String DEFAULT_BEANSHELL_BUILDER
See Also:
Constant Field Values

DEFAULT_JAVASCRIPT_BUILDER

public static final java.lang.String DEFAULT_JAVASCRIPT_BUILDER
See Also:
Constant Field Values

DEFAULT_XML_BUILDER

public static final java.lang.String DEFAULT_XML_BUILDER
See Also:
Constant Field Values

DEFAULT_JYTHON_BUILDER

public static final java.lang.String DEFAULT_JYTHON_BUILDER
See Also:
Constant Field Values
Constructor Detail

ScriptBuilderResolver

public ScriptBuilderResolver()
Method Detail

getBuilderClassName

public java.lang.String getBuilderClassName(java.io.File compositionFile)
Retrieve the classname of the appropriate ScriptedContainerBuilder given the file.

Parameters:
compositionFile - File
Returns:
String

getBuilderClassName

public java.lang.String getBuilderClassName(java.net.URL compositionURL)
Retrieve the classname of the appropriate ScriptedContainerBuilder given the file.

Parameters:
compositionFile - File
Returns:
String

getBuilderClassName

public java.lang.String getBuilderClassName(java.lang.String extension)
                                     throws UnsupportedScriptTypeException
Retrieve the classname of the builder to use given the provided extension. Example:
 ScriptedContainerBuilderFactory factory = new ScriptedContainerBuilderFactory(.....);
 String groovyBuilderName = factory.getBuilderClassName(".groovy");
 assert "org.nanocontainer.script.groovy.GroovyContainerBuilder".equals(groovyBuilderName);
 

Parameters:
extension - String
Returns:
String
Throws:
UnsupportedScriptTypeException

resetBuilders

public void resetBuilders()
Function to allow the resetting of the builder map to defaults. Allows testing of the static resource a bit better.


registerBuilder

public void registerBuilder(java.lang.String extension,
                            java.lang.String className)
Registers/replaces a new handler for a given extension. Allows for customizable behavior in the various builders or the possibility to dynamically add handlers for new file types. Example:
 ScriptedContainerBuilderFactory factory = new ScriptedContainerBuilderFactory(...)
 factory.registerBuilder(".groovy", "org.nanocontainer.script.groovy.GroovyContainerBuilder");
 ScriptedContainerBuilder builder = factory.getContainerBuilder();
 assertNotNull(builder);
 

The internal code now requires synchronization of the builder extension map since who knows what is using it when a new builder is registered.

Parameters:
extension - String the extension to register under.
className - String the classname to use for the given extension.

getAllSupportedExtensions

public java.lang.String[] getAllSupportedExtensions()
Retrieve a list of all supported extensions.

Returns:
String[] of extensions including the period in the name.


Copyright © 2003-2010 Codehaus. All Rights Reserved.