org.apache.ws.jaxme.js.pattern

Class ChainGenerator


public class ChainGenerator
extends java.lang.Object

This class generates so-called event chains. A chain is an interface and an object implementing the interface. Internally the implementation is using a list of chained objects, which you can assume to implement the same interface.

Any event is passed to the first object in the list. The object may decide to resolve the event immediately and return. It may also call pass the event to the next object, take the returned value, possibly modify it and return the result. Finally, the chained object may decide to emit another event (which is passed along the same chain), and use the returned value.

Author:
Jochen Wiedmann

Method Summary

void
finish()
Validates the input data.
JavaSource[]
generate(JavaSourceFactory pFactory)
Performs the actual work by generating classes using the given pFactory.
JavaQName
getChainInterface()
Returns the interface being generated for the chain objects.
JavaSource
getControllerInterface()
Returns the controller interface.
JavaQName
getImplementationClass()
Returns the chain implementation classes name.
JavaQName
getProxyClass()
Returns the class being generated for the chain objects.
protected JavaSource[]
initControllerInterface()
Initializes the controller interface.
static void
main(String[] args)
void
setChainInterface(JavaQName pInterface)
Sets the interface being generated for the chain objects.
void
setChainInterfaceName(String pInterfaceName)
Sets the interface name being generated for the chain objects.
void
setControllerInterfaceName(String pInterfaceName)
Sets the controller interface name.
void
setImplementationClass(JavaQName pClassName)
Sets the chain implementation class.
void
setImplementationClassName(String pClassName)
Sets the name of the chain implementation class.
void
setProxyClass(JavaQName pClassName)
Sets the class being generated for the chain objects.
void
setProxyClassName(String pClassName)
Sets the class name being generated for the chain objects.

Method Details

finish

public void finish()
Validates the input data.

generate

public JavaSource[] generate(JavaSourceFactory pFactory)
            throws Exception
Performs the actual work by generating classes using the given pFactory.

getChainInterface

public JavaQName getChainInterface()
Returns the interface being generated for the chain objects.

getControllerInterface

public JavaSource getControllerInterface()
Returns the controller interface.

getImplementationClass

public JavaQName getImplementationClass()
Returns the chain implementation classes name. Defaults to getControllerInterface() + "Impl".

getProxyClass

public JavaQName getProxyClass()
Returns the class being generated for the chain objects. Defaults to getChainInterface() + "Impl".

initControllerInterface

protected JavaSource[] initControllerInterface()
            throws ClassNotFoundException,
                   RecognitionException,
                   TokenStreamException,
                   IOException
Initializes the controller interface.

main

public static void main(String[] args)
            throws Exception

setChainInterface

public void setChainInterface(JavaQName pInterface)
Sets the interface being generated for the chain objects.

setChainInterfaceName

public void setChainInterfaceName(String pInterfaceName)
Sets the interface name being generated for the chain objects.

setControllerInterfaceName

public void setControllerInterfaceName(String pInterfaceName)
            throws ClassNotFoundException
Sets the controller interface name.

setImplementationClass

public void setImplementationClass(JavaQName pClassName)
Sets the chain implementation class.

setImplementationClassName

public void setImplementationClassName(String pClassName)
Sets the name of the chain implementation class.

setProxyClass

public void setProxyClass(JavaQName pClassName)
Sets the class being generated for the chain objects.

setProxyClassName

public void setProxyClassName(String pClassName)
Sets the class name being generated for the chain objects.