You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/03/01 01:09:17 UTC
[08/34] incubator-geode git commit: adding unit tests for REST API
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsWithSSLDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsWithSSLDUnitTest.java b/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsWithSSLDUnitTest.java
new file mode 100644
index 0000000..29aab32
--- /dev/null
+++ b/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsWithSSLDUnitTest.java
@@ -0,0 +1,653 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.rest.internal.web.controllers;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.security.KeyStore;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManagerFactory;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.json.JSONObject;
+
+import com.gemstone.gemfire.cache.AttributesFactory;
+import com.gemstone.gemfire.cache.Cache;
+import com.gemstone.gemfire.cache.CacheFactory;
+import com.gemstone.gemfire.cache.DataPolicy;
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.cache.RegionAttributes;
+import com.gemstone.gemfire.cache.RegionFactory;
+import com.gemstone.gemfire.cache.RegionShortcut;
+import com.gemstone.gemfire.cache.client.ClientCache;
+import com.gemstone.gemfire.cache.client.ClientCacheFactory;
+import com.gemstone.gemfire.cache.client.ClientRegionFactory;
+import com.gemstone.gemfire.cache.client.ClientRegionShortcut;
+import com.gemstone.gemfire.cache.client.internal.LocatorTestBase;
+import com.gemstone.gemfire.cache.server.CacheServer;
+import com.gemstone.gemfire.distributed.DistributedSystem;
+import com.gemstone.gemfire.distributed.internal.DistributionConfig;
+import com.gemstone.gemfire.internal.AvailablePort;
+import com.gemstone.gemfire.internal.AvailablePortHelper;
+import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
+import com.gemstone.gemfire.management.ManagementTestBase;
+import com.gemstone.gemfire.test.dunit.Host;
+import com.gemstone.gemfire.test.dunit.NetworkUtils;
+import com.gemstone.gemfire.test.dunit.SerializableCallable;
+import com.gemstone.gemfire.test.dunit.SerializableRunnable;
+import com.gemstone.gemfire.test.dunit.VM;
+import com.gemstone.gemfire.util.test.TestUtil;
+
+/**
+ *
+ * @author rishim
+ * @since 8.0
+ */
+public class RestAPIsWithSSLDUnitTest extends LocatorTestBase {
+
+ private static final long serialVersionUID = -254776154266339226L;
+
+ private ManagementTestBase helper;
+
+ public static final String PEOPLE_REGION_NAME = "People";
+
+ private File jks;
+
+ public RestAPIsWithSSLDUnitTest(String name) {
+ super(name);
+ this.helper = new ManagementTestBase(name);
+ this.jks = findTrustedJKS();
+
+ }
+
+ public void setUp() throws Exception {
+ disconnectAllFromDS();
+ super.setUp();
+ }
+
+ @Override
+ protected final void postTearDownLocatorTestBase() throws Exception {
+ closeInfra();
+ disconnectAllFromDS();
+ }
+
+ private static File findTrustedJKS() {
+ return new File(TestUtil.getResourcePath(RestAPIsWithSSLDUnitTest.class, "/ssl/trusted.keystore"));
+ }
+
+ public String startBridgeServerWithRestServiceOnInVM(final VM vm, final String locators, final String[] regions,
+ final Properties sslProperties, final boolean clusterLevel) {
+
+ SerializableCallable startBridge = new SerializableCallable("Start Bridge ") {
+ public Object call() throws IOException {
+ final String hostName = vm.getHost().getHostName();
+ final int serverPort = AvailablePortHelper.getRandomAvailableTCPPort();
+ startBridgeServer(hostName, serverPort, locators, regions, sslProperties, clusterLevel);
+ String restEndPoint = "https://" + hostName + ":" + serverPort + "/gemfire-api/v1";
+ return restEndPoint;
+
+ }
+ };
+ String endpoint = (String) vm.invoke(startBridge);
+ return endpoint;
+
+ }
+
+ @SuppressWarnings("deprecation")
+ protected int startBridgeServer(String hostName, int restServicerPort, final String locators, final String[] regions,
+ final Properties sslProperties, boolean clusterLevel) {
+
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.MCAST_PORT_NAME, String.valueOf(0));
+ props.setProperty(DistributionConfig.LOCATORS_NAME, locators);
+ props.setProperty(DistributionConfig.START_DEV_REST_API_NAME, "true");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_BIND_ADDRESS_NAME, hostName);
+ props.setProperty(DistributionConfig.HTTP_SERVICE_PORT_NAME, String.valueOf(restServicerPort));
+
+ System.setProperty("javax.net.debug", "ssl");
+ configureSSL(props, sslProperties, clusterLevel);
+
+ DistributedSystem ds = getSystem(props);
+ Cache cache = CacheFactory.create(ds);
+ ((GemFireCacheImpl) cache).setReadSerialized(true);
+ AttributesFactory factory = new AttributesFactory();
+
+ factory.setEnableBridgeConflation(true);
+ factory.setDataPolicy(DataPolicy.REPLICATE);
+ RegionAttributes attrs = factory.create();
+ for (int i = 0; i < regions.length; i++) {
+ cache.createRegion(regions[i], attrs);
+ }
+
+ CacheServer server = cache.addCacheServer();
+ final int serverPort = AvailablePortHelper.getRandomAvailableTCPPort();
+ server.setPort(serverPort);
+ try {
+ server.start();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ remoteObjects.put(CACHE_KEY, cache);
+ return new Integer(serverPort);
+ }
+
+ public static void doPutsInClientCache() {
+ ClientCache cache = GemFireCacheImpl.getInstance();
+ assertNotNull(cache);
+ Region<String, Object> region = cache.getRegion(PEOPLE_REGION_NAME);
+
+ // put person object
+ final Person person1 = new Person(101L, "Mithali", "Dorai", "Raj", DateTimeUtils.createDate(1982,
+ Calendar.DECEMBER, 4), Gender.FEMALE);
+ final Person person2 = new Person(102L, "Sachin", "Ramesh", "Tendulkar", DateTimeUtils.createDate(1975,
+ Calendar.DECEMBER, 14), Gender.MALE);
+ final Person person3 = new Person(103L, "Saurabh", "Baburav", "Ganguly", DateTimeUtils.createDate(1972,
+ Calendar.AUGUST, 29), Gender.MALE);
+ final Person person4 = new Person(104L, "Rahul", "subrymanyam", "Dravid", DateTimeUtils.createDate(1979,
+ Calendar.MARCH, 17), Gender.MALE);
+ final Person person5 = new Person(105L, "Jhulan", "Chidambaram", "Goswami", DateTimeUtils.createDate(1983,
+ Calendar.NOVEMBER, 25), Gender.FEMALE);
+
+ region.put("1", person1);
+ region.put("2", person2);
+ region.put("3", person3);
+ region.put("4", person4);
+ region.put("5", person5);
+
+ final Person person6 = new Person(101L, "Rahul", "Rajiv", "Gndhi",
+ DateTimeUtils.createDate(1970, Calendar.MAY, 14), Gender.MALE);
+ final Person person7 = new Person(102L, "Narendra", "Damodar", "Modi", DateTimeUtils.createDate(1945,
+ Calendar.DECEMBER, 24), Gender.MALE);
+ final Person person8 = new Person(103L, "Atal", "Bihari", "Vajpayee", DateTimeUtils.createDate(1920,
+ Calendar.AUGUST, 9), Gender.MALE);
+ final Person person9 = new Person(104L, "Soniya", "Rajiv", "Gandhi", DateTimeUtils.createDate(1929, Calendar.MARCH,
+ 27), Gender.FEMALE);
+ final Person person10 = new Person(104L, "Priyanka", "Robert", "Gandhi", DateTimeUtils.createDate(1973,
+ Calendar.APRIL, 15), Gender.FEMALE);
+
+ final Person person11 = new Person(104L, "Murali", "Manohar", "Joshi", DateTimeUtils.createDate(1923,
+ Calendar.APRIL, 25), Gender.MALE);
+ final Person person12 = new Person(104L, "Lalkrishna", "Parmhansh", "Advani", DateTimeUtils.createDate(1910,
+ Calendar.JANUARY, 01), Gender.MALE);
+ final Person person13 = new Person(104L, "Shushma", "kumari", "Swaraj", DateTimeUtils.createDate(1943,
+ Calendar.AUGUST, 10), Gender.FEMALE);
+ final Person person14 = new Person(104L, "Arun", "raman", "jetly", DateTimeUtils.createDate(1942, Calendar.OCTOBER,
+ 27), Gender.MALE);
+ final Person person15 = new Person(104L, "Amit", "kumar", "shah", DateTimeUtils.createDate(1958, Calendar.DECEMBER,
+ 21), Gender.MALE);
+ final Person person16 = new Person(104L, "Shila", "kumari", "Dixit", DateTimeUtils.createDate(1927,
+ Calendar.FEBRUARY, 15), Gender.FEMALE);
+
+ Map<String, Object> userMap = new HashMap<String, Object>();
+ userMap.put("6", person6);
+ userMap.put("7", person7);
+ userMap.put("8", person8);
+ userMap.put("9", person9);
+ userMap.put("10", person10);
+ userMap.put("11", person11);
+ userMap.put("12", person12);
+ userMap.put("13", person13);
+ userMap.put("14", person14);
+ userMap.put("15", person15);
+ userMap.put("16", person16);
+
+ region.putAll(userMap);
+
+ if (cache != null)
+ cache.getLogger().info("Gemfire Cache Client: Puts successfully done");
+
+ }
+
+ private String startInfraWithSSL(final Properties sslProperties, boolean clusterLevel) throws Exception {
+
+ final Host host = Host.getHost(0);
+ VM locator = host.getVM(0);
+ VM manager = host.getVM(1);
+ VM server = host.getVM(2);
+ VM client = host.getVM(3);
+
+ // start locator
+ int locatorPort = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+
+ startLocatorInVM(locator, locatorPort, "");
+
+ // find locators
+ String locators = NetworkUtils.getServerHostName(locator.getHost()) + "[" + locatorPort + "]";
+
+ // start manager (peer cache)
+ int managerPort = startManagerInVM(manager, locators, new String[] { REGION_NAME }, sslProperties);
+
+ // start startBridgeServer With RestService enabled
+ String restEndpoint = startBridgeServerWithRestServiceOnInVM(server, locators, new String[] { REGION_NAME },
+ sslProperties, clusterLevel);
+
+ // create a client cache
+ createClientCacheInVM(client, NetworkUtils.getServerHostName(locator.getHost()), locatorPort);
+
+ // create region in Manager, peer cache and Client cache nodes
+ manager.invoke(() -> RestAPIsWithSSLDUnitTest.createRegionInManager());
+ server.invoke(() -> RestAPIsWithSSLDUnitTest.createRegionInPeerServer());
+ client.invoke(() -> RestAPIsWithSSLDUnitTest.createRegionInClientCache());
+
+ // do some person puts from clientcache
+ client.invoke(() -> RestAPIsWithSSLDUnitTest.doPutsInClientCache());
+
+ return restEndpoint;
+
+ }
+
+ private void closeInfra() throws Exception {
+
+ final Host host = Host.getHost(0);
+ VM locator = host.getVM(0);
+ VM manager = host.getVM(1);
+ VM server = host.getVM(2);
+ VM client = host.getVM(3);
+
+ // stop the client and make sure the bridge server notifies
+ // stopBridgeMemberVM(client);
+ helper.closeCache(locator);
+ helper.closeCache(manager);
+ helper.closeCache(server);
+ helper.closeCache(client);
+ }
+
+ private void createClientCacheInVM(VM vm, final String host, final int port) throws Exception {
+ SerializableRunnable connect = new SerializableRunnable("Start Cache client") {
+ public void run() {
+ // Connect using the GemFire locator and create a Caching_Proxy cache
+ ClientCache c = new ClientCacheFactory().setPdxReadSerialized(true).addPoolLocator(host, port).create();
+
+ Region r = c.createClientRegionFactory(ClientRegionShortcut.PROXY).create(REGION_NAME);
+ }
+ };
+
+ if (vm == null) {
+ connect.run();
+ } else {
+ vm.invoke(connect);
+ }
+ }
+
+ private void configureSSL(Properties props, Properties sslProperties, boolean clusterLevel) {
+
+ if(clusterLevel){
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME) != null) {
+ props.setProperty(DistributionConfig.CLUSTER_SSL_ENABLED_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME));
+ }
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME) != null) {
+ props.setProperty(DistributionConfig.CLUSTER_SSL_KEYSTORE_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME));
+ }
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME) != null) {
+ props.setProperty(DistributionConfig.CLUSTER_SSL_KEYSTORE_PASSWORD_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME));
+ }
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_TYPE_NAME) != null) {
+ props.setProperty(DistributionConfig.CLUSTER_SSL_KEYSTORE_TYPE_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_TYPE_NAME));
+ }
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_PROTOCOLS_NAME) != null) {
+ props.setProperty(DistributionConfig.CLUSTER_SSL_PROTOCOLS_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_PROTOCOLS_NAME));
+ }
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_REQUIRE_AUTHENTICATION_NAME) != null) {
+ props.setProperty(DistributionConfig.CLUSTER_SSL_REQUIRE_AUTHENTICATION_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_REQUIRE_AUTHENTICATION_NAME));
+ }
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_TRUSTSTORE_NAME) != null) {
+ props.setProperty(DistributionConfig.CLUSTER_SSL_TRUSTSTORE_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_TRUSTSTORE_NAME));
+ }
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_TRUSTSTORE_PASSWORD_NAME) != null) {
+ props.setProperty(DistributionConfig.CLUSTER_SSL_TRUSTSTORE_PASSWORD_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_TRUSTSTORE_PASSWORD_NAME));
+ }
+
+ }else{
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME) != null) {
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME));
+ }
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME) != null) {
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME));
+ }
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME) != null) {
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME));
+ }
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_TYPE_NAME) != null) {
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_TYPE_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_TYPE_NAME));
+ }
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_PROTOCOLS_NAME) != null) {
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_PROTOCOLS_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_PROTOCOLS_NAME));
+ }
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_REQUIRE_AUTHENTICATION_NAME) != null) {
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_REQUIRE_AUTHENTICATION_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_REQUIRE_AUTHENTICATION_NAME));
+ }
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_TRUSTSTORE_NAME) != null) {
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_TRUSTSTORE_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_TRUSTSTORE_NAME));
+ }
+ if (sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_TRUSTSTORE_PASSWORD_NAME) != null) {
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_TRUSTSTORE_PASSWORD_NAME,
+ sslProperties.getProperty(DistributionConfig.HTTP_SERVICE_SSL_TRUSTSTORE_PASSWORD_NAME));
+ }
+
+ }
+
+
+ }
+
+ private int startManagerInVM(VM vm, final String locators, final String[] regions, final Properties sslProperties) {
+
+ SerializableCallable connect = new SerializableCallable("Start Manager ") {
+ public Object call() throws IOException {
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.MCAST_PORT_NAME, String.valueOf(0));
+ props.setProperty(DistributionConfig.LOCATORS_NAME, locators);
+ props.setProperty("jmx-manager", "true");
+ props.setProperty("jmx-manager-start", "true");
+ props.setProperty(DistributionConfig.JMX_MANAGER_HTTP_PORT_NAME, "0");
+
+ configureSSL(props, sslProperties, false);
+
+ DistributedSystem ds = getSystem(props);
+ Cache cache = CacheFactory.create(ds);
+ AttributesFactory factory = new AttributesFactory();
+
+ factory.setEnableBridgeConflation(true);
+ factory.setDataPolicy(DataPolicy.REPLICATE);
+ RegionAttributes attrs = factory.create();
+ for (int i = 0; i < regions.length; i++) {
+ cache.createRegion(regions[i], attrs);
+ }
+ CacheServer server = cache.addCacheServer();
+ final int serverPort = AvailablePortHelper.getRandomAvailableTCPPort();
+ server.setPort(serverPort);
+ server.start();
+
+ return new Integer(serverPort);
+ }
+ };
+ Integer port = (Integer) vm.invoke(connect);
+ return port.intValue();
+ }
+
+ public static void createRegionInClientCache() {
+ ClientCache cache = GemFireCacheImpl.getInstance();
+ assertNotNull(cache);
+ ClientRegionFactory<String, Object> crf = cache.createClientRegionFactory(ClientRegionShortcut.PROXY);
+ Region<String, Object> region = crf.create(PEOPLE_REGION_NAME);
+
+ }
+
+ public static void createRegionInManager() {
+ Cache cache = GemFireCacheImpl.getInstance();
+ assertNotNull(cache);
+ RegionFactory<String, Object> rf = cache.createRegionFactory(RegionShortcut.REPLICATE);
+ Region<String, Object> region = rf.create(PEOPLE_REGION_NAME);
+ }
+
+ public static void createRegionInPeerServer() {
+ Cache cache = GemFireCacheImpl.getInstance();
+ assertNotNull(cache);
+ RegionFactory<String, Object> rf = cache.createRegionFactory(RegionShortcut.REPLICATE);
+ Region<String, Object> region = rf.create(PEOPLE_REGION_NAME);
+ }
+
+ private static CloseableHttpClient getSSLBasedHTTPClient(String algo) throws Exception {
+
+ File jks = findTrustedJKS();
+
+ KeyStore clientKeys = KeyStore.getInstance("JKS");
+ clientKeys.load(new FileInputStream(jks.getCanonicalPath()), "password".toCharArray());
+
+ KeyManagerFactory clientKeyManagerFactory = KeyManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+ clientKeyManagerFactory.init(clientKeys, "password".toCharArray());
+ // load server public key
+ KeyStore serverPub = KeyStore.getInstance("JKS");
+ serverPub.load(new FileInputStream(jks.getCanonicalPath()), "password".toCharArray());
+ TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+ trustManagerFactory.init(serverPub);
+
+ SSLContext context = SSLContext.getInstance(algo);
+
+ context.init(clientKeyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(),
+ new java.security.SecureRandom());
+
+ // Host checking is disabled here , as tests might run on multiple hosts and
+ // host entries can not be assumed
+ SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(context,
+ SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
+
+ CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
+
+ return httpclient;
+ }
+
+ private static void validateConnection(String restEndpoint, String algo) {
+
+ try {
+ // 1. Get on key="1" and validate result.
+ {
+ HttpGet get = new HttpGet(restEndpoint + "/People/1");
+ get.addHeader("Content-Type", "application/json");
+ get.addHeader("Accept", "application/json");
+
+
+ CloseableHttpClient httpclient = getSSLBasedHTTPClient(algo);
+ CloseableHttpResponse response = httpclient.execute(get);
+
+ HttpEntity entity = response.getEntity();
+ InputStream content = entity.getContent();
+ BufferedReader reader = new BufferedReader(new InputStreamReader(content));
+ String line;
+ StringBuffer str = new StringBuffer();
+ while ((line = reader.readLine()) != null) {
+ str.append(line);
+ }
+
+ JSONObject jObject = new JSONObject(str.toString());
+
+ assertEquals(jObject.get("id"), 101);
+ assertEquals(jObject.get("firstName"), "Mithali");
+ assertEquals(jObject.get("middleName"), "Dorai");
+ assertEquals(jObject.get("lastName"), "Raj");
+ assertEquals(jObject.get("gender"), Gender.FEMALE.name());
+ }
+
+ } catch (Exception e) {
+ throw new RuntimeException("unexpected exception", e);
+ }
+ }
+
+ // Actual Tests starts here.
+
+ public void testSimpleSSL() throws Exception {
+
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME, "true");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME, jks.getCanonicalPath());
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME, "password");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_TYPE_NAME, "JKS");
+ String restEndpoint = startInfraWithSSL(props,false);
+ RestAPIsWithSSLDUnitTest.validateConnection(restEndpoint, "SSL");
+ }
+
+ public void testSSLWithoutKeyStoreType() throws Exception {
+
+
+
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME, "true");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME, jks.getCanonicalPath());
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME, "password");
+
+ String restEndpoint = startInfraWithSSL(props, false);
+ RestAPIsWithSSLDUnitTest.validateConnection(restEndpoint, "SSL");
+
+
+ }
+
+ public void testSSLWithSSLProtocol() throws Exception {
+
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME, "true");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME, jks.getCanonicalPath());
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME, "password");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_PROTOCOLS_NAME,"SSL");
+
+ String restEndpoint = startInfraWithSSL(props, false);
+ RestAPIsWithSSLDUnitTest.validateConnection(restEndpoint, "SSL");
+
+ }
+
+ public void testSSLWithTLSProtocol() throws Exception {
+
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME, "true");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME, jks.getCanonicalPath());
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME, "password");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_PROTOCOLS_NAME,"TLS");
+
+ String restEndpoint = startInfraWithSSL(props, false);
+ RestAPIsWithSSLDUnitTest.validateConnection(restEndpoint, "TLS");
+
+ }
+
+ public void testSSLWithTLSv11Protocol() throws Exception {
+
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME, "true");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME, jks.getCanonicalPath());
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME, "password");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_PROTOCOLS_NAME,"TLSv1.1");
+
+ String restEndpoint = startInfraWithSSL(props, false);
+ RestAPIsWithSSLDUnitTest.validateConnection(restEndpoint, "TLSv1.1");
+
+ }
+
+ public void testSSLWithTLSv12Protocol() throws Exception {
+
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME, "true");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME, jks.getCanonicalPath());
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME, "password");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_PROTOCOLS_NAME,"TLSv1.2");
+
+ String restEndpoint = startInfraWithSSL(props, false);
+ RestAPIsWithSSLDUnitTest.validateConnection(restEndpoint, "TLSv1.2");
+
+ }
+
+ public void testWithMultipleProtocol() throws Exception {
+
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME, "true");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME, jks.getCanonicalPath());
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME, "password");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_PROTOCOLS_NAME,"SSL,TLSv1.2");
+
+ String restEndpoint = startInfraWithSSL(props, false);
+ RestAPIsWithSSLDUnitTest.validateConnection(restEndpoint, "TLSv1.2");
+
+ }
+
+ public void testSSLWithCipherSuite() throws Exception {
+
+ System.setProperty("javax.net.debug", "ssl");
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME, "true");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME, jks.getCanonicalPath());
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME, "password");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_PROTOCOLS_NAME,"TLSv1.2");
+
+ SSLContext ssl = SSLContext.getInstance("TLSv1.2");
+
+ ssl.init(null, null, new java.security.SecureRandom());
+ String[] cipherSuites = ssl.getSocketFactory().getSupportedCipherSuites();
+
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_CIPHERS_NAME,cipherSuites[0]);
+
+ String restEndpoint = startInfraWithSSL(props, false);
+ RestAPIsWithSSLDUnitTest.validateConnection(restEndpoint, "TLSv1.2");
+
+ }
+
+ public void testSSLWithMultipleCipherSuite() throws Exception {
+
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME, "true");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME, jks.getCanonicalPath());
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME, "password");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_PROTOCOLS_NAME,"TLSv1.2");
+
+ SSLContext ssl = SSLContext.getInstance("TLSv1.2");
+
+ ssl.init(null, null, new java.security.SecureRandom());
+ String[] cipherSuites = ssl.getSocketFactory().getSupportedCipherSuites();
+
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_CIPHERS_NAME,cipherSuites[0]+","+cipherSuites[1]);
+
+ String restEndpoint = startInfraWithSSL(props, false);
+ RestAPIsWithSSLDUnitTest.validateConnection(restEndpoint, "TLSv1.2");
+
+ }
+
+
+ public void testMutualAuthentication() throws Exception {
+
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_ENABLED_NAME, "true");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_NAME, jks.getCanonicalPath());
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_KEYSTORE_PASSWORD_NAME, "password");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_PROTOCOLS_NAME,"SSL");
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_REQUIRE_AUTHENTICATION_NAME,"true");
+
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_TRUSTSTORE_NAME,jks.getCanonicalPath());
+
+ props.setProperty(DistributionConfig.HTTP_SERVICE_SSL_TRUSTSTORE_PASSWORD_NAME,"password");
+
+ String restEndpoint = startInfraWithSSL(props, false);
+ RestAPIsWithSSLDUnitTest.validateConnection(restEndpoint, "SSL");
+
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestTestUtils.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestTestUtils.java b/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestTestUtils.java
new file mode 100644
index 0000000..0406831
--- /dev/null
+++ b/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestTestUtils.java
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.rest.internal.web.controllers;
+
+import java.net.URI;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import org.springframework.http.converter.ByteArrayHttpMessageConverter;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.ResourceHttpMessageConverter;
+import org.springframework.http.converter.StringHttpMessageConverter;
+import org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
+
+/**
+ * The RestTestUtils class contains core functionality for Spring REST Template
+ * <p/>
+ *
+ * @author Nilkanth Patel
+ * @see org.springframework.context.ApplicationContext
+ * @see org.springframework.data.gemfire.GemfireTemplate
+ * @since 8.0
+ */
+public class RestTestUtils {
+
+ public static final String BASE_URL = "http://localhost:8080";
+ public static final String GEMFIRE_REST_API_CONTEXT = "/gemfire-api";
+ public static final String GEMFIRE_REST_API_VERSION = "/v1";
+
+ public static final URI GEMFIRE_REST_API_WEB_SERVICE_URL = URI
+ .create(BASE_URL + GEMFIRE_REST_API_CONTEXT + GEMFIRE_REST_API_VERSION);
+
+ private static RestTemplate restTemplate;
+
+ public static RestTemplate getRestTemplate() {
+ if (restTemplate == null) {
+ restTemplate = new RestTemplate();
+
+ final List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
+
+ messageConverters.add(new ByteArrayHttpMessageConverter());
+ messageConverters.add(new ResourceHttpMessageConverter());
+ messageConverters.add(new StringHttpMessageConverter());
+ messageConverters.add(createMappingJackson2HttpMessageConverter());
+
+ restTemplate.setMessageConverters(messageConverters);
+ }
+ return restTemplate;
+ }
+
+ public static HttpMessageConverter<Object> createMappingJackson2HttpMessageConverter() {
+ final Jackson2ObjectMapperFactoryBean objectMapperFactoryBean = new Jackson2ObjectMapperFactoryBean();
+
+ objectMapperFactoryBean.setFailOnEmptyBeans(true);
+ objectMapperFactoryBean.setIndentOutput(true);
+ objectMapperFactoryBean.setDateFormat(new SimpleDateFormat("MM/dd/yyyy"));
+ objectMapperFactoryBean
+ .setFeaturesToDisable(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
+ objectMapperFactoryBean
+ .setFeaturesToEnable(
+ com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_COMMENTS,
+ com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_SINGLE_QUOTES,
+ com.fasterxml.jackson.databind.DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
+ objectMapperFactoryBean.afterPropertiesSet();
+
+ final MappingJackson2HttpMessageConverter httpMessageConverter = new MappingJackson2HttpMessageConverter();
+ httpMessageConverter.setObjectMapper(objectMapperFactoryBean.getObject());
+ return httpMessageConverter;
+ }
+
+ /*
+ protected static HttpMessageConverter<Object> createMarshallingHttpMessageConverter() {
+ final Jaxb2Marshaller jaxbMarshaller = new Jaxb2Marshaller();
+
+ jaxbMarshaller.setContextPaths("com.gemstone.gemfire.web.rest.domain",
+ "com.gemstone.gemfire.web.controllers.support");
+ jaxbMarshaller.setMarshallerProperties(Collections.singletonMap(
+ "jaxb.formatted.output", Boolean.TRUE));
+
+ return new MarshallingHttpMessageConverter(jaxbMarshaller);
+ }
+ */
+
+ public static URI toUri(final String... pathSegments) {
+ return toUri(GEMFIRE_REST_API_WEB_SERVICE_URL, pathSegments);
+ }
+
+ public static URI toUri(final URI baseUrl, final String... pathSegments) {
+ return UriComponentsBuilder.fromUri(baseUrl).pathSegment(pathSegments)
+ .build().toUri();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-core/src/main/java/com/gemstone/gemfire/management/internal/AgentUtil.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/management/internal/AgentUtil.java b/geode-core/src/main/java/com/gemstone/gemfire/management/internal/AgentUtil.java
old mode 100644
new mode 100755
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/AddFreeItemToOrders.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/AddFreeItemToOrders.java b/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/AddFreeItemToOrders.java
deleted file mode 100644
index c8a2ce3..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/AddFreeItemToOrders.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.rest.internal.web.controllers;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Vector;
-
-import com.gemstone.gemfire.cache.Cache;
-import com.gemstone.gemfire.cache.CacheClosedException;
-import com.gemstone.gemfire.cache.CacheFactory;
-import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.cache.execute.Function;
-import com.gemstone.gemfire.cache.execute.FunctionContext;
-import com.gemstone.gemfire.cache.query.FunctionDomainException;
-import com.gemstone.gemfire.cache.query.NameResolutionException;
-import com.gemstone.gemfire.cache.query.Query;
-import com.gemstone.gemfire.cache.query.QueryInvocationTargetException;
-import com.gemstone.gemfire.cache.query.SelectResults;
-import com.gemstone.gemfire.cache.query.TypeMismatchException;
-import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
-import com.gemstone.gemfire.pdx.PdxInstance;
-
-/**
- * Gemfire function to add free items in the existing order
- * if the total price for that order is greater then the argument
- * @author Nilkanth Patel
- */
-
-public class AddFreeItemToOrders implements Function {
-
- public void execute(FunctionContext context) {
-
- Cache c = null;
- Region r = null;
- List<Object> vals = new ArrayList<Object>();
- List<Object> keys = new ArrayList<Object>();
- List<Object> argsList = new ArrayList<Object>();
- Object[] argsArray = null;
-
- if (context.getArguments() instanceof Boolean) {
-
- } else if (context.getArguments() instanceof String) {
- String arg = (String) context.getArguments();
- }else if(context.getArguments() instanceof Vector ) {
-
- }else if (context.getArguments() instanceof Object[]) {
- argsArray = (Object[]) context.getArguments();
- argsList = Arrays.asList(argsArray);
- }else {
- System.out.println("AddFreeItemToOrders : Invalid Arguments");
- }
-
- try {
- c = CacheFactory.getAnyInstance();
- ((GemFireCacheImpl)c).getCacheConfig().setPdxReadSerialized(true);
- r = c.getRegion("orders");
- } catch (CacheClosedException ex) {
- vals.add("NoCacheFoundResult");
- context.getResultSender().lastResult(vals);
- }
-
- String oql = "SELECT DISTINCT entry.key FROM /orders.entries entry WHERE entry.value.totalPrice > $1";
- Object queryArgs[] = new Object[1];
- queryArgs[0] = argsList.get(0);
-
- final Query query = c.getQueryService().newQuery(oql);
-
- SelectResults result = null;
- try {
- result = (SelectResults) query.execute(queryArgs);
- int resultSize = result.size();
-
- if (result instanceof Collection<?>)
- for (Object item : result) {
- keys.add(item);
- }
- } catch (FunctionDomainException e) {
- if(c != null)
- c.getLogger().info("Caught FunctionDomainException while executing function AddFreeItemToOrders: " + e.getMessage());
-
- } catch (TypeMismatchException e) {
- if(c != null)
- c.getLogger().info("Caught TypeMismatchException while executing function AddFreeItemToOrders: " + e.getMessage());
- } catch (NameResolutionException e) {
- if(c != null)
- c.getLogger().info("Caught NameResolutionException while executing function AddFreeItemToOrders: " + e.getMessage());
- } catch (QueryInvocationTargetException e) {
- if(c != null)
- c.getLogger().info("Caught QueryInvocationTargetException while executing function AddFreeItemToOrders" + e.getMessage());
- }
-
- //class has to be in classpath.
- try {
- Item it = (Item)(argsList.get(1));
- for(Object key : keys)
- {
- Object obj = r.get(key);
- if(obj instanceof PdxInstance) {
- PdxInstance pi = (PdxInstance)obj;
- Order receivedOrder = (Order)pi.getObject();
- receivedOrder.addItem(it);
-
- r.put(key, receivedOrder);
- }
- }
-
- context.getResultSender().lastResult("success");
-
- }catch (ClassCastException e) {
-
- context.getResultSender().lastResult("failure");
- }catch (Exception e) {
- context.getResultSender().lastResult("failure");
- }
-
- }
-
- public String getId() {
- return "AddFreeItemToOrders";
- }
-
- @Override
- public boolean hasResult() {
- return true;
- }
-
- @Override
- public boolean optimizeForWrite() {
- return false;
- }
-
- @Override
- public boolean isHA() {
- return false;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Customer.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Customer.java b/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Customer.java
deleted file mode 100644
index 93ac63d..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Customer.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.rest.internal.web.controllers;
-
-import java.io.Serializable;
-import com.gemstone.gemfire.internal.lang.ObjectUtils;
-
-/**
- * The Customer class models a customer entity.
- * <p/>
- * @author Nilkanth Patel
- * @since 8.0
- */
-
-public class Customer implements Serializable {
-
- private Long customerId;
- private String firstName;
- private String lastName;
-
- public Customer() {
- }
-
- public Customer(final Long custId) {
- this.customerId = custId;
- }
-
- public Customer(final Long custId, final String fname, final String lname) {
- this.customerId = custId;
- this.firstName = fname;
- this.lastName = lname;
- }
-
- public Long getCustomerId() {
- return customerId;
- }
-
- public void setCustomerId(Long customerId) {
- this.customerId = customerId;
- }
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (obj == this) {
- return true;
- }
-
- if (!(obj instanceof Customer)) {
- return false;
- }
-
- final Customer that = (Customer) obj;
-
- return (ObjectUtils.equals(this.getCustomerId(), that.getCustomerId())
- && ObjectUtils.equals(this.getLastName(), that.getLastName()) && ObjectUtils
- .equals(this.getFirstName(), that.getFirstName()));
- }
-
- @Override
- public int hashCode() {
- int hashValue = 17;
- hashValue = 37 * hashValue + ObjectUtils.hashCode(getCustomerId());
- hashValue = 37 * hashValue + ObjectUtils.hashCode(getLastName());
- hashValue = 37 * hashValue + ObjectUtils.hashCode(getFirstName());
- return hashValue;
- }
-
- @Override
- public String toString() {
- final StringBuilder buffer = new StringBuilder("{ type = ");
- buffer.append(getClass().getName());
- buffer.append(", customerId = ").append(getCustomerId());
- buffer.append(", firstName = ").append(getFirstName());
- buffer.append(", lastName = ").append(getLastName());
- buffer.append(" }");
- return buffer.toString();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/DateTimeUtils.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/DateTimeUtils.java b/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/DateTimeUtils.java
deleted file mode 100644
index 3a92df3..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/DateTimeUtils.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.rest.internal.web.controllers;
-
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-
-public class DateTimeUtils {
- public static Calendar createCalendar(final int year, final int month, final int day) {
- final Calendar dateTime = Calendar.getInstance();
- dateTime.clear();
- dateTime.set(Calendar.YEAR, year);
- dateTime.set(Calendar.MONTH, month);
- dateTime.set(Calendar.DAY_OF_MONTH, day);
- return dateTime;
- }
-
- public static Date createDate(final int year, final int month, final int day) {
- return createCalendar(year, month, day).getTime();
- }
-
- public static String format(final Date dateTime, final String formatPattern) {
- return (dateTime != null ? new SimpleDateFormat(formatPattern).format(dateTime) : null);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Gender.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Gender.java b/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Gender.java
deleted file mode 100644
index 9b00108..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Gender.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.rest.internal.web.controllers;
-
-/**
- * The Gender enum is a enumeration of genders (sexes).
- * <p/>
- * @author Nilkanth Patel, John Blum
- * @since 8.0
- */
-
-@SuppressWarnings("unused")
-public enum Gender {
- FEMALE,
- MALE
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetAllEntries.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetAllEntries.java b/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetAllEntries.java
deleted file mode 100644
index cb85687..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetAllEntries.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.rest.internal.web.controllers;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.gemstone.gemfire.cache.execute.Function;
-import com.gemstone.gemfire.cache.execute.FunctionContext;
-
-/**
- * The GetAllEntries is function that will return a map as a result of its execution.
- * <p/>
- * @author Nilkanth Patel
- * @since 8.0
- */
-
-public class GetAllEntries implements Function {
-
- @Override
- public void execute(FunctionContext context) {
- Map<String, String> myMap = new HashMap();
- myMap.put("k11", "v1");
- myMap.put("k12", "v2");
- myMap.put("k13", "v3");
- myMap.put("k14", "v4");
- myMap.put("k15", "v5");
-
- //return map as a function result
- context.getResultSender().lastResult(myMap);
- }
-
- @Override
- public String getId() {
- return "GetAllEntries";
- }
-
- @Override
- public boolean hasResult() {
- return true;
- }
-
- @Override
- public boolean optimizeForWrite() {
- return false;
- }
-
- @Override
- public boolean isHA() {
- return false;
- }
-
-}
-
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetDeliveredOrders.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetDeliveredOrders.java b/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetDeliveredOrders.java
deleted file mode 100644
index 3a150a3..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetDeliveredOrders.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.rest.internal.web.controllers;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import com.gemstone.gemfire.cache.Cache;
-import com.gemstone.gemfire.cache.CacheClosedException;
-import com.gemstone.gemfire.cache.CacheFactory;
-import com.gemstone.gemfire.cache.execute.Function;
-import com.gemstone.gemfire.cache.execute.FunctionContext;
-import com.gemstone.gemfire.cache.query.FunctionDomainException;
-import com.gemstone.gemfire.cache.query.NameResolutionException;
-import com.gemstone.gemfire.cache.query.Query;
-import com.gemstone.gemfire.cache.query.QueryInvocationTargetException;
-import com.gemstone.gemfire.cache.query.SelectResults;
-import com.gemstone.gemfire.cache.query.TypeMismatchException;
-
-
-/**
-* The GetDeliveredOrders class is a gemfire function that gives details about delivered orders.
-* <p/>
-* @author Nilkanth Patel
-* @since 8.0
-*/
-
-public class GetDeliveredOrders implements Function {
- public void execute(FunctionContext context) {
-
- Cache c = null;
- ArrayList<Object> vals = new ArrayList<Object>();
- try {
- c = CacheFactory.getAnyInstance();
- } catch (CacheClosedException ex) {
- vals.add("NoCacheFoundResult");
- context.getResultSender().lastResult(vals);
- }
-
- String oql = "SELECT o.purchaseOrderNo, o.deliveryDate FROM /orders o WHERE o.deliveryDate != NULL";
- final Query query = c.getQueryService().newQuery(oql);
-
- SelectResults result = null;
- try {
- result = (SelectResults) query.execute();
- int resultSize = result.size();
-
- if(result instanceof Collection<?>)
- for(Object item : result){
- vals.add(item);
- }
- } catch (FunctionDomainException e) {
- if(c != null)
- c.getLogger().info("Caught FunctionDomainException while executing function GetDeliveredOrders: " + e.getMessage());
-
- } catch (TypeMismatchException e) {
- if(c != null)
- c.getLogger().info("Caught TypeMismatchException while executing function GetDeliveredOrders: " + e.getMessage());
-
- } catch (NameResolutionException e) {
- if(c != null)
- c.getLogger().info("Caught NameResolutionException while executing function GetDeliveredOrders: " + e.getMessage());
-
- } catch (QueryInvocationTargetException e) {
- if(c != null)
- c.getLogger().info("Caught QueryInvocationTargetException while executing function GetDeliveredOrders: " + e.getMessage());
-
- }
-
- context.getResultSender().lastResult(vals);
- }
-
- public String getId() {
- return "GetDeliveredOrders";
- }
-
- @Override
- public boolean hasResult() {
- return true;
- }
-
- @Override
- public boolean optimizeForWrite() {
- return false;
- }
-
- @Override
- public boolean isHA() {
- return false;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetRegions.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetRegions.java b/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetRegions.java
deleted file mode 100644
index d9e039b..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetRegions.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.rest.internal.web.controllers;
-
-import java.util.ArrayList;
-import java.util.Set;
-
-import com.gemstone.gemfire.cache.Cache;
-import com.gemstone.gemfire.cache.CacheClosedException;
-import com.gemstone.gemfire.cache.CacheFactory;
-import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.cache.execute.Function;
-import com.gemstone.gemfire.cache.execute.FunctionContext;
-
-/**
-* The GetRegions class is an gemfire function that gives data about available regions.
-* <p/>
-* @author Nilkanth Patel
-* @since 8.0
-*/
-
-public class GetRegions implements Function {
-
- public void execute(FunctionContext context) {
-
- ArrayList<String> vals = new ArrayList<String>();
-
- Cache c = null;
- try {
- c = CacheFactory.getAnyInstance();
- } catch (CacheClosedException ex) {
- vals.add("NoCacheResult");
- context.getResultSender().lastResult(vals);
- }
-
- final Set<Region<?, ?>> regionSet = c.rootRegions();
- for (Region<?, ?> r : regionSet) {
- vals.add(r.getName());
- }
-
- context.getResultSender().lastResult(vals);
- }
-
- public String getId() {
- return "GetRegions";
- }
-
- @Override
- public boolean hasResult() {
- return true;
- }
-
- @Override
- public boolean optimizeForWrite() {
- return false;
- }
-
- @Override
- public boolean isHA() {
- return false;
- }
-};
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetValueForKey.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetValueForKey.java b/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetValueForKey.java
deleted file mode 100644
index 25e87b6..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/GetValueForKey.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.rest.internal.web.controllers;
-
-import com.gemstone.gemfire.cache.Cache;
-import com.gemstone.gemfire.cache.CacheClosedException;
-import com.gemstone.gemfire.cache.CacheFactory;
-import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.cache.execute.Function;
-import com.gemstone.gemfire.cache.execute.FunctionContext;
-
-public class GetValueForKey implements Function {
-
- @Override
- public void execute(FunctionContext context) {
- Object args = context.getArguments();
-
- Cache cache = null;
-
- try{
- cache = CacheFactory.getAnyInstance();
-
- if(args.toString().equalsIgnoreCase("1") ){
- Region<String, Object> r = cache.getRegion("Products");
- Object result = r.get("1");
- context.getResultSender().lastResult(result);
-
- }else if(args.toString().equalsIgnoreCase("2")){
- Region<String, Object> r = cache.getRegion("People");
- Object result = r.get("2");
- context.getResultSender().lastResult(result);
- }else{
- //Default case
- int i=10;
- context.getResultSender().lastResult(i);
- }
- }catch(CacheClosedException e){
- context.getResultSender().lastResult("Error: CacheClosedException");
- }
-
- }
-
- @Override
- public String getId() {
- return "GetValueForKey";
- }
-
- @Override
- public boolean hasResult() {
- return true;
- }
-
- @Override
- public boolean optimizeForWrite() {
- return false;
- }
-
- @Override
- public boolean isHA() {
- return false;
- }
-}
-
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Item.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Item.java b/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Item.java
deleted file mode 100644
index 450ffda..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Item.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.rest.internal.web.controllers;
-
-import java.io.Serializable;
-
-import com.gemstone.gemfire.internal.lang.ObjectUtils;
-import com.gemstone.gemfire.pdx.PdxReader;
-import com.gemstone.gemfire.pdx.PdxSerializable;
-import com.gemstone.gemfire.pdx.PdxWriter;
-
-/**
- * The Item class models item entity in the real world.
- * <p/>
- * @author Nilkanth Patel
- * @since 8.0
- */
-
-
-public class Item implements PdxSerializable {
-
- private Long itemNo;
- private String description;
- private int quantity;
- private float unitPrice;
- private float totalPrice;
-
- public Long getItemNo() {
- return itemNo;
- }
-
- public void setItemNo(Long itemNo) {
- this.itemNo = itemNo;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public int getQuantity() {
- return quantity;
- }
-
- public void setQuantity(int quantity) {
- this.quantity = quantity;
- }
-
- public float getUnitPrice() {
- return unitPrice;
- }
-
- public void setUnitPrice(final float unitprice) {
- this.unitPrice = unitprice;
- }
-
- public float getTotalPrice() {
- return totalPrice;
- }
-
- public void setTotalPrice(final float totalprice) {
- this.totalPrice = totalprice;
- }
-
- public Item() {
-
- }
-
- public Item(final Long itemNumber) {
- this.itemNo = itemNumber;
- }
-
- public Item(final Long itemNumber, final String desc, final int qty, final float uprice, final float tprice) {
- this.itemNo = itemNumber;
- this.description = desc;
- this.quantity = qty;
- this.unitPrice = uprice;
- this.totalPrice = tprice;
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (obj == this) {
- return true;
- }
-
- if (!(obj instanceof Item)) {
- return false;
- }
-
- final Item that = (Item) obj;
-
- return (ObjectUtils.equals(this.getItemNo(), that.getItemNo())
- && ObjectUtils.equals(this.getDescription(), that.getDescription())
- && ObjectUtils.equals(this.getQuantity(), that.getQuantity())
- && ObjectUtils.equals(this.getQuantity(), that.getUnitPrice())
- && ObjectUtils.equals(this.getQuantity(), that.getTotalPrice()));
- }
-
- @Override
- public int hashCode() {
- int hashValue = 17;
- hashValue = 37 * hashValue + ObjectUtils.hashCode(getItemNo());
- hashValue = 37 * hashValue + ObjectUtils.hashCode(getDescription());
- hashValue = 37 * hashValue + ObjectUtils.hashCode(getQuantity());
- hashValue = 37 * hashValue + ObjectUtils.hashCode(getUnitPrice());
- hashValue = 37 * hashValue + ObjectUtils.hashCode(getTotalPrice());
- return hashValue;
- }
-
- @Override
- public String toString() {
- final StringBuilder buffer = new StringBuilder("{ type = ");
- buffer.append(getClass().getName());
- buffer.append(", itemNo = ").append(getItemNo());
- buffer.append(", description = ").append(getDescription());
- buffer.append(", quantity = ").append(getQuantity());
- buffer.append(", unitPrice = ").append(getUnitPrice());
- buffer.append(", totalPrice = ").append(getTotalPrice());
- buffer.append(" }");
- return buffer.toString();
- }
-
- @Override
- public void toData(PdxWriter writer) {
- writer.writeLong("itemNo", itemNo);
- writer.writeString("description", description);
- writer.writeInt("quantity", quantity);
- writer.writeFloat("unitPrice", unitPrice);
- writer.writeFloat("totalPrice", totalPrice);
- }
-
- @Override
- public void fromData(PdxReader reader) {
- itemNo = reader.readLong("itemNo");
- description = reader.readString("description");
- quantity = reader.readInt("quantity");
- unitPrice = reader.readFloat("unitPrice");
- totalPrice = reader.readFloat("totalPrice");
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Order.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Order.java b/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Order.java
deleted file mode 100644
index 34aefb2..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Order.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.rest.internal.web.controllers;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import com.gemstone.gemfire.pdx.PdxReader;
-import com.gemstone.gemfire.pdx.PdxSerializable;
-import com.gemstone.gemfire.pdx.PdxWriter;
-
-/**
-* The Order class is an abstraction modeling a order.
-* <p/>
-* @author Nilkanth Patel
-* @since 8.0
-*/
-
-public class Order implements PdxSerializable {
-
- private Long purchaseOrderNo;
- private Long customerId;
- private String description;
- private Date orderDate;
- private Date deliveryDate;
- private String contact;
- private String email;
- private String phone;
- private List<Item> items;
- private double totalPrice;
-
- public Order() {
- items = new ArrayList<Item>();
- }
-
- public Order(final Long orderNo) {
- this.purchaseOrderNo = orderNo;
- }
-
- public Order(final Long orderNo, final Long custId, final String desc,
- final Date odate, final Date ddate, final String contact, final String email,
- final String phone, final List<Item> items, final double tprice) {
- this.purchaseOrderNo = orderNo;
- this.customerId = custId;
- this.description = desc;
- this.orderDate = odate;
- this.deliveryDate = ddate;
- this.contact = contact;
- this.email = email;
- this.phone = phone;
- this.items = items;
- this.totalPrice = tprice;
- }
-
- public void addItem(final Item item) {
- if (item != null)
- this.items.add(item);
- }
-
- public Long getPurchaseOrderNo() {
- return purchaseOrderNo;
- }
-
- public void setPurchaseOrderNo(Long purchaseOrderNo) {
- this.purchaseOrderNo = purchaseOrderNo;
- }
-
- public Long getCustomerId() {
- return customerId;
- }
-
- public void setCustomerId(Long customerId) {
- this.customerId = customerId;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public Date getDeliveryDate() {
- return deliveryDate;
- }
-
- public void setDeliveryDate(Date date) {
- this.deliveryDate = date;
- }
-
- public String getContact() {
- return contact;
- }
-
- public void setContact(String contact) {
- this.contact = contact;
- }
-
- public String getEmail() {
- return email;
- }
-
- public void setEmail(String email) {
- this.email = email;
- }
-
- public String getPhone() {
- return phone;
- }
-
- public void setPhone(String phone) {
- this.phone = phone;
- }
-
- public List<Item> getItems() {
- return items;
- }
-
- public void setItems(List<Item> items) {
- if(this.items == null)
- this.items = new ArrayList<Item>();
-
- for (Item it : items)
- this.items.add(it);
- }
-
- public Date getOrderDate() {
- return orderDate;
- }
-
- public void setOrderDate(Date orderDate) {
- this.orderDate = orderDate;
- }
-
- public double getTotalPrice() {
- return totalPrice;
- }
-
- public void setTotalPrice(double totalPrice) {
- this.totalPrice = totalPrice;
- }
-
- @Override
- public void toData(PdxWriter writer) {
- writer.writeLong("purchaseOrderNo", purchaseOrderNo);
- writer.writeLong("customerId", customerId);
- writer.writeString("description", description);
- writer.writeDate("orderDate", orderDate);
- writer.writeDate("deliveryDate", deliveryDate);
- writer.writeString("contact", contact);
- writer.writeString("email", email);
- writer.writeString("phone", phone);
- writer.writeObject("items", items);
- writer.writeDouble("totalPrice", totalPrice);
- }
-
- @Override
- public void fromData(PdxReader reader) {
- purchaseOrderNo = reader.readLong("purchaseOrderNo");
- customerId = reader.readLong("customerId");
- description = reader.readString("description");
- orderDate = reader.readDate("orderDate");
- deliveryDate = reader.readDate("deliveryDate");
- contact = reader.readString("contact");
- email = reader.readString("email");
- phone = reader.readString("phone");
- items = (List<Item>)reader.readObject("items");
- totalPrice = reader.readDouble("totalPrice");
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Person.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Person.java b/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Person.java
deleted file mode 100644
index b5b5459..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/Person.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.rest.internal.web.controllers;
-
-import java.util.Date;
-import com.gemstone.gemfire.internal.lang.ObjectUtils;
-import com.gemstone.gemfire.pdx.PdxReader;
-import com.gemstone.gemfire.pdx.PdxSerializable;
-import com.gemstone.gemfire.pdx.PdxWriter;
-
-import java.io.Serializable;
-
-/**
-* The Person class is an abstraction modeling a person.
-* <p/>
-* @author Nilkanth Patel, John Blum
-* @since 8.0
-*/
-@SuppressWarnings("unused")
-public class Person implements PdxSerializable {
-
- private static final long serialVersionUID = 42108163264l;
-
- protected static final String DOB_FORMAT_PATTERN = "MM/dd/yyyy";
-
- private Long id;
-
- private Date birthDate;
-
- private Gender gender;
-
- private String firstName;
- private String middleName;
- private String lastName;
-
- public Person() {
- }
-
- public Person(final Long id) {
- this.id = id;
- }
-
- public Person(final String firstName, final String lastName) {
- this.firstName = firstName;
- this.lastName = lastName;
- }
-
- public Person(Long id, String fn, String mn, String ln, Date bDate, Gender g) {
- this.id = id;
- this.firstName = fn;
- this.middleName = mn;
- this.lastName = ln;
- this.birthDate = bDate;
- this.gender = g;
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(final Long id) {
- this.id = id;
- }
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(final String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(final String lastName) {
- this.lastName = lastName;
- }
-
- public String getMiddleName() {
- return middleName;
- }
-
- public void setMiddleName(final String middleName) {
- this.middleName = middleName;
- }
-
- public Date getBirthDate() {
- return birthDate;
- }
-
- public void setBirthDate(final Date birthDate) {
- this.birthDate = birthDate;
- }
-
- public Gender getGender() {
- return gender;
- }
-
- public void setGender(final Gender gender) {
- this.gender = gender;
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (obj == this) {
- return true;
- }
-
- if (!(obj instanceof Person)) {
- return false;
- }
-
- final Person that = (Person) obj;
-
- return (ObjectUtils.equals(this.getId(), that.getId())
- || (ObjectUtils.equals(this.getBirthDate(), that.getBirthDate())
- && ObjectUtils.equals(this.getLastName(), that.getLastName())
- && ObjectUtils.equals(this.getFirstName(), that.getFirstName())));
- }
-
- @Override
- public int hashCode() {
- int hashValue = 17;
- hashValue = 37 * hashValue + ObjectUtils.hashCode(getId());
- hashValue = 37 * hashValue + ObjectUtils.hashCode(getBirthDate());
- hashValue = 37 * hashValue + ObjectUtils.hashCode(getLastName());
- hashValue = 37 * hashValue + ObjectUtils.hashCode(getFirstName());
- return hashValue;
- }
-
- @Override
- public String toString() {
- final StringBuilder buffer = new StringBuilder("{ type = ");
- buffer.append(getClass().getName());
- buffer.append(", id = ").append(getId());
- buffer.append(", firstName = ").append(getFirstName());
- buffer.append(", middleName = ").append(getMiddleName());
- buffer.append(", lastName = ").append(getLastName());
- buffer.append(", birthDate = ").append(DateTimeUtils.format(getBirthDate(), DOB_FORMAT_PATTERN));
- buffer.append(", gender = ").append(getGender());
- buffer.append(" }");
- return buffer.toString();
- }
-
- @Override
- public void toData(PdxWriter writer) {
- writer.writeString("@type", getClass().getName());
- writer.writeLong("id", id);
- writer.writeString("firstName", firstName);
- writer.writeString("middleName", middleName);
- writer.writeString("lastName", lastName);
- writer.writeObject("gender", gender);
- writer.writeDate("birthDate", birthDate);
-
- }
-
- @Override
- public void fromData(PdxReader reader) {
- String type = reader.readString("@type");
- id = reader.readLong("id");
- firstName = reader.readString("firstName");
- middleName = reader.readString("middleName");
- lastName = reader.readString("lastName");
- gender = (Gender)reader.readObject("gender");
- birthDate = reader.readDate("birthDate");
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/PutKeyFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/PutKeyFunction.java b/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/PutKeyFunction.java
deleted file mode 100644
index e75d9fc..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/PutKeyFunction.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.rest.internal.web.controllers;
-
-import java.util.Properties;
-
-import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.cache.execute.Function;
-import com.gemstone.gemfire.cache.execute.FunctionContext;
-import com.gemstone.gemfire.cache.execute.RegionFunctionContext;
-
-
-/**
- * Function that puts the value from the argument at the key passed in through
- * the filter.
- */
-
-public class PutKeyFunction implements Function {
-
- private static final String ID = "PutKeyFunction";
-
- public void execute(FunctionContext context) {
- RegionFunctionContext regionContext = (RegionFunctionContext)context;
- Region dataSet = regionContext.getDataSet();
- Object key = regionContext.getFilter().iterator().next();
- Object value = regionContext.getArguments();
- dataSet.put(key, value);
- context.getResultSender().lastResult(Boolean.TRUE);
- }
-
- public String getId() {
- return ID;
- }
-
- public boolean hasResult() {
- return true;
- }
-
- public void init(Properties p) {
- }
-
- public boolean optimizeForWrite() {
- return true;
- }
- public boolean isHA() {
- return true;
- }
-}
-
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9b55879e/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPITestBase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPITestBase.java b/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPITestBase.java
deleted file mode 100644
index 50965f6..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPITestBase.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.rest.internal.web.controllers;
-
-import java.util.Properties;
-
-import com.gemstone.gemfire.cache.Cache;
-import com.gemstone.gemfire.cache.CacheClosedException;
-import com.gemstone.gemfire.cache.CacheFactory;
-import com.gemstone.gemfire.cache.RegionShortcut;
-import com.gemstone.gemfire.distributed.internal.DistributionConfig;
-import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
-import com.gemstone.gemfire.internal.AvailablePortHelper;
-import com.gemstone.gemfire.test.dunit.DistributedTestCase;
-import com.gemstone.gemfire.test.dunit.Host;
-import com.gemstone.gemfire.test.dunit.VM;
-import com.gemstone.gemfire.test.dunit.Wait;
-
-public class RestAPITestBase extends DistributedTestCase {
- private static final long serialVersionUID = 1L;
- public static Cache cache = null;
- VM vm0 = null;
- VM vm1 = null;
- VM vm2 = null;
- VM vm3 = null;
-
- public RestAPITestBase(String name) {
- super(name);
- }
-
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- disconnectAllFromDS();
- Wait.pause(5000);
- final Host host = Host.getHost(0);
- vm0 = host.getVM(0);
- vm1 = host.getVM(1);
- vm2 = host.getVM(2);
- vm3 = host.getVM(3);
- }
-
- /**
- * close the clients and teh servers
- */
- @Override
- protected final void preTearDown() throws Exception {
- vm0.invoke(() -> closeCache());
- vm1.invoke(() -> closeCache());
- vm2.invoke(() -> closeCache());
- vm3.invoke(() -> closeCache());
- }
-
- /**
- * close the cache
- *
- */
- public static void closeCache() {
- if (cache != null && !cache.isClosed()) {
- cache.close();
- cache.getDistributedSystem().disconnect();
- }
- }
-
- protected static String createCache(VM currentVM) {
-
- RestAPITestBase test = new RestAPITestBase(getTestMethodName());
-
- final String hostName = currentVM.getHost().getHostName();
- final int serverPort = AvailablePortHelper.getRandomAvailableTCPPort();
-
- Properties props = new Properties();
-
- props.setProperty(DistributionConfig.START_DEV_REST_API_NAME, "true");
- props.setProperty(DistributionConfig.HTTP_SERVICE_BIND_ADDRESS_NAME, hostName);
- props.setProperty(DistributionConfig.HTTP_SERVICE_PORT_NAME,String.valueOf(serverPort));
-
-
- InternalDistributedSystem ds = test.getSystem(props);
- cache = CacheFactory.create(ds);
- return "http://" + hostName + ":" + serverPort + "/gemfire-api/v1";
-
- }
-
- public static String createCacheWithGroups (VM vm, final String groups, final String regionName ) {
- RestAPITestBase test = new RestAPITestBase(getTestMethodName());
-
- final String hostName = vm.getHost().getHostName();
- final int serverPort = AvailablePortHelper.getRandomAvailableTCPPort();
-
- Properties props = new Properties();
-
- if(groups != null) {
- props.put("groups", groups);
- }
-
- props.setProperty(DistributionConfig.START_DEV_REST_API_NAME, "true");
- props.setProperty(DistributionConfig.HTTP_SERVICE_BIND_ADDRESS_NAME, hostName);
- props.setProperty(DistributionConfig.HTTP_SERVICE_PORT_NAME, String.valueOf(serverPort));
-
- InternalDistributedSystem ds = test.getSystem(props);
- cache = CacheFactory.create(ds);
-
- String restEndPoint = "http://" + hostName + ":" + serverPort + "/gemfire-api/v1";
- return restEndPoint;
- }
-
-}