You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2015/03/14 01:40:45 UTC

svn commit: r1666625 - in /qpid/trunk/qpid: doc/book/src/java-broker/management/channels/ java/broker-core/src/main/java/org/apache/qpid/server/model/ java/broker-core/src/main/java/org/apache/qpid/server/model/port/ java/broker-core/src/main/java/org/...

Author: orudyy
Date: Sat Mar 14 00:40:45 2015
New Revision: 1666625

URL: http://svn.apache.org/r1666625
Log:
QPID-6449: [Java Broker] Change REST interfaces to return 422 status code from create/update requests when provided attribute values are invalid or required attributes are missing

Modified:
    qpid/trunk/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-REST-API.xml
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
    qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
    qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
    qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/BindingRestTest.java
    qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/BrokerRestTest.java
    qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
    qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/HttpManagementRestTest.java
    qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/PortRestTest.java
    qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java
    qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
    qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/acl/ExchangeRestACLTest.java

Modified: qpid/trunk/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-REST-API.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-REST-API.xml?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-REST-API.xml (original)
+++ qpid/trunk/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-REST-API.xml Sat Mar 14 00:40:45 2015
@@ -495,6 +495,97 @@
       </varlistentry>
     </variablelist>
   </section>
+  <section id="Java-Broker-Management-Channel-REST-API-Status-Codes">
+    <title>HTTP status codes returned by REST interfaces</title>
+    <table>
+    <title>HTTP status codes returned by REST interfaces</title>
+    <tgroup cols="2">
+    <thead>
+      <row>
+        <entry>Status code</entry>
+        <entry>Description</entry>
+      </row>
+    </thead>
+    <tbody>
+      <row>
+        <entry>
+          <para>200</para>
+        </entry>
+        <entry>
+          <para>REST request is successfully completed. This status code can be returned by update, delete and get requests.</para>
+        </entry>
+      </row>
+      <row>
+        <entry>
+          <para>201</para>
+        </entry>
+        <entry>
+          <para>New configured object is created. It is returned by REST PUT and POST requests for creation of configured objects.</para>
+        </entry>
+      </row>
+      <row>
+        <entry>
+          <para>400</para>
+        </entry>
+        <entry>
+          <para>REST request cannot be performed due to errors in request.
+            It can be returned from create, update and delete requests.
+            The details of a problem are provided in the response payload in json format.</para>
+        </entry>
+      </row>
+      <row>
+        <entry>
+          <para>401</para>
+        </entry>
+        <entry>
+          <para>The request requires user authentication</para>
+        </entry>
+      </row>
+      <row>
+        <entry>
+          <para>403</para>
+        </entry>
+        <entry>
+          <para>Execution of request is not allowed due to failure to authorize user operation.</para>
+        </entry>
+      </row>
+      <row>
+        <entry>
+          <para>404</para>
+        </entry>
+        <entry>
+          <para>
+            The requested configured object cannot be found. This status code can be returned from POST update requests if configured object does not exist.
+            The reason for the status code is provided in the response payload in json format.
+          </para>
+        </entry>
+      </row>
+      <row>
+        <entry>
+          <para>409</para>
+        </entry>
+        <entry>
+          <para>The request can not be performed because its execution can create conflicts in the broker.
+            This status code can be returned from POST/PUT create requests against parent URI if configured object with requested name or id already exists.
+            The status code 409 can also be returned if removal or update of configured object can violate system integrity.
+            The reason for the status code is provided in the response payload in json format.
+          </para>
+        </entry>
+      </row>
+      <row>
+        <entry>
+          <para>422</para>
+        </entry>
+        <entry>
+          <para>The request can not be performed because provided information either incomplete or invalid.
+            This status code can be returned from create or update requests.
+            The reason for the status code is provided in the response payload in json format.</para>
+        </entry>
+      </row>
+    </tbody>
+    </tgroup>
+    </table>
+  </section>
   <section id="Java-Broker-Management-Channel-REST-API-Examples">
     <title>Examples of REST requests with curl</title>
   <example>

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java Sat Mar 14 00:40:45 2015
@@ -2615,18 +2615,18 @@ public abstract class AbstractConfigured
         }
     }
 
-    protected final static class DuplicateIdException extends IllegalArgumentException
+    public final static class DuplicateIdException extends IllegalArgumentException
     {
-        public DuplicateIdException(final ConfiguredObject<?> child)
+        private DuplicateIdException(final ConfiguredObject<?> child)
         {
             super("Child of type " + child.getClass().getSimpleName() + " already exists with id of " + child.getId());
         }
     }
 
