Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
fabrizzio-dotCMS committed Aug 30, 2024
1 parent ec70889 commit c3c8f78
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
15 changes: 15 additions & 0 deletions dotCMS/src/main/java/com/dotcms/rest/config/Disabled.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.dotcms.rest.config;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Disabled {
Response.Status status() default Status.NOT_FOUND;
String message() default "";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.dotcms.rest.config;

import com.dotmarketing.util.Logger;
import com.jayway.jsonpath.internal.Utils;
import java.io.IOException;
import javax.annotation.Priority;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.ResourceInfo;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.Provider;

@Provider
@Priority(1)
public class DisabledResourceFilter implements ContainerRequestFilter {

@Context
private ResourceInfo resourceInfo;

@Override
public void filter(final ContainerRequestContext requestContext) throws IOException {
Class<?> resourceClass = resourceInfo.getResourceClass();
if (resourceClass.isAnnotationPresent(Disabled.class)) {
final Disabled annotation = resourceClass.getAnnotation(Disabled.class);
final Status status = annotation.status();
final String message = Utils.isEmpty(annotation.message()) ? status.getReasonPhrase() : annotation.message();
requestContext.abortWith(Response.status(annotation.status()).entity(message).build());
Logger.debug(this.getClass(), "Resource " + resourceClass.getName() + " is marked disabled.");
}
}
}

0 comments on commit c3c8f78

Please sign in to comment.