package com.acme.wicketint;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.apache.wicket.protocol.http.IWebApplicationFactory;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.http.WicketFilter;
public class BeanWebApplicationFactory implements IWebApplicationFactory
{
public WebApplication createApplication(WicketFilter filter)
{
BeanManager bm;
try
{
System.out.println("Trying java:comp/BeanManager...");
bm = (BeanManager) new InitialContext().lookup("java:comp/BeanManager");
}
catch (NamingException e)
{
try
{
System.out.println("Trying java:comp/env/BeanManager...");
bm = (BeanManager) new InitialContext().lookup("java:comp/env/BeanManager");
}
catch (NamingException e2)
{
throw new RuntimeException("Could not locate BeanManager in JNDI");
}
}
Bean<WebApplicationBeanResolver> resolverBean = (Bean<WebApplicationBeanResolver>) bm.resolve(bm.getBeans(WebApplicationBeanResolver.class));
CreationalContext<WebApplicationBeanResolver> cc = bm.createCreationalContext(resolverBean);
WebApplicationBeanResolver resolver = (WebApplicationBeanResolver) bm.getReference(resolverBean, WebApplicationBeanResolver.class, cc);
WebApplication webapp = resolver.resolveWebApplication();
cc.release();
return webapp;
}
}