-    protected final static class DuplicateNameException extends IllegalArgumentException
+    public final static class DuplicateNameException extends IllegalArgumentException
     {
         private final String _name;
-        public DuplicateNameException(final ConfiguredObject<?> child)
+        private DuplicateNameException(final ConfiguredObject<?> child)
         {
             super("Child of type " + child.getClass().getSimpleName() + " already exists with name of " + child.getName());
             _name = child.getName();

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java Sat Mar 14 00:40:45 2015
@@ -30,6 +30,7 @@ import java.util.Set;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.qpid.server.model.IntegrityViolationException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -326,7 +327,7 @@ abstract public class AbstractPort<X ext
                     intersection.retainAll(getProtocols());
                     if(!intersection.isEmpty())
                     {
-                        throw new IllegalConfigurationException("Port for protocols " + intersection + " already exists. Only one management port per protocol can be created.");
+                        throw new IntegrityViolationException("Port for protocols " + intersection + " already exists. Only one management port per protocol can be created.");
                     }
                 }
             }

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java Sat Mar 14 00:40:45 2015
@@ -342,31 +342,15 @@ public abstract class PrincipalDatabaseA
             String username = (String) attributes.get("name");
             String password = (String) attributes.get("password");
             Principal p = new UsernamePrincipal(username);
-            if (_userMap.containsKey(p))
-            {
-                throw new IllegalArgumentException("User '" + username + "' already exists");
-            }
-
+            PrincipalAdapter principalAdapter = new PrincipalAdapter(p);
+            principalAdapter.create(); // for a duplicate user DuplicateNameException should be thrown
             boolean created = getPrincipalDatabase().createPrincipal(p, password.toCharArray());
-            if(created)
-            {
-                p = getPrincipalDatabase().getUser(username);
-
-                PrincipalAdapter principalAdapter = new PrincipalAdapter(p);
-                principalAdapter.create();
-                _userMap.put(p, principalAdapter);
-            }
-
-            if(created)
+            if (!created)
             {
-                return (C) _userMap.get(p);
-            }
-            else
-            {
-                LOGGER.info("Failed to create user " + username + ". User already exists?");
-                return null;
-
+                throw new IllegalArgumentException("User '" + username + "' was not added into principal database");
             }
+            _userMap.put(p, principalAdapter);
+            return (C)principalAdapter;
         }
 
         return super.addChild(childClass, attributes, otherParents);

Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java Sat Mar 14 00:40:45 2015
@@ -41,6 +41,7 @@ import org.apache.qpid.server.model.Brok
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.ConfiguredObjectFactory;
 import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl;
+import org.apache.qpid.server.model.IntegrityViolationException;
 import org.apache.qpid.server.model.KeyStore;
 import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.Protocol;
@@ -374,7 +375,7 @@ public class PortFactoryTest extends Qpi
             _port = _factory.create(Port.class, attributes, _broker);
             fail("RMI port creation should fail as another one already exist");
         }
-        catch(IllegalConfigurationException e)
+        catch(IntegrityViolationException e)
         {
             // pass
         }

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java Sat Mar 14 00:40:45 2015
@@ -18,7 +18,6 @@ package org.apache.qpid.server.managemen
 
 import java.io.IOException;
 import java.io.Writer;
-import java.net.URL;
 import java.security.AccessControlException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -38,6 +37,11 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.Part;
 
+import org.apache.qpid.server.model.AbstractConfiguredObject;
+import org.apache.qpid.server.model.IllegalStateTransitionException;
+import org.apache.qpid.server.model.IntegrityViolationException;
+import org.apache.qpid.server.virtualhost.ExchangeExistsException;
+import org.apache.qpid.server.virtualhost.QueueExistsException;
 import org.codehaus.jackson.map.ObjectMapper;
 import org.codehaus.jackson.map.SerializationConfig;
 import org.slf4j.Logger;
@@ -64,6 +68,7 @@ public class RestServlet extends Abstrac
     public static final String INCLUDE_SYS_CONTEXT_PARAM = "includeSysContext";
     public static final String INHERITED_ACTUALS_PARAM = "inheritedActuals";
     public static final String EXTRACT_INITIAL_CONFIG_PARAM = "extractInitialConfig";
