[
https://issues.apache.org/jira/browse/POLYGENE-306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16453754#comment-16453754
]
Niclas Hedhman commented on POLYGENE-306:
-----------------------------------------
A complete example of what I would like to be able to do;
{code:java}
public class DynamicAnnotationTest extends AbstractPolygeneTest
{
@Override
public void assemble( ModuleAssembly module )
throws AssemblyException
{
module.services( Map.class ).withMixins( HashMap.class );
module.forMixin( HashMap.class )
.annotations( annotation( Disabled.class ) )
.put( null, null );
}
@Test
void test1()
throws Exception
{
Map underTest = serviceFinder.findService( Map.class ).get();
assertThrows( DisabledMethodException.class, () -> underTest.put( "1",
"2" ) );
}
@Target( ElementType.METHOD )
@Retention( RetentionPolicy.RUNTIME )
public @interface Disabled
{
}
@AppliesTo( Disabled.class )
public static class DisabledMethodConcern extends
ConcernOf<InvocationHandler>
implements InvocationHandler
{
@Override
public Object invoke( Object o, Method method, Object[] objects )
throws Throwable
{
throw new DisabledMethodException();
}
}
public static class DisabledMethodException extends RuntimeException
{
}
}
{code}
> Dynamic Method Annotations at bootstrap
> ---------------------------------------
>
> Key: POLYGENE-306
> URL: https://issues.apache.org/jira/browse/POLYGENE-306
> Project: Polygene
> Issue Type: New Feature
> Reporter: Niclas Hedhman
> Priority: Major
>
> Currently we can manipulate types pretty much freely at bootstrap, but we
> can't add annotations to methods, which would be useful for instance when
> working with external types not under one's control.
> This will need to add metaInfo to Property and add the annotation there,
> rather than trying to compile it into the method itself.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)