Mercurial > hg > AnnotationManagerN4J
comparison src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResourceImpl.java @ 91:cf44d9e1a4a7
let CORS be handled by Restlet 2.3 CorsFilter.
author | casties |
---|---|
date | Sun, 08 Feb 2015 18:09:00 +0100 |
parents | 475ab3d32630 |
children | acd44dfec9c8 |
comparison
equal
deleted
inserted
replaced
90:475ab3d32630 | 91:cf44d9e1a4a7 |
---|---|
42 | 42 |
43 import org.apache.commons.codec.binary.Base64; | 43 import org.apache.commons.codec.binary.Base64; |
44 import org.json.JSONArray; | 44 import org.json.JSONArray; |
45 import org.json.JSONException; | 45 import org.json.JSONException; |
46 import org.json.JSONObject; | 46 import org.json.JSONObject; |
47 import org.restlet.data.Header; | |
47 import org.restlet.data.Status; | 48 import org.restlet.data.Status; |
48 import org.restlet.data.Header; | |
49 import org.restlet.representation.Representation; | 49 import org.restlet.representation.Representation; |
50 import org.restlet.resource.Options; | |
51 import org.restlet.resource.ServerResource; | 50 import org.restlet.resource.ServerResource; |
52 import org.restlet.util.Series; | 51 import org.restlet.util.Series; |
53 | 52 |
54 import com.google.gson.JsonArray; | 53 import com.google.gson.JsonArray; |
55 import com.google.gson.JsonElement; | 54 import com.google.gson.JsonElement; |
74 | 73 |
75 protected static Logger logger = Logger.getLogger(AnnotatorResourceImpl.class.getCanonicalName()); | 74 protected static Logger logger = Logger.getLogger(AnnotatorResourceImpl.class.getCanonicalName()); |
76 | 75 |
77 private AnnotationStore store; | 76 private AnnotationStore store; |
78 | 77 |
79 protected String getAllowedMethodsForHeader() { | |
80 return "OPTIONS,GET,POST"; | |
81 } | |
82 | |
83 protected AnnotationStore getAnnotationStore() { | 78 protected AnnotationStore getAnnotationStore() { |
84 if (store == null) { | 79 if (store == null) { |
85 store = ((BaseRestlet) getApplication()).getAnnotationStore(); | 80 store = ((BaseRestlet) getApplication()).getAnnotationStore(); |
86 } | 81 } |
87 return store; | 82 return store; |
103 try { | 98 try { |
104 return new String(Base64.decodeBase64(id), "UTF-8"); | 99 return new String(Base64.decodeBase64(id), "UTF-8"); |
105 } catch (UnsupportedEncodingException e) { | 100 } catch (UnsupportedEncodingException e) { |
106 return null; | 101 return null; |
107 } | 102 } |
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"); | |
146 } | 103 } |
147 | 104 |
148 /** | 105 /** |
149 * returns if authentication information from headers is valid. | 106 * returns if authentication information from headers is valid. |
150 * | 107 * |