package org.jboss.seam.example.restbay.resteasy;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.annotations.security.Restrict;
import org.jboss.seam.security.Identity;
import org.jboss.seam.transaction.Synchronizations;
/**
*
* @author Jozef Hartinger
*
*/
@Path("/secured")
@Name("securedResource")
@Produces("text/plain")
public class SecuredResource
{
@In
private Identity identity;
@GET
public String getHello()
{
return "Hello world!";
}
@GET
@Path("/admin")
public boolean isAdmin() {
return identity.hasRole("admin");
}
@GET
@Path("/restrictedAdmin")
@Restrict("#{s:hasRole('admin')}")
public boolean restrictedIsAdmin() {
return identity.hasRole("admin");
}
@GET
@Path("/synchronizationsLookup")
@Transactional
public boolean synchronizationsLookup()
{
Synchronizations ejb = (Synchronizations) Component.getInstance("org.jboss.seam.transaction.synchronizations", ScopeType.EVENT);
return ejb.isAwareOfContainerTransactions();
}
@GET
@Path("/ejbLookup")
public boolean ejbLookup()
{
TestEjbLocal ejb = (TestEjbLocal) Component.getInstance("securedEjb", ScopeType.EVENT);
return ejb.foo();
}
}