Changeset 91:cf44d9e1a4a7 in AnnotationManagerN4J for src


Ignore:
Timestamp:
Feb 8, 2015, 5:09:00 PM (9 years ago)
Author:
casties
Branch:
default
Children:
92:aadf8760216d, 94:fcb6fe10e08c
Message:

let CORS be handled by Restlet 2.3 CorsFilter?.

Location:
src/main/java/de/mpiwg/itgroup/annotations/restlet
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotations.java

    r88 r91  
    5555public class AnnotatorAnnotations extends AnnotatorResourceImpl {
    5656
    57     protected String getAllowedMethodsForHeader() {
    58         return "OPTIONS,GET,POST,PUT,DELETE";
    59     }
    60 
    6157    /**
    6258     * GET with JSON content-type.
     
    6864    public Representation doGetJSON(Representation entity) {
    6965        logger.fine("AnnotatorAnnotations doGetJSON!");
    70         setCorsHeaders();
    7166        // id from URI /annotations/{id}
    7267        String id = null;
     
    165160    public Representation doPostJson(Representation entity) {
    166161        logger.fine("AnnotatorAnnotations doPostJSON!");
    167         // set headers
    168         setCorsHeaders();
    169162
    170163        // do authentication TODO: who's allowed to create?
     
    220213    public Representation doPutJSON(Representation entity) {
    221214        logger.fine("AnnotatorAnnotations doPutJSON!");
    222         setCorsHeaders();
    223215        // id from URI /annotations/{id}
    224216        String jsonId = (String) getRequest().getAttributes().get("id");
     
    283275    public Representation doDeleteJSON(Representation entity) {
    284276        logger.fine("AnnotatorAnnotations doDeleteJSON!");
    285         setCorsHeaders();
    286277        // id from URI /annotations/{id}
    287278        String jsonId = (String) getRequest().getAttributes().get("id");
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotationsByResources.java

    r88 r91  
    5050 */
    5151public class AnnotatorAnnotationsByResources extends AnnotatorResourceImpl {
    52     protected String getAllowedMethodsForHeader() {
    53         return "OPTIONS,GET";
    54     }
    5552
    5653    @Get("json")
    5754    public Representation doGetJSON(Representation entity) {
    5855        logger.fine("AnnotatorAnnotatonsByResource doGetJSON!");
    59         setCorsHeaders();
    6056
    6157        // do authentication
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotationsByTags.java

    r88 r91  
    4949 */
    5050public class AnnotatorAnnotationsByTags extends AnnotatorResourceImpl {
    51     protected String getAllowedMethodsForHeader() {
    52         return "OPTIONS,GET";
    53     }
    5451
    5552    @Get("json")
    5653    public Representation doGetJSON(Representation entity) {
    5754        logger.fine("AnnotatorAnnotatonsBytag doGetJSON!");
    58         setCorsHeaders();
    5955
    6056        // do authentication
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorGroups.java

    r88 r91  
    4848 */
    4949public class AnnotatorGroups extends AnnotatorResourceImpl {
    50     protected String getAllowedMethodsForHeader() {
    51         return "OPTIONS,GET";
    52     }
    5350
    5451    /**
     
    6461    public Representation doGetJSON(Representation entity) {
    6562        logger.fine("AnnotatorGroups doGetJSON!");
    66         setCorsHeaders();
    6763        // get user from auth token (preferred)
    6864        Person authUser = getUserFromAuthToken(entity);
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResourceImpl.java

    r90 r91  
    4545import org.json.JSONException;
    4646import org.json.JSONObject;
     47import org.restlet.data.Header;
    4748import org.restlet.data.Status;
    48 import org.restlet.data.Header;
    4949import org.restlet.representation.Representation;
    50 import org.restlet.resource.Options;
    5150import org.restlet.resource.ServerResource;
    5251import org.restlet.util.Series;
     
    7776    private AnnotationStore store;
    7877
    79     protected String getAllowedMethodsForHeader() {
    80         return "OPTIONS,GET,POST";
    81     }
    82 
    8378    protected AnnotationStore getAnnotationStore() {
    8479        if (store == null) {
     
    106101            return null;
    107102        }
    108     }
    109 
    110     /**
    111      * Handle options request to allow CORS for AJAX.
    112      *
    113      * @param entity
    114      */
    115     @Options
    116     public void doOptions(Representation entity) {
    117         logger.fine("AnnotatorResourceImpl doOptions!");
    118         setCorsHeaders();
    119     }
    120 
    121     /**
    122      * set headers to allow CORS for AJAX.
    123      */
    124     protected void setCorsHeaders() {
    125         Series<Header> responseHeaders = (Series<Header>) getResponse().getHeaders();
    126         if (responseHeaders == null) {
    127             responseHeaders = new Series<Header>(Header.class);
    128             getResponse().getAttributes().put("org.restlet.http.headers", responseHeaders);
    129         }
    130         responseHeaders.add("Access-Control-Allow-Methods", getAllowedMethodsForHeader());
    131         // echo back Origin and Request-Headers
    132         @SuppressWarnings("unchecked")
    133         Series<Header> requestHeaders = (Series<Header>) getRequest().getAttributes().get("org.restlet.http.headers");
    134         String origin = requestHeaders.getFirstValue("Origin", true);
    135         if (origin == null) {
    136             responseHeaders.add("Access-Control-Allow-Origin", "*");
    137         } else {
    138             responseHeaders.add("Access-Control-Allow-Origin", origin);
    139         }
    140         String allowHeaders = requestHeaders.getFirstValue("Access-Control-Request-Headers", true);
    141         if (allowHeaders != null) {
    142             responseHeaders.add("Access-Control-Allow-Headers", allowHeaders);
    143         }
    144         responseHeaders.add("Access-Control-Allow-Credentials", "true");
    145         responseHeaders.add("Access-Control-Max-Age", "60");
    146103    }
    147104
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResources.java

    r75 r91  
    4949 */
    5050public class AnnotatorResources extends AnnotatorResourceImpl {
    51     protected String getAllowedMethodsForHeader() {
    52         return "OPTIONS,GET";
    53     }
    5451
    5552    /**
     
    6360    public Representation doGetJSON(Representation entity) {
    6461        logger.fine("AnnotatorResources doGetJSON!");
    65         setCorsHeaders();
    6662
    6763        String jsonId = (String) getRequest().getAttributes().get("id");
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorRestlet.java

    r89 r91  
    2323 */
    2424
     25import java.util.Arrays;
     26import java.util.HashSet;
     27
    2528import org.restlet.Restlet;
     29import org.restlet.engine.application.CorsFilter;
    2630import org.restlet.routing.Router;
    2731
     
    3236public class AnnotatorRestlet extends BaseRestlet {
    3337
    34     public final String version = "AnnotationManagerN4J/Annotator 0.5.0";
     38    public final String version = "AnnotationManagerN4J/Annotator 0.5.1";
    3539
    3640    /*
     
    4145    @Override
    4246    public Restlet createInboundRoot() {
    43         // this.authenticator = createAuthenticator();
    4447
    4548        Router router = new Router(getContext());
    46 
     49       
    4750        router.attach("/annotations", AnnotatorAnnotations.class);
    4851        router.attach("/annotations/{id}", AnnotatorAnnotations.class);
     
    5659        router.attach("/resources/{id}/annotations", AnnotatorAnnotationsByResources.class);
    5760        router.attach("/", AnnotatorInfo.class);
     61        //return router;
     62
     63        // this.authenticator = createAuthenticator();
    5864        // authenticator.setNext(router);
    5965        // return authenticator;
    6066
    61         return router;
     67        // handle Cross-Origin-Resource-Security headers
     68        CorsFilter corsFilter = new CorsFilter(getContext(), router);
     69        corsFilter.setAllowedOrigins(new HashSet<String>(Arrays.asList("*")));
     70        corsFilter.setAllowedCredentials(true);
     71        corsFilter.setNext(router);
     72        return corsFilter;
     73
    6274    }
    6375
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorSearch.java

    r89 r91  
    1 /**
    2  * Implements the "search" uri of the Annotator API.
    3  */
    41package de.mpiwg.itgroup.annotations.restlet;
    52
     
    5249public class AnnotatorSearch extends AnnotatorResourceImpl {
    5350
    54     protected String getAllowedMethodsForHeader() {
    55         return "OPTIONS,GET";
    56     }
    57 
    5851    /**
    5952     * result for JSON content-type. optional search parameters: uri, user, limit,
     
    6659    public Representation doGetJSON(Representation entity) {
    6760        logger.fine("AnnotatorSearch doGetJSON!");
    68         setCorsHeaders();
    6961        // do authentication
    7062        Person authUser = getUserFromAuthToken(entity);
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorTags.java

    r75 r91  
    1 /**
    2  * ReST API for accessing groups in the Annotation store.
    3  */
    41package de.mpiwg.itgroup.annotations.restlet;
    52
     
    4946 */
    5047public class AnnotatorTags extends AnnotatorResourceImpl {
    51     protected String getAllowedMethodsForHeader() {
    52         return "OPTIONS,GET";
    53     }
    5448
    5549    /**
     
    6559    public Representation doGetJSON(Representation entity) {
    6660        logger.fine("AnnotatorGroups doGetJSON!");
    67         setCorsHeaders();
    6861
    6962        String jsonId = (String) getRequest().getAttributes().get("id");
Note: See TracChangeset for help on using the changeset viewer.