package org.jboss.seam.example.restbay.resteasy.interfacestatelesscomponent;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.example.restbay.resteasy.SubResource;
import org.jboss.seam.example.restbay.resteasy.TestComponent;
import org.jboss.seam.example.restbay.resteasy.TestForm;
import org.jboss.seam.example.restbay.resteasy.TestResource;
import javax.ws.rs.core.MultivaluedMap;
import java.util.GregorianCalendar;
import java.util.List;
/**
* @author Christian Bauer
*/
@Name("interfaceStatelessComponentTestResource")
@Scope(ScopeType.EVENT)
public class InterfaceStatelessComponentTestResourceBean extends TestResource implements InterfaceStatelessComponentTestResource
{
protected final String INSTANCE_CODE_KEY = "interfaceStatelessComponentTestResource.instanceCode";
// We want to verify that this is really stateless (Seam doesn't pool POJO instances, so that should work)
public InterfaceStatelessComponentTestResourceBean()
{
Integer instanceCode;
if ((instanceCode = (Integer)Contexts.getApplicationContext().get(INSTANCE_CODE_KEY)) != null)
{
assert !instanceCode.equals(hashCode());
}
Contexts.getApplicationContext().set(INSTANCE_CODE_KEY, hashCode());
}
protected void assertStateless()
{
assert !Contexts.getApplicationContext().get(INSTANCE_CODE_KEY).equals(hashCode());
}
@In
TestComponent testComponent;
@Override
public String echoUri()
{
assertStateless();
return super.echoUri();
}
@Override
public String echoQueryParam(String bar)
{
assertStateless();
return super.echoQueryParam(bar);
}
@Override
public String echoHeaderParam(String bar)
{
assertStateless();
return super.echoHeaderParam(bar);
}
@Override
public String echoCookieParam(String bar)
{
assertStateless();
return super.echoCookieParam(bar);
}
@Override
public String echoTwoParams(String one, String two)
{
assertStateless();
return super.echoTwoParams(one, two);
}
@Override
public String echoEncoded(String val)
{
assertStateless();
return super.echoEncoded(val);
}
@Override
public String echoFormParams(MultivaluedMap<String, String> formMap)
{
assertStateless();
return super.echoFormParams(formMap);
}
@Override
public String echoFormParams2(String[] foo)
{
assertStateless();
return super.echoFormParams2(foo);
}
@Override
public String echoFormParams3(TestForm form)
{
assertStateless();
return super.echoFormParams3(form);
}
@Override
public SubResource getBar(String baz)
{
assertStateless();
return super.getBar(baz);
}
@Override
public long convertPathParam(GregorianCalendar isoDate)
{
assertStateless();
return super.convertPathParam(isoDate);
}
@Override
public String throwException()
{
assertStateless();
return super.throwException();
}
@Override
public List<String[]> getCommaSeparated()
{
assertStateless();
assert headers.getAcceptableMediaTypes().size() == 2;
assert headers.getAcceptableMediaTypes().get(0).toString().equals("text/plain");
assert headers.getAcceptableMediaTypes().get(1).toString().equals("text/csv");
return testComponent.getCommaSeparated();
}
@Override
public String[] getCommaSeparatedStrings()
{
assertStateless();
return super.getCommaSeparatedStrings();
}
@Override
public Integer[] getCommaSeparatedIntegers()
{
assertStateless();
return super.getCommaSeparatedIntegers();
}
}