Author: orudyy
Date: Sat Sep 14 11:27:19 2013
New Revision: 1523219
URL: http://svn.apache.org/r1523219
Log:
QPID-5138: Add preferences provider REST interfaces
Added:
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java
Modified:
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java
Modified:
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java?rev=1523219&r1=1523218&r2=1523219&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
(original)
+++
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
Sat Sep 14 11:27:19 2013
@@ -65,6 +65,7 @@ import org.apache.qpid.server.model.Grou
import org.apache.qpid.server.model.KeyStore;
import org.apache.qpid.server.model.Plugin;
import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.PreferencesProvider;
import org.apache.qpid.server.model.Protocol;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.Session;
@@ -297,6 +298,7 @@ public class HttpManagement extends Abst
addRestServlet(root, "keystore", KeyStore.class);
addRestServlet(root, "truststore", TrustStore.class);
addRestServlet(root, "plugin", Plugin.class);
+ addRestServlet(root, "preferencesprovider",
AuthenticationProvider.class, PreferencesProvider.class);
root.addServlet(new ServletHolder(new StructureServlet()),
"/rest/structure");
root.addServlet(new ServletHolder(new MessageServlet()),
"/rest/message/*");
Modified:
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.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/HelperServlet.java?rev=1523219&r1=1523218&r2=1523219&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java
(original)
+++
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java
Sat Sep 14 11:27:19 2013
@@ -55,6 +55,7 @@ public class HelperServlet extends Abstr
new ListAuthenticationProviderAttributes(),
new
ListBrokerAttribute(Broker.SUPPORTED_VIRTUALHOST_STORE_TYPES,
"ListMessageStoreTypes"),
new ListBrokerAttribute(Broker.SUPPORTED_VIRTUALHOST_TYPES,
"ListVirtualHostTypes"),
+ new
ListBrokerAttribute(Broker.SUPPORTED_PREFERENCES_PROVIDERS_TYPES,
"ListPreferencesProvidersTypes"),
new ListGroupProviderAttributes(),
new ListAccessControlProviderAttributes(),
new PluginClassProviderAction()
Added:
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java?rev=1523219&view=auto
==============================================================================
---
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java
(added)
+++
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java
Sat Sep 14 11:27:19 2013
@@ -0,0 +1,157 @@
+package org.apache.qpid.systest.rest;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.qpid.server.model.AuthenticationProvider;
+import org.apache.qpid.server.model.LifetimePolicy;
+import org.apache.qpid.server.model.PreferencesProvider;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.adapter.FileSystemPreferencesProvider;
+import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
+import
org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManagerFactory;
+import org.apache.qpid.test.utils.TestBrokerConfiguration;
+import org.apache.qpid.test.utils.TestFileUtils;
+
+public class PreferencesProviderRestTest extends QpidRestTestCase
+{
+ private Map<String, File> _providers;
+
+ public void setUp() throws Exception
+ {
+ _providers = new HashMap<String, File>();
+ super.setUp();
+ }
+
+ public void tearDown() throws Exception
+ {
+ try
+ {
+ super.tearDown();
+ }
+ finally
+ {
+ for (File file : _providers.values())
+ {
+ file.delete();
+ }
+ }
+ }
+
+ @Override
+ protected void customizeConfiguration() throws ConfigurationException,
IOException
+ {
+ super.customizeConfiguration();
+ Map<String, Object> anonymousAuthProviderAttributes = new
HashMap<String, Object>();
+
anonymousAuthProviderAttributes.put(AuthenticationManagerFactory.ATTRIBUTE_TYPE,
AnonymousAuthenticationManagerFactory.PROVIDER_TYPE);
+ anonymousAuthProviderAttributes.put(AuthenticationProvider.NAME,
TestBrokerConfiguration.ENTRY_NAME_ANONYMOUS_PROVIDER);
+
getBrokerConfiguration().addAuthenticationProviderConfiguration(anonymousAuthProviderAttributes);
+ }
+
+ public void testCreateAndGetProvider() throws Exception
+ {
+ List<Map<String, Object>> providerDetails =
getRestTestHelper().getJsonAsList("/rest/preferencesprovider");
+ assertEquals("Unexpected number of providers", 0,
providerDetails.size());
+
+
createPreferencesProvider(TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER,
"test1");
+
createPreferencesProvider(TestBrokerConfiguration.ENTRY_NAME_ANONYMOUS_PROVIDER,
"test2");
+
+ providerDetails =
getRestTestHelper().getJsonAsList("/rest/preferencesprovider");
+ assertEquals("Unexpected number of providers", 2,
providerDetails.size());
+
+ for (Map<String, Object> provider : providerDetails)
+ {
+ assertProvider(provider);
+ }
+
+ Map<String, Object> provider =
getRestTestHelper().getJsonAsSingletonList(
+ "/rest/preferencesprovider/" +
TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER + "/test1");
+ assertProvider(provider);
+ assertEquals("Unexpected provider name ", "test1",
provider.get(PreferencesProvider.NAME));
+ }
+
+ public void testDeleteProvider() throws Exception
+ {
+
createPreferencesProvider(TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER,
"test1");
+ String providerUrl = "/rest/preferencesprovider/" +
TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER + "/test1";
+ Map<String, Object> provider =
getRestTestHelper().getJsonAsSingletonList(providerUrl);
+ assertProvider(provider);
+ assertEquals("Unexpected provider name ", "test1",
provider.get(PreferencesProvider.NAME));
+
+ int responseCode = getRestTestHelper().submitRequest(providerUrl,
"DELETE", null);
+ assertEquals("Failed to delete preferences provider", 200,
responseCode);
+
+ List<Map<String, Object>> providerDetails =
getRestTestHelper().getJsonAsList(providerUrl);
+ assertEquals("Unexpected number of providers", 0,
providerDetails.size());
+ }
+
+ public void testUpdateProvider() throws Exception
+ {
+
createPreferencesProvider(TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER,
"test1");
+ String providerUrl = "/rest/preferencesprovider/" +
TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER + "/test1";
+ Map<String, Object> provider =
getRestTestHelper().getJsonAsSingletonList(providerUrl);
+ assertProvider(provider);
+ assertEquals("Unexpected provider name ", "test1",
provider.get(PreferencesProvider.NAME));
+
+ File file = TestFileUtils.createTempFile(this, ".prefs.json",
"{\"admin\":{\"something\": \"somethingValue\"}}");
+ _providers.put("new-test1", file);
+ Map<String, Object> newAttributes = new HashMap<String, Object>();
+ newAttributes.put(FileSystemPreferencesProvider.PATH,
file.getAbsolutePath());
+
+ int responseCode = getRestTestHelper().submitRequest(providerUrl,
"PUT", newAttributes);
+ assertEquals("Failed to update preferences provider", 200,
responseCode);
+
+ List<Map<String, Object>> providerDetails =
getRestTestHelper().getJsonAsList(providerUrl);
+ assertEquals("Unexpected number of providers", 1,
providerDetails.size());
+
+ provider = providerDetails.get(0);
+ assertProviderCommonAttributes(provider);
+ String name = (String) provider.get(PreferencesProvider.NAME);
+ assertEquals("Unexpected name", "test1", name);
+ assertEquals("Unexpected path for provider " + name, (String)
provider.get(FileSystemPreferencesProvider.PATH),
+ file.getAbsolutePath());
+ }
+
+ private void assertProvider(Map<String, Object> provider)
+ {
+ assertProviderCommonAttributes(provider);
+
+ String name = (String) provider.get(PreferencesProvider.NAME);
+ assertNotNull("Name cannot be null", name);
+ assertEquals("Unexpected path for provider " + name, (String)
provider.get(FileSystemPreferencesProvider.PATH),
+ _providers.get(name).getAbsolutePath());
+ }
+
+ public void assertProviderCommonAttributes(Map<String, Object> provider)
+ {
+ Asserts.assertAttributesPresent(provider,
PreferencesProvider.AVAILABLE_ATTRIBUTES, PreferencesProvider.CREATED,
+ PreferencesProvider.UPDATED, PreferencesProvider.TIME_TO_LIVE);
+ assertEquals("Unexpected value of provider attribute " +
PreferencesProvider.STATE, State.ACTIVE.name(),
+ provider.get(PreferencesProvider.STATE));
+ assertEquals("Unexpected value of provider attribute " +
PreferencesProvider.LIFETIME_POLICY,
+ LifetimePolicy.PERMANENT.name(),
provider.get(PreferencesProvider.LIFETIME_POLICY));
+ assertEquals("Unexpected value of provider attribute " +
PreferencesProvider.DURABLE, Boolean.TRUE,
+ provider.get(PreferencesProvider.DURABLE));
+ assertEquals("Unexpected value of provider attribute " +
PreferencesProvider.TYPE,
+ FileSystemPreferencesProvider.PROVIDER_TYPE,
provider.get(PreferencesProvider.TYPE));
+ }
+
+ private void createPreferencesProvider(String authenticationProvider,
String providerName) throws Exception
+ {
+ Map<String, Object> attributes = new HashMap<String, Object>();
+ attributes.put(PreferencesProvider.NAME, providerName);
+ attributes.put(PreferencesProvider.TYPE,
FileSystemPreferencesProvider.PROVIDER_TYPE);
+ File file = TestFileUtils.createTempFile(this, ".prefs.json",
"{\"admin\":{\"language\": \"en\"}}");
+ _providers.put(providerName, file);
+ attributes.put(FileSystemPreferencesProvider.PATH,
file.getAbsolutePath());
+
+ int responseCode = getRestTestHelper().submitRequest(
+ "/rest/preferencesprovider/" + authenticationProvider + "/" +
providerName, "PUT", attributes);
+ assertEquals("Unexpected response code", 201, responseCode);
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]