package org.karmaexchange.resources.msg;
import javax.annotation.Nullable;
import javax.ws.rs.WebApplicationException;
import org.karmaexchange.dao.BaseDao;
import org.karmaexchange.util.OfyUtil;
import com.googlecode.objectify.Key;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper=true)
@ToString(callSuper=true)
public class AuthorizationErrorInfo extends ErrorResponseMsg.ErrorInfo {
@Nullable
private String resourceKind;
@Nullable
private String resourceKey;
public static WebApplicationException createException(BaseDao<?> resource) {
return ErrorResponseMsg.createException(new AuthorizationErrorInfo(resource));
}
public static WebApplicationException createException(Key<?> resourceKey) {
return ErrorResponseMsg.createException(new AuthorizationErrorInfo(resourceKey));
}
private AuthorizationErrorInfo(BaseDao<?> resource) {
super("Authorization error", Type.NOT_AUTHORIZED, new IllegalAccessException());
if (resource.isKeyComplete()) {
resourceKey = Key.create(resource).getString();
}
resourceKind = OfyUtil.getKind(resource.getClass());
}
private AuthorizationErrorInfo(Key<?> resourceKey) {
super("Authorization error", Type.NOT_AUTHORIZED);
if ((resourceKey.getId() != 0) || (resourceKey.getName() != null)) {
this.resourceKey = resourceKey.getString();
}
resourceKind = resourceKey.getKind();
}
}