throws Throwable
{
UnitOfWork unitOfWork = module.currentUnitOfWork();
ValueBuilder<DomainEventValue> builder = module.newValueBuilder( DomainEventValue.class );
DomainEventValue prototype = builder.prototype();
prototype.version().set( application.version() );
prototype.timestamp().set( unitOfWork.currentTime() );
prototype.context().set( proxy.getClass().getSuperclass().getName().split( "\\$" )[ 0 ] );
prototype.name().set( method.getName() );
int idx = 0;
for( Object arg : args )
{
idx++;
String name = "param" + idx;
ValueBuilder<ParameterValue> parameterBuilder = module.newValueBuilder( ParameterValue.class );
parameterBuilder.prototype().name().set( name );
parameterBuilder.prototype().value().set( arg );
prototype.parameters().get().add( parameterBuilder.newInstance() );
}
Iterables.addAll( prototype.selection().get(), Iterables.map( new Function<Object, String>()
{
@Override
public String map( Object o )
{
return o.toString();
}
}, ObjectSelection.current().selection() ) );
final DomainEventValue domainEvent = builder.newInstance();
// Send event to all interested parties in the ObjectSelection
for( Object selectedObject : ObjectSelection.current().selection() )
{
if( selectedObject instanceof Events )