Clears info response when clearing init response
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / commands / Pazpar2Command.java
index a4fa51f..4a802df 100644 (file)
@@ -50,7 +50,7 @@ public abstract class Pazpar2Command implements Serializable  {
   }\r
       \r
   /**\r
-   * Commands must implement this method to provide an completely detached, deep clone of \r
+   * Commands must implement this method to provide a completely detached, deep clone of \r
    * themselves.\r
    * \r
    * The clone is needed by the state manager to transfer commands with current setting \r
@@ -80,7 +80,7 @@ public abstract class Pazpar2Command implements Serializable  {
   \r
   /**\r
    * Executes the commands with the currently selected parameters, while adding\r
-   * the parameters provided\r
+   * the parameters provided in the vararg\r
    * @param parameters A list of parameters on the form [key=value]\r
    * \r
    * @return Response data object based on the Pazpar2 service response\r
@@ -95,7 +95,30 @@ public abstract class Pazpar2Command implements Serializable  {
     }\r
     return run();\r
   }\r
-  \r
+\r
+  /**\r
+   * Executes the commands with the currently selected parameters, while adding\r
+   * the parameters provided in the 'delimiter'-separated String.\r
+   * \r
+   * Note: This is for Glassfish/JBoss support. With Tomcat7 the method \r
+   *       runWith(String... parameters) can be used directly from EL \r
+   *       with a vararg \r
+   *  \r
+   * @param parameters A list of parameters separated by 'delimiter'\r
+   * @param delimiter The separator character of the String 'parameters' \r
+   * \r
+   * @return Response data object based on the Pazpar2 service response\r
+   */\r
+  public ResponseDataObject runWith2(String parameters, String delimiter) {    \r
+    StringTokenizer params = new StringTokenizer(parameters,delimiter);\r
+    String[] vararg = new String[params.countTokens()];\r
+    int i=0;\r
+    while (params.hasMoreTokens()) {\r
+      vararg[i++] = params.nextToken();\r
+    }\r
+    return runWith(vararg);\r
+  }\r
+    \r
   /**\r
    * Executes the command in a thread.  \r
    * \r
@@ -196,6 +219,10 @@ public abstract class Pazpar2Command implements Serializable  {
     checkInState(copy);\r
   }\r
   \r
+  public void removeParameterInState (String name) {\r
+    parameters.remove(name);\r
+  }\r
+  \r
   /**\r
    * Removes multiple parameters completely and notifies the state manager\r
    * -- once -- about the change\r
@@ -231,6 +258,10 @@ public abstract class Pazpar2Command implements Serializable  {
     checkInState(copy);\r
   }\r
   \r
+  public void addExpressionInState (String parameterName, Expression expression) {\r
+    getParameter(parameterName).addExpression(expression);\r
+  }\r
+  \r
   public void removeExpression(String parameterName, Expression expression) {\r
     Pazpar2Command copy = this.copy();\r
     copy.getParameter(parameterName).removeExpression(expression);\r
@@ -244,12 +275,14 @@ public abstract class Pazpar2Command implements Serializable  {
   }\r
   \r
   public void removeExpressions(String parameterName, String... expressionFields) {\r
-    Pazpar2Command copy = this.copy();    \r
-    copy.getParameter(parameterName).removeExpressions(expressionFields);    \r
-    if (!getParameter(parameterName).hasValue() && !getParameter(parameterName).hasExpressions()) {\r
-      copy.parameters.remove(parameterName);\r
+    if (this.getParameter(parameterName) != null) {\r
+      Pazpar2Command copy = this.copy();    \r
+      copy.getParameter(parameterName).removeExpressions(expressionFields);    \r
+      if (!getParameter(parameterName).hasValue() && !getParameter(parameterName).hasExpressions()) {\r
+        copy.parameters.remove(parameterName);\r
+      }\r
+      checkInState(copy);    \r
     }\r
-    checkInState(copy);    \r
   }\r
   \r
   public boolean hasParameters () {\r