+    public static final int SC_UNPROCESSABLE_ENTITY = 422;
 
     /**
      * Signifies that the agent wishes the servlet to set the Content-Disposition on the
@@ -655,9 +660,17 @@ public class RestServlet extends Abstrac
         }
         else
         {
-            int responseCode = HttpServletResponse.SC_CONFLICT;
+            int responseCode = HttpServletResponse.SC_BAD_REQUEST;
             String message = e.getMessage();
-            if (e instanceof IllegalConfigurationException || e instanceof IllegalArgumentException)
+            if (e instanceof ExchangeExistsException || e instanceof QueueExistsException
+                    || e instanceof AbstractConfiguredObject.DuplicateIdException
+                    || e instanceof AbstractConfiguredObject.DuplicateNameException
+                    || e instanceof IntegrityViolationException
+                    || e instanceof IllegalStateTransitionException)
+            {
+                responseCode = HttpServletResponse.SC_CONFLICT;
+            }
+            else if (e instanceof IllegalConfigurationException || e instanceof IllegalArgumentException)
             {
                 if (LOGGER.isDebugEnabled())
                 {
@@ -667,6 +680,7 @@ public class RestServlet extends Abstrac
                 {
                     LOGGER.trace(e.getClass().getSimpleName() + " processing request", e);
                 }
+                responseCode = SC_UNPROCESSABLE_ENTITY;
             }
             else
             {

Modified: qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java Sat Mar 14 00:40:45 2015
@@ -27,6 +27,7 @@ import java.util.Map;
 import java.util.UUID;
 
 import org.apache.qpid.server.BrokerOptions;
+import org.apache.qpid.server.management.plugin.servlet.rest.RestServlet;
 import org.apache.qpid.server.model.AuthenticationProvider;
 import org.apache.qpid.server.model.BrokerModel;
 import org.apache.qpid.server.model.ConfiguredObject;
@@ -103,7 +104,7 @@ public class AuthenticationProviderRestT
         attributes.put(AuthenticationProvider.ID, UUID.randomUUID());
 
         responseCode = getRestTestHelper().submitRequest("authenticationprovider/" + providerName, "PUT", attributes);
-        assertEquals("Update with new ID should fail", 409, responseCode);
+        assertEquals("Update with new ID should fail", RestServlet.SC_UNPROCESSABLE_ENTITY, responseCode);
     }
 
     public void testDeleteOfUsedAuthenticationProviderFails() throws Exception
@@ -128,7 +129,7 @@ public class AuthenticationProviderRestT
         assertEquals("Unexpected response code for port creation", 201, responseCode);
 
         responseCode = getRestTestHelper().submitRequest("authenticationprovider/" + providerName , "DELETE");
-        assertEquals("Unexpected response code for provider deletion", 409, responseCode);
+        assertEquals("Unexpected response code for deletion of provider in use", 409, responseCode);
 
         List<Map<String, Object>> providerDetails = getRestTestHelper().getJsonAsList("authenticationprovider/" + providerName);
         assertNotNull("Providers details cannot be null", providerDetails);

Modified: qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/BindingRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/BindingRestTest.java?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/BindingRestTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/BindingRestTest.java Sat Mar 14 00:40:45 2015
@@ -24,6 +24,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.qpid.server.management.plugin.servlet.rest.RestServlet;
 import org.apache.qpid.server.model.Binding;
 
 public class BindingRestTest extends QpidRestTestCase
@@ -126,6 +127,6 @@ public class BindingRestTest extends Qpi
         attributes.put(Binding.ARGUMENTS, "blah");
 
         responseCode = getRestTestHelper().submitRequest(bindingUrl, "PUT", attributes);
-        assertEquals("Update should be unsupported", 409, responseCode);
+        assertEquals("Update should be unsupported", RestServlet.SC_UNPROCESSABLE_ENTITY, responseCode);
     }
 }

Modified: qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/BrokerRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/BrokerRestTest.java?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/BrokerRestTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/BrokerRestTest.java Sat Mar 14 00:40:45 2015
@@ -33,6 +33,7 @@ import javax.jms.Session;
 import javax.jms.TextMessage;
 
 import org.apache.qpid.common.QpidProperties;
+import org.apache.qpid.server.management.plugin.servlet.rest.RestServlet;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.BrokerModel;
 import org.apache.qpid.server.model.ConfiguredObject;
@@ -144,7 +145,8 @@ public class BrokerRestTest extends Qpid
             Map<String, Object> brokerAttributes = getValidBrokerAttributes();
             brokerAttributes.put(entry.getKey(), entry.getValue());
             int response = getRestTestHelper().submitRequest("broker", "PUT", brokerAttributes);
-            assertEquals("Unexpected update response for invalid attribute " + entry.getKey() + "=" + entry.getValue(), 409, response);
+            assertEquals("Unexpected update response for invalid attribute " + entry.getKey() + "=" + entry.getValue(),
+                    RestServlet.SC_UNPROCESSABLE_ENTITY, response);
         }
 
     }

Modified: qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java Sat Mar 14 00:40:45 2015
@@ -20,6 +20,8 @@
  */
 package org.apache.qpid.systest.rest;
 
