org.apache.ws.jaxme.js.pattern
Class ProxyGenerator
java.lang.Object
org.apache.ws.jaxme.js.pattern.ProxyGenerator
public class ProxyGenerator
extends java.lang.Object
This class is a generator for the proxy object pattern. A proxy
object performs the same task as an object created by the
java.lang.reflect.Proxy
class: It delegates its method
calls to an internal instance.
In the case of
java.lang.reflect.Proxy
this works by
invoking a so-called
java.lang.reflect.InvocationHandler
.
The InvocationHandler calls the actual object via Java reflection.
In our case, the proxy object is an instance of a generated
class. The main advantage of the generated approach is that you
can customize the proxy class quite easily by overwriting it.
Compared to the creation of an InvocationHandler, this saves a
lot of hazzle.
generate
public JavaSource generate(JavaSourceFactory pFactory,
JavaQName pTargetName,
InterfaceDescription[] pInterfaces)
throws Exception
Generates a class implementing the given interfaces.
pFactory
- The ProxyGenerator will use this factory for creating
instances of JavaSource.pTargetName
- Name of the generated classpInterfaces
- The interfaces being implemented by the generated class.
generateInterfaceMethods
protected void generateInterfaceMethods(JavaSource pJs,
Map pGeneratedMethods,
JavaSource pInterface)
throws ClassNotFoundException
Generates the methods for a given interface.
pJs
- The Java class being generatedpGeneratedMethods
- A set of already generated methods; each entry in the
set is an instance of MethodKey
. The method creates a new instance
of MethodKey
and adds it to the set. A warning is written to
System.err
, if the method isn't unique.
getExtendedClass
public JavaQName getExtendedClass()
Returns the class extended by the generated proxy class.
Defaults to java.lang.Object
.
setExtendedClass
public void setExtendedClass(JavaQName pExtendedClass)
Sets the class extended by the generated proxy class.
Defaults to java.lang.Object
.