CreateDynamicProxy

Creates a dynamic proxy of the Box Class that is passed to a Java library.

Dynamic proxy lets you pass Box Classes to Java objects.

Java objects can work with the Box Class seamlessly as if they are native Java objects.

Method Signature

CreateDynamicProxy(class=[any], interfaces=[any], classLoader=[any])

Arguments

Argument
Type
Required
Description
Default

class

any

true

The Box Class to create a dynamic proxy of.

interfaces

any

true

The interfaces that the dynamic proxy should implement.

classLoader

any

false

New in 1.7.0 - Optional Java ClassLoader to use for loading the interfaces. Useful when working with custom ClassLoaders or when interfaces are loaded from non-standard locations.

Examples

Tag Syntax

<bx:set instance = new cfc.helloWorld() >
 <bx:set dynInstnace = createDynamicProxy( instance, [
	"MyInterface"
	] ) >
 <bx:set x = createObject( "java", "InvokeHelloProxy" ).init( dynInstnace ) >
 <bx:set y = x.invokeHello() >
 <bx:output>#y#</bx:output>

Script Syntax with Custom ClassLoader (New in 1.7.0)

// Create instance of Box Class
instance = new cfc.helloWorld();

// Get custom ClassLoader if needed
customClassLoader = createObject( "java", "java.lang.Thread" )
    .currentThread()
    .getContextClassLoader();

// Create dynamic proxy with custom ClassLoader
dynInstance = createDynamicProxy(
    instance,
    [ "MyInterface" ],
    customClassLoader
);

// Pass to Java library
x = createObject( "java", "InvokeHelloProxy" ).init( dynInstance );
y = x.invokeHello();
echo( y );

Last updated

Was this helpful?