+import static  org.apache.qpid.server.management.plugin.servlet.rest.RestServlet.SC_UNPROCESSABLE_ENTITY;
+
 import java.io.File;
 import java.io.FileOutputStream;
 import java.util.HashMap;
@@ -177,7 +179,7 @@ public class GroupProviderRestTest exten
         attributes.put(GroupProvider.TYPE, FileBasedGroupProviderImpl.GROUP_FILE_PROVIDER_TYPE);
 
         int responseCode = getRestTestHelper().submitRequest("groupprovider/" + providerName, "PUT", attributes);
-        assertEquals("Group provider was created", 409, responseCode);
+        assertEquals("Group provider was created", SC_UNPROCESSABLE_ENTITY, responseCode);
     }
 
     public void testCreateNewFileGroupProviderFromNonExistingGroupFile() throws Exception
@@ -228,7 +230,7 @@ public class GroupProviderRestTest exten
 
             attributes.put(GroupProvider.NAME, providerName + 2);
             responseCode = getRestTestHelper().submitRequest("groupprovider/" + providerName + 2, "PUT", attributes);
-            assertEquals("Group provider for the same group file was created", 409, responseCode);
+            assertEquals("Group provider for the same group file was created", SC_UNPROCESSABLE_ENTITY, responseCode);
         }
         finally
         {
@@ -275,13 +277,20 @@ public class GroupProviderRestTest exten
             attributes.put(FileBasedGroupProvider.PATH, groupFile.getAbsolutePath());
 
             int responseCode = getRestTestHelper().submitRequest("groupprovider/" + providerName, "PUT", attributes);
-            assertEquals("Expected to fail because we can have only one password provider", 201, responseCode);
+            assertEquals("Password provider should be created successfully", 201, responseCode);
 
-            File newGroupFile = new File(TMP_FOLDER + File.separator + getTestName() + File.separator + "groups");
-            attributes.put(FileBasedGroupProvider.PATH, newGroupFile.getAbsolutePath());
+            File newGroupFile = TestFileUtils.createTempFile(this, ".groups");
+            try
+            {
+                attributes.put(FileBasedGroupProvider.PATH, newGroupFile.getAbsolutePath());
 
-            responseCode = getRestTestHelper().submitRequest("groupprovider/" + providerName, "PUT", attributes);
-            assertEquals("Expected to fail because we can have only one password provider", 409, responseCode);
+                responseCode = getRestTestHelper().submitRequest("groupprovider/" + providerName, "PUT", attributes);
+                assertEquals("Changing of group file is unsupported at the moment", SC_UNPROCESSABLE_ENTITY, responseCode);
+            }
+            finally
+            {
+                newGroupFile.delete();
+            }
         }
         finally
         {

Modified: qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/HttpManagementRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/HttpManagementRestTest.java?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/HttpManagementRestTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/HttpManagementRestTest.java Sat Mar 14 00:40:45 2015
@@ -24,6 +24,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.qpid.server.management.plugin.HttpManagement;
+import org.apache.qpid.server.management.plugin.servlet.rest.RestServlet;
 import org.apache.qpid.test.utils.TestBrokerConfiguration;
 
 public class HttpManagementRestTest extends QpidRestTestCase
@@ -80,12 +81,13 @@ public class HttpManagementRestTest exte
             Map<String, Object> attributes = new HashMap<String, Object>();
             attributes.put(invalidAttribute.getKey(), invalidAttribute.getValue());
             int response = getRestTestHelper().submitRequest("plugin/" + TestBrokerConfiguration.ENTRY_NAME_HTTP_MANAGEMENT, "PUT", attributes);
-            assertEquals("Update should fail for attribute " + invalidAttribute.getKey() + " with value " + invalidAttribute.getValue() , 409, response);
+            assertEquals("Update should fail for attribute " + invalidAttribute.getKey() + " with value " + invalidAttribute.getValue(),
+                    RestServlet.SC_UNPROCESSABLE_ENTITY, response);
         }
 
         Map<String, Object> attributes = new HashMap<String, Object>();
         attributes.put(HttpManagement.TIME_OUT, -1l);
         int response  = getRestTestHelper().submitRequest("plugin/" + TestBrokerConfiguration.ENTRY_NAME_HTTP_MANAGEMENT, "PUT", attributes);
