You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ud...@apache.org on 2017/10/24 21:40:42 UTC
[geode] branch develop updated: GEODE-3705: Refactor code to
process authentication message as per normal message framework
This is an automated email from the ASF dual-hosted git repository.
udo pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 44e8432 GEODE-3705: Refactor code to process authentication message as per normal message framework
44e8432 is described below
commit 44e8432e6637afbde478420c26e260630a922a5e
Author: kohlmu-pivotal <uk...@pivotal.io>
AuthorDate: Thu Oct 19 15:46:21 2017 -0700
GEODE-3705: Refactor code to process authentication message as per normal message framework
---
.../distributed/internal/InternalLocator.java | 1 -
.../distributed/internal/tcpserver/TcpServer.java | 6 +-
.../protocol}/ClientProtocolProcessor.java | 2 +-
.../protocol}/ClientProtocolService.java | 2 +-
.../protocol}/ClientProtocolServiceLoader.java | 4 +-
.../internal/cache/tier/sockets/AcceptorImpl.java | 119 ++++++++++-----------
.../sockets/GenericProtocolServerConnection.java | 9 +-
.../tier/sockets/ServerConnectionFactory.java | 3 +
.../cache/tier/sockets/TcpServerFactory.java | 1 +
.../ClientProtocolMessageHandler.java | 9 +-
.../{protobuf => }/EncodingTypeTranslator.java | 3 +-
.../internal/protocol/{protobuf => }/Failure.java | 3 +-
.../MessageExecutionContext.java | 69 ++++++++----
.../protocol/{protobuf => }/OperationContext.java | 7 +-
.../internal/protocol/ProtobufCachePipeline.java | 78 --------------
.../internal/protocol/ProtobufProtocolService.java | 103 ------------------
.../protocol/{protobuf => }/ProtocolErrorCode.java | 5 +-
.../internal/protocol/{protobuf => }/Result.java | 3 +-
.../internal/protocol/{protobuf => }/Success.java | 3 +-
.../protocol/operations/OperationHandler.java | 6 +-
.../ProtobufCachePipeline.java} | 36 ++++---
.../{ => protobuf}/ProtobufLocatorPipeline.java | 13 ++-
.../protocol/protobuf/ProtobufOpsProcessor.java | 70 ++++++------
.../protocol/protobuf/ProtobufProtocolService.java | 69 ++++++++++++
.../protobuf/ProtobufSerializationService.java | 1 +
.../protocol/protobuf/ProtobufStreamProcessor.java | 12 +--
.../operations/GetAllRequestOperationHandler.java | 16 +--
.../GetAvailableServersOperationHandler.java | 10 +-
.../GetRegionNamesRequestOperationHandler.java | 10 +-
.../GetRegionRequestOperationHandler.java | 14 +--
.../operations/GetRequestOperationHandler.java | 15 ++-
.../operations/PutAllRequestOperationHandler.java | 16 +--
.../operations/PutRequestOperationHandler.java | 14 +--
.../operations/RemoveRequestOperationHandler.java | 14 +--
.../AuthenticationRequestOperationHandler.java | 86 +++++++++++++++
....java => ProtobufOperationContextRegistry.java} | 14 ++-
.../security/InvalidConfigAuthenticator.java | 24 ++---
.../security/ProtobufShiroAuthenticator.java | 71 ++----------
.../protobuf/security/ProtobufShiroAuthorizer.java | 8 +-
...mpatibleAuthenticationMechanismsException.java} | 10 +-
.../AuthenticationSecurityProcessor.java | 34 ++++++
.../statistics/ProtobufClientStatisticsImpl.java | 15 ++-
.../utilities/ProtobufResponseUtilities.java | 4 +-
.../protobuf/utilities/ProtobufUtilities.java | 8 +-
.../{protobuf => }/security/Authenticator.java | 21 ++--
.../{protobuf => }/security/Authorizer.java | 4 +-
.../{protobuf => }/security/NoOpAuthenticator.java | 12 +--
.../{protobuf => }/security/NoOpAuthorizer.java | 4 +-
.../protocol/security/SecurityLookupService.java | 97 +++++++++++++++++
.../SecurityProcessor.java} | 13 ++-
.../AuthorizationSecurityProcessor.java} | 18 ++--
.../NoAuthenticationSecurityProcessor.java} | 35 ++----
.../{protobuf => }/statistics/NoOpStatistics.java | 4 +-
.../ProtocolClientStatistics.java} | 8 +-
geode-protobuf/src/main/proto/clientProtocol.proto | 4 +-
...nal.cache.client.protocol.ClientProtocolService | 1 +
...ternal.cache.tier.sockets.ClientProtocolService | 1 -
.../GenericProtocolServerConnectionTest.java | 3 +-
.../protocol/AuthenticationIntegrationTest.java | 25 ++---
.../protocol/AuthorizationIntegrationTest.java | 7 +-
.../ProtobufTestExecutionContext.java | 25 ++---
.../acceptance/CacheConnectionJUnitTest.java | 6 +-
.../acceptance/CacheOperationsJUnitTest.java | 5 +-
.../acceptance/LocatorConnectionDUnitTest.java | 6 +-
...TypeToSerializationTypeTranslatorJUnitTest.java | 1 +
.../ProtobufProtocolServiceJUnitTest.java | 9 +-
.../ProtobufShiroAuthenticatorJUnitTest.java | 44 ++++----
.../protobuf/ProtobufStreamProcessorTest.java | 9 +-
.../GetAllRequestOperationHandlerJUnitTest.java | 14 +--
...tAvailableServersOperationHandlerJUnitTest.java | 26 +++--
...egionNamesRequestOperationHandlerJUnitTest.java | 25 +++--
.../GetRegionRequestOperationHandlerJUnitTest.java | 13 +--
.../GetRequestOperationHandlerJUnitTest.java | 20 ++--
.../PutAllRequestOperationHandlerJUnitTest.java | 12 +--
.../PutRequestOperationHandlerJUnitTest.java | 27 ++---
.../RemoveRequestOperationHandlerJUnitTest.java | 18 ++--
76 files changed, 814 insertions(+), 723 deletions(-)
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
index 9b0ad22..06603cc 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
@@ -62,7 +62,6 @@ import org.apache.geode.distributed.internal.tcpserver.TcpServer;
import org.apache.geode.internal.admin.remote.DistributionLocatorId;
import org.apache.geode.internal.cache.GemFireCacheImpl;
import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.internal.cache.tier.sockets.ClientProtocolService;
import org.apache.geode.internal.cache.tier.sockets.TcpServerFactory;
import org.apache.geode.internal.cache.wan.WANServiceProvider;
import org.apache.geode.internal.i18n.LocalizedStrings;
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java
index 34a34d6..a673c03 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java
@@ -59,9 +59,9 @@ import org.apache.geode.internal.VersionedDataInputStream;
import org.apache.geode.internal.VersionedDataOutputStream;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.cache.tier.CommunicationMode;
-import org.apache.geode.internal.cache.tier.sockets.ClientProtocolProcessor;
-import org.apache.geode.internal.cache.tier.sockets.ClientProtocolService;
-import org.apache.geode.internal.cache.tier.sockets.ClientProtocolServiceLoader;
+import org.apache.geode.internal.cache.client.protocol.ClientProtocolProcessor;
+import org.apache.geode.internal.cache.client.protocol.ClientProtocolService;
+import org.apache.geode.internal.cache.client.protocol.ClientProtocolServiceLoader;
import org.apache.geode.internal.cache.tier.sockets.HandShake;
import org.apache.geode.internal.cache.tier.sockets.ServiceLoadingFailureException;
import org.apache.geode.internal.logging.LogService;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/client/protocol/ClientProtocolProcessor.java
similarity index 96%
rename from geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolProcessor.java
rename to geode-core/src/main/java/org/apache/geode/internal/cache/client/protocol/ClientProtocolProcessor.java
index 30b4baf..e49f16f 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/client/protocol/ClientProtocolProcessor.java
@@ -13,7 +13,7 @@
* the License.
*/
-package org.apache.geode.internal.cache.tier.sockets;
+package org.apache.geode.internal.cache.client.protocol;
import java.io.IOException;
import java.io.InputStream;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolService.java b/geode-core/src/main/java/org/apache/geode/internal/cache/client/protocol/ClientProtocolService.java
similarity index 96%
rename from geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolService.java
rename to geode-core/src/main/java/org/apache/geode/internal/cache/client/protocol/ClientProtocolService.java
index 544f286..7f50c9f 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolService.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/client/protocol/ClientProtocolService.java
@@ -13,7 +13,7 @@
* the License.
*/
-package org.apache.geode.internal.cache.tier.sockets;
+package org.apache.geode.internal.cache.client.protocol;
import org.apache.geode.StatisticsFactory;
import org.apache.geode.cache.Cache;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolServiceLoader.java b/geode-core/src/main/java/org/apache/geode/internal/cache/client/protocol/ClientProtocolServiceLoader.java
similarity index 93%
rename from geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolServiceLoader.java
rename to geode-core/src/main/java/org/apache/geode/internal/cache/client/protocol/ClientProtocolServiceLoader.java
index 8b069ad..c7ba6e0 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolServiceLoader.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/client/protocol/ClientProtocolServiceLoader.java
@@ -13,12 +13,14 @@
* the License.
*/
-package org.apache.geode.internal.cache.tier.sockets;
+package org.apache.geode.internal.cache.client.protocol;
import java.util.LinkedList;
import java.util.List;
import java.util.ServiceLoader;
+import org.apache.geode.internal.cache.tier.sockets.ServiceLoadingFailureException;
+
public class ClientProtocolServiceLoader {
private final List<ClientProtocolService> clientProtocolServices;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/AcceptorImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/AcceptorImpl.java
index 59ef466..2dea63e 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/AcceptorImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/AcceptorImpl.java
@@ -336,72 +336,24 @@ public class AcceptorImpl implements Acceptor, Runnable, CommBufferPool {
this.isGatewayReceiver = isGatewayReceiver;
this.gatewayTransportFilters = transportFilter;
this.serverConnectionFactory = serverConnectionFactory;
- {
- int tmp_maxConnections = maxConnections;
- if (tmp_maxConnections < MINIMUM_MAX_CONNECTIONS) {
- tmp_maxConnections = MINIMUM_MAX_CONNECTIONS;
- }
- this.maxConnections = tmp_maxConnections;
- }
- {
- int tmp_maxThreads = maxThreads;
- if (maxThreads == CacheServer.DEFAULT_MAX_THREADS) {
- // consult system properties for 5.0.2 backwards compatibility
- if (DEPRECATED_SELECTOR) {
- tmp_maxThreads = DEPRECATED_SELECTOR_POOL_SIZE;
- }
- }
- if (tmp_maxThreads < 0) {
- tmp_maxThreads = 0;
- } else if (tmp_maxThreads > this.maxConnections) {
- tmp_maxThreads = this.maxConnections;
- }
- boolean isWindows = false;
- String os = System.getProperty("os.name");
- if (os != null) {
- if (os.indexOf("Windows") != -1) {
- isWindows = true;
- }
- }
- if (tmp_maxThreads > 0 && isWindows) {
- // bug #40472 and JDK bug 6230761 - NIO can't be used with IPv6 on Windows
- if (getBindAddress() instanceof Inet6Address) {
- logger.warn(LocalizedMessage
- .create(LocalizedStrings.AcceptorImpl_IGNORING_MAX_THREADS_DUE_TO_JROCKIT_NIO_BUG));
- tmp_maxThreads = 0;
- }
- // bug #40198 - Selector.wakeup() hangs if VM starts to exit
- if (isJRockit) {
- logger.warn(LocalizedMessage
- .create(LocalizedStrings.AcceptorImpl_IGNORING_MAX_THREADS_DUE_TO_WINDOWS_IPV6_BUG));
- tmp_maxThreads = 0;
- }
- }
- this.maxThreads = tmp_maxThreads;
- }
- {
- Selector tmp_s = null;
- // Selector tmp2_s = null;
- LinkedBlockingQueue tmp_q = null;
- LinkedBlockingQueue tmp_commQ = null;
- HashSet tmp_hs = null;
- SystemTimer tmp_timer = null;
- if (isSelector()) {
- tmp_s = Selector.open(); // no longer catch ex to fix bug 36907
- // tmp2_s = Selector.open(); // workaround for bug 39624
- tmp_q = new LinkedBlockingQueue();
- tmp_commQ = new LinkedBlockingQueue();
- tmp_hs = new HashSet(512);
- tmp_timer = new SystemTimer(internalCache.getDistributedSystem(), true);
- }
- this.selector = tmp_s;
- // this.tmpSel = tmp2_s;
- this.selectorQueue = tmp_q;
- this.commBufferQueue = tmp_commQ;
- this.selectorRegistrations = tmp_hs;
- this.hsTimer = tmp_timer;
- this.tcpNoDelay = tcpNoDelay;
+
+ this.maxConnections = Math.min(maxConnections, MINIMUM_MAX_CONNECTIONS);
+ this.maxThreads = calculateMaxThreads(maxThreads);
+
+ if (isSelector()) {
+ this.selector = Selector.open();
+ this.selectorQueue = new LinkedBlockingQueue();
+ this.commBufferQueue = new LinkedBlockingQueue();
+ this.selectorRegistrations = new HashSet(512);
+ this.hsTimer = new SystemTimer(internalCache.getDistributedSystem(), true);
+ } else {
+ this.selector = null;
+ this.selectorQueue = null;
+ this.commBufferQueue = null;
+ this.selectorRegistrations = null;
+ this.hsTimer = null;
}
+ this.tcpNoDelay = tcpNoDelay;
{
if (!isGatewayReceiver) {
@@ -633,6 +585,43 @@ public class AcceptorImpl implements Acceptor, Runnable, CommBufferPool {
(postAuthzFactoryName != null && postAuthzFactoryName.length() > 0) ? true : false;
}
+ private int calculateMaxThreads(int maxThreads) throws IOException {
+ int tmp_maxThreads = maxThreads;
+ if (maxThreads == CacheServer.DEFAULT_MAX_THREADS) {
+ // consult system properties for 5.0.2 backwards compatibility
+ if (DEPRECATED_SELECTOR) {
+ tmp_maxThreads = DEPRECATED_SELECTOR_POOL_SIZE;
+ }
+ }
+ if (tmp_maxThreads < 0) {
+ tmp_maxThreads = 0;
+ } else if (tmp_maxThreads > this.maxConnections) {
+ tmp_maxThreads = this.maxConnections;
+ }
+ boolean isWindows = false;
+ String os = System.getProperty("os.name");
+ if (os != null) {
+ if (os.indexOf("Windows") != -1) {
+ isWindows = true;
+ }
+ }
+ if (tmp_maxThreads > 0 && isWindows) {
+ // bug #40472 and JDK bug 6230761 - NIO can't be used with IPv6 on Windows
+ if (getBindAddress() instanceof Inet6Address) {
+ logger.warn(LocalizedMessage
+ .create(LocalizedStrings.AcceptorImpl_IGNORING_MAX_THREADS_DUE_TO_JROCKIT_NIO_BUG));
+ tmp_maxThreads = 0;
+ }
+ // bug #40198 - Selector.wakeup() hangs if VM starts to exit
+ if (isJRockit) {
+ logger.warn(LocalizedMessage
+ .create(LocalizedStrings.AcceptorImpl_IGNORING_MAX_THREADS_DUE_TO_WINDOWS_IPV6_BUG));
+ tmp_maxThreads = 0;
+ }
+ }
+ return tmp_maxThreads;
+ }
+
public long getAcceptorId() {
return this.acceptorId;
}
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/GenericProtocolServerConnection.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/GenericProtocolServerConnection.java
index 5be6cac..8063bf0 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/GenericProtocolServerConnection.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/GenericProtocolServerConnection.java
@@ -28,6 +28,7 @@ import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.internal.ServerLocation;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.cache.client.protocol.ClientProtocolProcessor;
import org.apache.geode.internal.cache.tier.Acceptor;
import org.apache.geode.internal.cache.tier.CachedRegionHelper;
import org.apache.geode.internal.cache.tier.CommunicationMode;
@@ -38,7 +39,7 @@ import org.apache.geode.internal.security.SecurityService;
*/
public class GenericProtocolServerConnection extends ServerConnection {
// The new protocol lives in a separate module and gets loaded when this class is instantiated.
- private final ClientProtocolProcessor protocolPipeline;
+ private final ClientProtocolProcessor protocolProcessor;
private boolean cleanedUp;
private ClientProxyMembershipID clientProxyMembershipID;
@@ -52,7 +53,7 @@ public class GenericProtocolServerConnection extends ServerConnection {
SecurityService securityService) {
super(socket, c, helper, stats, hsTimeout, socketBufferSize, communicationModeStr,
communicationMode, acceptor, securityService);
- this.protocolPipeline = clientProtocolProcessor;
+ this.protocolProcessor = clientProtocolProcessor;
setClientProxyMembershipId();
@@ -66,7 +67,7 @@ public class GenericProtocolServerConnection extends ServerConnection {
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
- protocolPipeline.processMessage(inputStream, outputStream);
+ protocolProcessor.processMessage(inputStream, outputStream);
} catch (EOFException e) {
this.setFlagProcessMessagesAsFalse();
setClientDisconnectedException(e);
@@ -94,7 +95,7 @@ public class GenericProtocolServerConnection extends ServerConnection {
synchronized (this) {
if (!cleanedUp) {
cleanedUp = true;
- protocolPipeline.close();
+ protocolProcessor.close();
}
}
return super.cleanup();
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerConnectionFactory.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerConnectionFactory.java
index 5f0757f..a6fc973 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerConnectionFactory.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerConnectionFactory.java
@@ -22,6 +22,9 @@ import java.net.Socket;
import org.apache.geode.StatisticsFactory;
import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.cache.client.protocol.ClientProtocolProcessor;
+import org.apache.geode.internal.cache.client.protocol.ClientProtocolService;
+import org.apache.geode.internal.cache.client.protocol.ClientProtocolServiceLoader;
import org.apache.geode.internal.cache.tier.Acceptor;
import org.apache.geode.internal.cache.tier.CachedRegionHelper;
import org.apache.geode.internal.security.SecurityService;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/TcpServerFactory.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/TcpServerFactory.java
index 47b26d8..1f16dfd 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/TcpServerFactory.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/TcpServerFactory.java
@@ -25,6 +25,7 @@ import org.apache.geode.distributed.internal.InternalLocator;
import org.apache.geode.distributed.internal.PoolStatHelper;
import org.apache.geode.distributed.internal.tcpserver.TcpHandler;
import org.apache.geode.distributed.internal.tcpserver.TcpServer;
+import org.apache.geode.internal.cache.client.protocol.ClientProtocolServiceLoader;
import org.apache.geode.internal.logging.LogService;
public class TcpServerFactory {
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolMessageHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ClientProtocolMessageHandler.java
similarity index 80%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolMessageHandler.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ClientProtocolMessageHandler.java
index 1d86d70..559f7e1 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolMessageHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ClientProtocolMessageHandler.java
@@ -13,14 +13,14 @@
* the License.
*/
-package org.apache.geode.internal.cache.tier.sockets;
+package org.apache.geode.internal.protocol;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import org.apache.geode.Statistics;
-import org.apache.geode.StatisticsFactory;
+import org.apache.geode.internal.cache.tier.sockets.GenericProtocolServerConnection;
+import org.apache.geode.internal.cache.tier.sockets.ServerConnectionFactory;
/**
@@ -30,6 +30,9 @@ import org.apache.geode.StatisticsFactory;
* Currently, only one {@link ClientProtocolMessageHandler} at a time can be used in a Geode
* instance. It gets wired into {@link ServerConnectionFactory} to create all instances of
* {@link GenericProtocolServerConnection}.
+ *
+ * Implementors of this interface are expected to be able to be used for any number of connections
+ * at a time (stateless except for the statistics).
*/
public interface ClientProtocolMessageHandler {
void receiveMessage(InputStream inputStream, OutputStream outputStream,
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/EncodingTypeTranslator.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/EncodingTypeTranslator.java
similarity index 96%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/EncodingTypeTranslator.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/EncodingTypeTranslator.java
index 1868ced..5801292 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/EncodingTypeTranslator.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/EncodingTypeTranslator.java
@@ -12,11 +12,12 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf;
+package org.apache.geode.internal.protocol;
import java.util.HashMap;
import org.apache.geode.annotations.Experimental;
+import org.apache.geode.internal.protocol.protobuf.BasicTypes;
import org.apache.geode.pdx.JSONFormatter;
import org.apache.geode.pdx.PdxInstance;
import org.apache.geode.internal.serialization.SerializationType;
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Failure.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/Failure.java
similarity index 93%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Failure.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/Failure.java
index 6ac73de..f390247 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Failure.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/Failure.java
@@ -12,11 +12,12 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf;
+package org.apache.geode.internal.protocol;
import java.util.function.Function;
import org.apache.geode.annotations.Experimental;
+import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
@Experimental
public class Failure<SuccessType> implements Result<SuccessType> {
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/cache/tier/sockets/MessageExecutionContext.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/MessageExecutionContext.java
similarity index 55%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/cache/tier/sockets/MessageExecutionContext.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/MessageExecutionContext.java
index b205b33..f95704b 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/cache/tier/sockets/MessageExecutionContext.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/MessageExecutionContext.java
@@ -13,48 +13,61 @@
* the License.
*/
-package org.apache.geode.internal.cache.tier.sockets;
+package org.apache.geode.internal.protocol;
+
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.Cache;
import org.apache.geode.distributed.Locator;
import org.apache.geode.distributed.internal.InternalLocator;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
-import org.apache.geode.internal.protocol.protobuf.statistics.ProtobufClientStatistics;
-import org.apache.geode.internal.protocol.protobuf.security.Authorizer;
-import org.apache.geode.internal.protocol.protobuf.security.NoOpAuthorizer;
-import org.apache.geode.security.ResourcePermission;
+import org.apache.geode.internal.protocol.security.processors.AuthorizationSecurityProcessor;
+import org.apache.geode.internal.protocol.security.processors.NoAuthenticationSecurityProcessor;
+import org.apache.geode.internal.protocol.security.Authenticator;
+import org.apache.geode.internal.protocol.security.NoOpAuthenticator;
+import org.apache.geode.internal.protocol.security.SecurityProcessor;
+import org.apache.geode.internal.protocol.statistics.ProtocolClientStatistics;
+import org.apache.geode.internal.protocol.security.Authorizer;
+import org.apache.geode.internal.protocol.security.NoOpAuthorizer;
@Experimental
public class MessageExecutionContext {
- private Cache cache;
- private Locator locator;
+ private final Cache cache;
+ private final Locator locator;
private final Authorizer authorizer;
- private final Object authenticatedSubject;
- private final ProtobufClientStatistics statistics;
+ private Object authenticatedToken;
+ private final ProtocolClientStatistics statistics;
+ private SecurityProcessor securityProcessor;
+ private final Authenticator authenticator;
- public MessageExecutionContext(Cache cache, Authorizer streamAuthorizer,
- Object authenticatedSubject, ProtobufClientStatistics statistics) {
+ public MessageExecutionContext(Cache cache, Authenticator authenticator,
+ Authorizer streamAuthorizer, Object authenticatedToken, ProtocolClientStatistics statistics,
+ SecurityProcessor securityProcessor) {
this.cache = cache;
+ this.locator = null;
this.authorizer = streamAuthorizer;
- this.authenticatedSubject = authenticatedSubject;
+ this.authenticatedToken = authenticatedToken;
this.statistics = statistics;
+ this.securityProcessor = securityProcessor;
+ this.authenticator = authenticator;
}
- public MessageExecutionContext(InternalLocator locator, ProtobufClientStatistics statistics) {
+ public MessageExecutionContext(InternalLocator locator, ProtocolClientStatistics statistics) {
this.locator = locator;
+ this.cache = null;
// set a no-op authorizer until such time as locators implement authentication
// and authorization checks
this.authorizer = new NoOpAuthorizer();
+ this.authenticator = new NoOpAuthenticator();
this.statistics = statistics;
- this.authenticatedSubject = new Object();
+ this.securityProcessor = new NoAuthenticationSecurityProcessor();
}
/**
* Returns the cache associated with this execution
* <p>
- *
+ *
* @throws InvalidExecutionContextException if there is no cache available
*/
public Cache getCache() throws InvalidExecutionContextException {
@@ -68,7 +81,7 @@ public class MessageExecutionContext {
/**
* Returns the locator associated with this execution
* <p>
- *
+ *
* @throws InvalidExecutionContextException if there is no locator available
*/
public Locator getLocator() throws InvalidExecutionContextException {
@@ -87,10 +100,10 @@ public class MessageExecutionContext {
}
/**
- * Returns the authentication/authorization subject associated with this execution
+ * Returns the authentication token associated with this execution
*/
- public Object getSubject() {
- return authenticatedSubject;
+ public Object getAuthenticationToken() {
+ return authenticatedToken;
}
@@ -98,7 +111,23 @@ public class MessageExecutionContext {
* Returns the statistics for recording operation stats. In a unit test environment this may not
* be a protocol-specific statistics implementation.
*/
- public ProtobufClientStatistics getStatistics() {
+ public ProtocolClientStatistics getStatistics() {
return statistics;
}
+
+ public Authenticator getAuthenticator() {
+ return authenticator;
+ }
+
+ public SecurityProcessor getSecurityProcessor() {
+ return securityProcessor;
+ }
+
+ public void setSecurityProcessor(AuthorizationSecurityProcessor securityProcessor) {
+ this.securityProcessor = securityProcessor;
+ }
+
+ public void setAuthenticationToken(Object authenticationToken) {
+ this.authenticatedToken = authenticationToken;
+ }
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/OperationContext.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/OperationContext.java
similarity index 92%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/OperationContext.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/OperationContext.java
index 12c50aa..6e2d636 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/OperationContext.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/OperationContext.java
@@ -13,12 +13,13 @@
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf;
+package org.apache.geode.internal.protocol;
import java.util.function.Function;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.internal.protocol.operations.OperationHandler;
+import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
import org.apache.geode.security.ResourcePermission;
@Experimental
@@ -36,11 +37,11 @@ public class OperationContext<OperationRequest, OperationResponse> {
this.operationHandler = operationHandler;
this.fromRequest = fromRequest;
this.toResponse = toResponse;
- this.toErrorResponse = OperationContext::makeErrorBuilder;
+ this.toErrorResponse = this::makeErrorBuilder;
accessPermissionRequired = permissionRequired;
}
- public static ClientProtocol.Response.Builder makeErrorBuilder(
+ private ClientProtocol.Response.Builder makeErrorBuilder(
ClientProtocol.ErrorResponse errorResponse) {
return ClientProtocol.Response.newBuilder().setErrorResponse(errorResponse);
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufCachePipeline.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufCachePipeline.java
deleted file mode 100644
index 90c9895..0000000
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufCachePipeline.java
+++ /dev/null
@@ -1,78 +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 org.apache.geode.internal.protocol;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.apache.geode.annotations.Experimental;
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.IncompatibleVersionException;
-import org.apache.geode.internal.cache.tier.sockets.ClientProtocolProcessor;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
-import org.apache.geode.internal.protocol.protobuf.ProtobufStreamProcessor;
-import org.apache.geode.internal.protocol.protobuf.security.Authenticator;
-import org.apache.geode.internal.protocol.protobuf.security.Authorizer;
-import org.apache.geode.internal.protocol.protobuf.statistics.ProtobufClientStatistics;
-import org.apache.geode.internal.security.SecurityService;
-import org.apache.geode.security.AuthenticationFailedException;
-
-
-@Experimental
-public final class ProtobufCachePipeline implements ClientProtocolProcessor {
- private final ProtobufClientStatistics statistics;
- private final Cache cache;
- private final Authorizer authorizer;
- private final SecurityService securityService;
- private final ProtobufStreamProcessor streamProcessor;
- private final Authenticator authenticator;
-
- private Object authenticatorToken;
-
- ProtobufCachePipeline(ProtobufStreamProcessor protobufStreamProcessor,
- ProtobufClientStatistics statistics, Cache cache, Authenticator authenticator,
- Authorizer authorizer, SecurityService securityService) {
- this.streamProcessor = protobufStreamProcessor;
- this.statistics = statistics;
- this.cache = cache;
- this.authenticator = authenticator;
- this.authorizer = authorizer;
- this.securityService = securityService;
- this.statistics.clientConnected();
- }
-
- @Override
- public void processMessage(InputStream inputStream, OutputStream outputStream)
- throws IOException, IncompatibleVersionException {
- if (authenticatorToken == null) {
- try {
- authenticatorToken = authenticator.authenticate(inputStream, outputStream, securityService);
- } catch (AuthenticationFailedException ex) {
- statistics.incAuthenticationFailures();
- throw new IOException(ex);
- }
- } else {
- streamProcessor.receiveMessage(inputStream, outputStream,
- new MessageExecutionContext(cache, authorizer, authenticatorToken, statistics));
- }
- }
-
- @Override
- public void close() {
- this.statistics.clientDisconnected();
- }
-}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufProtocolService.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufProtocolService.java
deleted file mode 100644
index 7c14852..0000000
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufProtocolService.java
+++ /dev/null
@@ -1,103 +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 org.apache.geode.internal.protocol;
-
-import org.apache.geode.StatisticsFactory;
-import org.apache.geode.cache.Cache;
-import org.apache.geode.distributed.internal.InternalLocator;
-import org.apache.geode.internal.cache.tier.sockets.ClientProtocolProcessor;
-import org.apache.geode.internal.cache.tier.sockets.ClientProtocolService;
-import org.apache.geode.internal.protocol.protobuf.security.Authorizer;
-import org.apache.geode.internal.protocol.protobuf.security.InvalidConfigAuthenticator;
-import org.apache.geode.internal.protocol.protobuf.security.NoOpAuthorizer;
-import org.apache.geode.internal.protocol.protobuf.security.ProtobufShiroAuthenticator;
-import org.apache.geode.internal.protocol.protobuf.ProtobufStreamProcessor;
-import org.apache.geode.internal.protocol.protobuf.security.ProtobufShiroAuthorizer;
-import org.apache.geode.internal.protocol.protobuf.statistics.NoOpStatistics;
-import org.apache.geode.internal.protocol.protobuf.statistics.ProtobufClientStatistics;
-import org.apache.geode.internal.protocol.protobuf.statistics.ProtobufClientStatisticsImpl;
-import org.apache.geode.internal.security.SecurityService;
-import org.apache.geode.internal.protocol.protobuf.security.Authenticator;
-import org.apache.geode.internal.protocol.protobuf.security.NoOpAuthenticator;
-
-public class ProtobufProtocolService implements ClientProtocolService {
- private volatile ProtobufClientStatistics statistics;
- private final ProtobufStreamProcessor protobufStreamProcessor = new ProtobufStreamProcessor();
-
- @Override
- public synchronized void initializeStatistics(String statisticsName, StatisticsFactory factory) {
- if (statistics == null) {
- statistics = new ProtobufClientStatisticsImpl(factory, statisticsName,
- ProtobufClientStatistics.PROTOBUF_STATS_NAME);
- }
- }
-
- @Override
- public ClientProtocolProcessor createProcessorForCache(Cache cache,
- SecurityService securityService) {
- assert (statistics != null);
-
- Authenticator authenticator = getAuthenticator(securityService);
- Authorizer authorizer = getAuthorizer(securityService);
-
- return new ProtobufCachePipeline(protobufStreamProcessor, getStatistics(), cache, authenticator,
- authorizer, securityService);
- }
-
- /**
- * For internal use. This is necessary because the statistics may get initialized in another
- * thread.
- */
- ProtobufClientStatistics getStatistics() {
- if (statistics == null) {
- return new NoOpStatistics();
- }
- return statistics;
- }
-
- @Override
- public ClientProtocolProcessor createProcessorForLocator(InternalLocator locator) {
- return new ProtobufLocatorPipeline(protobufStreamProcessor, getStatistics(), locator);
- }
-
- private Authenticator getAuthenticator(SecurityService securityService) {
- if (securityService.isIntegratedSecurity()) {
- // Simple authenticator...normal shiro
- return new ProtobufShiroAuthenticator();
- }
- if (securityService.isPeerSecurityRequired() || securityService.isClientSecurityRequired()) {
- // Failing authentication...legacy security
- return new InvalidConfigAuthenticator();
- } else {
- // Noop authenticator...no security
- return new NoOpAuthenticator();
- }
- }
-
- private Authorizer getAuthorizer(SecurityService securityService) {
- if (securityService.isIntegratedSecurity()) {
- // Simple authenticator...normal shiro
- return new ProtobufShiroAuthorizer(securityService);
- }
- if (securityService.isPeerSecurityRequired() || securityService.isClientSecurityRequired()) {
- // Failing authentication...legacy security
- // This should never be called.
- return null;
- } else {
- // Noop authenticator...no security
- return new NoOpAuthorizer();
- }
- }
-}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtocolErrorCode.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtocolErrorCode.java
similarity index 92%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtocolErrorCode.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtocolErrorCode.java
index 0e41d7a..302889c 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtocolErrorCode.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtocolErrorCode.java
@@ -12,16 +12,17 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf;
+package org.apache.geode.internal.protocol;
public enum ProtocolErrorCode {
GENERIC_FAILURE(1000),
VALUE_ENCODING_ERROR(1100),
UNSUPPORTED_VERSION(1101),
UNSUPPORTED_OPERATION(1102),
+ UNSUPPORTED_AUTHENTICATION_MODE(1103),
AUTHENTICATION_FAILED(1200),
AUTHORIZATION_FAILED(1201),
- UNAUTHORIZED_REQUEST(1202),
+ ALREADY_AUTHENTICATED(1202),
LOW_MEMORY(1300),
DATA_UNREACHABLE(1301),
OPERATION_TIMEOUT(1302),
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Result.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/Result.java
similarity index 91%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Result.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/Result.java
index bada098..6a1a3a4 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Result.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/Result.java
@@ -12,11 +12,12 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf;
+package org.apache.geode.internal.protocol;
import java.util.function.Function;
import org.apache.geode.annotations.Experimental;
+import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
@Experimental
public interface Result<SuccessType> {
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Success.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/Success.java
similarity index 93%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Success.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/Success.java
index 224b21c..1c1e6f9 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Success.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/Success.java
@@ -12,11 +12,12 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf;
+package org.apache.geode.internal.protocol;
import java.util.function.Function;
import org.apache.geode.annotations.Experimental;
+import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
@Experimental
public class Success<SuccessType> implements Result<SuccessType> {
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/operations/OperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/operations/OperationHandler.java
index 9d2d482..286c525 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/operations/OperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/operations/OperationHandler.java
@@ -15,10 +15,10 @@
package org.apache.geode.internal.protocol.operations;
import org.apache.geode.annotations.Experimental;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
import org.apache.geode.internal.protocol.protobuf.ProtobufOpsProcessor;
-import org.apache.geode.internal.protocol.protobuf.Result;
+import org.apache.geode.internal.protocol.Result;
import org.apache.geode.internal.serialization.SerializationService;
/**
@@ -34,6 +34,6 @@ public interface OperationHandler<Req, Resp> {
* indicated on the provided cache, and return a response.
*/
Result<Resp> process(SerializationService serializationService, Req request,
- MessageExecutionContext executionContext) throws InvalidExecutionContextException;
+ MessageExecutionContext messageExecutionContext) throws InvalidExecutionContextException;
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufLocatorPipeline.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufCachePipeline.java
similarity index 52%
copy from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufLocatorPipeline.java
copy to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufCachePipeline.java
index f4ed9e2..44829e0 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufLocatorPipeline.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufCachePipeline.java
@@ -13,39 +13,43 @@
* the License.
*/
-package org.apache.geode.internal.protocol;
+package org.apache.geode.internal.protocol.protobuf;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.geode.annotations.Experimental;
-import org.apache.geode.cache.IncompatibleVersionException;
-import org.apache.geode.distributed.internal.InternalLocator;
-import org.apache.geode.internal.cache.tier.sockets.ClientProtocolProcessor;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
-import org.apache.geode.internal.protocol.protobuf.ProtobufStreamProcessor;
-import org.apache.geode.internal.protocol.protobuf.statistics.ProtobufClientStatistics;
+import org.apache.geode.cache.Cache;
+import org.apache.geode.internal.cache.client.protocol.ClientProtocolProcessor;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
+import org.apache.geode.internal.protocol.security.Authenticator;
+import org.apache.geode.internal.protocol.security.Authorizer;
+import org.apache.geode.internal.protocol.security.SecurityProcessor;
+import org.apache.geode.internal.protocol.statistics.ProtocolClientStatistics;
+
@Experimental
-public final class ProtobufLocatorPipeline implements ClientProtocolProcessor {
- private final ProtobufClientStatistics statistics;
- private final InternalLocator locator;
+public final class ProtobufCachePipeline implements ClientProtocolProcessor {
+ private final ProtocolClientStatistics statistics;
private final ProtobufStreamProcessor streamProcessor;
- ProtobufLocatorPipeline(ProtobufStreamProcessor protobufStreamProcessor,
- ProtobufClientStatistics statistics, InternalLocator locator) {
+ private final MessageExecutionContext messageExecutionContext;
+
+ ProtobufCachePipeline(ProtobufStreamProcessor protobufStreamProcessor,
+ ProtocolClientStatistics statistics, Cache cache, Authenticator authenticator,
+ Authorizer authorizer, SecurityProcessor securityProcessor) {
this.streamProcessor = protobufStreamProcessor;
this.statistics = statistics;
- this.locator = locator;
this.statistics.clientConnected();
+ this.messageExecutionContext = new MessageExecutionContext(cache, authenticator, authorizer,
+ null, statistics, securityProcessor);
}
@Override
public void processMessage(InputStream inputStream, OutputStream outputStream)
- throws IOException, IncompatibleVersionException {
- streamProcessor.receiveMessage(inputStream, outputStream,
- new MessageExecutionContext(locator, statistics));
+ throws IOException {
+ streamProcessor.receiveMessage(inputStream, outputStream, messageExecutionContext);
}
@Override
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufLocatorPipeline.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufLocatorPipeline.java
similarity index 79%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufLocatorPipeline.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufLocatorPipeline.java
index f4ed9e2..12aab64 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufLocatorPipeline.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufLocatorPipeline.java
@@ -13,7 +13,7 @@
* the License.
*/
-package org.apache.geode.internal.protocol;
+package org.apache.geode.internal.protocol.protobuf;
import java.io.IOException;
import java.io.InputStream;
@@ -22,19 +22,18 @@ import java.io.OutputStream;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.IncompatibleVersionException;
import org.apache.geode.distributed.internal.InternalLocator;
-import org.apache.geode.internal.cache.tier.sockets.ClientProtocolProcessor;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
-import org.apache.geode.internal.protocol.protobuf.ProtobufStreamProcessor;
-import org.apache.geode.internal.protocol.protobuf.statistics.ProtobufClientStatistics;
+import org.apache.geode.internal.cache.client.protocol.ClientProtocolProcessor;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
+import org.apache.geode.internal.protocol.statistics.ProtocolClientStatistics;
@Experimental
public final class ProtobufLocatorPipeline implements ClientProtocolProcessor {
- private final ProtobufClientStatistics statistics;
+ private final ProtocolClientStatistics statistics;
private final InternalLocator locator;
private final ProtobufStreamProcessor streamProcessor;
ProtobufLocatorPipeline(ProtobufStreamProcessor protobufStreamProcessor,
- ProtobufClientStatistics statistics, InternalLocator locator) {
+ ProtocolClientStatistics statistics, InternalLocator locator) {
this.streamProcessor = protobufStreamProcessor;
this.statistics = statistics;
this.locator = locator;
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufOpsProcessor.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufOpsProcessor.java
index a8cde46..5968e8e 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufOpsProcessor.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufOpsProcessor.java
@@ -17,15 +17,20 @@ package org.apache.geode.internal.protocol.protobuf;
import org.apache.logging.log4j.Logger;
import org.apache.geode.annotations.Experimental;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.internal.protocol.protobuf.registry.OperationContextRegistry;
-import org.apache.geode.internal.protocol.protobuf.statistics.ProtobufClientStatistics;
+import org.apache.geode.internal.protocol.Failure;
+import org.apache.geode.internal.protocol.OperationContext;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.protobuf.registry.ProtobufOperationContextRegistry;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufResponseUtilities;
+import org.apache.geode.internal.protocol.security.SecurityProcessor;
import org.apache.geode.internal.serialization.SerializationService;
+import org.apache.geode.security.AuthenticationRequiredException;
+import org.apache.geode.security.NotAuthorizedException;
-import static org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode.*;
+import static org.apache.geode.internal.protocol.ProtocolErrorCode.*;
/**
* This handles protobuf requests by determining the operation type of the request and dispatching
@@ -34,47 +39,52 @@ import static org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode.*;
@Experimental
public class ProtobufOpsProcessor {
- private final OperationContextRegistry operationContextRegistry;
+ private final ProtobufOperationContextRegistry protobufOperationContextRegistry;
private final SerializationService serializationService;
private static final Logger logger = LogService.getLogger(ProtobufOpsProcessor.class);
public ProtobufOpsProcessor(SerializationService serializationService,
- OperationContextRegistry operationContextRegistry) {
+ ProtobufOperationContextRegistry protobufOperationContextRegistry) {
this.serializationService = serializationService;
- this.operationContextRegistry = operationContextRegistry;
+ this.protobufOperationContextRegistry = protobufOperationContextRegistry;
}
public ClientProtocol.Response process(ClientProtocol.Request request,
- MessageExecutionContext context) {
+ MessageExecutionContext messageExecutionContext) {
ClientProtocol.Request.RequestAPICase requestType = request.getRequestAPICase();
logger.debug("Processing request of type {}", requestType);
- OperationContext operationContext = operationContextRegistry.getOperationContext(requestType);
- ClientProtocol.Response.Builder builder;
+ OperationContext operationContext =
+ protobufOperationContextRegistry.getOperationContext(requestType);
Result result;
+
+ SecurityProcessor securityProcessor = messageExecutionContext.getSecurityProcessor();
try {
- if (context.getAuthorizer().authorize(context.getSubject(),
- operationContext.getAccessPermissionRequired())) {
- result = operationContext.getOperationHandler().process(serializationService,
- operationContext.getFromRequest().apply(request), context);
- } else {
- logger.warn("Received unauthorized request");
- recordAuthorizationViolation(context);
- result = Failure.of(ProtobufResponseUtilities.makeErrorResponse(AUTHORIZATION_FAILED,
- "User isn't authorized for this operation."));
- }
- } catch (InvalidExecutionContextException exception) {
- logger.error("Invalid execution context found for operation {}", requestType);
- result = Failure.of(ProtobufResponseUtilities.makeErrorResponse(UNSUPPORTED_OPERATION,
- "Invalid execution context found for operation."));
+ securityProcessor.validateOperation(request, messageExecutionContext, operationContext);
+ result = processOperation(request, messageExecutionContext, requestType, operationContext);
+ } catch (AuthenticationRequiredException e) {
+ logger.warn(e);
+ result = Failure
+ .of(ProtobufResponseUtilities.makeErrorResponse(AUTHENTICATION_FAILED, e.getMessage()));
+ } catch (NotAuthorizedException e) {
+ logger.warn(e);
+ messageExecutionContext.getStatistics().incAuthorizationViolations();
+ result = Failure.of(ProtobufResponseUtilities.makeErrorResponse(AUTHORIZATION_FAILED,
+ "The user is not authorized to complete this operation"));
}
- builder = (ClientProtocol.Response.Builder) result.map(operationContext.getToResponse(),
- operationContext.getToErrorResponse());
- return builder.build();
+ return ((ClientProtocol.Response.Builder) result.map(operationContext.getToResponse(),
+ operationContext.getToErrorResponse())).build();
}
- private void recordAuthorizationViolation(MessageExecutionContext context) {
- ProtobufClientStatistics statistics = context.getStatistics();
- statistics.incAuthorizationViolations();
+ private Result processOperation(ClientProtocol.Request request, MessageExecutionContext context,
+ ClientProtocol.Request.RequestAPICase requestType, OperationContext operationContext) {
+ try {
+ return operationContext.getOperationHandler().process(serializationService,
+ operationContext.getFromRequest().apply(request), context);
+ } catch (InvalidExecutionContextException exception) {
+ logger.error("Invalid execution context found for operation {}", requestType);
+ return Failure.of(ProtobufResponseUtilities.makeErrorResponse(UNSUPPORTED_OPERATION,
+ "Invalid execution context found for operation."));
+ }
}
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufProtocolService.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufProtocolService.java
new file mode 100644
index 0000000..4d8a100
--- /dev/null
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufProtocolService.java
@@ -0,0 +1,69 @@
+/*
+ * 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.internal.protocol.protobuf;
+
+import org.apache.geode.StatisticsFactory;
+import org.apache.geode.cache.Cache;
+import org.apache.geode.distributed.internal.InternalLocator;
+import org.apache.geode.internal.cache.client.protocol.ClientProtocolProcessor;
+import org.apache.geode.internal.cache.client.protocol.ClientProtocolService;
+import org.apache.geode.internal.protocol.protobuf.statistics.ProtobufClientStatisticsImpl;
+import org.apache.geode.internal.protocol.security.Authenticator;
+import org.apache.geode.internal.protocol.security.Authorizer;
+import org.apache.geode.internal.protocol.security.SecurityLookupService;
+import org.apache.geode.internal.protocol.statistics.NoOpStatistics;
+import org.apache.geode.internal.protocol.statistics.ProtocolClientStatistics;
+import org.apache.geode.internal.security.SecurityService;
+
+public class ProtobufProtocolService implements ClientProtocolService {
+ private volatile ProtocolClientStatistics statistics;
+ private final ProtobufStreamProcessor protobufStreamProcessor = new ProtobufStreamProcessor();
+ private final SecurityLookupService securityLookupService = new SecurityLookupService();
+
+ @Override
+ public synchronized void initializeStatistics(String statisticsName, StatisticsFactory factory) {
+ if (statistics == null) {
+ statistics = new ProtobufClientStatisticsImpl(factory, statisticsName);
+ }
+ }
+
+ @Override
+ public ClientProtocolProcessor createProcessorForCache(Cache cache,
+ SecurityService securityService) {
+ assert (statistics != null);
+
+ Authenticator authenticator = securityLookupService.lookupAuthenticator(securityService);
+ Authorizer authorizer = securityLookupService.lookupAuthorizer(securityService);
+
+ return new ProtobufCachePipeline(protobufStreamProcessor, getStatistics(), cache, authenticator,
+ authorizer, securityLookupService.lookupProcessor(securityService));
+ }
+
+ /**
+ * For internal use. This is necessary because the statistics may get initialized in another
+ * thread.
+ */
+ ProtocolClientStatistics getStatistics() {
+ if (statistics == null) {
+ return new NoOpStatistics();
+ }
+ return statistics;
+ }
+
+ @Override
+ public ClientProtocolProcessor createProcessorForLocator(InternalLocator locator) {
+ return new ProtobufLocatorPipeline(protobufStreamProcessor, getStatistics(), locator);
+ }
+}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufSerializationService.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufSerializationService.java
index 8b8dbb3..f7281fd 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufSerializationService.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufSerializationService.java
@@ -15,6 +15,7 @@
package org.apache.geode.internal.protocol.protobuf;
import org.apache.geode.annotations.Experimental;
+import org.apache.geode.internal.protocol.EncodingTypeTranslator;
import org.apache.geode.internal.serialization.SerializationService;
import org.apache.geode.internal.serialization.SerializationType;
import org.apache.geode.internal.serialization.TypeCodec;
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufStreamProcessor.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufStreamProcessor.java
index 89f02e3..7bc4730 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufStreamProcessor.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufStreamProcessor.java
@@ -22,13 +22,13 @@ import java.io.OutputStream;
import org.apache.logging.log4j.Logger;
import org.apache.geode.annotations.Experimental;
-import org.apache.geode.internal.cache.tier.sockets.ClientProtocolMessageHandler;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.protocol.ClientProtocolMessageHandler;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.internal.protocol.exception.InvalidProtocolMessageException;
-import org.apache.geode.internal.protocol.protobuf.registry.OperationContextRegistry;
+import org.apache.geode.internal.protocol.protobuf.registry.ProtobufOperationContextRegistry;
import org.apache.geode.internal.protocol.protobuf.serializer.ProtobufProtocolSerializer;
-import org.apache.geode.internal.protocol.protobuf.statistics.ProtobufClientStatistics;
+import org.apache.geode.internal.protocol.statistics.ProtocolClientStatistics;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufUtilities;
/**
@@ -45,7 +45,7 @@ public class ProtobufStreamProcessor implements ClientProtocolMessageHandler {
public ProtobufStreamProcessor() {
protobufProtocolSerializer = new ProtobufProtocolSerializer();
protobufOpsProcessor = new ProtobufOpsProcessor(new ProtobufSerializationService(),
- new OperationContextRegistry());
+ new ProtobufOperationContextRegistry());
}
@Override
@@ -67,7 +67,7 @@ public class ProtobufStreamProcessor implements ClientProtocolMessageHandler {
logger.debug(errorMessage);
throw new EOFException(errorMessage);
}
- ProtobufClientStatistics statistics = executionContext.getStatistics();
+ ProtocolClientStatistics statistics = executionContext.getStatistics();
statistics.messageReceived(message.getSerializedSize());
ClientProtocol.Request request = message.getRequest();
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetAllRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetAllRequestOperationHandler.java
index 2001645..c91c9e1 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetAllRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetAllRequestOperationHandler.java
@@ -25,23 +25,23 @@ import org.apache.geode.cache.CacheLoaderException;
import org.apache.geode.cache.PartitionedRegionStorageException;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.TimeoutException;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.internal.protocol.operations.OperationHandler;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.Failure;
-import org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode;
-import org.apache.geode.internal.protocol.protobuf.Result;
-import org.apache.geode.internal.protocol.protobuf.Success;
+import org.apache.geode.internal.protocol.Failure;
+import org.apache.geode.internal.protocol.ProtocolErrorCode;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufResponseUtilities;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufUtilities;
import org.apache.geode.internal.serialization.SerializationService;
import org.apache.geode.internal.serialization.exception.UnsupportedEncodingTypeException;
import org.apache.geode.internal.serialization.registry.exception.CodecNotRegisteredForTypeException;
-import static org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode.*;
+import static org.apache.geode.internal.protocol.ProtocolErrorCode.*;
@Experimental
public class GetAllRequestOperationHandler
@@ -50,10 +50,10 @@ public class GetAllRequestOperationHandler
@Override
public Result<RegionAPI.GetAllResponse> process(SerializationService serializationService,
- RegionAPI.GetAllRequest request, MessageExecutionContext executionContext)
+ RegionAPI.GetAllRequest request, MessageExecutionContext messageExecutionContext)
throws InvalidExecutionContextException {
String regionName = request.getRegionName();
- Region region = executionContext.getCache().getRegion(regionName);
+ Region region = messageExecutionContext.getCache().getRegion(regionName);
if (region == null) {
logger.error("Received GetAll request for non-existing region {}", regionName);
return Failure
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetAvailableServersOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetAvailableServersOperationHandler.java
index c8f663f..f15e94c 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetAvailableServersOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetAvailableServersOperationHandler.java
@@ -21,13 +21,13 @@ import java.util.stream.Collectors;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.distributed.internal.InternalLocator;
import org.apache.geode.distributed.internal.ServerLocation;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
import org.apache.geode.internal.protocol.operations.OperationHandler;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
-import org.apache.geode.internal.protocol.protobuf.Result;
+import org.apache.geode.internal.protocol.Result;
import org.apache.geode.internal.protocol.protobuf.ServerAPI;
-import org.apache.geode.internal.protocol.protobuf.Success;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.serialization.SerializationService;
@Experimental
@@ -37,9 +37,9 @@ public class GetAvailableServersOperationHandler implements
@Override
public Result<ServerAPI.GetAvailableServersResponse> process(
SerializationService serializationService, ServerAPI.GetAvailableServersRequest request,
- MessageExecutionContext executionContext) throws InvalidExecutionContextException {
+ MessageExecutionContext messageExecutionContext) throws InvalidExecutionContextException {
- InternalLocator internalLocator = (InternalLocator) executionContext.getLocator();
+ InternalLocator internalLocator = (InternalLocator) messageExecutionContext.getLocator();
ArrayList serversFromSnapshot =
internalLocator.getServerLocatorAdvisee().getLoadSnapshot().getServers(null);
if (serversFromSnapshot == null) {
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionNamesRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionNamesRequestOperationHandler.java
index 7ffdcd8..7e7cf71 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionNamesRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionNamesRequestOperationHandler.java
@@ -18,12 +18,12 @@ import java.util.Set;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.Region;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
import org.apache.geode.internal.protocol.operations.OperationHandler;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.Result;
-import org.apache.geode.internal.protocol.protobuf.Success;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufResponseUtilities;
import org.apache.geode.internal.serialization.SerializationService;
@@ -33,9 +33,9 @@ public class GetRegionNamesRequestOperationHandler
@Override
public Result<RegionAPI.GetRegionNamesResponse> process(SerializationService serializationService,
- RegionAPI.GetRegionNamesRequest request, MessageExecutionContext executionContext)
+ RegionAPI.GetRegionNamesRequest request, MessageExecutionContext messageExecutionContext)
throws InvalidExecutionContextException {
- Set<Region<?, ?>> regions = executionContext.getCache().rootRegions();
+ Set<Region<?, ?>> regions = messageExecutionContext.getCache().rootRegions();
return Success.of(ProtobufResponseUtilities.createGetRegionNamesResponse(regions));
}
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionRequestOperationHandler.java
index 78d3d5c..f602d6a 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionRequestOperationHandler.java
@@ -18,20 +18,20 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.Region;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
import org.apache.geode.internal.protocol.operations.OperationHandler;
-import org.apache.geode.internal.protocol.protobuf.Failure;
+import org.apache.geode.internal.protocol.Failure;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.Result;
-import org.apache.geode.internal.protocol.protobuf.Success;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufResponseUtilities;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufUtilities;
import org.apache.geode.internal.serialization.SerializationService;
-import static org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode.*;
+import static org.apache.geode.internal.protocol.ProtocolErrorCode.*;
@Experimental
public class GetRegionRequestOperationHandler
@@ -40,11 +40,11 @@ public class GetRegionRequestOperationHandler
@Override
public Result<RegionAPI.GetRegionResponse> process(SerializationService serializationService,
- RegionAPI.GetRegionRequest request, MessageExecutionContext executionContext)
+ RegionAPI.GetRegionRequest request, MessageExecutionContext messageExecutionContext)
throws InvalidExecutionContextException {
String regionName = request.getRegionName();
- Region region = executionContext.getCache().getRegion(regionName);
+ Region region = messageExecutionContext.getCache().getRegion(regionName);
if (region == null) {
logger.error("Received GetRegion request for non-existing region {}", regionName);
return Failure.of(ProtobufResponseUtilities.makeErrorResponse(REGION_NOT_FOUND,
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRequestOperationHandler.java
index e7702b8..a67bdc9 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRequestOperationHandler.java
@@ -18,23 +18,22 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.Region;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.internal.protocol.operations.OperationHandler;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
-import org.apache.geode.internal.protocol.protobuf.Failure;
-import org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode;
+import org.apache.geode.internal.protocol.Failure;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.Result;
-import org.apache.geode.internal.protocol.protobuf.Success;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufResponseUtilities;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufUtilities;
import org.apache.geode.internal.serialization.SerializationService;
import org.apache.geode.internal.serialization.exception.UnsupportedEncodingTypeException;
import org.apache.geode.internal.serialization.registry.exception.CodecNotRegisteredForTypeException;
-import static org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode.*;
+import static org.apache.geode.internal.protocol.ProtocolErrorCode.*;
@Experimental
public class GetRequestOperationHandler
@@ -43,10 +42,10 @@ public class GetRequestOperationHandler
@Override
public Result<RegionAPI.GetResponse> process(SerializationService serializationService,
- RegionAPI.GetRequest request, MessageExecutionContext executionContext)
+ RegionAPI.GetRequest request, MessageExecutionContext messageExecutionContext)
throws InvalidExecutionContextException {
String regionName = request.getRegionName();
- Region region = executionContext.getCache().getRegion(regionName);
+ Region region = messageExecutionContext.getCache().getRegion(regionName);
if (region == null) {
logger.error("Received Get request for non-existing region {}", regionName);
return Failure
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/PutAllRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/PutAllRequestOperationHandler.java
index 300616b..b085370 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/PutAllRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/PutAllRequestOperationHandler.java
@@ -22,22 +22,22 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.Region;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
import org.apache.geode.internal.protocol.operations.OperationHandler;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
-import org.apache.geode.internal.protocol.protobuf.Failure;
-import org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode;
+import org.apache.geode.internal.protocol.Failure;
+import org.apache.geode.internal.protocol.ProtocolErrorCode;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.Result;
-import org.apache.geode.internal.protocol.protobuf.Success;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufResponseUtilities;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufUtilities;
import org.apache.geode.internal.serialization.SerializationService;
import org.apache.geode.internal.serialization.exception.UnsupportedEncodingTypeException;
import org.apache.geode.internal.serialization.registry.exception.CodecNotRegisteredForTypeException;
-import static org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode.*;
+import static org.apache.geode.internal.protocol.ProtocolErrorCode.*;
@Experimental
public class PutAllRequestOperationHandler
@@ -46,10 +46,10 @@ public class PutAllRequestOperationHandler
@Override
public Result<RegionAPI.PutAllResponse> process(SerializationService serializationService,
- RegionAPI.PutAllRequest putAllRequest, MessageExecutionContext executionContext)
+ RegionAPI.PutAllRequest putAllRequest, MessageExecutionContext messageExecutionContext)
throws InvalidExecutionContextException {
String regionName = putAllRequest.getRegionName();
- Region region = executionContext.getCache().getRegion(regionName);
+ Region region = messageExecutionContext.getCache().getRegion(regionName);
if (region == null) {
logger.error("Received PutAll request for non-existing region {}", regionName);
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/PutRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/PutRequestOperationHandler.java
index 81c842d..345f829 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/PutRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/PutRequestOperationHandler.java
@@ -18,22 +18,22 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.Region;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.internal.protocol.operations.OperationHandler;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
-import org.apache.geode.internal.protocol.protobuf.Failure;
+import org.apache.geode.internal.protocol.Failure;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.Result;
-import org.apache.geode.internal.protocol.protobuf.Success;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufResponseUtilities;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufUtilities;
import org.apache.geode.internal.serialization.SerializationService;
import org.apache.geode.internal.serialization.exception.UnsupportedEncodingTypeException;
import org.apache.geode.internal.serialization.registry.exception.CodecNotRegisteredForTypeException;
-import static org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode.*;
+import static org.apache.geode.internal.protocol.ProtocolErrorCode.*;
@Experimental
public class PutRequestOperationHandler
@@ -42,10 +42,10 @@ public class PutRequestOperationHandler
@Override
public Result<RegionAPI.PutResponse> process(SerializationService serializationService,
- RegionAPI.PutRequest request, MessageExecutionContext executionContext)
+ RegionAPI.PutRequest request, MessageExecutionContext messageExecutionContext)
throws InvalidExecutionContextException {
String regionName = request.getRegionName();
- Region region = executionContext.getCache().getRegion(regionName);
+ Region region = messageExecutionContext.getCache().getRegion(regionName);
if (region == null) {
logger.warn("Received Put request for non-existing region: {}", regionName);
return Failure.of(ProtobufResponseUtilities.makeErrorResponse(REGION_NOT_FOUND,
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/RemoveRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/RemoveRequestOperationHandler.java
index 0e3b148..2278f78 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/RemoveRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/RemoveRequestOperationHandler.java
@@ -19,20 +19,20 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.Region;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
import org.apache.geode.internal.protocol.operations.OperationHandler;
-import org.apache.geode.internal.protocol.protobuf.Failure;
+import org.apache.geode.internal.protocol.Failure;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.Result;
-import org.apache.geode.internal.protocol.protobuf.Success;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufResponseUtilities;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufUtilities;
import org.apache.geode.internal.serialization.SerializationService;
import org.apache.geode.internal.serialization.exception.UnsupportedEncodingTypeException;
import org.apache.geode.internal.serialization.registry.exception.CodecNotRegisteredForTypeException;
-import static org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode.*;
+import static org.apache.geode.internal.protocol.ProtocolErrorCode.*;
@Experimental
public class RemoveRequestOperationHandler
@@ -41,11 +41,11 @@ public class RemoveRequestOperationHandler
@Override
public Result<RegionAPI.RemoveResponse> process(SerializationService serializationService,
- RegionAPI.RemoveRequest request, MessageExecutionContext executionContext)
+ RegionAPI.RemoveRequest request, MessageExecutionContext messageExecutionContext)
throws InvalidExecutionContextException {
String regionName = request.getRegionName();
- Region region = executionContext.getCache().getRegion(regionName);
+ Region region = messageExecutionContext.getCache().getRegion(regionName);
if (region == null) {
logger.error("Received Remove request for non-existing region {}", regionName);
return Failure
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/security/AuthenticationRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/security/AuthenticationRequestOperationHandler.java
new file mode 100644
index 0000000..ffc3c04
--- /dev/null
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/security/AuthenticationRequestOperationHandler.java
@@ -0,0 +1,86 @@
+/*
+ * 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.internal.protocol.protobuf.operations.security;
+
+import java.util.Properties;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import org.apache.geode.internal.protocol.MessageExecutionContext;
+import org.apache.geode.internal.exception.InvalidExecutionContextException;
+import org.apache.geode.internal.protocol.Failure;
+import org.apache.geode.internal.protocol.ProtocolErrorCode;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
+import org.apache.geode.internal.protocol.operations.OperationHandler;
+import org.apache.geode.internal.protocol.protobuf.AuthenticationAPI;
+import org.apache.geode.internal.protocol.protobuf.BasicTypes;
+import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
+import org.apache.geode.internal.protocol.protobuf.security.exception.IncompatibleAuthenticationMechanismsException;
+import org.apache.geode.internal.protocol.security.processors.AuthorizationSecurityProcessor;
+import org.apache.geode.internal.protocol.security.Authenticator;
+import org.apache.geode.internal.serialization.SerializationService;
+import org.apache.geode.security.AuthenticationFailedException;
+
+public class AuthenticationRequestOperationHandler implements
+ OperationHandler<AuthenticationAPI.AuthenticationRequest, AuthenticationAPI.AuthenticationResponse> {
+ private static final Logger logger = LogManager.getLogger();
+
+ @Override
+ public Result<AuthenticationAPI.AuthenticationResponse> process(
+ SerializationService serializationService, AuthenticationAPI.AuthenticationRequest request,
+ MessageExecutionContext messageExecutionContext) throws InvalidExecutionContextException {
+
+ if (messageExecutionContext.getAuthenticationToken() != null) {
+ return Failure.of(ClientProtocol.ErrorResponse.newBuilder()
+ .setError(buildAndLogError(ProtocolErrorCode.ALREADY_AUTHENTICATED,
+ "The user has already been authenticated for this connection. Re-authentication is not supported at this time.",
+ null))
+ .build());
+ }
+
+ Authenticator authenticator = messageExecutionContext.getAuthenticator();
+ Properties properties = new Properties();
+ properties.putAll(request.getCredentialsMap());
+
+ try {
+ Object authenticationToken = authenticator.authenticate(properties);
+ messageExecutionContext.setSecurityProcessor(new AuthorizationSecurityProcessor());
+ messageExecutionContext.setAuthenticationToken(authenticationToken);
+ return Success
+ .of(AuthenticationAPI.AuthenticationResponse.newBuilder().setAuthenticated(true).build());
+ } catch (IncompatibleAuthenticationMechanismsException e) {
+ return Failure.of(ClientProtocol.ErrorResponse.newBuilder().setError(
+ buildAndLogError(ProtocolErrorCode.UNSUPPORTED_AUTHENTICATION_MODE, e.getMessage(), e))
+ .build());
+ } catch (AuthenticationFailedException e) {
+ return Success.of(
+ AuthenticationAPI.AuthenticationResponse.newBuilder().setAuthenticated(false).build());
+ }
+ }
+
+ private BasicTypes.Error buildAndLogError(ProtocolErrorCode errorCode, String message,
+ Exception ex) {
+ if (ex == null) {
+ logger.warn(message);
+ } else {
+ logger.warn(message, ex);
+ }
+
+ return BasicTypes.Error.newBuilder().setErrorCode(errorCode.codeValue).setMessage(message)
+ .build();
+ }
+}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/registry/OperationContextRegistry.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/registry/ProtobufOperationContextRegistry.java
similarity index 88%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/registry/OperationContextRegistry.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/registry/ProtobufOperationContextRegistry.java
index 736fba5..757dd44 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/registry/OperationContextRegistry.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/registry/ProtobufOperationContextRegistry.java
@@ -21,7 +21,7 @@ import java.util.concurrent.ConcurrentHashMap;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
import org.apache.geode.internal.protocol.protobuf.ClientProtocol.Request.RequestAPICase;
-import org.apache.geode.internal.protocol.protobuf.OperationContext;
+import org.apache.geode.internal.protocol.OperationContext;
import org.apache.geode.internal.protocol.protobuf.operations.GetAllRequestOperationHandler;
import org.apache.geode.internal.protocol.protobuf.operations.GetAvailableServersOperationHandler;
import org.apache.geode.internal.protocol.protobuf.operations.GetRegionNamesRequestOperationHandler;
@@ -30,13 +30,14 @@ import org.apache.geode.internal.protocol.protobuf.operations.GetRequestOperatio
import org.apache.geode.internal.protocol.protobuf.operations.PutAllRequestOperationHandler;
import org.apache.geode.internal.protocol.protobuf.operations.PutRequestOperationHandler;
import org.apache.geode.internal.protocol.protobuf.operations.RemoveRequestOperationHandler;
+import org.apache.geode.internal.protocol.protobuf.operations.security.AuthenticationRequestOperationHandler;
import org.apache.geode.security.ResourcePermission;
@Experimental
-public class OperationContextRegistry {
+public class ProtobufOperationContextRegistry {
private Map<RequestAPICase, OperationContext> operationContexts = new ConcurrentHashMap<>();
- public OperationContextRegistry() {
+ public ProtobufOperationContextRegistry() {
addContexts();
}
@@ -45,6 +46,13 @@ public class OperationContextRegistry {
}
private void addContexts() {
+ operationContexts.put(RequestAPICase.AUTHENTICATIONREQUEST,
+ new OperationContext<>(ClientProtocol.Request::getAuthenticationRequest,
+ new AuthenticationRequestOperationHandler(),
+ opsResp -> ClientProtocol.Response.newBuilder().setAuthenticationResponse(opsResp),
+ new ResourcePermission(ResourcePermission.Resource.DATA,
+ ResourcePermission.Operation.READ)));
+
operationContexts.put(RequestAPICase.GETREQUEST,
new OperationContext<>(ClientProtocol.Request::getGetRequest,
new GetRequestOperationHandler(),
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/InvalidConfigAuthenticator.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/InvalidConfigAuthenticator.java
index bf3d669..bed24bb 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/InvalidConfigAuthenticator.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/InvalidConfigAuthenticator.java
@@ -21,31 +21,23 @@ import java.io.OutputStream;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
-import org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode;
+import org.apache.geode.internal.protocol.ProtocolErrorCode;
import org.apache.logging.log4j.Logger;
import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.internal.protocol.protobuf.AuthenticationAPI;
+import org.apache.geode.internal.protocol.protobuf.security.exception.IncompatibleAuthenticationMechanismsException;
+import org.apache.geode.internal.protocol.security.Authenticator;
import org.apache.geode.internal.security.SecurityService;
-import org.apache.geode.security.AuthenticationRequiredException;
+import org.apache.geode.security.AuthenticationFailedException;
-public class InvalidConfigAuthenticator implements Authenticator {
+public class InvalidConfigAuthenticator implements Authenticator<Object, Object> {
private static final Logger logger = LogService.getLogger(InvalidConfigAuthenticator.class);
@Override
- public Object authenticate(InputStream inputStream, OutputStream outputStream,
- SecurityService securityService) throws IOException {
+ public Object authenticate(Object object) throws AuthenticationFailedException {
logger.warn(
"Attempting to authenticate incoming protobuf message using legacy security implementation. This is not supported. Failing authentication.");
-
- ClientProtocol.Message.newBuilder()
- .setResponse(ClientProtocol.Response.newBuilder()
- .setErrorResponse(ClientProtocol.ErrorResponse.newBuilder()
- .setError(BasicTypes.Error.newBuilder()
- .setErrorCode(ProtocolErrorCode.AUTHENTICATION_FAILED.codeValue).setMessage(
- "Attempting to authenticate incoming protobuf message using legacy security implementation. This is not supported. Failing authentication."))))
- .build().writeDelimitedTo(outputStream);
-
- throw new IOException("Protobuf clients not supported with legacy security.");
+ throw new IncompatibleAuthenticationMechanismsException(
+ "Attempting to authenticate incoming protobuf message using legacy security implementation. This is not supported. Failing authentication.");
}
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/ProtobufShiroAuthenticator.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/ProtobufShiroAuthenticator.java
index ca47b94..fc95751 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/ProtobufShiroAuthenticator.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/ProtobufShiroAuthenticator.java
@@ -14,74 +14,23 @@
*/
package org.apache.geode.internal.protocol.protobuf.security;
-import static org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode.AUTHENTICATION_FAILED;
-
-import org.apache.geode.internal.protocol.protobuf.AuthenticationAPI;
-
-import org.apache.geode.internal.protocol.protobuf.BasicTypes;
-import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
-import org.apache.geode.internal.security.SecurityService;
-import org.apache.geode.security.AuthenticationFailedException;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
import java.util.Properties;
import org.apache.shiro.subject.Subject;
-public class ProtobufShiroAuthenticator implements Authenticator {
-
- private static final String SHOULD_HAVE_AUTHED =
- "Got non-auth request while expecting authentication request";
-
- @Override
- public Subject authenticate(InputStream inputStream, OutputStream outputStream,
- SecurityService securityService) throws IOException, AuthenticationFailedException {
- ClientProtocol.Message message = ClientProtocol.Message.parseDelimitedFrom(inputStream);
-
- if (message.getRequest().getRequestAPICase()
- .getNumber() != ClientProtocol.Request.SIMPLEAUTHENTICATIONREQUEST_FIELD_NUMBER) {
- failAuth(outputStream);
- }
-
- AuthenticationAPI.AuthenticationRequest authenticationRequest =
- message.getRequest().getSimpleAuthenticationRequest();
- if (authenticationRequest == null) {
- failAuth(outputStream);
- }
-
- Properties properties = new Properties();
- properties.putAll(authenticationRequest.getCredentialsMap());
-
- try {
- // throws AuthenticationFailedException on failure.
- Subject authToken = securityService.login(properties);
+import org.apache.geode.internal.protocol.security.Authenticator;
+import org.apache.geode.internal.security.SecurityService;
+import org.apache.geode.security.AuthenticationFailedException;
- sendAuthenticationResponse(outputStream, true);
- return authToken;
- } catch (AuthenticationFailedException ex) {
- sendAuthenticationResponse(outputStream, false);
- throw ex;
- }
- }
+public class ProtobufShiroAuthenticator implements Authenticator<Properties, Subject> {
+ private final SecurityService securityService;
- private void sendAuthenticationResponse(OutputStream outputStream, boolean success)
- throws IOException {
- ClientProtocol.Message.newBuilder()
- .setResponse(ClientProtocol.Response.newBuilder().setSimpleAuthenticationResponse(
- AuthenticationAPI.AuthenticationResponse.newBuilder().setAuthenticated(success)))
- .build().writeDelimitedTo(outputStream);
+ public ProtobufShiroAuthenticator(SecurityService securityService) {
+ this.securityService = securityService;
}
- private void failAuth(OutputStream outputStream) throws IOException {
- ClientProtocol.Message.newBuilder()
- .setResponse(ClientProtocol.Response.newBuilder()
- .setErrorResponse(ClientProtocol.ErrorResponse.newBuilder()
- .setError(BasicTypes.Error.newBuilder()
- .setErrorCode(AUTHENTICATION_FAILED.codeValue).setMessage(SHOULD_HAVE_AUTHED))))
- .build().writeDelimitedTo(outputStream);
-
- throw new IOException(SHOULD_HAVE_AUTHED);
+ @Override
+ public Subject authenticate(Properties properties) throws AuthenticationFailedException {
+ return securityService.login(properties);
}
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/ProtobufShiroAuthorizer.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/ProtobufShiroAuthorizer.java
index 78d51c0..04149eb 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/ProtobufShiroAuthorizer.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/ProtobufShiroAuthorizer.java
@@ -20,7 +20,7 @@ import org.apache.shiro.util.ThreadState;
import org.apache.geode.internal.security.SecurityService;
import org.apache.geode.security.NotAuthorizedException;
import org.apache.geode.security.ResourcePermission;
-import org.apache.geode.internal.protocol.protobuf.security.Authorizer;
+import org.apache.geode.internal.protocol.security.Authorizer;
public class ProtobufShiroAuthorizer implements Authorizer {
private final SecurityService securityService;
@@ -30,14 +30,12 @@ public class ProtobufShiroAuthorizer implements Authorizer {
}
@Override
- public boolean authorize(Object authenticatedSubject, ResourcePermission permissionRequested) {
- ThreadState threadState = securityService.bindSubject((Subject) authenticatedSubject);
+ public boolean authorize(Object authenticatedToken, ResourcePermission permissionRequested) {
+ ThreadState threadState = securityService.bindSubject((Subject) authenticatedToken);
try {
securityService.authorize(permissionRequested);
return true;
- } catch (NotAuthorizedException ex) {
- return false;
} finally {
threadState.restore();
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/Authorizer.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/exception/IncompatibleAuthenticationMechanismsException.java
similarity index 70%
copy from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/Authorizer.java
copy to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/exception/IncompatibleAuthenticationMechanismsException.java
index 3cfb2db..1afecb0 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/Authorizer.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/exception/IncompatibleAuthenticationMechanismsException.java
@@ -12,10 +12,12 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf.security;
+package org.apache.geode.internal.protocol.protobuf.security.exception;
-import org.apache.geode.security.ResourcePermission;
+import org.apache.geode.security.AuthenticationFailedException;
-public interface Authorizer {
- boolean authorize(Object authenticatedSubject, ResourcePermission permissionRequested);
+public class IncompatibleAuthenticationMechanismsException extends AuthenticationFailedException {
+ public IncompatibleAuthenticationMechanismsException(String message) {
+ super(message);
+ }
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/processors/AuthenticationSecurityProcessor.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/processors/AuthenticationSecurityProcessor.java
new file mode 100644
index 0000000..0f48c22
--- /dev/null
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/processors/AuthenticationSecurityProcessor.java
@@ -0,0 +1,34 @@
+/*
+ * 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.internal.protocol.protobuf.security.processors;
+
+import org.apache.geode.internal.protocol.MessageExecutionContext;
+import org.apache.geode.internal.protocol.OperationContext;
+import org.apache.geode.internal.protocol.protobuf.AuthenticationAPI;
+import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
+import org.apache.geode.internal.protocol.security.SecurityProcessor;
+import org.apache.geode.security.AuthenticationRequiredException;
+
+public class AuthenticationSecurityProcessor implements SecurityProcessor<ClientProtocol.Request> {
+ @Override
+ public void validateOperation(ClientProtocol.Request request,
+ MessageExecutionContext messageExecutionContext, OperationContext operationContext) {
+ Object fromRequest = operationContext.getFromRequest().apply(request);
+ if (!(fromRequest instanceof AuthenticationAPI.AuthenticationRequest)) {
+ throw new AuthenticationRequiredException(
+ "Expecting an authentication message. Received a " + fromRequest.getClass() + " message");
+ }
+ }
+}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/ProtobufClientStatisticsImpl.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/ProtobufClientStatisticsImpl.java
index 24a3dbb..4868966 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/ProtobufClientStatisticsImpl.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/ProtobufClientStatisticsImpl.java
@@ -18,8 +18,10 @@ import org.apache.geode.StatisticDescriptor;
import org.apache.geode.Statistics;
import org.apache.geode.StatisticsFactory;
import org.apache.geode.StatisticsType;
+import org.apache.geode.internal.protocol.statistics.ProtocolClientStatistics;
-public class ProtobufClientStatisticsImpl implements ProtobufClientStatistics {
+public class ProtobufClientStatisticsImpl implements ProtocolClientStatistics {
+ public static final String PROTOBUF_CLIENT_STATISTICS = "ProtobufProtocolStats";
private final StatisticsType statType;
private final Statistics stats;
private final int currentClientConnectionsId;
@@ -32,8 +34,7 @@ public class ProtobufClientStatisticsImpl implements ProtobufClientStatistics {
private final int authorizationViolationsId;
private final int authenticationFailuresId;
- public ProtobufClientStatisticsImpl(StatisticsFactory statisticsFactory, String statisticsName,
- String typeName) {
+ public ProtobufClientStatisticsImpl(StatisticsFactory statisticsFactory, String statisticsName) {
StatisticDescriptor[] serverStatDescriptors = new StatisticDescriptor[] {
statisticsFactory.createIntGauge("currentClientConnections",
"Number of sockets accepted and used for client to server messaging.", "sockets"),
@@ -53,7 +54,7 @@ public class ProtobufClientStatisticsImpl implements ProtobufClientStatistics {
"messages"),
statisticsFactory.createLongCounter("messagesSent", "Messages sent to clients.",
"messages")};
- statType = statisticsFactory.createType(typeName, "Protobuf client/server statistics",
+ statType = statisticsFactory.createType(getStatsName(), "Protobuf client/server statistics",
serverStatDescriptors);
this.stats = statisticsFactory.createAtomicStatistics(statType, statisticsName);
currentClientConnectionsId = this.stats.nameToId("currentClientConnections");
@@ -67,6 +68,12 @@ public class ProtobufClientStatisticsImpl implements ProtobufClientStatistics {
messagesSentId = this.stats.nameToId("messagesSent");
}
+
+ @Override
+ public String getStatsName() {
+ return PROTOBUF_CLIENT_STATISTICS;
+ }
+
@Override
public void clientConnected() {
stats.incInt(currentClientConnectionsId, 1);
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/utilities/ProtobufResponseUtilities.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/utilities/ProtobufResponseUtilities.java
index 6819d8b..663c31e 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/utilities/ProtobufResponseUtilities.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/utilities/ProtobufResponseUtilities.java
@@ -16,14 +16,12 @@ package org.apache.geode.internal.protocol.protobuf.utilities;
import java.util.Set;
-import org.apache.logging.log4j.Logger;
-
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.Region;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode;
+import org.apache.geode.internal.protocol.ProtocolErrorCode;
/**
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/utilities/ProtobufUtilities.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/utilities/ProtobufUtilities.java
index a44bf74..1053f64 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/utilities/ProtobufUtilities.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/utilities/ProtobufUtilities.java
@@ -21,7 +21,7 @@ import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionAttributes;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
-import org.apache.geode.internal.protocol.protobuf.EncodingTypeTranslator;
+import org.apache.geode.internal.protocol.EncodingTypeTranslator;
import org.apache.geode.internal.protocol.protobuf.ProtobufSerializationService;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
import org.apache.geode.internal.protocol.protobuf.utilities.exception.UnknownProtobufPrimitiveType;
@@ -194,12 +194,6 @@ public abstract class ProtobufUtilities {
return protoRegionBuilder.build();
}
- public static ClientProtocol.Request createProtobufRequestWithGetRegionNamesRequest(
- RegionAPI.GetRegionNamesRequest getRegionNamesRequest) {
- return ClientProtocol.Request.newBuilder().setGetRegionNamesRequest(getRegionNamesRequest)
- .build();
- }
-
public static ClientProtocol.Request.Builder createProtobufRequestBuilder() {
return ClientProtocol.Request.newBuilder();
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/Authenticator.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/Authenticator.java
similarity index 63%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/Authenticator.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/Authenticator.java
index 2873933..42dd22b 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/Authenticator.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/Authenticator.java
@@ -12,15 +12,9 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf.security;
+package org.apache.geode.internal.protocol.security;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.apache.geode.internal.security.SecurityService;
import org.apache.geode.security.AuthenticationFailedException;
-import org.apache.geode.security.AuthenticationRequiredException;
/**
* Implementers of this interface do some message passing over a socket to authenticate a client,
@@ -29,15 +23,12 @@ import org.apache.geode.security.AuthenticationRequiredException;
* If authentication fails, an implementor may continue to wait for another valid authentication
* exchange.
*/
-public interface Authenticator {
+public interface Authenticator<SecurityProperties, AuthenticationToken> {
/**
- *
- * @param inputStream to read auth messages from.
- * @param outputStream to send messages to.
- * @param securityService used for validating credentials.
+ * @param securityProperties a generic object that is required for authentication dependent on
+ * implementation
* @return authenticated principal
- * @throws IOException if EOF or if invalid input is received.
*/
- Object authenticate(InputStream inputStream, OutputStream outputStream,
- SecurityService securityService) throws IOException, AuthenticationFailedException;
+ AuthenticationToken authenticate(SecurityProperties securityProperties)
+ throws AuthenticationFailedException;
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/Authorizer.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/Authorizer.java
similarity index 85%
copy from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/Authorizer.java
copy to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/Authorizer.java
index 3cfb2db..525e42d 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/Authorizer.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/Authorizer.java
@@ -12,10 +12,10 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf.security;
+package org.apache.geode.internal.protocol.security;
import org.apache.geode.security.ResourcePermission;
public interface Authorizer {
- boolean authorize(Object authenticatedSubject, ResourcePermission permissionRequested);
+ boolean authorize(Object authenticatedToken, ResourcePermission permissionRequested);
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/NoOpAuthenticator.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/NoOpAuthenticator.java
similarity index 74%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/NoOpAuthenticator.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/NoOpAuthenticator.java
index 116d92c..022fa30 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/NoOpAuthenticator.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/NoOpAuthenticator.java
@@ -12,23 +12,23 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf.security;
+package org.apache.geode.internal.protocol.security;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.geode.internal.security.SecurityService;
+import org.apache.geode.security.AuthenticationFailedException;
/**
* An implementation of {@link Authenticator} that doesn't use its parameters and always returns
* true.
*/
-public class NoOpAuthenticator implements Authenticator {
+public class NoOpAuthenticator implements Authenticator<Object, Object> {
+
@Override
- public Object authenticate(InputStream inputStream, OutputStream outputStream,
- SecurityService securityService) throws IOException {
- // this method needs to do nothing as it is a pass-through implementation
- return new Object();
+ public Object authenticate(Object inputObject) throws AuthenticationFailedException {
+ return null;
}
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/NoOpAuthorizer.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/NoOpAuthorizer.java
similarity index 86%
copy from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/NoOpAuthorizer.java
copy to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/NoOpAuthorizer.java
index 3add18c..61d0383 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/NoOpAuthorizer.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/NoOpAuthorizer.java
@@ -12,7 +12,7 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf.security;
+package org.apache.geode.internal.protocol.security;
import org.apache.geode.security.ResourcePermission;
@@ -21,7 +21,7 @@ import org.apache.geode.security.ResourcePermission;
*/
public class NoOpAuthorizer implements Authorizer {
@Override
- public boolean authorize(Object authenticatedSubject, ResourcePermission permissionRequested) {
+ public boolean authorize(Object authenticatedToken, ResourcePermission permissionRequested) {
return true;
}
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/SecurityLookupService.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/SecurityLookupService.java
new file mode 100644
index 0000000..c4b54b0
--- /dev/null
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/SecurityLookupService.java
@@ -0,0 +1,97 @@
+/*
+ * 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.internal.protocol.security;
+
+import org.apache.geode.internal.protocol.protobuf.security.InvalidConfigAuthenticator;
+import org.apache.geode.internal.protocol.protobuf.security.ProtobufShiroAuthenticator;
+import org.apache.geode.internal.protocol.protobuf.security.ProtobufShiroAuthorizer;
+import org.apache.geode.internal.protocol.protobuf.security.processors.AuthenticationSecurityProcessor;
+import org.apache.geode.internal.protocol.security.processors.NoAuthenticationSecurityProcessor;
+import org.apache.geode.internal.security.SecurityService;
+
+public class SecurityLookupService {
+ private final Authenticator[] authenticators = new Authenticator[3];
+ private final Authorizer[] authorizers = new Authorizer[2];
+ private final SecurityProcessor[] securityProcessors = new SecurityProcessor[2];
+
+ public SecurityLookupService() {
+ initializeAuthenticators();
+ initializeAuthortizers();
+ initializeSecurityProcessors();
+ }
+
+ private void initializeSecurityProcessors() {
+ securityProcessors[0] = new NoAuthenticationSecurityProcessor();
+ securityProcessors[1] = new AuthenticationSecurityProcessor();
+ }
+
+ private void initializeAuthenticators() {
+ authenticators[0] = new NoOpAuthenticator();
+ authenticators[1] = new InvalidConfigAuthenticator();
+ }
+
+ private void initializeAuthortizers() {
+ authorizers[0] = new NoOpAuthorizer();
+ }
+
+ public SecurityProcessor lookupProcessor(SecurityService securityService) {
+ return securityProcessors[isSecurityEnabled(securityService) ? 1 : 0];
+ }
+
+ public Authenticator lookupAuthenticator(SecurityService securityService) {
+ if (securityService.isIntegratedSecurity()) {
+ // no need to care about thread safety, eventually there will only be one authenticator
+ if (authenticators[2] == null) {
+ authenticators[2] = new ProtobufShiroAuthenticator(securityService);
+ }
+ // Simple authenticator...normal shiro
+ return authenticators[2];
+ }
+ if (isLegacySecurity(securityService)) {
+ // Failing authentication...legacy security
+ return authenticators[1];
+ } else {
+ // Noop authenticator...no security
+ return authenticators[0];
+ }
+ }
+
+ public Authorizer lookupAuthorizer(SecurityService securityService) {
+ if (securityService.isIntegratedSecurity()) {
+ // Simple authenticator...normal shiro
+ if (authorizers[1] == null) {
+ authorizers[1] = new ProtobufShiroAuthorizer(securityService);
+ }
+ // Simple authenticator...normal shiro
+ return authorizers[1];
+ }
+ if (isLegacySecurity(securityService)) {
+ // Failing authentication...legacy security
+ // This should never be called.
+ return null;
+ } else {
+ // Noop authenticator...no security
+ return authorizers[0];
+ }
+ }
+
+ private boolean isLegacySecurity(SecurityService securityService) {
+ return securityService.isPeerSecurityRequired() || securityService.isClientSecurityRequired();
+ }
+
+ private boolean isSecurityEnabled(SecurityService securityService) {
+ return securityService.isIntegratedSecurity() || isLegacySecurity(securityService);
+ }
+}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/Authorizer.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/SecurityProcessor.java
similarity index 62%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/Authorizer.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/SecurityProcessor.java
index 3cfb2db..a60cd73 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/Authorizer.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/SecurityProcessor.java
@@ -12,10 +12,15 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf.security;
+package org.apache.geode.internal.protocol.security;
-import org.apache.geode.security.ResourcePermission;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
+import org.apache.geode.internal.protocol.OperationContext;
-public interface Authorizer {
- boolean authorize(Object authenticatedSubject, ResourcePermission permissionRequested);
+public interface SecurityProcessor<RequestMessage> {
+ /**
+ * This method will validate an Operation. In the case of a failure, it will throw an exception.
+ */
+ void validateOperation(RequestMessage request, MessageExecutionContext messageExecutionContext,
+ OperationContext operationContext);
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/NoOpAuthorizer.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/processors/AuthorizationSecurityProcessor.java
similarity index 55%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/NoOpAuthorizer.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/processors/AuthorizationSecurityProcessor.java
index 3add18c..59d0084 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/NoOpAuthorizer.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/processors/AuthorizationSecurityProcessor.java
@@ -12,16 +12,18 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf.security;
+package org.apache.geode.internal.protocol.security.processors;
-import org.apache.geode.security.ResourcePermission;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
+import org.apache.geode.internal.protocol.OperationContext;
+import org.apache.geode.internal.protocol.security.SecurityProcessor;
-/**
- * An implementation of {@link Authorizer} that doesn't use its parameters and always returns true.
- */
-public class NoOpAuthorizer implements Authorizer {
+public class AuthorizationSecurityProcessor implements SecurityProcessor<Object> {
@Override
- public boolean authorize(Object authenticatedSubject, ResourcePermission permissionRequested) {
- return true;
+ public void validateOperation(Object request, MessageExecutionContext messageExecutionContext,
+ OperationContext operationContext) {
+ messageExecutionContext.getAuthorizer().authorize(
+ messageExecutionContext.getAuthenticationToken(),
+ operationContext.getAccessPermissionRequired());
}
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/NoOpStatistics.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/processors/NoAuthenticationSecurityProcessor.java
similarity index 60%
copy from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/NoOpStatistics.java
copy to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/processors/NoAuthenticationSecurityProcessor.java
index e06ea8d..4ed23f5 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/NoOpStatistics.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/processors/NoAuthenticationSecurityProcessor.java
@@ -12,36 +12,17 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf.statistics;
+package org.apache.geode.internal.protocol.security.processors;
-public class NoOpStatistics implements ProtobufClientStatistics {
- @Override
- public void clientConnected() {
-
- }
-
- @Override
- public void clientDisconnected() {
+import org.apache.geode.internal.protocol.MessageExecutionContext;
+import org.apache.geode.internal.protocol.OperationContext;
+import org.apache.geode.internal.protocol.security.SecurityProcessor;
- }
-
- @Override
- public void messageReceived(int bytes) {
-
- }
+public class NoAuthenticationSecurityProcessor implements SecurityProcessor<Object> {
@Override
- public void messageSent(int bytes) {
-
- }
-
- @Override
- public void incAuthorizationViolations() {
-
- }
-
- @Override
- public void incAuthenticationFailures() {
-
+ public void validateOperation(Object request, MessageExecutionContext messageExecutionContext,
+ OperationContext operationContext) {
+ // A truly "no-op" operation :)
}
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/NoOpStatistics.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/statistics/NoOpStatistics.java
similarity index 89%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/NoOpStatistics.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/statistics/NoOpStatistics.java
index e06ea8d..8bacd32 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/NoOpStatistics.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/statistics/NoOpStatistics.java
@@ -12,9 +12,9 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf.statistics;
+package org.apache.geode.internal.protocol.statistics;
-public class NoOpStatistics implements ProtobufClientStatistics {
+public class NoOpStatistics implements ProtocolClientStatistics {
@Override
public void clientConnected() {
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/ProtobufClientStatistics.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/statistics/ProtocolClientStatistics.java
similarity index 85%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/ProtobufClientStatistics.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/statistics/ProtocolClientStatistics.java
index a8070c7..9b6ca63 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/ProtobufClientStatistics.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/statistics/ProtocolClientStatistics.java
@@ -12,10 +12,12 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf.statistics;
+package org.apache.geode.internal.protocol.statistics;
-public interface ProtobufClientStatistics {
- String PROTOBUF_STATS_NAME = "ProtobufStats";
+public interface ProtocolClientStatistics {
+ default String getStatsName() {
+ return "ClientProtocolStats";
+ }
void clientConnected();
diff --git a/geode-protobuf/src/main/proto/clientProtocol.proto b/geode-protobuf/src/main/proto/clientProtocol.proto
index b4c0f56..4d8b94a 100644
--- a/geode-protobuf/src/main/proto/clientProtocol.proto
+++ b/geode-protobuf/src/main/proto/clientProtocol.proto
@@ -48,7 +48,7 @@ message Request {
GetRegionNamesRequest getRegionNamesRequest = 43;
GetRegionRequest getRegionRequest = 44;
- AuthenticationRequest simpleAuthenticationRequest = 100;
+ AuthenticationRequest authenticationRequest = 100;
}
}
@@ -67,7 +67,7 @@ message Response {
GetRegionNamesResponse getRegionNamesResponse = 43;
GetRegionResponse getRegionResponse = 44;
- AuthenticationResponse simpleAuthenticationResponse = 100;
+ AuthenticationResponse authenticationResponse = 100;
}
}
diff --git a/geode-protobuf/src/main/resources/META-INF/services/org.apache.geode.internal.cache.client.protocol.ClientProtocolService b/geode-protobuf/src/main/resources/META-INF/services/org.apache.geode.internal.cache.client.protocol.ClientProtocolService
new file mode 100644
index 0000000..2db0521
--- /dev/null
+++ b/geode-protobuf/src/main/resources/META-INF/services/org.apache.geode.internal.cache.client.protocol.ClientProtocolService
@@ -0,0 +1 @@
+org.apache.geode.internal.protocol.protobuf.ProtobufProtocolService
\ No newline at end of file
diff --git a/geode-protobuf/src/main/resources/META-INF/services/org.apache.geode.internal.cache.tier.sockets.ClientProtocolService b/geode-protobuf/src/main/resources/META-INF/services/org.apache.geode.internal.cache.tier.sockets.ClientProtocolService
deleted file mode 100644
index 207426a..0000000
--- a/geode-protobuf/src/main/resources/META-INF/services/org.apache.geode.internal.cache.tier.sockets.ClientProtocolService
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.geode.internal.protocol.ProtobufProtocolService
\ No newline at end of file
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/cache/tier/sockets/GenericProtocolServerConnectionTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/cache/tier/sockets/GenericProtocolServerConnectionTest.java
index 8f16935..1414826 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/cache/tier/sockets/GenericProtocolServerConnectionTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/cache/tier/sockets/GenericProtocolServerConnectionTest.java
@@ -28,8 +28,6 @@ import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.UnknownHostException;
-import org.apache.geode.distributed.internal.SecurityConfig;
-import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.mockito.ArgumentCaptor;
@@ -38,6 +36,7 @@ import org.mockito.Mockito;
import org.apache.geode.cache.IncompatibleVersionException;
import org.apache.geode.internal.Assert;
import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.cache.client.protocol.ClientProtocolProcessor;
import org.apache.geode.internal.cache.tier.CachedRegionHelper;
import org.apache.geode.internal.cache.tier.CommunicationMode;
import org.apache.geode.internal.security.SecurityService;
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/AuthenticationIntegrationTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/AuthenticationIntegrationTest.java
index adbe906..dabfa4c 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/AuthenticationIntegrationTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/AuthenticationIntegrationTest.java
@@ -14,13 +14,11 @@
*/
package org.apache.geode.internal.protocol;
-import static junit.framework.TestCase.fail;
-import static org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode.AUTHENTICATION_FAILED;
+import static org.apache.geode.internal.protocol.ProtocolErrorCode.AUTHENTICATION_FAILED;
+import static org.apache.geode.internal.protocol.ProtocolErrorCode.UNSUPPORTED_AUTHENTICATION_MODE;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
import java.io.IOException;
import java.io.InputStream;
@@ -29,7 +27,6 @@ import java.net.Socket;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
-import org.apache.geode.internal.protocol.exception.InvalidProtocolMessageException;
import org.awaitility.Awaitility;
import org.junit.After;
import org.junit.Before;
@@ -204,7 +201,7 @@ public class AuthenticationIntegrationTest {
ClientProtocol.Message authenticationRequest = ClientProtocol.Message.newBuilder()
.setRequest(ClientProtocol.Request.newBuilder()
- .setSimpleAuthenticationRequest(AuthenticationAPI.AuthenticationRequest.newBuilder()
+ .setAuthenticationRequest(AuthenticationAPI.AuthenticationRequest.newBuilder()
.putCredentials(ResourceConstants.USER_NAME, TEST_USERNAME)
.putCredentials(ResourceConstants.PASSWORD, TEST_PASSWORD)))
.build();
@@ -232,7 +229,7 @@ public class AuthenticationIntegrationTest {
ClientProtocol.Message authenticationRequest = ClientProtocol.Message.newBuilder()
.setRequest(ClientProtocol.Request.newBuilder()
- .setSimpleAuthenticationRequest(AuthenticationAPI.AuthenticationRequest.newBuilder()))
+ .setAuthenticationRequest(AuthenticationAPI.AuthenticationRequest.newBuilder()))
.build();
authenticationRequest.writeDelimitedTo(outputStream);
@@ -249,7 +246,7 @@ public class AuthenticationIntegrationTest {
ClientProtocol.Message authenticationRequest = ClientProtocol.Message.newBuilder()
.setRequest(ClientProtocol.Request.newBuilder()
- .setSimpleAuthenticationRequest(AuthenticationAPI.AuthenticationRequest.newBuilder()
+ .setAuthenticationRequest(AuthenticationAPI.AuthenticationRequest.newBuilder()
.putCredentials(ResourceConstants.USER_NAME, TEST_USERNAME)
.putCredentials(ResourceConstants.PASSWORD, "wrong password")))
.build();
@@ -279,7 +276,7 @@ public class AuthenticationIntegrationTest {
ClientProtocol.Message authenticationRequest = ClientProtocol.Message.newBuilder()
.setRequest(ClientProtocol.Request.newBuilder()
- .setSimpleAuthenticationRequest(AuthenticationAPI.AuthenticationRequest.newBuilder()))
+ .setAuthenticationRequest(AuthenticationAPI.AuthenticationRequest.newBuilder()))
.build();
authenticationRequest.writeDelimitedTo(outputStream);
@@ -287,7 +284,7 @@ public class AuthenticationIntegrationTest {
ClientProtocol.Message errorResponse = protobufProtocolSerializer.deserialize(inputStream);
assertEquals(ClientProtocol.Response.ResponseAPICase.ERRORRESPONSE,
errorResponse.getResponse().getResponseAPICase());
- assertEquals(AUTHENTICATION_FAILED.codeValue,
+ assertEquals(UNSUPPORTED_AUTHENTICATION_MODE.codeValue,
errorResponse.getResponse().getErrorResponse().getError().getErrorCode());
}
@@ -298,7 +295,7 @@ public class AuthenticationIntegrationTest {
ClientProtocol.Message authenticationRequest = ClientProtocol.Message.newBuilder()
.setRequest(ClientProtocol.Request.newBuilder()
- .setSimpleAuthenticationRequest(AuthenticationAPI.AuthenticationRequest.newBuilder()))
+ .setAuthenticationRequest(AuthenticationAPI.AuthenticationRequest.newBuilder()))
.build();
authenticationRequest.writeDelimitedTo(outputStream);
@@ -306,7 +303,7 @@ public class AuthenticationIntegrationTest {
ClientProtocol.Message errorResponse = protobufProtocolSerializer.deserialize(inputStream);
assertEquals(ClientProtocol.Response.ResponseAPICase.ERRORRESPONSE,
errorResponse.getResponse().getResponseAPICase());
- assertEquals(AUTHENTICATION_FAILED.codeValue,
+ assertEquals(UNSUPPORTED_AUTHENTICATION_MODE.codeValue,
errorResponse.getResponse().getErrorResponse().getError().getErrorCode());
}
@@ -332,8 +329,8 @@ public class AuthenticationIntegrationTest {
ClientProtocol.Message.parseDelimitedFrom(inputStream);
assertEquals(ClientProtocol.Message.RESPONSE_FIELD_NUMBER,
authenticationResponseMessage.getMessageTypeCase().getNumber());
- assertEquals(ClientProtocol.Response.SIMPLEAUTHENTICATIONRESPONSE_FIELD_NUMBER,
+ assertEquals(ClientProtocol.Response.AUTHENTICATIONRESPONSE_FIELD_NUMBER,
authenticationResponseMessage.getResponse().getResponseAPICase().getNumber());
- return authenticationResponseMessage.getResponse().getSimpleAuthenticationResponse();
+ return authenticationResponseMessage.getResponse().getAuthenticationResponse();
}
}
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/AuthorizationIntegrationTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/AuthorizationIntegrationTest.java
index b41b93c..109e10d 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/AuthorizationIntegrationTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/AuthorizationIntegrationTest.java
@@ -43,7 +43,6 @@ import org.apache.geode.internal.AvailablePortHelper;
import org.apache.geode.internal.protocol.protobuf.AuthenticationAPI;
import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
import org.apache.geode.internal.protocol.protobuf.ProtobufSerializationService;
-import org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
import org.apache.geode.internal.protocol.protobuf.serializer.ProtobufProtocolSerializer;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufUtilities;
@@ -116,7 +115,7 @@ public class AuthorizationIntegrationTest {
when(mockSecurityManager.authorize(same(securityPrincipal), any())).thenReturn(false);
ClientProtocol.Message authenticationRequest = ClientProtocol.Message.newBuilder()
.setRequest(ClientProtocol.Request.newBuilder()
- .setSimpleAuthenticationRequest(AuthenticationAPI.AuthenticationRequest.newBuilder()
+ .setAuthenticationRequest(AuthenticationAPI.AuthenticationRequest.newBuilder()
.putCredentials(ResourceConstants.USER_NAME, TEST_USERNAME)
.putCredentials(ResourceConstants.PASSWORD, TEST_PASSWORD)))
.build();
@@ -125,10 +124,10 @@ public class AuthorizationIntegrationTest {
ClientProtocol.Message responseMessage = ClientProtocol.Message.parseDelimitedFrom(inputStream);
assertEquals(ClientProtocol.Message.RESPONSE_FIELD_NUMBER,
responseMessage.getMessageTypeCase().getNumber());
- assertEquals(ClientProtocol.Response.SIMPLEAUTHENTICATIONRESPONSE_FIELD_NUMBER,
+ assertEquals(ClientProtocol.Response.AUTHENTICATIONRESPONSE_FIELD_NUMBER,
responseMessage.getResponse().getResponseAPICase().getNumber());
AuthenticationAPI.AuthenticationResponse authenticationResponse =
- responseMessage.getResponse().getSimpleAuthenticationResponse();
+ responseMessage.getResponse().getAuthenticationResponse();
assertTrue(authenticationResponse.getAuthenticated());
}
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestExecutionContext.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/ProtobufTestExecutionContext.java
similarity index 51%
rename from geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestExecutionContext.java
rename to geode-protobuf/src/test/java/org/apache/geode/internal/protocol/ProtobufTestExecutionContext.java
index 56beb0e..fc7a081 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestExecutionContext.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/ProtobufTestExecutionContext.java
@@ -12,21 +12,22 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf;
+package org.apache.geode.internal.protocol;
-import com.google.protobuf.GeneratedMessageV3;
import org.apache.geode.cache.Cache;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
-import org.apache.geode.internal.protocol.protobuf.security.NoOpAuthorizer;
-import org.apache.geode.internal.protocol.protobuf.statistics.NoOpStatistics;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
+import org.apache.geode.distributed.internal.InternalLocator;
+import org.apache.geode.internal.protocol.security.NoOpAuthenticator;
+import org.apache.geode.internal.protocol.security.NoOpAuthorizer;
+import org.apache.geode.internal.protocol.security.processors.NoAuthenticationSecurityProcessor;
+import org.apache.geode.internal.protocol.statistics.NoOpStatistics;
public class ProtobufTestExecutionContext {
- public static MessageExecutionContext getNoAuthExecutionContext(Cache cache) {
- return new MessageExecutionContext(cache, new NoOpAuthorizer(), new Object(),
- new NoOpStatistics());
+ public static MessageExecutionContext getNoAuthCacheExecutionContext(Cache cache) {
+ return new MessageExecutionContext(cache, new NoOpAuthenticator(), new NoOpAuthorizer(),
+ new Object(), new NoOpStatistics(), new NoAuthenticationSecurityProcessor());
+ }
+
+ public static MessageExecutionContext getLocatorExecutionContext(InternalLocator locator) {
+ return new MessageExecutionContext(locator, new NoOpStatistics());
}
}
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/CacheConnectionJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/CacheConnectionJUnitTest.java
index a7d0313..4a76966 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/CacheConnectionJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/CacheConnectionJUnitTest.java
@@ -34,7 +34,6 @@ import java.util.Collection;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
-import org.apache.geode.distributed.internal.SecurityConfig;
import org.awaitility.Awaitility;
import org.junit.After;
import org.junit.Before;
@@ -67,7 +66,8 @@ import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
import org.apache.geode.internal.protocol.protobuf.ProtobufSerializationService;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
import org.apache.geode.internal.protocol.protobuf.serializer.ProtobufProtocolSerializer;
-import org.apache.geode.internal.protocol.protobuf.statistics.ProtobufClientStatistics;
+import org.apache.geode.internal.protocol.protobuf.statistics.ProtobufClientStatisticsImpl;
+import org.apache.geode.internal.protocol.statistics.ProtocolClientStatistics;
import org.apache.geode.internal.serialization.SerializationService;
import org.apache.geode.test.junit.categories.IntegrationTest;
import org.apache.geode.util.test.TestUtil;
@@ -170,7 +170,7 @@ public class CacheConnectionJUnitTest {
InternalDistributedSystem distributedSystem =
(InternalDistributedSystem) cache.getDistributedSystem();
Statistics[] protobufStats = distributedSystem.findStatisticsByType(
- distributedSystem.findType(ProtobufClientStatistics.PROTOBUF_STATS_NAME));
+ distributedSystem.findType(ProtobufClientStatisticsImpl.PROTOBUF_CLIENT_STATISTICS));
assertEquals(1, protobufStats.length);
Statistics statistics = protobufStats[0];
assertEquals(1, statistics.get("currentClientConnections"));
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/CacheOperationsJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/CacheOperationsJUnitTest.java
index 08d648f..d5638ca 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/CacheOperationsJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/CacheOperationsJUnitTest.java
@@ -251,8 +251,9 @@ public class CacheOperationsJUnitTest {
RegionAPI.GetRegionNamesRequest getRegionNamesRequest =
ProtobufRequestUtilities.createGetRegionNamesRequest();
- ClientProtocol.Message getRegionsMessage = ProtobufUtilities.createProtobufMessage(
- ProtobufUtilities.createProtobufRequestWithGetRegionNamesRequest(getRegionNamesRequest));
+ ClientProtocol.Message getRegionsMessage =
+ ProtobufUtilities.createProtobufMessage(ClientProtocol.Request.newBuilder()
+ .setGetRegionNamesRequest(getRegionNamesRequest).build());
protobufProtocolSerializer.serialize(getRegionsMessage, outputStream);
validateGetRegionNamesResponse(socket, protobufProtocolSerializer);
}
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/LocatorConnectionDUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/LocatorConnectionDUnitTest.java
index b4be1b6..3d239b5 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/LocatorConnectionDUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/LocatorConnectionDUnitTest.java
@@ -37,10 +37,10 @@ import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.protocol.exception.InvalidProtocolMessageException;
import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
-import org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode;
+import org.apache.geode.internal.protocol.ProtocolErrorCode;
import org.apache.geode.internal.protocol.protobuf.ServerAPI;
import org.apache.geode.internal.protocol.protobuf.serializer.ProtobufProtocolSerializer;
-import org.apache.geode.internal.protocol.protobuf.statistics.ProtobufClientStatistics;
+import org.apache.geode.internal.protocol.protobuf.statistics.ProtobufClientStatisticsImpl;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufRequestUtilities;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufUtilities;
import org.apache.geode.test.dunit.DistributedTestUtils;
@@ -166,7 +166,7 @@ public class LocatorConnectionDUnitTest extends JUnit4CacheTestCase {
(InternalDistributedSystem) Locator.getLocator().getDistributedSystem();
Statistics[] protobufServerStats = distributedSystem.findStatisticsByType(
- distributedSystem.findType(ProtobufClientStatistics.PROTOBUF_STATS_NAME));
+ distributedSystem.findType(ProtobufClientStatisticsImpl.PROTOBUF_CLIENT_STATISTICS));
assertEquals(1, protobufServerStats.length);
return protobufServerStats[0];
}
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/EncodingTypeToSerializationTypeTranslatorJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/EncodingTypeToSerializationTypeTranslatorJUnitTest.java
index 883b0f6..0a67aff 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/EncodingTypeToSerializationTypeTranslatorJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/EncodingTypeToSerializationTypeTranslatorJUnitTest.java
@@ -19,6 +19,7 @@ import static org.junit.Assert.assertSame;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+import org.apache.geode.internal.protocol.EncodingTypeTranslator;
import org.apache.geode.internal.serialization.SerializationType;
import org.apache.geode.internal.serialization.exception.UnsupportedEncodingTypeException;
import org.apache.geode.test.junit.categories.UnitTest;
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/ProtobufProtocolServiceJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufProtocolServiceJUnitTest.java
similarity index 81%
rename from geode-protobuf/src/test/java/org/apache/geode/internal/protocol/ProtobufProtocolServiceJUnitTest.java
rename to geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufProtocolServiceJUnitTest.java
index d952f0f..52b78d0 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/ProtobufProtocolServiceJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufProtocolServiceJUnitTest.java
@@ -12,14 +12,15 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.internal.protocol;
+package org.apache.geode.internal.protocol.protobuf;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import org.apache.geode.internal.protocol.protobuf.statistics.ProtobufClientStatistics;
+import org.apache.geode.internal.protocol.protobuf.ProtobufProtocolService;
+import org.apache.geode.internal.protocol.statistics.ProtocolClientStatistics;
import org.apache.geode.internal.statistics.DummyStatisticsFactory;
import org.apache.geode.test.junit.categories.UnitTest;
@@ -29,9 +30,9 @@ public class ProtobufProtocolServiceJUnitTest {
public void initializeStatistics() {
ProtobufProtocolService service = new ProtobufProtocolService();
service.initializeStatistics("first", new DummyStatisticsFactory());
- ProtobufClientStatistics firstStatistics = service.getStatistics();
+ ProtocolClientStatistics firstStatistics = service.getStatistics();
service.initializeStatistics("second", new DummyStatisticsFactory());
- ProtobufClientStatistics secondStatistics = service.getStatistics();
+ ProtocolClientStatistics secondStatistics = service.getStatistics();
assertEquals(firstStatistics, secondStatistics);
}
}
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufShiroAuthenticatorJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufShiroAuthenticatorJUnitTest.java
index 1972e31..1dfdfd7 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufShiroAuthenticatorJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufShiroAuthenticatorJUnitTest.java
@@ -16,6 +16,7 @@
package org.apache.geode.internal.protocol.protobuf;
import static junit.framework.TestCase.fail;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -40,8 +41,8 @@ import org.apache.geode.test.junit.categories.UnitTest;
public class ProtobufShiroAuthenticatorJUnitTest {
private static final String TEST_USERNAME = "user1";
private static final String TEST_PASSWORD = "hunter2";
- private ByteArrayInputStream byteArrayInputStream; // initialized with an incoming request in
- // setUp.
+ // initialized with an incoming request in setUp.
+ private ByteArrayInputStream byteArrayInputStream;
private ByteArrayOutputStream byteArrayOutputStream;
private ProtobufShiroAuthenticator protobufShiroAuthenticator;
private SecurityService mockSecurityService;
@@ -52,7 +53,7 @@ public class ProtobufShiroAuthenticatorJUnitTest {
public void setUp() throws IOException {
ClientProtocol.Message basicAuthenticationRequest = ClientProtocol.Message.newBuilder()
.setRequest(ClientProtocol.Request.newBuilder()
- .setSimpleAuthenticationRequest(AuthenticationAPI.AuthenticationRequest.newBuilder()
+ .setAuthenticationRequest(AuthenticationAPI.AuthenticationRequest.newBuilder()
.putCredentials(ResourceConstants.USER_NAME, TEST_USERNAME)
.putCredentials(ResourceConstants.PASSWORD, TEST_PASSWORD)))
.build();
@@ -70,18 +71,19 @@ public class ProtobufShiroAuthenticatorJUnitTest {
mockSecurityService = mock(SecurityService.class);
when(mockSecurityService.login(expectedAuthProperties)).thenReturn(mockSecuritySubject);
- protobufShiroAuthenticator = new ProtobufShiroAuthenticator();
+ protobufShiroAuthenticator = new ProtobufShiroAuthenticator(mockSecurityService);
}
@Test
public void successfulAuthentication() throws IOException {
- protobufShiroAuthenticator.authenticate(byteArrayInputStream, byteArrayOutputStream,
- mockSecurityService);
- AuthenticationAPI.AuthenticationResponse authenticationResponse =
- getSimpleAuthenticationResponse(byteArrayOutputStream);
+ Properties properties = new Properties();
+ properties.setProperty(ResourceConstants.USER_NAME, TEST_USERNAME);
+ properties.setProperty(ResourceConstants.PASSWORD, TEST_PASSWORD);
- assertTrue(authenticationResponse.getAuthenticated());
+ Subject authenticate = protobufShiroAuthenticator.authenticate(properties);
+
+ assertNotNull(authenticate);
}
@Test(expected = AuthenticationFailedException.class)
@@ -89,8 +91,11 @@ public class ProtobufShiroAuthenticatorJUnitTest {
when(mockSecurityService.login(expectedAuthProperties))
.thenThrow(new AuthenticationFailedException("BOOM!"));
- protobufShiroAuthenticator.authenticate(byteArrayInputStream, byteArrayOutputStream,
- mockSecurityService);
+ Properties properties = new Properties();
+ properties.setProperty(ResourceConstants.USER_NAME, TEST_USERNAME);
+ properties.setProperty(ResourceConstants.PASSWORD, TEST_PASSWORD);
+
+ protobufShiroAuthenticator.authenticate(properties);
}
@Test
@@ -99,19 +104,12 @@ public class ProtobufShiroAuthenticatorJUnitTest {
when(mockSecurityService.isClientSecurityRequired()).thenReturn(false);
when(mockSecurityService.isPeerSecurityRequired()).thenReturn(false);
- protobufShiroAuthenticator.authenticate(byteArrayInputStream, byteArrayOutputStream,
- mockSecurityService);
+ Properties properties = new Properties();
+ properties.setProperty(ResourceConstants.USER_NAME, TEST_USERNAME);
+ properties.setProperty(ResourceConstants.PASSWORD, TEST_PASSWORD);
- AuthenticationAPI.AuthenticationResponse authenticationResponse =
- getSimpleAuthenticationResponse(byteArrayOutputStream);
-
- assertTrue(authenticationResponse.getAuthenticated());
- }
+ Subject authenticate = protobufShiroAuthenticator.authenticate(properties);
- private AuthenticationAPI.AuthenticationResponse getSimpleAuthenticationResponse(
- ByteArrayOutputStream outputStream) throws IOException {
- ByteArrayInputStream responseStream = new ByteArrayInputStream(outputStream.toByteArray());
- return ClientProtocol.Message.parseDelimitedFrom(responseStream).getResponse()
- .getSimpleAuthenticationResponse();
+ assertNotNull(authenticate);
}
}
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufStreamProcessorTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufStreamProcessorTest.java
index 54b4e54..d56de00 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufStreamProcessorTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufStreamProcessorTest.java
@@ -15,10 +15,9 @@
package org.apache.geode.internal.protocol.protobuf;
import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
-import org.apache.geode.internal.protocol.protobuf.security.NoOpAuthorizer;
-import org.apache.geode.internal.protocol.protobuf.statistics.NoOpStatistics;
+import org.apache.geode.internal.protocol.ProtobufTestExecutionContext;
import org.apache.geode.test.junit.categories.UnitTest;
+
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -39,7 +38,7 @@ public class ProtobufStreamProcessorTest {
ProtobufStreamProcessor protobufStreamProcessor = new ProtobufStreamProcessor();
InternalCache mockInternalCache = mock(InternalCache.class);
- protobufStreamProcessor.receiveMessage(inputStream, outputStream, new MessageExecutionContext(
- mockInternalCache, new NoOpAuthorizer(), new Object(), new NoOpStatistics()));
+ protobufStreamProcessor.receiveMessage(inputStream, outputStream,
+ ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(mockInternalCache));
}
}
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetAllRequestOperationHandlerJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetAllRequestOperationHandlerJUnitTest.java
index 86ad5af..bcd98c3 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetAllRequestOperationHandlerJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetAllRequestOperationHandlerJUnitTest.java
@@ -35,10 +35,10 @@ import org.apache.geode.cache.CacheLoaderException;
import org.apache.geode.cache.Region;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
-import org.apache.geode.internal.protocol.protobuf.ProtobufTestExecutionContext;
+import org.apache.geode.internal.protocol.ProtobufTestExecutionContext;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.Result;
-import org.apache.geode.internal.protocol.protobuf.Success;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufRequestUtilities;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufUtilities;
import org.apache.geode.internal.serialization.exception.UnsupportedEncodingTypeException;
@@ -78,7 +78,7 @@ public class GetAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
public void processReturnsExpectedValuesForValidKeys() throws Exception {
Result<RegionAPI.GetAllResponse> result =
operationHandler.process(serializationServiceStub, generateTestRequest(true, false),
- ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
assertTrue(result instanceof Success);
@@ -99,7 +99,7 @@ public class GetAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
CodecNotRegisteredForTypeException, InvalidExecutionContextException {
Result<RegionAPI.GetAllResponse> result =
operationHandler.process(serializationServiceStub, generateTestRequest(false, false),
- ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
assertTrue(result instanceof Success);
@@ -116,7 +116,7 @@ public class GetAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
RegionAPI.GetAllRequest getAllRequest =
ProtobufRequestUtilities.createGetAllRequest(TEST_REGION, testKeys);
Result<RegionAPI.GetAllResponse> result = operationHandler.process(serializationServiceStub,
- getAllRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ getAllRequest, ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
assertTrue(result instanceof Success);
RegionAPI.GetAllResponse message = result.getMessage();
@@ -132,7 +132,7 @@ public class GetAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
CodecNotRegisteredForTypeException, InvalidExecutionContextException {
Result<RegionAPI.GetAllResponse> result =
operationHandler.process(serializationServiceStub, generateTestRequest(true, true),
- ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
assertTrue(result instanceof Success);
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetAvailableServersOperationHandlerJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetAvailableServersOperationHandlerJUnitTest.java
index 5f724d6..6e26fda 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetAvailableServersOperationHandlerJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetAvailableServersOperationHandlerJUnitTest.java
@@ -19,15 +19,17 @@ import org.apache.geode.distributed.internal.LocatorLoadSnapshot;
import org.apache.geode.distributed.internal.ServerLocation;
import org.apache.geode.distributed.internal.ServerLocator;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
-import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.protocol.MessageExecutionContext;
+import org.apache.geode.internal.protocol.ProtobufTestExecutionContext;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
-import org.apache.geode.internal.protocol.protobuf.Result;
+import org.apache.geode.internal.protocol.Result;
import org.apache.geode.internal.protocol.protobuf.ServerAPI;
import org.apache.geode.internal.protocol.protobuf.ServerAPI.GetAvailableServersResponse;
-import org.apache.geode.internal.protocol.protobuf.Success;
-import org.apache.geode.internal.protocol.protobuf.statistics.NoOpStatistics;
+import org.apache.geode.internal.protocol.Success;
+import org.apache.geode.internal.protocol.statistics.NoOpStatistics;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufRequestUtilities;
import org.apache.geode.test.junit.categories.UnitTest;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -61,7 +63,6 @@ public class GetAvailableServersOperationHandlerJUnitTest extends OperationHandl
ServerLocator serverLocatorAdviseeMock = mock(ServerLocator.class);
locatorLoadSnapshot = mock(LocatorLoadSnapshot.class);
-
when(internalLocatorMock.getServerLocatorAdvisee()).thenReturn(serverLocatorAdviseeMock);
when(serverLocatorAdviseeMock.getLoadSnapshot()).thenReturn(locatorLoadSnapshot);
}
@@ -75,9 +76,7 @@ public class GetAvailableServersOperationHandlerJUnitTest extends OperationHandl
ServerAPI.GetAvailableServersRequest getAvailableServersRequest =
ProtobufRequestUtilities.createGetAvailableServersRequest();
- Result operationHandlerResult =
- operationHandler.process(serializationServiceStub, getAvailableServersRequest,
- new MessageExecutionContext(internalLocatorMock, new NoOpStatistics()));
+ Result operationHandlerResult = getOperationHandlerResult(getAvailableServersRequest);
assertTrue(operationHandlerResult instanceof Success);
ValidateGetAvailableServersResponse(
(GetAvailableServersResponse) operationHandlerResult.getMessage());
@@ -90,15 +89,20 @@ public class GetAvailableServersOperationHandlerJUnitTest extends OperationHandl
ServerAPI.GetAvailableServersRequest getAvailableServersRequest =
ProtobufRequestUtilities.createGetAvailableServersRequest();
- Result operationHandlerResult =
- operationHandler.process(serializationServiceStub, getAvailableServersRequest,
- new MessageExecutionContext(internalLocatorMock, new NoOpStatistics()));
+ Result operationHandlerResult = getOperationHandlerResult(getAvailableServersRequest);
assertTrue(operationHandlerResult instanceof Success);
GetAvailableServersResponse availableServersResponse =
(GetAvailableServersResponse) operationHandlerResult.getMessage();
assertEquals(0, availableServersResponse.getServersCount());
}
+ private Result getOperationHandlerResult(
+ ServerAPI.GetAvailableServersRequest getAvailableServersRequest)
+ throws InvalidExecutionContextException {
+ return operationHandler.process(serializationServiceStub, getAvailableServersRequest,
+ ProtobufTestExecutionContext.getLocatorExecutionContext(internalLocatorMock));
+ }
+
private void ValidateGetAvailableServersResponse(
GetAvailableServersResponse getAvailableServersResponse) {
assertEquals(2, getAvailableServersResponse.getServersCount());
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionNamesRequestOperationHandlerJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionNamesRequestOperationHandlerJUnitTest.java
index 3c0c913..5e09ec6 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionNamesRequestOperationHandlerJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionNamesRequestOperationHandlerJUnitTest.java
@@ -14,10 +14,12 @@
*/
package org.apache.geode.internal.protocol.protobuf.operations;
-import static org.apache.geode.internal.protocol.protobuf.ProtobufTestExecutionContext.getNoAuthExecutionContext;
+import static org.apache.geode.internal.Assert.assertTrue;
+import static org.apache.geode.internal.protocol.ProtobufTestExecutionContext.getNoAuthCacheExecutionContext;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
@@ -31,8 +33,8 @@ import org.apache.geode.cache.Cache;
import org.apache.geode.cache.Region;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.Result;
-import org.apache.geode.internal.protocol.protobuf.Success;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufRequestUtilities;
import org.apache.geode.internal.serialization.exception.UnsupportedEncodingTypeException;
import org.apache.geode.internal.serialization.registry.exception.CodecNotRegisteredForTypeException;
@@ -65,7 +67,7 @@ public class GetRegionNamesRequestOperationHandlerJUnitTest extends OperationHan
CodecNotRegisteredForTypeException, InvalidExecutionContextException {
Result<RegionAPI.GetRegionNamesResponse> result = operationHandler.process(
serializationServiceStub, ProtobufRequestUtilities.createGetRegionNamesRequest(),
- getNoAuthExecutionContext(cacheStub));
+ getNoAuthCacheExecutionContext(cacheStub));
Assert.assertTrue(result instanceof Success);
RegionAPI.GetRegionNamesResponse getRegionsResponse = result.getMessage();
@@ -76,10 +78,15 @@ public class GetRegionNamesRequestOperationHandlerJUnitTest extends OperationHan
String name2 = getRegionsResponse.getRegions(1);
String name3 = getRegionsResponse.getRegions(2);
Assert.assertTrue("The same region was returned multiple times",
- name1 != name2 && name1 != name3 && name2 != name3);
- Assert.assertTrue(name1 == TEST_REGION1 || name1 == TEST_REGION2 || name1 == TEST_REGION3);
- Assert.assertTrue(name2 == TEST_REGION1 || name2 == TEST_REGION2 || name2 == TEST_REGION3);
- Assert.assertTrue(name3 == TEST_REGION1 || name3 == TEST_REGION2 || name3 == TEST_REGION3);
+ !name1.equals(name2) && !name1.equals(name3) && !name2.equals(name3));
+ ArrayList arrayList = new ArrayList();
+ arrayList.add(TEST_REGION1);
+ arrayList.add(TEST_REGION2);
+ arrayList.add(TEST_REGION3);
+
+ assertTrue(arrayList.contains(name1));
+ assertTrue(arrayList.contains(name2));
+ assertTrue(arrayList.contains(name3));
}
@Test
@@ -89,7 +96,7 @@ public class GetRegionNamesRequestOperationHandlerJUnitTest extends OperationHan
.thenReturn(Collections.unmodifiableSet(new HashSet<Region<String, String>>()));
Result<RegionAPI.GetRegionNamesResponse> result = operationHandler.process(
serializationServiceStub, ProtobufRequestUtilities.createGetRegionNamesRequest(),
- getNoAuthExecutionContext(emptyCache));
+ getNoAuthCacheExecutionContext(emptyCache));
Assert.assertTrue(result instanceof Success);
RegionAPI.GetRegionNamesResponse getRegionsResponse = result.getMessage();
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionRequestOperationHandlerJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionRequestOperationHandlerJUnitTest.java
index 2e7979c..6775f06 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionRequestOperationHandlerJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionRequestOperationHandlerJUnitTest.java
@@ -14,7 +14,7 @@
*/
package org.apache.geode.internal.protocol.protobuf.operations;
-import static org.apache.geode.internal.protocol.protobuf.ProtobufTestExecutionContext.getNoAuthExecutionContext;
+import static org.apache.geode.internal.protocol.ProtobufTestExecutionContext.getNoAuthCacheExecutionContext;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -34,10 +34,10 @@ import org.apache.geode.cache.Scope;
import org.apache.geode.internal.protocol.MessageUtil;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
-import org.apache.geode.internal.protocol.protobuf.Failure;
-import org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode;
+import org.apache.geode.internal.protocol.Failure;
+import org.apache.geode.internal.protocol.ProtocolErrorCode;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.Result;
+import org.apache.geode.internal.protocol.Result;
import org.apache.geode.test.junit.categories.UnitTest;
@Category(UnitTest.class)
@@ -70,7 +70,7 @@ public class GetRegionRequestOperationHandlerJUnitTest extends OperationHandlerJ
Result<RegionAPI.GetRegionResponse> result = operationHandler.process(serializationServiceStub,
- MessageUtil.makeGetRegionRequest(TEST_REGION1), getNoAuthExecutionContext(cacheStub));
+ MessageUtil.makeGetRegionRequest(TEST_REGION1), getNoAuthCacheExecutionContext(cacheStub));
RegionAPI.GetRegionResponse response = result.getMessage();
BasicTypes.Region region = response.getRegion();
Assert.assertEquals(TEST_REGION1, region.getName());
@@ -93,7 +93,8 @@ public class GetRegionRequestOperationHandlerJUnitTest extends OperationHandlerJ
.thenReturn(Collections.unmodifiableSet(new HashSet<Region<String, String>>()));
String unknownRegionName = "UNKNOWN_REGION";
Result<RegionAPI.GetRegionResponse> result = operationHandler.process(serializationServiceStub,
- MessageUtil.makeGetRegionRequest(unknownRegionName), getNoAuthExecutionContext(emptyCache));
+ MessageUtil.makeGetRegionRequest(unknownRegionName),
+ getNoAuthCacheExecutionContext(emptyCache));
Assert.assertTrue(result instanceof Failure);
Assert.assertEquals(ProtocolErrorCode.REGION_NOT_FOUND.codeValue,
result.getErrorMessage().getError().getErrorCode());
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRequestOperationHandlerJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRequestOperationHandlerJUnitTest.java
index 8064475..302232c 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRequestOperationHandlerJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRequestOperationHandlerJUnitTest.java
@@ -26,12 +26,12 @@ import org.junit.experimental.categories.Category;
import org.apache.geode.cache.Region;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
-import org.apache.geode.internal.protocol.protobuf.Failure;
-import org.apache.geode.internal.protocol.protobuf.ProtobufTestExecutionContext;
-import org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode;
+import org.apache.geode.internal.protocol.Failure;
+import org.apache.geode.internal.protocol.ProtobufTestExecutionContext;
+import org.apache.geode.internal.protocol.ProtocolErrorCode;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.Result;
-import org.apache.geode.internal.protocol.protobuf.Success;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufRequestUtilities;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufUtilities;
import org.apache.geode.internal.serialization.exception.UnsupportedEncodingTypeException;
@@ -67,7 +67,7 @@ public class GetRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
public void processReturnsTheEncodedValueFromTheRegion() throws Exception {
RegionAPI.GetRequest getRequest = generateTestRequest(false, false, false);
Result<RegionAPI.GetResponse> result = operationHandler.process(serializationServiceStub,
- getRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ getRequest, ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
Assert.assertTrue(result instanceof Success);
Assert.assertEquals(BasicTypes.EncodedValue.ValueCase.STRINGRESULT,
@@ -80,7 +80,7 @@ public class GetRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
public void processReturnsUnsucessfulResponseForInvalidRegion() throws Exception {
RegionAPI.GetRequest getRequest = generateTestRequest(true, false, false);
Result<RegionAPI.GetResponse> response = operationHandler.process(serializationServiceStub,
- getRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ getRequest, ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
Assert.assertTrue(response instanceof Failure);
Assert.assertEquals(ProtocolErrorCode.REGION_NOT_FOUND.codeValue,
@@ -91,7 +91,7 @@ public class GetRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
public void processReturnsKeyNotFoundWhenKeyIsNotFound() throws Exception {
RegionAPI.GetRequest getRequest = generateTestRequest(false, true, false);
Result<RegionAPI.GetResponse> response = operationHandler.process(serializationServiceStub,
- getRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ getRequest, ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
Assert.assertTrue(response instanceof Success);
}
@@ -100,7 +100,7 @@ public class GetRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
public void processReturnsLookupFailureWhenKeyFoundWithNoValue() throws Exception {
RegionAPI.GetRequest getRequest = generateTestRequest(false, false, true);
Result<RegionAPI.GetResponse> response = operationHandler.process(serializationServiceStub,
- getRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ getRequest, ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
Assert.assertTrue(response instanceof Success);
}
@@ -119,7 +119,7 @@ public class GetRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
RegionAPI.GetRequest getRequest =
ProtobufRequestUtilities.createGetRequest(TEST_REGION, encodedKey).getGetRequest();
Result<RegionAPI.GetResponse> response = operationHandler.process(serializationServiceStub,
- getRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ getRequest, ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
Assert.assertTrue(response instanceof Failure);
Assert.assertEquals(ProtocolErrorCode.VALUE_ENCODING_ERROR.codeValue,
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/PutAllRequestOperationHandlerJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/PutAllRequestOperationHandlerJUnitTest.java
index 9e1d7a5..80b15ff 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/PutAllRequestOperationHandlerJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/PutAllRequestOperationHandlerJUnitTest.java
@@ -14,7 +14,7 @@
*/
package org.apache.geode.internal.protocol.protobuf.operations;
-import static org.apache.geode.internal.protocol.protobuf.ProtobufTestExecutionContext.getNoAuthExecutionContext;
+import static org.apache.geode.internal.protocol.ProtobufTestExecutionContext.getNoAuthCacheExecutionContext;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.any;
@@ -33,8 +33,8 @@ import org.junit.experimental.categories.Category;
import org.apache.geode.cache.Region;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.Result;
-import org.apache.geode.internal.protocol.protobuf.Success;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufRequestUtilities;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufUtilities;
import org.apache.geode.internal.serialization.exception.UnsupportedEncodingTypeException;
@@ -71,7 +71,7 @@ public class PutAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
PutAllRequestOperationHandler operationHandler = new PutAllRequestOperationHandler();
Result<RegionAPI.PutAllResponse> result = operationHandler.process(serializationServiceStub,
- generateTestRequest(false, true), getNoAuthExecutionContext(cacheStub));
+ generateTestRequest(false, true), getNoAuthCacheExecutionContext(cacheStub));
Assert.assertTrue(result instanceof Success);
@@ -85,7 +85,7 @@ public class PutAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
PutAllRequestOperationHandler operationHandler = new PutAllRequestOperationHandler();
Result<RegionAPI.PutAllResponse> result = operationHandler.process(serializationServiceStub,
- generateTestRequest(true, true), getNoAuthExecutionContext(cacheStub));
+ generateTestRequest(true, true), getNoAuthCacheExecutionContext(cacheStub));
assertTrue(result instanceof Success);
verify(regionMock).put(TEST_KEY1, TEST_VALUE1);
@@ -104,7 +104,7 @@ public class PutAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
PutAllRequestOperationHandler operationHandler = new PutAllRequestOperationHandler();
Result<RegionAPI.PutAllResponse> result = operationHandler.process(serializationServiceStub,
- generateTestRequest(false, false), getNoAuthExecutionContext(cacheStub));
+ generateTestRequest(false, false), getNoAuthCacheExecutionContext(cacheStub));
assertTrue(result instanceof Success);
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/PutRequestOperationHandlerJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/PutRequestOperationHandlerJUnitTest.java
index b90982c..04ce826 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/PutRequestOperationHandlerJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/PutRequestOperationHandlerJUnitTest.java
@@ -30,12 +30,12 @@ import org.junit.experimental.categories.Category;
import org.apache.geode.cache.Region;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
-import org.apache.geode.internal.protocol.protobuf.Failure;
-import org.apache.geode.internal.protocol.protobuf.ProtobufTestExecutionContext;
-import org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode;
+import org.apache.geode.internal.protocol.Failure;
+import org.apache.geode.internal.protocol.ProtobufTestExecutionContext;
+import org.apache.geode.internal.protocol.ProtocolErrorCode;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.Result;
-import org.apache.geode.internal.protocol.protobuf.Success;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufRequestUtilities;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufUtilities;
import org.apache.geode.internal.serialization.exception.UnsupportedEncodingTypeException;
@@ -62,8 +62,9 @@ public class PutRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
@Test
public void test_puttingTheEncodedEntryIntoRegion() throws Exception {
PutRequestOperationHandler operationHandler = new PutRequestOperationHandler();
- Result<RegionAPI.PutResponse> result = operationHandler.process(serializationServiceStub,
- generateTestRequest(), ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ Result<RegionAPI.PutResponse> result =
+ operationHandler.process(serializationServiceStub, generateTestRequest(),
+ ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
assertTrue(result instanceof Success);
@@ -92,7 +93,7 @@ public class PutRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
RegionAPI.PutRequest putRequest =
ProtobufRequestUtilities.createPutRequest(TEST_REGION, testEntry).getPutRequest();
Result<RegionAPI.PutResponse> result = operationHandler.process(serializationServiceStub,
- putRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ putRequest, ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
assertTrue(result instanceof Failure);
assertEquals(ProtocolErrorCode.VALUE_ENCODING_ERROR.codeValue,
@@ -103,8 +104,9 @@ public class PutRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
public void test_RegionNotFound() throws Exception {
when(cacheStub.getRegion(TEST_REGION)).thenReturn(null);
PutRequestOperationHandler operationHandler = new PutRequestOperationHandler();
- Result<RegionAPI.PutResponse> result = operationHandler.process(serializationServiceStub,
- generateTestRequest(), ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ Result<RegionAPI.PutResponse> result =
+ operationHandler.process(serializationServiceStub, generateTestRequest(),
+ ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
assertTrue(result instanceof Failure);
assertEquals(ProtocolErrorCode.REGION_NOT_FOUND.codeValue,
@@ -116,8 +118,9 @@ public class PutRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
when(regionMock.put(any(), any())).thenThrow(ClassCastException.class);
PutRequestOperationHandler operationHandler = new PutRequestOperationHandler();
- Result<RegionAPI.PutResponse> result = operationHandler.process(serializationServiceStub,
- generateTestRequest(), ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ Result<RegionAPI.PutResponse> result =
+ operationHandler.process(serializationServiceStub, generateTestRequest(),
+ ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
assertTrue(result instanceof Failure);
assertEquals(ProtocolErrorCode.CONSTRAINT_VIOLATION.codeValue,
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/RemoveRequestOperationHandlerJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/RemoveRequestOperationHandlerJUnitTest.java
index 5bfad23..3b8fc66 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/RemoveRequestOperationHandlerJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/RemoveRequestOperationHandlerJUnitTest.java
@@ -29,12 +29,12 @@ import org.junit.experimental.categories.Category;
import org.apache.geode.cache.Region;
import org.apache.geode.internal.protocol.protobuf.BasicTypes;
import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
-import org.apache.geode.internal.protocol.protobuf.Failure;
-import org.apache.geode.internal.protocol.protobuf.ProtobufTestExecutionContext;
-import org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode;
+import org.apache.geode.internal.protocol.Failure;
+import org.apache.geode.internal.protocol.ProtobufTestExecutionContext;
+import org.apache.geode.internal.protocol.ProtocolErrorCode;
import org.apache.geode.internal.protocol.protobuf.RegionAPI;
-import org.apache.geode.internal.protocol.protobuf.Result;
-import org.apache.geode.internal.protocol.protobuf.Success;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufRequestUtilities;
import org.apache.geode.internal.protocol.protobuf.utilities.ProtobufUtilities;
import org.apache.geode.internal.serialization.exception.UnsupportedEncodingTypeException;
@@ -68,7 +68,7 @@ public class RemoveRequestOperationHandlerJUnitTest extends OperationHandlerJUni
public void processValidKeyRemovesTheEntryAndReturnSuccess() throws Exception {
RegionAPI.RemoveRequest removeRequest = generateTestRequest(false, false).getRemoveRequest();
Result<RegionAPI.RemoveResponse> result = operationHandler.process(serializationServiceStub,
- removeRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ removeRequest, ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
assertTrue(result instanceof Success);
verify(regionStub).remove(TEST_KEY);
@@ -78,7 +78,7 @@ public class RemoveRequestOperationHandlerJUnitTest extends OperationHandlerJUni
public void processReturnsUnsucessfulResponseForInvalidRegion() throws Exception {
RegionAPI.RemoveRequest removeRequest = generateTestRequest(true, false).getRemoveRequest();
Result<RegionAPI.RemoveResponse> result = operationHandler.process(serializationServiceStub,
- removeRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ removeRequest, ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
assertTrue(result instanceof Failure);
assertEquals(ProtocolErrorCode.REGION_NOT_FOUND.codeValue,
@@ -89,7 +89,7 @@ public class RemoveRequestOperationHandlerJUnitTest extends OperationHandlerJUni
public void processReturnsSuccessWhenKeyIsNotFound() throws Exception {
RegionAPI.RemoveRequest removeRequest = generateTestRequest(false, true).getRemoveRequest();
Result<RegionAPI.RemoveResponse> result = operationHandler.process(serializationServiceStub,
- removeRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ removeRequest, ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
assertTrue(result instanceof Success);
}
@@ -109,7 +109,7 @@ public class RemoveRequestOperationHandlerJUnitTest extends OperationHandlerJUni
RegionAPI.RemoveRequest removeRequest =
ProtobufRequestUtilities.createRemoveRequest(TEST_REGION, encodedKey).getRemoveRequest();;
Result<RegionAPI.RemoveResponse> result = operationHandler.process(serializationServiceStub,
- removeRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
+ removeRequest, ProtobufTestExecutionContext.getNoAuthCacheExecutionContext(cacheStub));
assertTrue(result instanceof Failure);
assertEquals(ProtocolErrorCode.VALUE_ENCODING_ERROR.codeValue,
--
To stop receiving notification emails like this one, please contact
['"commits@geode.apache.org" <co...@geode.apache.org>'].