Skip to content

Instantly share code, notes, and snippets.

@gastaldi
Created September 4, 2015 13:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gastaldi/46b3f38bc38c5efcc0ba to your computer and use it in GitHub Desktop.
Save gastaldi/46b3f38bc38c5efcc0ba to your computer and use it in GitHub Desktop.
package org.jboss.forge.addon.ui.input;
import javax.inject.Inject;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.forge.arquillian.AddonDependencies;
import org.jboss.forge.arquillian.archive.AddonArchive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(Arquillian.class)
public class MyTest
{
@Deployment
@AddonDependencies
public static AddonArchive getDeployment()
{
return ShrinkWrap.create(AddonArchive.class).addClasses(TargetPackage.class, TargetPackageProducer.class)
.addBeansXML();
}
@Inject
private TargetPackage targetPackage;
@Test
public void test()
{
Assert.assertNotNull(targetPackage);
Assert.assertEquals("targetPackage", targetPackage.getName());
}
}
package org.jboss.forge.addon.ui.input;
public interface TargetPackage extends UIInput<String>
{
}
package org.jboss.forge.addon.ui.input;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import javax.enterprise.inject.Produces;
public class TargetPackageProducer
{
// We could @Inject UIInput<String> input in here
@Produces
public TargetPackage createTargetPackage(InputComponentFactory factory)
{
final UIInput<String> input = factory.createInput("targetPackage", String.class);
return (TargetPackage) Proxy.newProxyInstance(getClass().getClassLoader(), new Class[] { TargetPackage.class },
new InvocationHandler()
{
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
{
return method.invoke(input, args);
}
});
}
}
@gastaldi
Copy link
Author

gastaldi commented Sep 4, 2015

a @typed(TargetPackage.class) is missing in the @produces method

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment