package org.openstack.atlas.api.resources.providers;
// Class that is can be injected into filters and the BaseResource class so
import java.util.Calendar;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.SecurityContext;
import javax.ws.rs.core.UriInfo;
// that you can pass information between the filter and Resource classes.
// Set the bean to scope="prototype" then set the property on any class that
// needs to share state at the Request level
public class RequestStateContainer {
private static final double msco = 60.00/100.00; // Millisecond to second coefficient
private HttpHeaders httpHeaders;
private SecurityContext securityContext;
private UriInfo uriInfo;
private final String id;
public RequestStateContainer() {
this.id = getHexHash();
nop();
}
public String getId(){
return this.id;
}
public final String getHexHash() {
String out;
String hexHash = Integer.toHexString(System.identityHashCode(this));
Calendar now = Calendar.getInstance();
int hr = now.get(Calendar.HOUR);
int mn = now.get(Calendar.MINUTE);
int sec = now.get(Calendar.SECOND);
int ms = now.get(Calendar.MILLISECOND);
int subsec = (int)(msco*ms);
out = String.format("%d:%d:%d:%d : %s",hr,mn,sec,subsec,hexHash);
return out;
}
private void nop() {
}
public HttpHeaders getHttpHeaders() {
return httpHeaders;
}
public void setHttpHeaders(HttpHeaders httpHeaders) {
this.httpHeaders = httpHeaders;
}
public SecurityContext getSecurityContext() {
return securityContext;
}
public void setSecurityContext(SecurityContext securityContext) {
this.securityContext = securityContext;
}
public UriInfo getUriInfo() {
return uriInfo;
}
public void setUriInfo(UriInfo uriInfo) {
this.uriInfo = uriInfo;
}
}