-        assertEquals("Update should fail for invalid session timeout", 409, response);
+        assertEquals("Update should fail for invalid session timeout", RestServlet.SC_UNPROCESSABLE_ENTITY, response);
     }
 }

Modified: qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/PortRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/PortRestTest.java?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/PortRestTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/PortRestTest.java Sat Mar 14 00:40:45 2015
@@ -20,6 +20,8 @@
  */
 package org.apache.qpid.systest.rest;
 
+import static org.apache.qpid.server.management.plugin.servlet.rest.RestServlet.SC_UNPROCESSABLE_ENTITY;
+
 import java.net.ServerSocket;
 import java.util.Arrays;
 import java.util.Collection;
@@ -233,7 +235,7 @@ public class PortRestTest extends QpidRe
         attributes.put(Port.TRANSPORTS, Collections.singleton(Transport.SSL));
 
         int responseCode = getRestTestHelper().submitRequest("port/" + portName, "PUT", attributes);
-        assertEquals("Creation of SSL port without keystore should fail", 409, responseCode);
+        assertEquals("Creation of SSL port without keystore should fail", SC_UNPROCESSABLE_ENTITY, responseCode);
     }
 
     public void testUpdateWantNeedClientAuth() throws Exception
@@ -270,7 +272,8 @@ public class PortRestTest extends QpidRe
         attributes.put(Port.TRANSPORTS, Collections.singleton(Transport.TCP));
 
         responseCode = getRestTestHelper().submitRequest("port/" + portName, "PUT", attributes);
-        assertEquals("Should not be able to change transport to TCP without reseting of attributes for need/want client auth", 409, responseCode);
+        assertEquals("Should not be able to change transport to TCP without reseting of attributes for need/want client auth",
+                SC_UNPROCESSABLE_ENTITY, responseCode);
 
         attributes = new HashMap<String, Object>();
         attributes.put(Port.NAME, portName);
@@ -298,13 +301,13 @@ public class PortRestTest extends QpidRe
         attributes.put(Port.NAME, portName);
         attributes.put(Port.NEED_CLIENT_AUTH, true);
         int responseCode = getRestTestHelper().submitRequest("port/" + portName, "PUT", attributes);
-        assertEquals("Unexpected response when trying to set 'needClientAuth' on non-SSL port", 409, responseCode);
+        assertEquals("Unexpected response when trying to set 'needClientAuth' on non-SSL port", SC_UNPROCESSABLE_ENTITY, responseCode);
 
         attributes = new HashMap<String, Object>();
         attributes.put(Port.NAME, portName);
         attributes.put(Port.WANT_CLIENT_AUTH, true);
         responseCode = getRestTestHelper().submitRequest("port/" + portName, "PUT", attributes);
-        assertEquals("Unexpected response when trying to set 'wantClientAuth' on non-SSL port", 409, responseCode);
+        assertEquals("Unexpected response when trying to set 'wantClientAuth' on non-SSL port", SC_UNPROCESSABLE_ENTITY, responseCode);
     }
 
     public void testUpdatePortAuthenticationProvider() throws Exception
@@ -314,7 +317,7 @@ public class PortRestTest extends QpidRe
         attributes.put(Port.NAME, portName);
         attributes.put(Port.AUTHENTICATION_PROVIDER, "non-existing");
         int responseCode = getRestTestHelper().submitRequest("port/" + portName, "PUT", attributes);
-        assertEquals("Unexpected response when trying to change auth provider to non-existing one", 409, responseCode);
+        assertEquals("Unexpected response when trying to change auth provider to non-existing one", SC_UNPROCESSABLE_ENTITY, responseCode);
 
         attributes = new HashMap<String, Object>();
         attributes.put(Port.NAME, portName);
