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/23 23:36:25 UTC
[geode] 03/04: Adding SecurityProcessor.java and returning
MessageExecutionContext.java
This is an automated email from the ASF dual-hosted git repository.
udo pushed a commit to branch feature/GEODE-3705
in repository https://gitbox.apache.org/repos/asf/geode.git
commit f8d6089596b0bd2c09e762b660d522ab133bc49e
Author: kohlmu-pivotal <uk...@pivotal.io>
AuthorDate: Fri Oct 20 16:08:56 2017 -0700
Adding SecurityProcessor.java and returning MessageExecutionContext.java
---
.../tier/sockets/ClientProtocolMessageHandler.java | 13 ++---
.../tier/sockets/MessageExecutionContext.java | 40 ++++++++++----
.../{protobuf => }/EncodingTypeTranslator.java | 3 +-
.../internal/protocol/{protobuf => }/Failure.java | 20 ++++---
.../protocol/{protobuf => }/Handshaker.java | 7 ++-
.../protocol/{protobuf => }/OperationContext.java | 3 +-
.../internal/protocol/ProtobufCachePipeline.java | 17 ++----
.../protocol/{protobuf => }/ProtocolErrorCode.java | 2 +-
.../internal/protocol/{protobuf => }/Result.java | 7 ++-
.../internal/protocol/{protobuf => }/Success.java | 21 +++++---
.../protocol/operations/OperationHandler.java | 6 +--
.../protocol/protobuf/ProtobufOpsProcessor.java | 62 ++++++++++++----------
.../protobuf/ProtobufSerializationService.java | 1 +
.../protocol/protobuf/ProtobufStreamProcessor.java | 21 +++++---
.../operations/GetAllRequestOperationHandler.java | 20 +++----
.../GetAvailableServersOperationHandler.java | 12 ++---
.../GetRegionNamesRequestOperationHandler.java | 12 ++---
.../GetRegionRequestOperationHandler.java | 18 +++----
.../operations/GetRequestOperationHandler.java | 28 +++++-----
.../operations/PutAllRequestOperationHandler.java | 20 +++----
.../operations/PutRequestOperationHandler.java | 22 ++++----
.../operations/RemoveRequestOperationHandler.java | 22 ++++----
.../HandshakerRequestOperationHandler.java | 23 ++++----
.../AuthenticationRequestOperationHandler.java | 57 ++++++++++++++++++++
.../security/InvalidConfigAuthenticator.java | 25 +++------
.../security/ProtobufShiroAuthenticator.java | 55 ++-----------------
.../AuthenticationSecurityProcessor.java} | 19 ++++---
.../AuthorizationSecurityProcessor.java} | 19 ++++---
.../NoAuthenticationSecurityProcessor.java} | 18 ++++---
.../utilities/ProtobufResponseUtilities.java | 4 +-
.../protobuf/utilities/ProtobufUtilities.java | 2 +-
.../registry/OperationContextRegistry.java | 10 +++-
.../security/AuthenticationLookupService.java | 2 +-
.../internal/protocol/security/Authenticator.java | 18 ++-----
.../protocol/security/NoOpAuthenticator.java | 8 +--
.../SecurityProcessor.java} | 18 +++----
geode-protobuf/src/main/proto/clientProtocol.proto | 4 +-
geode-protobuf/src/main/proto/handshake_API.proto | 5 ++
.../protocol/AuthenticationIntegrationTest.java | 17 +++---
.../protocol/AuthorizationIntegrationTest.java | 7 ++-
.../acceptance/LocatorConnectionDUnitTest.java | 3 +-
...TypeToSerializationTypeTranslatorJUnitTest.java | 1 +
.../internal/protocol/protobuf/HandshakerTest.java | 18 +++----
.../ProtobufShiroAuthenticatorJUnitTest.java | 35 ++++++------
.../protobuf/ProtobufStreamProcessorTest.java | 6 ++-
.../protobuf/ProtobufTestExecutionContext.java | 6 ++-
.../protocol/protobuf/ProtobufTestUtilities.java | 2 +-
.../GetAllRequestOperationHandlerJUnitTest.java | 13 ++---
...tAvailableServersOperationHandlerJUnitTest.java | 4 +-
...egionNamesRequestOperationHandlerJUnitTest.java | 9 ++--
.../GetRegionRequestOperationHandlerJUnitTest.java | 11 ++--
.../GetRequestOperationHandlerJUnitTest.java | 19 +++----
.../PutAllRequestOperationHandlerJUnitTest.java | 11 ++--
.../PutRequestOperationHandlerJUnitTest.java | 17 +++---
.../RemoveRequestOperationHandlerJUnitTest.java | 17 +++---
55 files changed, 461 insertions(+), 399 deletions(-)
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/cache/tier/sockets/ClientProtocolMessageHandler.java
index 4de279b..c1250e1 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/cache/tier/sockets/ClientProtocolMessageHandler.java
@@ -23,17 +23,18 @@ import org.apache.geode.StatisticsFactory;
/**
- * This is an interface that other modules can implement to hook into
- * {@link GenericProtocolServerConnection} to handle messages sent to Geode.
+ * This is an interface that other modules can implement to hook into {@link
+ * GenericProtocolServerConnection} to handle messages sent to Geode.
*
* 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}.
+ * 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,
- MessageExecutionContext executionContext) throws IOException;
+ MessageExecutionContext receiveMessage(InputStream inputStream, OutputStream outputStream,
+ MessageExecutionContext executionContext)
+ throws IOException;
}
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/cache/tier/sockets/MessageExecutionContext.java
index 0978e41..5c9a5c8 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/cache/tier/sockets/MessageExecutionContext.java
@@ -15,11 +15,16 @@
package org.apache.geode.internal.cache.tier.sockets;
+
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.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;
@@ -29,16 +34,21 @@ public class MessageExecutionContext {
private Cache cache;
private Locator locator;
private final Authorizer authorizer;
- private final Object authenticatedSubject;
+ private final Object authenticatedToken;
private final ProtocolClientStatistics statistics;
+ private final SecurityProcessor securityProcessor;
+ private final Authenticator authenticator;
- public MessageExecutionContext(Cache cache, Authorizer streamAuthorizer,
- Object authenticatedSubject, ProtocolClientStatistics statistics) {
+ public MessageExecutionContext(Cache cache, Authenticator authenticator,
+ Authorizer streamAuthorizer, Object authenticatedToken, ProtocolClientStatistics statistics,
+ SecurityProcessor securityProcessor) {
this.cache = cache;
this.authorizer = streamAuthorizer;
- this.authenticatedSubject = authenticatedSubject;
+ this.authenticatedToken = authenticatedToken;
this.statistics = statistics;
+ this.securityProcessor = securityProcessor;
+ this.authenticator = authenticator;
}
public MessageExecutionContext(InternalLocator locator, ProtocolClientStatistics statistics) {
@@ -46,14 +56,16 @@ public class MessageExecutionContext {
// 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.authenticatedToken = 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 {
@@ -67,7 +79,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 {
@@ -86,10 +98,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;
}
@@ -100,4 +112,12 @@ public class MessageExecutionContext {
public ProtocolClientStatistics getStatistics() {
return statistics;
}
+
+ public Authenticator getAuthenticator() {
+ return authenticator;
+ }
+
+ public SecurityProcessor getSecurityProcessor() {
+ return securityProcessor;
+ }
}
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 64%
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..cfcd46d 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,31 +12,39 @@
* 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> {
+public class Failure<SuccessType, ExecutionContext> implements Result<SuccessType, ExecutionContext> {
private final ClientProtocol.ErrorResponse errorResponse;
+ private final ExecutionContext executionContext;
- public Failure(ClientProtocol.ErrorResponse errorResponse) {
+ public Failure(ClientProtocol.ErrorResponse errorResponse, ExecutionContext executionContext) {
this.errorResponse = errorResponse;
+ this.executionContext = executionContext;
}
- public static <T> Failure<T> of(ClientProtocol.ErrorResponse errorResponse) {
- return new Failure<>(errorResponse);
+ public static <T, V> Failure<T, V> of(ClientProtocol.ErrorResponse errorResponse, V context) {
+ return new Failure<>(errorResponse, context);
}
@Override
public <T> T map(Function<SuccessType, T> successFunction,
- Function<ClientProtocol.ErrorResponse, T> errorFunction) {
+ Function<ClientProtocol.ErrorResponse, T> errorFunction) {
return errorFunction.apply(errorResponse);
}
@Override
+ public ExecutionContext getExecutionContext() {
+ return executionContext;
+ }
+
+ @Override
public SuccessType getMessage() {
throw new RuntimeException("This is not a Success result");
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Handshaker.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/Handshaker.java
similarity index 88%
rename from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Handshaker.java
rename to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/Handshaker.java
index 1812f92..1a5bb97 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Handshaker.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/Handshaker.java
@@ -13,7 +13,7 @@
* the License.
*/
-package org.apache.geode.internal.protocol.protobuf;
+package org.apache.geode.internal.protocol;
import java.io.IOException;
import java.io.InputStream;
@@ -22,8 +22,11 @@ import java.io.OutputStream;
import org.apache.logging.log4j.Logger;
import org.apache.geode.cache.IncompatibleVersionException;
+import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.internal.protocol.Result;
import org.apache.geode.internal.protocol.handshaker.ClientProtocolHandshaker;
+import org.apache.geode.internal.protocol.protobuf.HandshakeAPI;
import org.apache.geode.internal.protocol.protobuf.operations.handshaker.HandshakerRequestOperationHandler;
public class Handshaker implements ClientProtocolHandshaker {
@@ -45,7 +48,7 @@ public class Handshaker implements ClientProtocolHandshaker {
// At this stage HandshakerRequestOperationHandler is not wired into the
// ProtobufOpsStreamProcesser.
// Thus passing in null serializationService and executionContext.
- Result<HandshakeAPI.HandshakeResponse> result =
+ Result<HandshakeAPI.HandshakeResponse,MessageExecutionContext> result =
handshakerRequestOperationHandler.process(null, handshakeRequest, null);
HandshakeAPI.HandshakeResponse handshakeResponse = result.getMessage();
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 96%
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..d4ca2a0 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
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
index 3b6d2e5..a7764df 100644
--- 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
@@ -24,6 +24,7 @@ import org.apache.geode.cache.Cache;
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.processors.AuthenticationSecurityProcessor;
import org.apache.geode.internal.protocol.security.Authenticator;
import org.apache.geode.internal.protocol.security.Authorizer;
import org.apache.geode.internal.protocol.statistics.ProtocolClientStatistics;
@@ -39,7 +40,7 @@ public final class ProtobufCachePipeline implements ClientProtocolProcessor {
private final ProtobufStreamProcessor streamProcessor;
private final Authenticator authenticator;
- private Object authenticatorToken;
+ private MessageExecutionContext messageExecutionContext;
ProtobufCachePipeline(ProtobufStreamProcessor protobufStreamProcessor,
ProtocolClientStatistics statistics, Cache cache, Authenticator authenticator,
@@ -50,22 +51,14 @@ public final class ProtobufCachePipeline implements ClientProtocolProcessor {
this.authenticator = authenticator;
this.authorizer = authorizer;
this.statistics.clientConnected();
+ this.messageExecutionContext = new MessageExecutionContext(cache, authenticator, authorizer,
+ null, statistics, new AuthenticationSecurityProcessor());
}
@Override
public void processMessage(InputStream inputStream, OutputStream outputStream)
throws IOException {
- if (authenticatorToken == null) {
- try {
- authenticatorToken = authenticator.authenticate(inputStream, outputStream);
- } catch (AuthenticationFailedException ex) {
- statistics.incAuthenticationFailures();
- throw new IOException(ex);
- }
- } else {
- streamProcessor.receiveMessage(inputStream, outputStream,
- new MessageExecutionContext(cache, authorizer, authenticatorToken, statistics));
- }
+ messageExecutionContext = streamProcessor.receiveMessage(inputStream, outputStream, messageExecutionContext);
}
@Override
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 96%
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 2c895d3..f74f613 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,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;
+package org.apache.geode.internal.protocol;
public enum ProtocolErrorCode {
GENERIC_FAILURE(1000),
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 83%
copy from geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Result.java
copy to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/Result.java
index bada098..69a5f6f 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,17 +12,20 @@
* 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> {
+public interface Result<SuccessType,ExecutionContext> {
<T> T map(Function<SuccessType, T> successFunction,
Function<ClientProtocol.ErrorResponse, T> errorFunction);
+ ExecutionContext getExecutionContext();
+
SuccessType getMessage();
ClientProtocol.ErrorResponse getErrorMessage();
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 66%
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..0a3378e 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,31 +12,40 @@
* 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> {
+public class Success<SuccessType, ExecutionContext>
+ implements Result<SuccessType, ExecutionContext> {
private final SuccessType successResponse;
+ private final ExecutionContext executionContext;
- public Success(SuccessType successResponse) {
+ public Success(SuccessType successResponse, ExecutionContext executionContext) {
this.successResponse = successResponse;
+ this.executionContext = executionContext;
}
- public static <T> Success<T> of(T result) {
- return new Success<>(result);
+ public static <T,V> Success<T,V> of(T result,V context) {
+ return new Success<>(result,context);
}
@Override
public <T> T map(Function<SuccessType, T> successFunction,
- Function<ClientProtocol.ErrorResponse, T> errorFunction) {
+ Function<ClientProtocol.ErrorResponse, T> errorFunction) {
return successFunction.apply(successResponse);
}
@Override
+ public ExecutionContext getExecutionContext() {
+ return executionContext;
+ }
+
+ @Override
public SuccessType getMessage() {
return successResponse;
}
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..13ce932 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
@@ -18,7 +18,7 @@ import org.apache.geode.annotations.Experimental;
import org.apache.geode.internal.cache.tier.sockets.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;
/**
@@ -33,7 +33,7 @@ public interface OperationHandler<Req, Resp> {
* Decode the message, deserialize contained values using the serialization service, do the work
* indicated on the provided cache, and return a response.
*/
- Result<Resp> process(SerializationService serializationService, Req request,
- MessageExecutionContext executionContext) throws InvalidExecutionContextException;
+ Result<Resp,MessageExecutionContext> process(SerializationService serializationService, Req request,
+ MessageExecutionContext messageExecutionContext) throws InvalidExecutionContextException;
}
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 4fd1764..59407d6 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
@@ -20,12 +20,16 @@ import org.apache.geode.annotations.Experimental;
import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
import org.apache.geode.internal.logging.LogService;
+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.Success;
import org.apache.geode.internal.protocol.registry.OperationContextRegistry;
-import org.apache.geode.internal.protocol.statistics.ProtocolClientStatistics;
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 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
@@ -39,42 +43,46 @@ public class ProtobufOpsProcessor {
private static final Logger logger = LogService.getLogger(ProtobufOpsProcessor.class);
public ProtobufOpsProcessor(SerializationService serializationService,
- OperationContextRegistry operationContextRegistry) {
+ OperationContextRegistry operationContextRegistry) {
this.serializationService = serializationService;
this.operationContextRegistry = operationContextRegistry;
}
- public ClientProtocol.Response process(ClientProtocol.Request request,
- MessageExecutionContext context) {
+ public Result<ClientProtocol.Response, MessageExecutionContext> process(
+ ClientProtocol.Request request,
+ MessageExecutionContext messageExecutionContext) {
ClientProtocol.Request.RequestAPICase requestType = request.getRequestAPICase();
logger.debug("Processing request of type {}", requestType);
OperationContext operationContext = operationContextRegistry.getOperationContext(requestType);
- ClientProtocol.Response.Builder builder;
Result result;
- 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 securityProcessor = messageExecutionContext.getSecurityProcessor();
+ if (securityProcessor.validateOperation(request, messageExecutionContext, operationContext)) {
+ result = processOperation(request, messageExecutionContext, requestType, operationContext);
+ } else {
+ logger.warn("Received unauthorized request");
+ messageExecutionContext.getStatistics().incAuthorizationViolations();
+ result = Failure.of(ProtobufResponseUtilities.makeErrorResponse(AUTHORIZATION_FAILED,
+ "User isn't authorized for this operation."), messageExecutionContext);
}
- builder = (ClientProtocol.Response.Builder) result.map(operationContext.getToResponse(),
- operationContext.getToErrorResponse());
- return builder.build();
+ ClientProtocol.Response
+ response =
+ ((ClientProtocol.Response.Builder) result.map(operationContext.getToResponse(),
+ operationContext.getToErrorResponse())).build();
+ return Success.of(response, (MessageExecutionContext) result.getExecutionContext());
}
- private void recordAuthorizationViolation(MessageExecutionContext context) {
- ProtocolClientStatistics 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."), context);
+ }
}
}
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 9386ee7..4250e93 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
@@ -25,6 +25,7 @@ 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.logging.LogService;
+import org.apache.geode.internal.protocol.Result;
import org.apache.geode.internal.protocol.exception.InvalidProtocolMessageException;
import org.apache.geode.internal.protocol.registry.OperationContextRegistry;
import org.apache.geode.internal.protocol.protobuf.serializer.ProtobufProtocolSerializer;
@@ -49,17 +50,19 @@ public class ProtobufStreamProcessor implements ClientProtocolMessageHandler {
}
@Override
- public void receiveMessage(InputStream inputStream, OutputStream outputStream,
- MessageExecutionContext executionContext) throws IOException {
+ public MessageExecutionContext receiveMessage(InputStream inputStream, OutputStream outputStream,
+ MessageExecutionContext executionContext)
+ throws IOException {
try {
- processOneMessage(inputStream, outputStream, executionContext);
+ return processOneMessage(inputStream, outputStream, executionContext);
} catch (InvalidProtocolMessageException e) {
throw new IOException(e);
}
}
- private void processOneMessage(InputStream inputStream, OutputStream outputStream,
- MessageExecutionContext executionContext)
+ private MessageExecutionContext processOneMessage(InputStream inputStream,
+ OutputStream outputStream,
+ MessageExecutionContext executionContext)
throws InvalidProtocolMessageException, IOException {
ClientProtocol.Message message = protobufProtocolSerializer.deserialize(inputStream);
if (message == null) {
@@ -71,9 +74,13 @@ public class ProtobufStreamProcessor implements ClientProtocolMessageHandler {
statistics.messageReceived(message.getSerializedSize());
ClientProtocol.Request request = message.getRequest();
- ClientProtocol.Response response = protobufOpsProcessor.process(request, executionContext);
- ClientProtocol.Message responseMessage = ProtobufUtilities.createProtobufResponse(response);
+ Result<ClientProtocol.Response, MessageExecutionContext> result =
+ protobufOpsProcessor.process(request, executionContext);
+ ClientProtocol.Message
+ responseMessage =
+ ProtobufUtilities.createProtobufResponse(result.getMessage());
statistics.messageSent(responseMessage.getSerializedSize());
protobufProtocolSerializer.serialize(responseMessage, outputStream);
+ return result.getExecutionContext();
}
}
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..c15a44f 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
@@ -31,17 +31,17 @@ 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
@@ -49,15 +49,15 @@ public class GetAllRequestOperationHandler
private static final Logger logger = LogService.getLogger();
@Override
- public Result<RegionAPI.GetAllResponse> process(SerializationService serializationService,
- RegionAPI.GetAllRequest request, MessageExecutionContext executionContext)
+ public Result<RegionAPI.GetAllResponse,MessageExecutionContext> process(SerializationService serializationService,
+ 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
- .of(ProtobufResponseUtilities.makeErrorResponse(REGION_NOT_FOUND, "Region not found"));
+ .of(ProtobufResponseUtilities.makeErrorResponse(REGION_NOT_FOUND, "Region not found"),messageExecutionContext);
}
Map<Boolean, List<Object>> resultsCollection = request.getKeyList().stream()
@@ -73,7 +73,7 @@ public class GetAllRequestOperationHandler
responseBuilder.addFailures((BasicTypes.KeyedError) entry);
}
- return Success.of(responseBuilder.build());
+ return Success.of(responseBuilder.build(),messageExecutionContext);
}
private Object processOneMessage(SerializationService serializationService, Region region,
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..ec2c917 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
@@ -25,9 +25,9 @@ import org.apache.geode.internal.cache.tier.sockets.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
@@ -35,11 +35,11 @@ public class GetAvailableServersOperationHandler implements
OperationHandler<ServerAPI.GetAvailableServersRequest, ServerAPI.GetAvailableServersResponse> {
@Override
- public Result<ServerAPI.GetAvailableServersResponse> process(
+ public Result<ServerAPI.GetAvailableServersResponse,MessageExecutionContext> 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) {
@@ -51,7 +51,7 @@ public class GetAvailableServersOperationHandler implements
.collect(Collectors.toList());
ServerAPI.GetAvailableServersResponse.Builder builder =
ServerAPI.GetAvailableServersResponse.newBuilder().addAllServers(servers);
- return Success.of(builder.build());
+ return Success.of(builder.build(),messageExecutionContext);
}
private BasicTypes.Server getServerProtobufMessage(ServerLocation serverLocation) {
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..c8e6573 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
@@ -22,8 +22,8 @@ import org.apache.geode.internal.cache.tier.sockets.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;
@@ -32,10 +32,10 @@ public class GetRegionNamesRequestOperationHandler
implements OperationHandler<RegionAPI.GetRegionNamesRequest, RegionAPI.GetRegionNamesResponse> {
@Override
- public Result<RegionAPI.GetRegionNamesResponse> process(SerializationService serializationService,
- RegionAPI.GetRegionNamesRequest request, MessageExecutionContext executionContext)
+ public Result<RegionAPI.GetRegionNamesResponse,MessageExecutionContext> process(SerializationService serializationService,
+ RegionAPI.GetRegionNamesRequest request, MessageExecutionContext messageExecutionContext)
throws InvalidExecutionContextException {
- Set<Region<?, ?>> regions = executionContext.getCache().rootRegions();
- return Success.of(ProtobufResponseUtilities.createGetRegionNamesResponse(regions));
+ Set<Region<?, ?>> regions = messageExecutionContext.getCache().rootRegions();
+ return Success.of(ProtobufResponseUtilities.createGetRegionNamesResponse(regions),messageExecutionContext);
}
}
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..032d72c 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
@@ -23,15 +23,15 @@ 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
@@ -39,20 +39,20 @@ public class GetRegionRequestOperationHandler
private static final Logger logger = LogService.getLogger();
@Override
- public Result<RegionAPI.GetRegionResponse> process(SerializationService serializationService,
- RegionAPI.GetRegionRequest request, MessageExecutionContext executionContext)
+ public Result<RegionAPI.GetRegionResponse,MessageExecutionContext> process(SerializationService serializationService,
+ 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,
- "No region exists for name: " + regionName));
+ "No region exists for name: " + regionName),messageExecutionContext);
}
BasicTypes.Region protoRegion = ProtobufUtilities.createRegionMessageFromRegion(region);
- return Success.of(RegionAPI.GetRegionResponse.newBuilder().setRegion(protoRegion).build());
+ return Success.of(RegionAPI.GetRegionResponse.newBuilder().setRegion(protoRegion).build(),messageExecutionContext);
}
}
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..0e7c6a2 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
@@ -23,18 +23,17 @@ 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
@@ -42,15 +41,17 @@ public class GetRequestOperationHandler
private static final Logger logger = LogService.getLogger();
@Override
- public Result<RegionAPI.GetResponse> process(SerializationService serializationService,
- RegionAPI.GetRequest request, MessageExecutionContext executionContext)
+ public Result<RegionAPI.GetResponse, MessageExecutionContext> process(
+ SerializationService serializationService,
+ 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
- .of(ProtobufResponseUtilities.makeErrorResponse(REGION_NOT_FOUND, "Region not found"));
+ .of(ProtobufResponseUtilities.makeErrorResponse(REGION_NOT_FOUND, "Region not found"),
+ messageExecutionContext);
}
try {
@@ -58,20 +59,21 @@ public class GetRequestOperationHandler
Object resultValue = region.get(decodedKey);
if (resultValue == null) {
- return Success.of(RegionAPI.GetResponse.newBuilder().build());
+ return Success.of(RegionAPI.GetResponse.newBuilder().build(), messageExecutionContext);
}
BasicTypes.EncodedValue encodedValue =
ProtobufUtilities.createEncodedValue(serializationService, resultValue);
- return Success.of(RegionAPI.GetResponse.newBuilder().setResult(encodedValue).build());
+ return Success.of(RegionAPI.GetResponse.newBuilder().setResult(encodedValue).build(),
+ messageExecutionContext);
} catch (UnsupportedEncodingTypeException ex) {
logger.error("Received Get request with unsupported encoding: {}", ex);
return Failure.of(ProtobufResponseUtilities.makeErrorResponse(VALUE_ENCODING_ERROR,
- "Encoding not supported."));
+ "Encoding not supported."), messageExecutionContext);
} catch (CodecNotRegisteredForTypeException ex) {
logger.error("Got codec error when decoding Get request: {}", ex);
return Failure.of(ProtobufResponseUtilities.makeErrorResponse(VALUE_ENCODING_ERROR,
- "Codec error in protobuf deserialization."));
+ "Codec error in protobuf deserialization."), messageExecutionContext);
}
}
}
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..54f9391 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
@@ -26,18 +26,18 @@ import org.apache.geode.internal.cache.tier.sockets.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
@@ -45,23 +45,23 @@ public class PutAllRequestOperationHandler
private static final Logger logger = LogManager.getLogger();
@Override
- public Result<RegionAPI.PutAllResponse> process(SerializationService serializationService,
- RegionAPI.PutAllRequest putAllRequest, MessageExecutionContext executionContext)
+ public Result<RegionAPI.PutAllResponse,MessageExecutionContext> process(SerializationService serializationService,
+ 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);
return Failure.of(ProtobufResponseUtilities.makeErrorResponse(REGION_NOT_FOUND,
- "Region passed does not exist: " + regionName));
+ "Region passed does not exist: " + regionName),messageExecutionContext);
}
RegionAPI.PutAllResponse.Builder builder = RegionAPI.PutAllResponse.newBuilder()
.addAllFailedKeys(putAllRequest.getEntryList().stream()
.map((entry) -> singlePut(serializationService, region, entry)).filter(Objects::nonNull)
.collect(Collectors.toList()));
- return Success.of(builder.build());
+ return Success.of(builder.build(),messageExecutionContext);
}
private BasicTypes.KeyedError singlePut(SerializationService serializationService, Region region,
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..719fa85 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
@@ -23,17 +23,17 @@ 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
@@ -41,15 +41,15 @@ public class PutRequestOperationHandler
private static final Logger logger = LogService.getLogger();
@Override
- public Result<RegionAPI.PutResponse> process(SerializationService serializationService,
- RegionAPI.PutRequest request, MessageExecutionContext executionContext)
+ public Result<RegionAPI.PutResponse,MessageExecutionContext> process(SerializationService serializationService,
+ 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,
- "Region passed by client did not exist: " + regionName));
+ "Region passed by client did not exist: " + regionName),messageExecutionContext);
}
try {
@@ -59,16 +59,16 @@ public class PutRequestOperationHandler
Object decodedKey = ProtobufUtilities.decodeValue(serializationService, entry.getKey());
try {
region.put(decodedKey, decodedValue);
- return Success.of(RegionAPI.PutResponse.newBuilder().build());
+ return Success.of(RegionAPI.PutResponse.newBuilder().build(),messageExecutionContext);
} catch (ClassCastException ex) {
logger.error("Received Put request with invalid key type: {}", ex);
return Failure.of(ProtobufResponseUtilities.makeErrorResponse(CONSTRAINT_VIOLATION,
- "invalid key or value type for region " + regionName));
+ "invalid key or value type for region " + regionName),messageExecutionContext);
}
} catch (UnsupportedEncodingTypeException | CodecNotRegisteredForTypeException ex) {
logger.error("Got codec error when decoding Put request: {}", ex);
return Failure
- .of(ProtobufResponseUtilities.makeErrorResponse(VALUE_ENCODING_ERROR, ex.getMessage()));
+ .of(ProtobufResponseUtilities.makeErrorResponse(VALUE_ENCODING_ERROR, ex.getMessage()),messageExecutionContext);
}
}
}
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..2d401fa 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
@@ -22,17 +22,17 @@ import org.apache.geode.cache.Region;
import org.apache.geode.internal.cache.tier.sockets.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
@@ -40,32 +40,32 @@ public class RemoveRequestOperationHandler
private static final Logger logger = LogManager.getLogger();
@Override
- public Result<RegionAPI.RemoveResponse> process(SerializationService serializationService,
- RegionAPI.RemoveRequest request, MessageExecutionContext executionContext)
+ public Result<RegionAPI.RemoveResponse,MessageExecutionContext> process(SerializationService serializationService,
+ 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
- .of(ProtobufResponseUtilities.makeErrorResponse(REGION_NOT_FOUND, "Region not found"));
+ .of(ProtobufResponseUtilities.makeErrorResponse(REGION_NOT_FOUND, "Region not found"),messageExecutionContext);
}
try {
Object decodedKey = ProtobufUtilities.decodeValue(serializationService, request.getKey());
region.remove(decodedKey);
- return Success.of(RegionAPI.RemoveResponse.newBuilder().build());
+ return Success.of(RegionAPI.RemoveResponse.newBuilder().build(),messageExecutionContext);
} catch (UnsupportedEncodingTypeException ex) {
// can be thrown by encoding or decoding.
logger.error("Received Remove request with unsupported encoding: {}", ex);
return Failure.of(ProtobufResponseUtilities.makeErrorResponse(VALUE_ENCODING_ERROR,
- "Encoding not supported: " + ex.getMessage()));
+ "Encoding not supported: " + ex.getMessage()),messageExecutionContext);
} catch (CodecNotRegisteredForTypeException ex) {
logger.error("Got codec error when decoding Remove request: {}", ex);
return Failure.of(ProtobufResponseUtilities.makeErrorResponse(VALUE_ENCODING_ERROR,
- "Codec error in protobuf deserialization: " + ex.getMessage()));
+ "Codec error in protobuf deserialization: " + ex.getMessage()),messageExecutionContext);
}
}
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/handshaker/HandshakerRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/handshaker/HandshakerRequestOperationHandler.java
index b31247b..0b2e3b6 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/handshaker/HandshakerRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/handshaker/HandshakerRequestOperationHandler.java
@@ -14,24 +14,17 @@
*/
package org.apache.geode.internal.protocol.protobuf.operations.handshaker;
-import static org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode.CONSTRAINT_VIOLATION;
-import static org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode.UNSUPPORTED_VERSION;
+import static org.apache.geode.internal.protocol.ProtocolErrorCode.UNSUPPORTED_VERSION;
import org.apache.logging.log4j.Logger;
-import org.apache.geode.cache.IncompatibleVersionException;
import org.apache.geode.internal.cache.tier.sockets.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.ClientProtocol;
-import org.apache.geode.internal.protocol.protobuf.Failure;
import org.apache.geode.internal.protocol.protobuf.HandshakeAPI;
-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.protobuf.utilities.ProtobufResponseUtilities;
+import org.apache.geode.internal.protocol.Result;
+import org.apache.geode.internal.protocol.Success;
import org.apache.geode.internal.serialization.SerializationService;
public class HandshakerRequestOperationHandler
@@ -42,8 +35,9 @@ public class HandshakerRequestOperationHandler
LogService.getLogger(HandshakerRequestOperationHandler.class);
@Override
- public Result<HandshakeAPI.HandshakeResponse> process(SerializationService serializationService,
- HandshakeAPI.HandshakeRequest request, MessageExecutionContext executionContext) {
+ public Result<HandshakeAPI.HandshakeResponse, MessageExecutionContext> process(
+ SerializationService serializationService,
+ HandshakeAPI.HandshakeRequest request, MessageExecutionContext messageExecutionContext) {
HandshakeAPI.Semver version = request.getVersion();
if (version.getMajor() != MAJOR_VERSION || version.getMinor() < MINOR_VERSION) {
logger.warn("Version mismatch: incompatible version. Supported version is: " + MAJOR_VERSION
@@ -52,8 +46,9 @@ public class HandshakerRequestOperationHandler
.setError(BasicTypes.Error.newBuilder().setErrorCode(UNSUPPORTED_VERSION.codeValue)
.setMessage("Version mismatch: incompatible version. Supported version is: "
+ MAJOR_VERSION + "." + MINOR_VERSION))
- .build());
+ .build(), messageExecutionContext);
}
- return Success.of(HandshakeAPI.HandshakeResponse.newBuilder().setOk(true).build());
+ return Success.of(HandshakeAPI.HandshakeResponse.newBuilder().setOk(true).build(),
+ messageExecutionContext);
}
}
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..947563f
--- /dev/null
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/security/AuthenticationRequestOperationHandler.java
@@ -0,0 +1,57 @@
+/*
+ * 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.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.exception.InvalidExecutionContextException;
+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.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> {
+ @Override
+ public Result<AuthenticationAPI.AuthenticationResponse,MessageExecutionContext> process(
+ SerializationService serializationService, AuthenticationAPI.AuthenticationRequest request,
+ MessageExecutionContext messageExecutionContext) throws InvalidExecutionContextException {
+ Authenticator authenticator = messageExecutionContext.getAuthenticator();
+ Properties properties = new Properties();
+ properties.putAll(request.getCredentialsMap());
+
+ try {
+ Object authenticationToken = authenticator.authenticate(properties);
+ MessageExecutionContext
+ newMessageExecutionContext =
+ new MessageExecutionContext(messageExecutionContext.getCache(),
+ messageExecutionContext.getAuthenticator(), messageExecutionContext.getAuthorizer(),
+ authenticationToken, messageExecutionContext.getStatistics(),
+ new AuthorizationSecurityProcessor());
+ return Success
+ .of(AuthenticationAPI.AuthenticationResponse.newBuilder().setAuthenticated(true).build(),
+ newMessageExecutionContext);
+ } catch (AuthenticationFailedException e) {
+ return Success
+ .of(AuthenticationAPI.AuthenticationResponse.newBuilder().setAuthenticated(false)
+ .build(), messageExecutionContext);
+ }
+ }
+}
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 e924bc6..409a075 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,35 +21,22 @@ 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.security.Authenticator;
import org.apache.geode.internal.security.SecurityService;
+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);
- private final SecurityService securityService;
-
- public InvalidConfigAuthenticator(SecurityService securityService) {
- this.securityService = securityService;
- }
@Override
- public Object authenticate(InputStream inputStream, OutputStream outputStream)
- 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 AuthenticationFailedException(
+ "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 6d6a497..cdee506 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,7 +14,7 @@
*/
package org.apache.geode.internal.protocol.protobuf.security;
-import static org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode.AUTHENTICATION_FAILED;
+import static org.apache.geode.internal.protocol.ProtocolErrorCode.AUTHENTICATION_FAILED;
import org.apache.geode.internal.protocol.protobuf.AuthenticationAPI;
@@ -31,9 +31,7 @@ import java.util.Properties;
import org.apache.shiro.subject.Subject;
-public class ProtobufShiroAuthenticator implements Authenticator {
- private static final String UNEXECPTED_REQUEST = "Expected to receive an authentication request";
-
+public class ProtobufShiroAuthenticator implements Authenticator<Properties, Subject> {
private final SecurityService securityService;
public ProtobufShiroAuthenticator(SecurityService securityService) {
@@ -41,52 +39,7 @@ public class ProtobufShiroAuthenticator implements Authenticator {
}
@Override
- public Subject authenticate(InputStream inputStream, OutputStream outputStream)
- 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);
-
- sendAuthenticationResponse(outputStream, true);
- return authToken;
- } catch (AuthenticationFailedException ex) {
- sendAuthenticationResponse(outputStream, false);
- throw ex;
- }
- }
-
- 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);
- }
-
- 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(UNEXECPTED_REQUEST))))
- .build().writeDelimitedTo(outputStream);
-
- throw new IOException(UNEXECPTED_REQUEST);
+ public Subject authenticate(Properties properties) throws AuthenticationFailedException {
+ return securityService.login(properties);
}
}
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestExecutionContext.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/processors/AuthenticationSecurityProcessor.java
similarity index 53%
copy from geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestExecutionContext.java
copy to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/processors/AuthenticationSecurityProcessor.java
index 43b1efa..d164222 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestExecutionContext.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/processors/AuthenticationSecurityProcessor.java
@@ -12,16 +12,19 @@
* 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.protobuf.security.processors;
-import org.apache.geode.cache.Cache;
import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
-import org.apache.geode.internal.protocol.security.NoOpAuthorizer;
-import org.apache.geode.internal.protocol.statistics.NoOpStatistics;
+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;
-public class ProtobufTestExecutionContext {
- public static MessageExecutionContext getNoAuthExecutionContext(Cache cache) {
- return new MessageExecutionContext(cache, new NoOpAuthorizer(), new Object(),
- new NoOpStatistics());
+public class AuthenticationSecurityProcessor implements SecurityProcessor<ClientProtocol.Request> {
+ @Override
+ public boolean validateOperation(ClientProtocol.Request request,
+ MessageExecutionContext messageExecutionContext, OperationContext operationContext) {
+ Object fromRequest = operationContext.getFromRequest().apply(request);
+ return fromRequest instanceof AuthenticationAPI.AuthenticationRequest;
}
}
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestExecutionContext.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/processors/AuthorizationSecurityProcessor.java
similarity index 54%
copy from geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestExecutionContext.java
copy to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/processors/AuthorizationSecurityProcessor.java
index 43b1efa..7664e8a 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestExecutionContext.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/processors/AuthorizationSecurityProcessor.java
@@ -12,16 +12,19 @@
* 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.protobuf.security.processors;
-import org.apache.geode.cache.Cache;
import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
-import org.apache.geode.internal.protocol.security.NoOpAuthorizer;
-import org.apache.geode.internal.protocol.statistics.NoOpStatistics;
+import org.apache.geode.internal.protocol.OperationContext;
+import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
+import org.apache.geode.internal.protocol.security.SecurityProcessor;
-public class ProtobufTestExecutionContext {
- public static MessageExecutionContext getNoAuthExecutionContext(Cache cache) {
- return new MessageExecutionContext(cache, new NoOpAuthorizer(), new Object(),
- new NoOpStatistics());
+public class AuthorizationSecurityProcessor implements SecurityProcessor<ClientProtocol.Request> {
+ @Override
+ public boolean validateOperation(ClientProtocol.Request request,
+ MessageExecutionContext messageExecutionContext, OperationContext operationContext) {
+ return messageExecutionContext.getAuthorizer().authorize(
+ messageExecutionContext.getAuthenticationToken(),
+ operationContext.getAccessPermissionRequired());
}
}
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestExecutionContext.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/processors/NoAuthenticationSecurityProcessor.java
similarity index 60%
copy from geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestExecutionContext.java
copy to geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/processors/NoAuthenticationSecurityProcessor.java
index 43b1efa..d603b1a 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestExecutionContext.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/processors/NoAuthenticationSecurityProcessor.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;
+package org.apache.geode.internal.protocol.protobuf.security.processors;
-import org.apache.geode.cache.Cache;
import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
-import org.apache.geode.internal.protocol.security.NoOpAuthorizer;
-import org.apache.geode.internal.protocol.statistics.NoOpStatistics;
+import org.apache.geode.internal.protocol.OperationContext;
+import org.apache.geode.internal.protocol.protobuf.ClientProtocol;
+import org.apache.geode.internal.protocol.security.SecurityProcessor;
-public class ProtobufTestExecutionContext {
- public static MessageExecutionContext getNoAuthExecutionContext(Cache cache) {
- return new MessageExecutionContext(cache, new NoOpAuthorizer(), new Object(),
- new NoOpStatistics());
+public class NoAuthenticationSecurityProcessor
+ implements SecurityProcessor<ClientProtocol.Request> {
+ @Override
+ public boolean validateOperation(ClientProtocol.Request request,
+ MessageExecutionContext messageExecutionContext, OperationContext operationContext) {
+ return true;
}
}
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 320a10c..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;
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/registry/OperationContextRegistry.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/registry/OperationContextRegistry.java
index dbf6259..e18a81b 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/registry/OperationContextRegistry.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/registry/OperationContextRegistry.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,6 +30,7 @@ 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
@@ -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/security/AuthenticationLookupService.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/AuthenticationLookupService.java
index f61a300..5d3f04d 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/AuthenticationLookupService.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/AuthenticationLookupService.java
@@ -26,7 +26,7 @@ public class AuthenticationLookupService {
}
if (securityService.isPeerSecurityRequired() || securityService.isClientSecurityRequired()) {
// Failing authentication...legacy security
- return new InvalidConfigAuthenticator(securityService);
+ return new InvalidConfigAuthenticator();
} else {
// Noop authenticator...no security
return new NoOpAuthenticator();
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/Authenticator.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/Authenticator.java
index f4234cd..42dd22b 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/Authenticator.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/Authenticator.java
@@ -14,13 +14,7 @@
*/
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,14 +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 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)
- throws IOException, AuthenticationFailedException;
+ AuthenticationToken authenticate(SecurityProperties securityProperties)
+ throws AuthenticationFailedException;
}
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/NoOpAuthenticator.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/NoOpAuthenticator.java
index d4f96e4..9cdeb6e 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/NoOpAuthenticator.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/security/NoOpAuthenticator.java
@@ -19,16 +19,16 @@ 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)
- throws IOException {
- // this method needs to do nothing as it is a pass-through implementation
+ public Object authenticate(Object inputObject) throws AuthenticationFailedException {
return new Object();
}
}
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/security/SecurityProcessor.java
similarity index 67%
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/security/SecurityProcessor.java
index bada098..40d5e9e 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/security/SecurityProcessor.java
@@ -12,18 +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.security;
-import java.util.function.Function;
+import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.protocol.OperationContext;
-import org.apache.geode.annotations.Experimental;
-
-@Experimental
-public interface Result<SuccessType> {
- <T> T map(Function<SuccessType, T> successFunction,
- Function<ClientProtocol.ErrorResponse, T> errorFunction);
-
- SuccessType getMessage();
-
- ClientProtocol.ErrorResponse getErrorMessage();
+public interface SecurityProcessor<RequestMessage> {
+ boolean validateOperation(RequestMessage request, MessageExecutionContext messageExecutionContext,
+ OperationContext operationContext);
}
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/proto/handshake_API.proto b/geode-protobuf/src/main/proto/handshake_API.proto
index 17f7d40..b11ae03 100644
--- a/geode-protobuf/src/main/proto/handshake_API.proto
+++ b/geode-protobuf/src/main/proto/handshake_API.proto
@@ -31,4 +31,9 @@ message HandshakeRequest {
message HandshakeResponse {
bool ok = 1;
Error error = 2; // only set if not OK.
+}
+
+message Semver{
+ int32 major = 1;
+ int32 minor = 2;
}
\ No newline at end of file
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..124abbb 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
@@ -15,7 +15,7 @@
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.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -29,7 +29,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 +203,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 +231,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 +248,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 +278,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);
@@ -298,7 +297,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);
@@ -332,8 +331,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/acceptance/LocatorConnectionDUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/LocatorConnectionDUnitTest.java
index 01dac04..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,11 +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.ProtobufClientStatisticsImpl;
-import org.apache.geode.internal.protocol.statistics.ProtocolClientStatistics;
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;
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/protobuf/HandshakerTest.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/HandshakerTest.java
index 6eba760..10bfeaf 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/HandshakerTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/HandshakerTest.java
@@ -23,18 +23,15 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.HashMap;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import org.apache.geode.cache.IncompatibleVersionException;
+import org.apache.geode.internal.protocol.Handshaker;
import org.apache.geode.internal.protocol.security.Authenticator;
-import org.apache.geode.internal.protocol.security.Authorizer;
import org.apache.geode.security.AuthenticationFailedException;
-import org.apache.geode.security.AuthenticationRequiredException;
import org.apache.geode.test.junit.categories.UnitTest;
@Category(UnitTest.class)
@@ -45,9 +42,9 @@ public class HandshakerTest {
private static class AuthenticatorMock implements Authenticator {
+
@Override
- public Object authenticate(InputStream inputStream, OutputStream outputStream)
- throws IOException, AuthenticationFailedException {
+ public Object authenticate(Object o) throws AuthenticationFailedException {
return null;
}
}
@@ -67,8 +64,7 @@ public class HandshakerTest {
@Test
public void version1_0IsSupported() throws Exception {
HandshakeAPI.HandshakeRequest handshakeRequest = HandshakeAPI.HandshakeRequest.newBuilder()
- .setVersion(HandshakeAPI.Semver.newBuilder().setMajor(1).setMinor(1))
- .setAuthenticationMode(HandshakeAPI.AuthenticationMode.SIMPLE).build();
+ .setVersion(HandshakeAPI.Semver.newBuilder().setMajor(1).setMinor(1)).build();
ByteArrayInputStream byteArrayInputStream =
ProtobufTestUtilities.messageToByteArrayInputStream(handshakeRequest);
@@ -85,7 +81,7 @@ public class HandshakerTest {
public void version2NotSupported() throws Exception {
HandshakeAPI.HandshakeRequest handshakeRequest = HandshakeAPI.HandshakeRequest.newBuilder()
.setVersion(HandshakeAPI.Semver.newBuilder().setMajor(2).setMinor(0))
- .setAuthenticationMode(HandshakeAPI.AuthenticationMode.NONE).build();
+ .build();
ByteArrayInputStream byteArrayInputStream =
ProtobufTestUtilities.messageToByteArrayInputStream(handshakeRequest);
@@ -99,7 +95,7 @@ public class HandshakerTest {
public void bogusAuthenticationMode() throws Exception {
HandshakeAPI.HandshakeRequest handshakeRequest = HandshakeAPI.HandshakeRequest.newBuilder()
.setVersion(HandshakeAPI.Semver.newBuilder().setMajor(1).setMinor(0))
- .setAuthenticationModeValue(-1).build();
+ .build();
ByteArrayInputStream byteArrayInputStream =
ProtobufTestUtilities.messageToByteArrayInputStream(handshakeRequest);
@@ -113,7 +109,7 @@ public class HandshakerTest {
public void simpleIsSupported() throws Exception {
HandshakeAPI.HandshakeRequest handshakeRequest = HandshakeAPI.HandshakeRequest.newBuilder()
.setVersion(HandshakeAPI.Semver.newBuilder().setMajor(1).setMinor(0))
- .setAuthenticationMode(HandshakeAPI.AuthenticationMode.SIMPLE).build();
+ .build();
ByteArrayInputStream byteArrayInputStream =
ProtobufTestUtilities.messageToByteArrayInputStream(handshakeRequest);
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 419d9fe..9b0ea9d 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;
@@ -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();
@@ -75,12 +76,14 @@ public class ProtobufShiroAuthenticatorJUnitTest {
@Test
public void successfulAuthentication() throws IOException {
- protobufShiroAuthenticator.authenticate(byteArrayInputStream, byteArrayOutputStream);
- 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)
@@ -88,7 +91,11 @@ public class ProtobufShiroAuthenticatorJUnitTest {
when(mockSecurityService.login(expectedAuthProperties))
.thenThrow(new AuthenticationFailedException("BOOM!"));
- protobufShiroAuthenticator.authenticate(byteArrayInputStream, byteArrayOutputStream);
+ Properties properties = new Properties();
+ properties.setProperty(ResourceConstants.USER_NAME, TEST_USERNAME);
+ properties.setProperty(ResourceConstants.PASSWORD, TEST_PASSWORD);
+
+ protobufShiroAuthenticator.authenticate(properties);
}
@Test
@@ -97,18 +104,12 @@ public class ProtobufShiroAuthenticatorJUnitTest {
when(mockSecurityService.isClientSecurityRequired()).thenReturn(false);
when(mockSecurityService.isPeerSecurityRequired()).thenReturn(false);
- protobufShiroAuthenticator.authenticate(byteArrayInputStream, byteArrayOutputStream);
+ 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 a9578ff..e4be893 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
@@ -16,9 +16,12 @@ 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.processors.NoAuthenticationSecurityProcessor;
+import org.apache.geode.internal.protocol.security.NoOpAuthenticator;
import org.apache.geode.internal.protocol.security.NoOpAuthorizer;
import org.apache.geode.internal.protocol.statistics.NoOpStatistics;
import org.apache.geode.test.junit.categories.UnitTest;
+
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -40,6 +43,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()));
+ mockInternalCache, new NoOpAuthenticator(), new NoOpAuthorizer(), new Object(),
+ new NoOpStatistics(), new NoAuthenticationSecurityProcessor()));
}
}
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/protobuf/ProtobufTestExecutionContext.java
index 43b1efa..1781865 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/protobuf/ProtobufTestExecutionContext.java
@@ -16,12 +16,14 @@ package org.apache.geode.internal.protocol.protobuf;
import org.apache.geode.cache.Cache;
import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
+import org.apache.geode.internal.protocol.protobuf.security.processors.NoAuthenticationSecurityProcessor;
+import org.apache.geode.internal.protocol.security.NoOpAuthenticator;
import org.apache.geode.internal.protocol.security.NoOpAuthorizer;
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());
+ return new MessageExecutionContext(cache, new NoOpAuthenticator(), new NoOpAuthorizer(), new Object(),
+ new NoOpStatistics(), new NoAuthenticationSecurityProcessor());
}
}
diff --git a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestUtilities.java b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestUtilities.java
index 827599f..9a767fd 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestUtilities.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestUtilities.java
@@ -55,6 +55,6 @@ public class ProtobufTestUtilities {
HandshakeAPI.AuthenticationMode authenticationMode) {
return HandshakeAPI.HandshakeRequest.newBuilder()
.setVersion(HandshakeAPI.Semver.newBuilder().setMajor(1).setMinor(0))
- .setAuthenticationMode(authenticationMode).build();
+ .build();
}
}
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..40b8a7c 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
@@ -33,12 +33,13 @@ import org.junit.experimental.categories.Category;
import org.apache.geode.cache.CacheLoaderException;
import org.apache.geode.cache.Region;
+import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
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.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;
@@ -76,7 +77,7 @@ public class GetAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
@Test
public void processReturnsExpectedValuesForValidKeys() throws Exception {
- Result<RegionAPI.GetAllResponse> result =
+ Result<RegionAPI.GetAllResponse,MessageExecutionContext> result =
operationHandler.process(serializationServiceStub, generateTestRequest(true, false),
ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
@@ -97,7 +98,7 @@ public class GetAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
@Test
public void processReturnsNoEntriesForNoKeysRequested() throws UnsupportedEncodingTypeException,
CodecNotRegisteredForTypeException, InvalidExecutionContextException {
- Result<RegionAPI.GetAllResponse> result =
+ Result<RegionAPI.GetAllResponse,MessageExecutionContext> result =
operationHandler.process(serializationServiceStub, generateTestRequest(false, false),
ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
@@ -115,7 +116,7 @@ public class GetAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
NO_VALUE_PRESENT_FOR_THIS_KEY));
RegionAPI.GetAllRequest getAllRequest =
ProtobufRequestUtilities.createGetAllRequest(TEST_REGION, testKeys);
- Result<RegionAPI.GetAllResponse> result = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.GetAllResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
getAllRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
assertTrue(result instanceof Success);
@@ -130,7 +131,7 @@ public class GetAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
@Test
public void multipleKeysWhereOneThrows() throws UnsupportedEncodingTypeException,
CodecNotRegisteredForTypeException, InvalidExecutionContextException {
- Result<RegionAPI.GetAllResponse> result =
+ Result<RegionAPI.GetAllResponse,MessageExecutionContext> result =
operationHandler.process(serializationServiceStub, generateTestRequest(true, true),
ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
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 393fab8..418191d 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
@@ -21,10 +21,10 @@ 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.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.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;
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..ba42f63 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
@@ -29,10 +29,11 @@ import org.junit.experimental.categories.Category;
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.Region;
+import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
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;
@@ -63,7 +64,7 @@ public class GetRegionNamesRequestOperationHandlerJUnitTest extends OperationHan
@Test
public void processReturnsCacheRegions() throws UnsupportedEncodingTypeException,
CodecNotRegisteredForTypeException, InvalidExecutionContextException {
- Result<RegionAPI.GetRegionNamesResponse> result = operationHandler.process(
+ Result<RegionAPI.GetRegionNamesResponse,MessageExecutionContext> result = operationHandler.process(
serializationServiceStub, ProtobufRequestUtilities.createGetRegionNamesRequest(),
getNoAuthExecutionContext(cacheStub));
Assert.assertTrue(result instanceof Success);
@@ -87,7 +88,7 @@ public class GetRegionNamesRequestOperationHandlerJUnitTest extends OperationHan
Cache emptyCache = mock(Cache.class);;
when(emptyCache.rootRegions())
.thenReturn(Collections.unmodifiableSet(new HashSet<Region<String, String>>()));
- Result<RegionAPI.GetRegionNamesResponse> result = operationHandler.process(
+ Result<RegionAPI.GetRegionNamesResponse,MessageExecutionContext> result = operationHandler.process(
serializationServiceStub, ProtobufRequestUtilities.createGetRegionNamesRequest(),
getNoAuthExecutionContext(emptyCache));
Assert.assertTrue(result instanceof Success);
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..f2aebb5 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
@@ -31,13 +31,14 @@ import org.apache.geode.cache.DataPolicy;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionAttributes;
import org.apache.geode.cache.Scope;
+import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
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)
@@ -69,7 +70,7 @@ public class GetRegionRequestOperationHandlerJUnitTest extends OperationHandlerJ
when(regionAttributesStub.getScope()).thenReturn(Scope.DISTRIBUTED_ACK);
- Result<RegionAPI.GetRegionResponse> result = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.GetRegionResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
MessageUtil.makeGetRegionRequest(TEST_REGION1), getNoAuthExecutionContext(cacheStub));
RegionAPI.GetRegionResponse response = result.getMessage();
BasicTypes.Region region = response.getRegion();
@@ -92,7 +93,7 @@ public class GetRegionRequestOperationHandlerJUnitTest extends OperationHandlerJ
when(emptyCache.rootRegions())
.thenReturn(Collections.unmodifiableSet(new HashSet<Region<String, String>>()));
String unknownRegionName = "UNKNOWN_REGION";
- Result<RegionAPI.GetRegionResponse> result = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.GetRegionResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
MessageUtil.makeGetRegionRequest(unknownRegionName), getNoAuthExecutionContext(emptyCache));
Assert.assertTrue(result instanceof Failure);
Assert.assertEquals(ProtocolErrorCode.REGION_NOT_FOUND.codeValue,
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..f3e80bf 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
@@ -25,13 +25,14 @@ import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.apache.geode.cache.Region;
+import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
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.ProtobufTestExecutionContext;
-import org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode;
+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;
@@ -66,7 +67,7 @@ public class GetRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
@Test
public void processReturnsTheEncodedValueFromTheRegion() throws Exception {
RegionAPI.GetRequest getRequest = generateTestRequest(false, false, false);
- Result<RegionAPI.GetResponse> result = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.GetResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
getRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
Assert.assertTrue(result instanceof Success);
@@ -79,7 +80,7 @@ public class GetRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
@Test
public void processReturnsUnsucessfulResponseForInvalidRegion() throws Exception {
RegionAPI.GetRequest getRequest = generateTestRequest(true, false, false);
- Result<RegionAPI.GetResponse> response = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.GetResponse,MessageExecutionContext> response = operationHandler.process(serializationServiceStub,
getRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
Assert.assertTrue(response instanceof Failure);
@@ -90,7 +91,7 @@ public class GetRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
@Test
public void processReturnsKeyNotFoundWhenKeyIsNotFound() throws Exception {
RegionAPI.GetRequest getRequest = generateTestRequest(false, true, false);
- Result<RegionAPI.GetResponse> response = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.GetResponse,MessageExecutionContext> response = operationHandler.process(serializationServiceStub,
getRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
Assert.assertTrue(response instanceof Success);
@@ -99,7 +100,7 @@ public class GetRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
@Test
public void processReturnsLookupFailureWhenKeyFoundWithNoValue() throws Exception {
RegionAPI.GetRequest getRequest = generateTestRequest(false, false, true);
- Result<RegionAPI.GetResponse> response = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.GetResponse,MessageExecutionContext> response = operationHandler.process(serializationServiceStub,
getRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
Assert.assertTrue(response instanceof Success);
@@ -118,7 +119,7 @@ public class GetRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
.setCustomEncodedValue(customEncodedValueBuilder).build();
RegionAPI.GetRequest getRequest =
ProtobufRequestUtilities.createGetRequest(TEST_REGION, encodedKey).getGetRequest();
- Result<RegionAPI.GetResponse> response = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.GetResponse,MessageExecutionContext> response = operationHandler.process(serializationServiceStub,
getRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
Assert.assertTrue(response instanceof Failure);
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..9e3e406 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
@@ -31,10 +31,11 @@ import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.apache.geode.cache.Region;
+import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
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;
@@ -70,7 +71,7 @@ public class PutAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
public void processInsertsMultipleValidEntriesInCache() throws Exception {
PutAllRequestOperationHandler operationHandler = new PutAllRequestOperationHandler();
- Result<RegionAPI.PutAllResponse> result = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.PutAllResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
generateTestRequest(false, true), getNoAuthExecutionContext(cacheStub));
Assert.assertTrue(result instanceof Success);
@@ -84,7 +85,7 @@ public class PutAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
public void processWithInvalidEntrySucceedsAndReturnsFailedKey() throws Exception {
PutAllRequestOperationHandler operationHandler = new PutAllRequestOperationHandler();
- Result<RegionAPI.PutAllResponse> result = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.PutAllResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
generateTestRequest(true, true), getNoAuthExecutionContext(cacheStub));
assertTrue(result instanceof Success);
@@ -103,7 +104,7 @@ public class PutAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
public void processWithNoEntriesPasses() throws Exception {
PutAllRequestOperationHandler operationHandler = new PutAllRequestOperationHandler();
- Result<RegionAPI.PutAllResponse> result = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.PutAllResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
generateTestRequest(false, false), getNoAuthExecutionContext(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..4dec3f0 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
@@ -29,13 +29,14 @@ import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.apache.geode.cache.Region;
+import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
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.ProtobufTestExecutionContext;
-import org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode;
+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,7 +63,7 @@ public class PutRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
@Test
public void test_puttingTheEncodedEntryIntoRegion() throws Exception {
PutRequestOperationHandler operationHandler = new PutRequestOperationHandler();
- Result<RegionAPI.PutResponse> result = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.PutResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
generateTestRequest(), ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
assertTrue(result instanceof Success);
@@ -91,7 +92,7 @@ public class PutRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
BasicTypes.Entry testEntry = ProtobufUtilities.createEntry(encodedKey, testValue);
RegionAPI.PutRequest putRequest =
ProtobufRequestUtilities.createPutRequest(TEST_REGION, testEntry).getPutRequest();
- Result<RegionAPI.PutResponse> result = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.PutResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
putRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
assertTrue(result instanceof Failure);
@@ -103,7 +104,7 @@ 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,
+ Result<RegionAPI.PutResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
generateTestRequest(), ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
assertTrue(result instanceof Failure);
@@ -116,7 +117,7 @@ public class PutRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTe
when(regionMock.put(any(), any())).thenThrow(ClassCastException.class);
PutRequestOperationHandler operationHandler = new PutRequestOperationHandler();
- Result<RegionAPI.PutResponse> result = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.PutResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
generateTestRequest(), ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
assertTrue(result instanceof Failure);
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..e5166d0 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
@@ -27,14 +27,15 @@ import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.apache.geode.cache.Region;
+import org.apache.geode.internal.cache.tier.sockets.MessageExecutionContext;
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.Failure;
import org.apache.geode.internal.protocol.protobuf.ProtobufTestExecutionContext;
-import org.apache.geode.internal.protocol.protobuf.ProtocolErrorCode;
+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 +68,7 @@ public class RemoveRequestOperationHandlerJUnitTest extends OperationHandlerJUni
@Test
public void processValidKeyRemovesTheEntryAndReturnSuccess() throws Exception {
RegionAPI.RemoveRequest removeRequest = generateTestRequest(false, false).getRemoveRequest();
- Result<RegionAPI.RemoveResponse> result = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.RemoveResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
removeRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
assertTrue(result instanceof Success);
@@ -77,7 +78,7 @@ public class RemoveRequestOperationHandlerJUnitTest extends OperationHandlerJUni
@Test
public void processReturnsUnsucessfulResponseForInvalidRegion() throws Exception {
RegionAPI.RemoveRequest removeRequest = generateTestRequest(true, false).getRemoveRequest();
- Result<RegionAPI.RemoveResponse> result = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.RemoveResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
removeRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
assertTrue(result instanceof Failure);
@@ -88,7 +89,7 @@ public class RemoveRequestOperationHandlerJUnitTest extends OperationHandlerJUni
@Test
public void processReturnsSuccessWhenKeyIsNotFound() throws Exception {
RegionAPI.RemoveRequest removeRequest = generateTestRequest(false, true).getRemoveRequest();
- Result<RegionAPI.RemoveResponse> result = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.RemoveResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
removeRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
assertTrue(result instanceof Success);
@@ -108,7 +109,7 @@ public class RemoveRequestOperationHandlerJUnitTest extends OperationHandlerJUni
RegionAPI.RemoveRequest removeRequest =
ProtobufRequestUtilities.createRemoveRequest(TEST_REGION, encodedKey).getRemoveRequest();;
- Result<RegionAPI.RemoveResponse> result = operationHandler.process(serializationServiceStub,
+ Result<RegionAPI.RemoveResponse,MessageExecutionContext> result = operationHandler.process(serializationServiceStub,
removeRequest, ProtobufTestExecutionContext.getNoAuthExecutionContext(cacheStub));
assertTrue(result instanceof Failure);
--
To stop receiving notification emails like this one, please contact
"commits@geode.apache.org" <co...@geode.apache.org>.