package org.jboss.resteasy.test.cdi.injection.resource;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
import java.util.HashMap;
import java.util.Iterator;
import java.util.logging.Logger;
@Path("/reverse")
@RequestScoped
public class ReverseInjectionResource {
public static final String NON_CONTEXTUAL = "non-contextual";
static HashMap<String, Object> store = new HashMap<String, Object>();
@Inject
int secret;
@Inject
private ReverseInjectionEJBHolderLocal holder;
@Inject
private Logger log;
@Inject
private CDIInjectionBookResource resource;
@POST
@Path("testScopes")
public Response testScopes() {
log.info("entered ReverseInjectionResource.testScopes()");
return holder.testScopes() ? Response.ok().build() : Response.serverError().build();
}
@POST
@Path("setup")
public Response setup() {
log.info("entered ReverseInjectionResource.setup()");
store.put("this.secret", this.secret);
store.put("holder.secret", holder.theSecret());
store.put("resource.secret", resource.theSecret());
store.put("resource", resource);
resource.getSet().add(new CDIInjectionBook("test"));
holder.setup();
return Response.ok().build();
}
@POST
@Path("test")
public Response test() {
log.info("entered ReverseInjectionResource.test()");
if (CDIInjectionBookResource.class.cast(store.get("resource")).getSet().size() > 0) {
Iterator<CDIInjectionBook> it = CDIInjectionBookResource.class.cast(store.get("resource")).getSet().iterator();
log.info("stored resource set:");
while (it.hasNext()) {
log.info(" " + it.next());
}
return Response.serverError().entity("stored resource set not empty").build();
}
if (secret == Integer.class.cast(store.get("this.secret"))) {
return Response.serverError().entity("secret == store.get(\"this.secret\") shouldn't be true").build();
}
if (holder.theSecret() == (Integer.class.cast(store.get("holder.secret")))) {
return Response.serverError().entity("holder.theSecret == store.get(\"holder.secret\") shouldn't be true").build();
}
if (resource.theSecret() == Integer.class.cast(store.get("resource.secret"))) {
return Response.serverError().entity("resource.theSecret() == store.get(\"resource.secret\") shouldn't be true").build();
}
if (holder.test()) {
return Response.ok().build();
} else {
return Response.serverError().build();
}
}
}