Source de données
+Ces actions permettent de créer/supprimer les objets de la source de données.
+ +GET
method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(final HttpServletRequest request,
+ final HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Handles the HTTP POST
method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(final HttpServletRequest request,
+ final HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+}
diff --git a/src/main/java/core/web/RequestUtils.java b/src/main/java/core/web/RequestUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..2308a91a2e3a568409674b6a3076cb934d9c7862
--- /dev/null
+++ b/src/main/java/core/web/RequestUtils.java
@@ -0,0 +1,156 @@
+package core.web;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
+ * @author dominique huguenin (dominique.huguenin@rpn.ch)
+ */
+public final class RequestUtils {
+
+ private RequestUtils() {
+ }
+
+ public static final String HEADER_ACCEPT = "Accept";
+ public static final String HEADER_LOCATION = "Location";
+
+ public static final String MEDIA_TYPE_APPLICATION_JSON = "application/json";
+ public static final String MEDIA_TYPE_APPLICATION_XML = "application/xml";
+ public static final String MEDIA_TYPE_TEXT_PLAIN = "text/plain";
+ public static final String ENCODAGE_UTF8 = "UTF-8";
+
+ public static final String VERSION_PARAM = "version";
+
+ public static final String ACTION_PARAMETRE = "action";
+ public static final String ACTION_PATTERN_REGEX
+ = "([^\\]]*)(?:\\[([^=]*)=([^\\]]*)\\])?";
+ public static final int ACTION_PATTERN_GROUPE_KEY = 2;
+ public static final int ACTION_PATTERN_GROUPE_VALUE = 3;
+
+ private static final Logger LOG
+ = Logger.getLogger(RequestUtils.class.getName());
+
+ public static Long extractVersion(final HttpServletRequest req) {
+ return RequestUtils.extractLongParametre(req, VERSION_PARAM);
+ }
+
+ public static String extractAcceptHeader(final HttpServletRequest req) {
+ return extractParametre(req, HEADER_ACCEPT);
+ }
+
+ private static String extractParametre(
+ final HttpServletRequest req,
+ final String param) {
+ String value = req.getParameter(param);
+ if (value == null) {
+ value = "";
+ }
+ return value;
+ }
+
+ public static String extractId(
+ final HttpServletRequest req,
+ final Pattern idRegex) {
+ String id = null;
+
+ Matcher matcher = idRegex.matcher(req.getRequestURL());
+ if (matcher.matches()) {
+ id = matcher.group(1);
+
+ }
+ return id;
+ }
+
+ public static String extractActionParameter(
+ final HttpServletRequest request) {
+ String actionStr = request.getParameter(ACTION_PARAMETRE);
+ Pattern actionPattern = Pattern.compile(ACTION_PATTERN_REGEX);
+ if (actionStr != null) {
+ Matcher matcher = actionPattern.matcher(actionStr);
+ if (matcher.matches()) {
+ actionStr = matcher.group(1);
+ }
+ }
+ return actionStr;
+ }
+
+ /**
+ *
+ * @param request une requète
+ * @return les attributs de l'action
+ */
+ public static Map<%exception.printStackTrace(new PrintWriter(out));%>+