You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ji...@apache.org on 2016/12/06 16:45:14 UTC
geode git commit: field value query does not run through post
processor
Repository: geode
Updated Branches:
refs/heads/GEODE-2153 [created] 3234450aa
field value query does not run through post processor
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/3234450a
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/3234450a
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/3234450a
Branch: refs/heads/GEODE-2153
Commit: 3234450aab71e6d67e40d1aaa72976afff968703
Parents: 4876c78
Author: Jinmei Liao <ji...@pivotal.io>
Authored: Tue Nov 29 12:47:08 2016 -0800
Committer: Jinmei Liao <ji...@pivotal.io>
Committed: Tue Dec 6 08:44:35 2016 -0800
----------------------------------------------------------------------
.../FieldQueryPostProcessorDUnitTest.java | 128 +++++++++++++++++++
1 file changed, 128 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/3234450a/geode-core/src/test/java/org/apache/geode/security/FieldQueryPostProcessorDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/security/FieldQueryPostProcessorDUnitTest.java b/geode-core/src/test/java/org/apache/geode/security/FieldQueryPostProcessorDUnitTest.java
new file mode 100644
index 0000000..13ecde7
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/security/FieldQueryPostProcessorDUnitTest.java
@@ -0,0 +1,128 @@
+/*
+ * 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 org.apache.geode.security;
+
+import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_MANAGER;
+import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_POST_PROCESSOR;
+import static org.apache.geode.security.AbstractSecureServerDUnitTest.createClientProperties;
+
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.RegionShortcut;
+import org.apache.geode.cache.client.ClientCache;
+import org.apache.geode.cache.client.ClientCacheFactory;
+import org.apache.geode.cache.client.ClientRegionShortcut;
+import org.apache.geode.cache.query.SelectResults;
+import org.apache.geode.test.dunit.Host;
+import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.Test;
+
+import java.util.Properties;
+
+public class FieldQueryPostProcessorDUnitTest extends JUnit4DistributedTestCase {
+ private static VM client;
+
+ @ClassRule
+ public static ServerStarterRule serverStarter = new ServerStarterRule(new Properties(){{
+ setProperty(SECURITY_MANAGER, SimpleTestSecurityManager.class.getName());
+ setProperty(SECURITY_POST_PROCESSOR, InnerPostProcessor.class.getName());
+ }});
+
+ @BeforeClass
+ public static void before(){
+ Region region =
+ serverStarter.cache.createRegionFactory(RegionShortcut.REPLICATE).create("customer");
+ region.put("1", new Customer(1, "user", "123-456-7890"));
+ region.put("2", new Customer(2, "admin", "122-455-7890"));
+
+ Host host = Host.getHost(0);
+ client = host.getVM(0);
+ }
+ @Test
+ public void testQueryFieldAccess(){
+ int serverPort = serverStarter.server.getPort();
+ client.invoke(() -> {
+ ClientCacheFactory cf = new ClientCacheFactory(createClientProperties("data", "data"));
+ ClientCache cache = cf.setPoolSubscriptionEnabled(true)
+ .addPoolServer("localhost", serverPort)
+ .create();
+ Region region = cache.createClientRegionFactory(ClientRegionShortcut.PROXY).create("customer");
+
+ // post process for query
+ String query = "select c.ssn from /customer c";
+ SelectResults result = region.query(query);
+ result.size();
+ });
+ }
+
+
+ public static class InnerPostProcessor implements PostProcessor{
+
+ private int count = 0;
+ @Override
+ public Object processRegionValue(Object principal, String regionName, Object key,
+ Object value) {
+ count++;
+ return value;
+ }
+
+ public int getCount(){
+ return count;
+ }
+ }
+
+ public static class Customer {
+ private String ssn;
+ private String name;
+ private int id;
+
+ public Customer(int id, String name, String ssn) {
+ this.id = id;
+ this.ssn = ssn;
+ this.name = name;
+ }
+
+ public String getSsn() {
+ return ssn;
+ }
+
+ public void setSsn(String ssn) {
+ this.ssn = ssn;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+ }
+
+}