@@ -357,7 +360,7 @@ public class PortRestTest extends QpidRe
         attributes.put(Port.AUTHENTICATION_PROVIDER, TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER);
 
         int responseCode = getRestTestHelper().submitRequest("port/" + newPortName, "PUT", attributes);
-        assertEquals("Unexpected response code for port creation", 409, responseCode);
+        assertEquals("Unexpected response code for port creation", SC_UNPROCESSABLE_ENTITY, responseCode);
 
         List<Map<String,Object>> ports  = getRestTestHelper().getJsonAsList("port/" + getRestTestHelper().encodeAsUTF(newPortName));
         assertTrue("Port should not be created", ports.isEmpty());

Modified: qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java Sat Mar 14 00:40:45 2015
@@ -20,6 +20,8 @@
  */
 package org.apache.qpid.systest.rest;
 
+import static  org.apache.qpid.server.management.plugin.servlet.rest.RestServlet.SC_UNPROCESSABLE_ENTITY;
+
 import java.io.IOException;
 import java.util.Collections;
 import java.util.HashMap;
@@ -388,7 +390,7 @@ public class VirtualHostRestTest extends
     {
         String queueName = getTestQueueName() + "-sorted";
         int responseCode = tryCreateQueue(queueName, "sorted", null);
-        assertEquals("Unexpected response code", HttpServletResponse.SC_CONFLICT, responseCode);
+        assertEquals("Unexpected response code", SC_UNPROCESSABLE_ENTITY, responseCode);
 
         Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("virtualhost/test");
 
@@ -433,7 +435,7 @@ public class VirtualHostRestTest extends
     {
         String queueName = getTestQueueName();
         int responseCode = tryCreateQueue(queueName, "unsupported", null);
-        assertEquals("Unexpected response code", HttpServletResponse.SC_CONFLICT, responseCode);
+        assertEquals("Unexpected response code", SC_UNPROCESSABLE_ENTITY, responseCode);
 
         Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("virtualhost/test");
 

Modified: qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java Sat Mar 14 00:40:45 2015
@@ -27,6 +27,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.qpid.server.management.plugin.servlet.rest.RestServlet;
 import org.codehaus.jackson.JsonGenerationException;
 import org.codehaus.jackson.map.JsonMappingException;
 import org.apache.qpid.server.management.plugin.HttpManagement;
@@ -663,7 +664,7 @@ public class BrokerACLTest extends QpidR
         attributes.put(GroupProvider.TYPE, FileBasedGroupProviderImpl.GROUP_FILE_PROVIDER_TYPE);
         attributes.put(FileBasedGroupProvider.PATH, "/path/to/file");
         responseCode = getRestTestHelper().submitRequest("groupprovider/" + groupProviderName, "PUT", attributes);
-        assertEquals("Setting of group provider attributes should be allowed but not supported", 409, responseCode);
+        assertEquals("Setting of group provider attributes should be allowed but not supported", RestServlet.SC_UNPROCESSABLE_ENTITY, responseCode);
     }
 
     public void testSetGroupProviderAttributesDenied() throws Exception

Modified: qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/acl/ExchangeRestACLTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/acl/ExchangeRestACLTest.java?rev=1666625&r1=1666624&r2=1666625&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/acl/ExchangeRestACLTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/acl/ExchangeRestACLTest.java Sat Mar 14 00:40:45 2015
@@ -21,6 +21,7 @@
 package org.apache.qpid.systest.rest.acl;
 
 import org.apache.qpid.server.management.plugin.HttpManagement;
+import org.apache.qpid.server.management.plugin.servlet.rest.RestServlet;
 import org.apache.qpid.server.model.Binding;
 import org.apache.qpid.server.model.Exchange;
 import org.apache.qpid.server.model.Plugin;
@@ -149,7 +150,7 @@ public class ExchangeRestACLTest extends
         attributes.put(Exchange.ALTERNATE_EXCHANGE, "my-alternate-exchange");
 
         responseCode = getRestTestHelper().submitRequest(_exchangeUrl, "PUT", attributes);
-        assertEquals("Setting of exchange attribites should be allowed but it is currently unsupported", 409, responseCode);
+        assertEquals("Exchange 'my-alternate-exchange' does not exist", RestServlet.SC_UNPROCESSABLE_ENTITY, responseCode);
     }
 
     public void testSetExchangeAttributesDenied() throws Exception



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org