diff --git a/README.md b/README.md index 14a9690e5..21f120ff6 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ mvn clean install ``` sh # NOTE: use the latest version of the CRT here -git clone --branch v0.4.20 https://github.com/awslabs/aws-crt-java.git +git clone --branch v0.9.2 https://github.com/awslabs/aws-crt-java.git git clone https://github.com/awslabs/aws-iot-device-sdk-java-v2.git cd aws-crt-java @@ -66,7 +66,7 @@ Supports API 26 or newer. NOTE: The shadow sample does not currently complete on android due to its dependence on stdin keyboard input. ``` sh -git clone --recursive --branch v0.6.2 https://github.com/awslabs/aws-crt-java.git +git clone --recursive --branch v0.9.2 https://github.com/awslabs/aws-crt-java.git git clone https://github.com/awslabs/aws-iot-device-sdk-java-v2.git cd aws-crt-java/android ./gradlew connectedCheck # optional, will run the unit tests on any connected devices/emulators @@ -87,7 +87,7 @@ repositories { } dependencies { - implementation 'software.amazon.awssdk.crt:android:0.6.2' + implementation 'software.amazon.awssdk.crt:android:0.9.2' } ``` diff --git a/android/app/build.gradle b/android/app/build.gradle index f81502d97..78102353c 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -50,7 +50,7 @@ repositories { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation project(":iotdevicesdk") - implementation 'software.amazon.awssdk.crt:android:0.8.4' + implementation 'software.amazon.awssdk.crt:android:0.9.2' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.core:core:1.2.0' diff --git a/android/iotdevicesdk/build.gradle b/android/iotdevicesdk/build.gradle index 6fe353f40..8fc94e95f 100644 --- a/android/iotdevicesdk/build.gradle +++ b/android/iotdevicesdk/build.gradle @@ -87,7 +87,7 @@ repositories { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'software.amazon.awssdk.crt:android:0.8.4' + implementation 'software.amazon.awssdk.crt:android:0.9.2' implementation 'com.google.code.gson:gson:2.8.5' implementation 'androidx.appcompat:appcompat:1.1.0' testImplementation 'junit:junit:4.12' diff --git a/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCClient.java b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCClient.java new file mode 100644 index 000000000..d6425bdb7 --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCClient.java @@ -0,0 +1,273 @@ +package software.amazon.awssdk.eventstreamrpc; + +import software.amazon.awssdk.crt.eventstream.*; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamOperationError; + +import java.util.LinkedList; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.logging.Logger; + +/** + * Not sure how public we need to make this class + */ +public class EventStreamRPCClient { + private static final Logger LOGGER = Logger.getLogger(EventStreamRPCClient.class.getName()); + private final EventStreamRPCConnection connection; + + public EventStreamRPCClient(EventStreamRPCConnection connection) { + if (connection == null) { + throw new IllegalArgumentException("Cannot create eventstream RPC client with null connection"); + } + this.connection = connection; + } + + /** + * Work horse of all operations, streaming or otherwise. + * + * @return + */ + public + OperationResponse doOperationInvoke( + OperationModelContext operationModelContext, + final ReqType request, Optional> streamResponseHandler) { + if (operationModelContext.isStreamingOperation() && !streamResponseHandler.isPresent()) { + //Even if an operation does not have a streaming response (has streaming input), a + //stream is physically bidirectional, and even if a streaming response isn't allowed + //the other side may still send an error through the open stream. + throw new IllegalArgumentException(operationModelContext.getOperationName() + " is a streaming operation. Must have a streaming response handler!"); + } + final CompletableFuture responseFuture = new CompletableFuture<>(); + final AtomicBoolean isContinuationClosed = new AtomicBoolean(true); + final ClientConnectionContinuation continuation = connection.newStream(new ClientConnectionContinuationHandler() { + boolean initialResponseReceived = false; + + @Override + protected void onContinuationMessage(List
headers, byte[] payload, MessageType messageType, int messageFlags) { + final Optional applicationModelType = headers.stream() + .filter(header -> header.getName().equals(EventStreamRPCServiceModel.SERVICE_MODEL_TYPE_HEADER) + && header.getHeaderType().equals(HeaderType.String)) + .map(header -> header.getValueAsString()) + .findFirst(); + + //first message back must parse into immediate response unless it's an error + //follow on messages are stream response handler intended + if (messageType.equals(MessageType.ApplicationMessage)) { + //important following not else if + if (applicationModelType.isPresent()) { + handleData(applicationModelType.get(), payload, !initialResponseReceived, responseFuture, streamResponseHandler, + operationModelContext, continuation, isContinuationClosed); + } + //intentionally not else if here. We can have data, and the terminate flag set + if ((messageFlags & MessageFlags.TerminateStream.getByteValue()) != 0) { + this.close(); + handleClose(initialResponseReceived, responseFuture, streamResponseHandler); + } else if (!applicationModelType.isPresent()) { + handleError(new UnmappedDataException(initialResponseReceived ? operationModelContext.getResponseApplicationModelType() : + operationModelContext.getStreamingResponseApplicationModelType().get()), initialResponseReceived, + responseFuture, streamResponseHandler, continuation, isContinuationClosed); + } + initialResponseReceived = true; + } else if (messageType.equals(MessageType.ApplicationError)) { + final Optional> errorClass = + operationModelContext.getServiceModel().getApplicationModelClass(applicationModelType.orElse("")); + if (!errorClass.isPresent()) { + LOGGER.severe(String.format("Could not map error from service. Incoming error type: " + + applicationModelType.orElse("null"))); + handleError(new UnmappedDataException(applicationModelType.orElse("null")), + !initialResponseReceived, responseFuture, streamResponseHandler, continuation, isContinuationClosed); + } else { + try { + final EventStreamOperationError error = (EventStreamOperationError) operationModelContext.getServiceModel().fromJson(errorClass.get(), payload); + handleError(error, !initialResponseReceived, responseFuture, streamResponseHandler, continuation, isContinuationClosed); + } catch (Exception e) { //shouldn't be possible, but this is an error on top of an error + } + } + + //TODO: application errors always have TerminateStream flag set? + //first close the stream immediately if the other side hasn't already done so + if ((messageFlags & MessageFlags.TerminateStream.getByteValue()) != 0) { + try { + this.close(); + //is this call needed? + handleClose(initialResponseReceived, responseFuture, streamResponseHandler); + } catch (Exception e) { + LOGGER.warning(String.format("Exception thrown closing stream on application error received %s: %s", + e.getClass().getName(), e.getMessage())); + } + } + } else if (messageType == MessageType.Ping) { + //echo back ping messages to be nice to server, can these happen on continuations? + continuation.sendMessage(headers, payload, MessageType.PingResponse, messageFlags); + } else if (messageType == MessageType.PingResponse) { //do nothing on ping response + } else if (messageType == MessageType.ServerError) { + //TODO: exception should route to response handler here, also is or will be "InternalError" soon + LOGGER.severe(operationModelContext.getOperationName() + " server error received"); + this.close(); //underlying connection callbacks should handle things appropriately + } else if (messageType == MessageType.ProtocolError) { //do nothing on ping response + LOGGER.severe(operationModelContext.getOperationName() + " protocol error received"); + this.close(); //underlying connection callbacks should handle things appropriately but close continuation either way + } else { + //unexpected message type received on stream + handleError(new InvalidDataException(messageType), !initialResponseReceived, responseFuture, + streamResponseHandler, continuation, isContinuationClosed); + try { + sendClose(continuation, isContinuationClosed).whenComplete((res, ex) -> { + if (ex != null) { + LOGGER.warning(String.format("Sending close on invalid message threw %s: %s", + ex.getClass().getCanonicalName(), ex.getMessage())); + } + }); + } catch (Exception e) { + LOGGER.warning(String.format("Sending close on invalid message threw %s: %s", + e.getClass().getCanonicalName(), e.getMessage())); + } + } + } + + @Override + protected void onContinuationClosed() { + super.onContinuationClosed(); + handleClose(initialResponseReceived, responseFuture, streamResponseHandler); + } + }); + isContinuationClosed.compareAndSet(false, true); + + final List
headers = new LinkedList<>(); + headers.add(Header.createHeader(EventStreamRPCServiceModel.CONTENT_TYPE_HEADER, + EventStreamRPCServiceModel.CONTENT_TYPE_APPLICATION_JSON)); + headers.add(Header.createHeader(EventStreamRPCServiceModel.SERVICE_MODEL_TYPE_HEADER, + operationModelContext.getRequestApplicationModelType())); + final byte[] payload = operationModelContext.getServiceModel().toJson(request); + + final CompletableFuture messageFlushFuture = continuation.activate(operationModelContext.getOperationName(), + headers, payload, MessageType.ApplicationMessage, 0); + final OperationResponse response = new OperationResponse(operationModelContext, continuation, + responseFuture, messageFlushFuture); + + return response; + } + + + + /** + * Sends an empty close message on the open stream. + * @param continuation continuation to send the close message on + * @return CompletableFuture indicating flush of the close message. + */ + private CompletableFuture sendClose(final ClientConnectionContinuation continuation, final AtomicBoolean isClosed) { + if (isClosed.compareAndSet(false, true)) { + return continuation.sendMessage(null, null, + MessageType.ApplicationMessage, MessageFlags.TerminateStream.getByteValue()); + } else { + LOGGER.warning("Stream already closed"); //May help debug extra closes? May remove to avoid noise + return CompletableFuture.completedFuture(null); + } + } + + private + void handleClose(boolean isInitial, CompletableFuture responseFuture, + final Optional> streamResponseHandler) { + if (isInitial && !responseFuture.isDone()) { + //response future should have completed because either an error has already been thrown using it, + //or the data has already come back. This combination is a problem state that suggests we're closing + //before having any server response + responseFuture.completeExceptionally(new RuntimeException("Closed received before any service operation response!")); + } + else if (streamResponseHandler.isPresent()) { + //The only valid way to respond to a close after request-response is via stream handler. + //This is a strange detail where a request->response operation doesn't really care or see + //the stream closing unless it uses a stream response handler. + try { + streamResponseHandler.get().onStreamClosed(); + } catch (Exception e) { + LOGGER.warning(String.format("Client handler onStreamClosed() threw %s: %s", + e.getClass().getCanonicalName(), e.getMessage())); + } + } + } + + private + void handleData(String applicationModelType, byte[] payload, boolean isInitial, CompletableFuture responseFuture, + final Optional> streamResponseHandler, + final OperationModelContext operationModelContext, + ClientConnectionContinuation continuation, + final AtomicBoolean isClosed) { + if (isInitial) { + //mismatch between type on the wire and type expected by the operation + if (!applicationModelType.equals(operationModelContext.getResponseApplicationModelType())) { + handleError(new UnmappedDataException(applicationModelType, operationModelContext.getResponseTypeClass()), + isInitial, responseFuture, streamResponseHandler, continuation, isClosed); + return; + } + RespType responseObj = null; + try { + responseObj = operationModelContext.getServiceModel().fromJson(operationModelContext.getResponseTypeClass(), payload); + } catch (Exception e) { + handleError(new DeserializationException(payload, e), isInitial, responseFuture, streamResponseHandler, continuation, isClosed); + return; //we're done if we can't deserialize + } + //complete normally + responseFuture.complete(responseObj); + } else { + //mismatch between type on the wire and type expected by the operation + if (!applicationModelType.equals(operationModelContext.getStreamingResponseApplicationModelType().get())) { + handleError(new UnmappedDataException(applicationModelType, operationModelContext.getStreamingResponseTypeClass().get()), + isInitial, responseFuture, streamResponseHandler, continuation, isClosed); + return; + } + StrRespType strResponseObj = null; + try { + strResponseObj = operationModelContext.getServiceModel().fromJson( + operationModelContext.getStreamingResponseTypeClass().get(), payload); + } catch (Exception e) { + handleError(new DeserializationException(payload, e), isInitial, responseFuture, streamResponseHandler, continuation, isClosed); + return; //we're done if we can't deserialize + } + + try { + streamResponseHandler.get().onStreamEvent(strResponseObj); + } catch (Exception e) { + handleError(e, isInitial, responseFuture, streamResponseHandler, continuation, isClosed); + } + } + } + + /** + * Handle error and based on result may close stream + */ + private + void handleError(Throwable t, boolean isInitial, final CompletableFuture responseFuture, + final Optional> streamResponseHandler, + ClientConnectionContinuation continuation, + final AtomicBoolean isClosed) { + if (!isInitial && !streamResponseHandler.isPresent()) { + throw new IllegalArgumentException("Cannot process error handling for stream without a stream response handler set!"); + } + + if (isInitial) { + responseFuture.completeExceptionally(t); + //failure on initial response future always closes stream + } else { + try { + if (streamResponseHandler.get().onStreamError(t)) { + sendClose(continuation, isClosed).whenComplete((res, ex) -> { + handleClose(isInitial, responseFuture, streamResponseHandler); + }); + } + } catch (Exception e) { + LOGGER.warning(String.format("Stream response handler threw exception %s: %s", + e.getClass().getCanonicalName(), e.getMessage())); + sendClose(continuation, isClosed).whenComplete((res, ex) -> { + handleClose(isInitial, responseFuture, streamResponseHandler); + }); + } + } + } +} diff --git a/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCConnection.java b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCConnection.java new file mode 100644 index 000000000..b8b103d82 --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCConnection.java @@ -0,0 +1,352 @@ +package software.amazon.awssdk.eventstreamrpc; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; +import java.util.logging.Logger; +import java.util.stream.Collectors; + +import software.amazon.awssdk.crt.CRT; +import software.amazon.awssdk.crt.CrtRuntimeException; +import software.amazon.awssdk.crt.eventstream.*; +import software.amazon.awssdk.eventstreamrpc.model.AccessDeniedException; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamError; + +public class EventStreamRPCConnection implements AutoCloseable { + protected static class ConnectionState { + enum Phase { + DISCONNECTED, + CONNECTING_SOCKET, + WAITING_CONNACK, + CONNECTED, + CLOSING + }; + + Phase connectionPhase; + ClientConnection connection; + Throwable closeReason; + boolean onConnectCalled; + + protected ConnectionState(Phase phase, ClientConnection connection) { + this.connectionPhase = phase; + this.connection = connection; + this.closeReason = null; + this.onConnectCalled = false; + } + }; + + private static final Logger LOGGER = Logger.getLogger(EventStreamRPCConnection.class.getName()); + + private final EventStreamRPCConnectionConfig config; + private ConnectionState connectionState; + + public EventStreamRPCConnection(final EventStreamRPCConnectionConfig config) { + this.config = config; + this.connectionState = new ConnectionState(ConnectionState.Phase.DISCONNECTED, null); + } + + /** + * Separate method to allow override for testing mismatch. May have external use + * @return returns the event-stream-rpc version string to check against server compatibility + */ + protected String getVersionString() { + return Version.getInstance().getVersionString(); + } + + /** + * Connects to the event stream RPC server asynchronously + * + * @return + */ + public CompletableFuture connect(final LifecycleHandler lifecycleHandler) { + synchronized (connectionState) { + if (connectionState.connectionPhase == ConnectionState.Phase.DISCONNECTED) { + connectionState.connectionPhase = ConnectionState.Phase.CONNECTING_SOCKET; + connectionState.onConnectCalled = false; + } else { + throw new IllegalStateException("Connection is already established"); + } + } + final CompletableFuture initialConnectFuture = new CompletableFuture<>(); + + ClientConnection.connect(config.getHost(), (short) config.getPort(), config.getSocketOptions(), + config.getTlsContext(), config.getClientBootstrap(), new ClientConnectionHandler() { + @Override + protected void onConnectionSetup(final ClientConnection clientConnection, int errorCode) { + LOGGER.info(String.format("Socket connection %s:%d to server result [%s]", + config.getHost(), config.getPort(), CRT.awsErrorName(errorCode))); + synchronized (connectionState) { + connectionState.connection = clientConnection; + if (CRT.AWS_CRT_SUCCESS != errorCode) { + connectionState.connectionPhase = ConnectionState.Phase.DISCONNECTED; + initialConnectFuture.completeExceptionally(new CrtRuntimeException(errorCode, CRT.awsErrorName(errorCode))); + } else if (connectionState.connectionPhase == ConnectionState.Phase.CLOSING) { + connectionState.closeReason = new software.amazon.awssdk.eventstreamrpc.EventStreamClosedException("Event stream closed by client"); + disconnect(); + } else { + connectionState.connectionPhase = ConnectionState.Phase.WAITING_CONNACK; + config.getConnectMessageAmender().get() + .whenComplete((messageAmendInfo, ex) -> { + synchronized (connectionState) { + if (clientConnection != connectionState.connection) { + LOGGER.warning("MessageAmender completed with different connection than initial"); + return; + } + if (connectionState.connectionPhase == ConnectionState.Phase.CLOSING) { + connectionState.closeReason = new software.amazon.awssdk.eventstreamrpc.EventStreamClosedException("Event stream closed by client"); + } else { + try { + final List
headers = new ArrayList<>(messageAmendInfo.getHeaders().size() + 1); + headers.add(Header.createHeader(EventStreamRPCServiceModel.VERSION_HEADER, + getVersionString())); + headers.addAll(messageAmendInfo.getHeaders().stream() + .filter(header -> !header.getName().equals(EventStreamRPCServiceModel.VERSION_HEADER)) + .collect(Collectors.toList())); + + LOGGER.fine("Waiting for connect ack message back from event stream RPC server"); + clientConnection.sendProtocolMessage(headers, + messageAmendInfo.getPayload(), MessageType.Connect, 0); + } catch (Exception e) { + connectionState.connectionPhase = ConnectionState.Phase.CLOSING; + connectionState.closeReason = e; + disconnect(); + } + } + } + }); + } + } + } + + @Override + protected void onProtocolMessage(List
headers, byte[] payload, MessageType messageType, int messageFlags) { + if (MessageType.ConnectAck.equals(messageType)) { + synchronized (connectionState) { + if ((messageFlags & MessageFlags.ConnectionAccepted.getByteValue()) != 0) { + connectionState.connectionPhase = ConnectionState.Phase.CONNECTED; + //now the client is open for business to invoke operations + LOGGER.info("Connection established with event stream RPC server"); + if (!initialConnectFuture.isDone()) { + initialConnectFuture.complete(null); + } + connectionState.onConnectCalled = true; + doOnConnect(lifecycleHandler); + } else { + //This is access denied, implied due to not having ConnectionAccepted msg flag + LOGGER.warning("AccessDenied to event stream RPC server"); + connectionState.connectionPhase = ConnectionState.Phase.CLOSING; + connectionState.connection.closeConnection(0); + + final AccessDeniedException ade = new AccessDeniedException("Connection access denied to event stream RPC server"); + if (!initialConnectFuture.isDone()) { + initialConnectFuture.completeExceptionally(ade); + } + doOnError(lifecycleHandler, ade); + } + } + } else if (MessageType.PingResponse.equals(messageType)) { + LOGGER.finer("Ping response received"); + } else if (MessageType.Ping.equals(messageType)) { + sendPingResponse(Optional.of(new MessageAmendInfo( + headers.stream().filter(header -> !header.getName().startsWith(":")) + .collect(Collectors.toList()), payload))) + .whenComplete((res, ex) -> { + LOGGER.finer("Ping response sent"); + }); + } else if (MessageType.Connect.equals(messageType)) { + LOGGER.severe("Erroneous connect message type received by client. Closing"); + //TODO: client sends protocol error here? + disconnect(); + } else if (MessageType.ProtocolError.equals(messageType) || MessageType.ServerError.equals(messageType)) { + LOGGER.severe("Received " + messageType.name() + ": " + CRT.awsErrorName(CRT.awsLastError())); + connectionState.closeReason = EventStreamError.create(headers, payload, messageType); + doOnError(lifecycleHandler, connectionState.closeReason); + disconnect(); + } else { + LOGGER.severe("Unprocessed message type: " + messageType.name()); + doOnError(lifecycleHandler, new EventStreamError("Unprocessed message type: " + messageType.name())); + } + } + + @Override + protected void onConnectionClosed(int errorCode) { + LOGGER.finer("Socket connection closed: " + CRT.awsErrorName(errorCode)); + Throwable closeReason; + boolean callOnDisconnect; + synchronized (connectionState) { + if (connectionState.connection != null) { + connectionState.connection.close(); + connectionState.connection = null; + } + connectionState.connectionPhase = ConnectionState.Phase.DISCONNECTED; + closeReason = connectionState.closeReason; + connectionState.closeReason = null; + callOnDisconnect = connectionState.onConnectCalled; + connectionState.onConnectCalled = false; + } + if (!initialConnectFuture.isDone()) { + if (closeReason != null) { + initialConnectFuture.completeExceptionally(closeReason); + } else { + initialConnectFuture.complete(null); + } + } + if (callOnDisconnect) { + doOnDisconnect(lifecycleHandler, errorCode); + } + } + }); + return initialConnectFuture; + } + + public ClientConnectionContinuation newStream(ClientConnectionContinuationHandler continuationHandler) { + synchronized (connectionState) { + if (connectionState.connectionPhase == ConnectionState.Phase.CONNECTED) { + return connectionState.connection.newStream(continuationHandler); + } else { + throw new software.amazon.awssdk.eventstreamrpc.EventStreamClosedException("EventStream connection is not open!"); + } + } + } + + public void disconnect() { + synchronized (connectionState) { + if (connectionState.connectionPhase != ConnectionState.Phase.CLOSING && + connectionState.connectionPhase != ConnectionState.Phase.DISCONNECTED) { + connectionState.connectionPhase = ConnectionState.Phase.CLOSING; + } + if (connectionState.connection != null) { + connectionState.connection.closeConnection(0); + } + if (connectionState.closeReason == null) { + connectionState.closeReason = new software.amazon.awssdk.eventstreamrpc.EventStreamClosedException("Event stream closed by client"); + } + } + } + + private void doOnConnect(LifecycleHandler lifecycleHandler) { + try { + lifecycleHandler.onConnect(); + } + catch (Exception ex) { + LOGGER.warning(String.format("LifecycleHandler::onConnect() threw %s : %s", + ex.getClass().getCanonicalName(), ex.getMessage())); + doOnError(lifecycleHandler, ex); + } + } + + private void doOnError(LifecycleHandler lifecycleHandler, Throwable t) { + try { + if (lifecycleHandler.onError(t)) { + LOGGER.fine("Closing connection due to LifecycleHandler::onError() returning true"); + disconnect(); + } + } + catch (Exception ex) { + LOGGER.warning(String.format("Closing connection due to LifecycleHandler::onError() throwing %s : %s", + ex.getClass().getCanonicalName(), ex.getMessage())); + disconnect(); + } + } + + private void doOnDisconnect(LifecycleHandler lifecycleHandler, int errorCode) { + try { + lifecycleHandler.onDisconnect(errorCode); + } + catch (Exception ex) { + LOGGER.warning(String.format("LifecycleHandler::onDisconnect(" + CRT.awsErrorName(errorCode) + ") threw %s : %s", + ex.getClass().getCanonicalName(), ex.getMessage())); + } + } + + /** + * Interface to send ping. Optional MessageAmendInfo will use the headers and payload + * for the ping message verbatim. Should trigger a pong response and server copies back + * @param pingData + * @return + */ + public CompletableFuture sendPing(Optional pingData) { + ClientConnection connection; + synchronized (connectionState) { + if (connectionState.connectionPhase != ConnectionState.Phase.CONNECTED) { + throw new software.amazon.awssdk.eventstreamrpc.EventStreamClosedException("EventStream connection not established"); + } + connection = connectionState.connection; + if (pingData.isPresent()) { + return connection.sendProtocolMessage(pingData.get().getHeaders(), pingData.get().getPayload(), + MessageType.Ping, 0); + } else { + return connection.sendProtocolMessage(null, null, MessageType.Ping, 0); + } + } + } + + /** + * Interface to send pingResponse. Optional MessageAmendInfo will use the headers and payload + * for the ping message verbatim. Should trigger a pong response and server copies back + * @param pingResponseData + * @return + */ + public CompletableFuture sendPingResponse(Optional pingResponseData) { + ClientConnection connection; + synchronized (connectionState) { + if (connectionState.connectionPhase != ConnectionState.Phase.CONNECTED) { + throw new software.amazon.awssdk.eventstreamrpc.EventStreamClosedException("EventStream connection not established"); + } + connection = connectionState.connection; + if (pingResponseData.isPresent()) { + return connection.sendProtocolMessage(pingResponseData.get().getHeaders(), pingResponseData.get().getPayload(), + MessageType.Ping, 0); + } else { + return connection.sendProtocolMessage(null, null, MessageType.PingResponse, 0); + } + } + } + + @Override + public void close() { + disconnect(); + } + + /** + * Lifecycle handler is how a client can react and respond to connectivity interruptions. Connectivity + * interruptions are isolated from operation availability issues. + */ + public interface LifecycleHandler { + /** + * Invoked only if there is a successful connection. Leaves out the error code since it will have + * already been compared to AWS_OP_SUCCESS + */ + void onConnect(); + + /** + * Invoked for both connect failures and disconnects from a healthy state + * + * @param errorCode + */ + void onDisconnect(int errorCode); + + /** + * Used to communicate errors that occur on the connection during any phase of its lifecycle that may + * not appropriately or easily attach to onConnect() or onDisconnect(). Return value of this indicates + * whether or not the client should stay connected or terminate the connection. Returning true indicates + * the connection should terminate as a result of the error, and false indicates that the connection + * should not. If the handler throws, is the same as returning true. + * + * Note: Some conditions when onError() is called will not care about the return value and always + * result in closing the connection. AccessDeniedException is such an example + * + * @param t Exception + * @returns true if the connection should be terminated as a result of handling the error + */ + boolean onError(Throwable t); + + /** + * Do nothing on ping by default. Inform handler of ping data + * + * TODO: Could use boolean return here as a hint on whether a pong reply should be sent? + */ + default void onPing(List
headers, byte[] payload) { }; + } +} diff --git a/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCConnectionConfig.java b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCConnectionConfig.java new file mode 100644 index 000000000..3a8f174b7 --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCConnectionConfig.java @@ -0,0 +1,80 @@ +package software.amazon.awssdk.eventstreamrpc; + +import software.amazon.awssdk.crt.io.*; +import software.amazon.awssdk.eventstreamrpc.MessageAmendInfo; + +import java.util.concurrent.CompletableFuture; +import java.util.function.Supplier; + +/** + * The closeable elements inside the EventStreamRPCConnectionConfig are not cleaned up when + * this config object is done. It is still up to the caller of the constructor to clean up + * resources that are associated in the config. + * + * The connect message transformer is used to supply additional connect message headers + * and supply the payload of the connect message. This is to be used to supply authentication + * information on the connect + */ +public class EventStreamRPCConnectionConfig { + private final ClientBootstrap clientBootstrap; + private final EventLoopGroup eventLoopGroup; + private final SocketOptions socketOptions; + private final ClientTlsContext tlsContext; + private final String host; + private final int port; + + /** + * MessageAmendInfo here is used to add supplied headers to the Connect message, and + * set the payload of that message as well. + */ + private final Supplier> connectMessageAmender; + + public EventStreamRPCConnectionConfig(ClientBootstrap clientBootstrap, EventLoopGroup eventLoopGroup, + SocketOptions socketOptions, ClientTlsContext tlsContext, + String host, int port, Supplier> connectMessageAmender) { + this.clientBootstrap = clientBootstrap; + this.eventLoopGroup = eventLoopGroup; + this.socketOptions = socketOptions; + this.tlsContext = tlsContext; + this.host = host; + this.port = port; + this.connectMessageAmender = connectMessageAmender; + + //perform cast to throw exception here if port value is out of short value range + final short shortPort = (short)port; + + //bit of C++ RAII here, validate what we can + if (clientBootstrap == null || eventLoopGroup == null || socketOptions == null || + host == null || host.isEmpty() || port < 0) { + throw new IllegalArgumentException("EventStreamRPCConnectionConfig values are invalid!"); + } + } + + public ClientBootstrap getClientBootstrap() { + return clientBootstrap; + } + + public EventLoopGroup getEventLoopGroup() { + return eventLoopGroup; + } + + public SocketOptions getSocketOptions() { + return socketOptions; + } + + public ClientTlsContext getTlsContext() { + return tlsContext; + } + + public String getHost() { + return host; + } + + public int getPort() { + return port; + } + + public Supplier> getConnectMessageAmender() { + return connectMessageAmender; + } +} diff --git a/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/GreengrassConnectMessageSupplier.java b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/GreengrassConnectMessageSupplier.java new file mode 100644 index 000000000..63dcabd37 --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/GreengrassConnectMessageSupplier.java @@ -0,0 +1,23 @@ +package software.amazon.awssdk.eventstreamrpc; + +import com.google.gson.Gson; +import software.amazon.awssdk.crt.eventstream.Header; + +import java.nio.charset.StandardCharsets; +import java.util.LinkedList; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.function.Supplier; + +public class GreengrassConnectMessageSupplier { + + public static Supplier> connectMessageSupplier(String authToken) { + return () -> { + final List
headers = new LinkedList<>(); + GreengrassEventStreamConnectMessage connectMessage = new GreengrassEventStreamConnectMessage(); + connectMessage.setAuthToken(authToken); + String payload = new Gson().toJson(connectMessage); + return CompletableFuture.completedFuture(new MessageAmendInfo(headers, payload.getBytes(StandardCharsets.UTF_8))); + }; + } +} diff --git a/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/GreengrassEventStreamConnectMessage.java b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/GreengrassEventStreamConnectMessage.java new file mode 100644 index 000000000..6dd6bcddd --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/GreengrassEventStreamConnectMessage.java @@ -0,0 +1,14 @@ +package software.amazon.awssdk.eventstreamrpc; + +public class GreengrassEventStreamConnectMessage { + + private String authToken; + + public void setAuthToken(String authToken) { + this.authToken = authToken; + } + + public String getAuthToken() { + return this.authToken; + } +} diff --git a/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/OperationResponse.java b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/OperationResponse.java new file mode 100644 index 000000000..d81ecb396 --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/OperationResponse.java @@ -0,0 +1,135 @@ +package software.amazon.awssdk.eventstreamrpc; + +import software.amazon.awssdk.crt.eventstream.ClientConnectionContinuation; +import software.amazon.awssdk.crt.eventstream.Header; +import software.amazon.awssdk.crt.eventstream.MessageFlags; +import software.amazon.awssdk.crt.eventstream.MessageType; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +import java.util.LinkedList; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.logging.Logger; + +/** + * Underlying type for operation response handling. Enables publishing on stream operations from + * client, closing of any open stream, and retrieval of response. Specific generated operation response + * handlers are usually simple wrappers with the generic types specified + * + * @param + * @param + */ +public class OperationResponse + implements StreamResponse, AutoCloseable { + private static final Logger LOGGER = Logger.getLogger(OperationResponse.class.getName()); + private final OperationModelContext operationModelContext; + private final ClientConnectionContinuation continuation; + private final CompletableFuture responseFuture; + private final CompletableFuture requestFlushFuture; + private final AtomicBoolean isClosed; + + public OperationResponse(OperationModelContext operationModelContext, + ClientConnectionContinuation continuation, + CompletableFuture responseFuture, + CompletableFuture requestFlushFuture) { + this.operationModelContext = operationModelContext; + this.continuation = continuation; + this.responseFuture = responseFuture; + this.requestFlushFuture = requestFlushFuture; + this.isClosed = new AtomicBoolean(continuation != null && !continuation.isNull()); + } + + final public CompletableFuture getRequestFlushFuture() { + return requestFlushFuture; + } + + /** + * Get the response completable future to wait on the initial response + * if there is one. + * + * May throw exception if requestFlushFuture throws an exception and will + * block if requestFlush has not completed. + * + * @return + */ + public CompletableFuture getResponse() { + //semantics here are: if the request was never successfully sent + //then the request flush future holds the exception thrown so that + //must be made visible of the caller waits for the response directly. + //It is impossible to have a successful response future completed + //with a request flush never having completed or having thrown an + //exception. + return requestFlushFuture.thenCompose((v) -> responseFuture); + } + + /** + * Publish stream events on an open operation's event stream. + * @param streamEvent event to publish + */ + @Override + public CompletableFuture sendStreamEvent(final StreamRequestType streamEvent) { + try { + final List
headers = new LinkedList<>(); + headers.add(Header.createHeader(EventStreamRPCServiceModel.SERVICE_MODEL_TYPE_HEADER, + (String) operationModelContext.getStreamingRequestApplicationModelType().get())); + headers.add(Header.createHeader(EventStreamRPCServiceModel.CONTENT_TYPE_HEADER, + EventStreamRPCServiceModel.CONTENT_TYPE_APPLICATION_JSON)); + final byte[] payload = operationModelContext.getServiceModel() + .toJson(streamEvent); + return continuation.sendMessage(headers, payload, + MessageType.ApplicationMessage, 0) + .whenComplete((res, ex) -> { + if (ex != null) { + LOGGER.warning(String.format("%s caught %s while sending message the event stream: %s", + operationModelContext.getOperationName(), ex.getClass().getName(), + ex.getMessage())); + closeStream(); + } + }); + } catch (Exception e) { + final CompletableFuture future = new CompletableFuture<>(); + future.completeExceptionally(e); + return future; + } + } + + /** + * Initiate a close on the event stream from the client side. + * + * @return + */ + @Override + public CompletableFuture closeStream() { + if (continuation != null && !continuation.isNull()) { + return continuation.sendMessage(null, null, + MessageType.ApplicationMessage, MessageFlags.TerminateStream.getByteValue()) + .whenComplete((res, ex) -> { + LOGGER.info(operationModelContext.getOperationName() + " operation stream closed"); + continuation.close(); + if (ex != null) { + LOGGER.warning(String.format("%s threw %s while closing the event stream: %s", + operationModelContext.getOperationName(), ex.getClass().getName(), + ex.getMessage())); + } + }); + } + return CompletableFuture.completedFuture(null); + } + + /** + * Checks if the stream is closed + * @return + */ + public boolean isClosed() { + return isClosed.get(); + } + + @Override + public void close() throws Exception { + if (isClosed.compareAndSet(false, true)) { + closeStream(); + } + } +} diff --git a/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/StreamResponse.java b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/StreamResponse.java new file mode 100644 index 000000000..697b25d4f --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/StreamResponse.java @@ -0,0 +1,29 @@ +package software.amazon.awssdk.eventstreamrpc; + +import software.amazon.awssdk.eventstreamrpc.StreamEventPublisher; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +import java.util.concurrent.CompletableFuture; + +public interface StreamResponse + extends StreamEventPublisher { + /** + * Completable future indicating flush of the request that initiated the stream operation + * + * @return + */ + CompletableFuture getRequestFlushFuture(); + + /** + * Completable future for retrieving the initial-response of the stream operation + * + * @return + */ + CompletableFuture getResponse(); + + /** + * Tests if the stream is closed + * @return + */ + boolean isClosed(); +} diff --git a/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/StreamResponseHandler.java b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/StreamResponseHandler.java new file mode 100644 index 000000000..4bbe9709b --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-client/src/main/java/software/amazon/awssdk/eventstreamrpc/StreamResponseHandler.java @@ -0,0 +1,34 @@ +package software.amazon.awssdk.eventstreamrpc; + +/** + * Operation response handler is needed to invoke an operation that has a streaming + * response element to it. + * + * @param + */ +public interface StreamResponseHandler { + + /** + * + * @param streamEvent + */ + void onStreamEvent(final StreamEventType streamEvent); + + /** + * Called when there's an error in the stream. Return value of this function + * suggests whether or not the client handling will keep the stream open + * or close it. + * + * There are conditions when onStreamError() may be triggered but the client handling will + * close the connection anyways. + * + * @param error + * @return true if the stream should be closed on this error, false if stream should remain open + */ + boolean onStreamError(final Throwable error); + + /** + * Called when stream is closed + */ + void onStreamClosed(); +} diff --git a/sdk/greengrass/event-stream-rpc-client/src/test/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCClientTests.java b/sdk/greengrass/event-stream-rpc-client/src/test/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCClientTests.java new file mode 100644 index 000000000..e62d27682 --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-client/src/test/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCClientTests.java @@ -0,0 +1,278 @@ +package software.amazon.awssdk.eventstreamrpc; + +import junit.framework.AssertionFailedError; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import software.amazon.awssdk.crt.CRT; +import software.amazon.awssdk.crt.Log; +import software.amazon.awssdk.crt.eventstream.Header; +import software.amazon.awssdk.crt.eventstream.MessageType; +import software.amazon.awssdk.crt.io.ClientBootstrap; +import software.amazon.awssdk.crt.io.EventLoopGroup; +import software.amazon.awssdk.crt.io.SocketOptions; +import software.amazon.awssdk.eventstreamrpc.model.AccessDeniedException; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; +import software.amazon.awssdk.eventstreamrpc.test.TestAuthNZHandlers; +import software.amazon.awssdk.eventstreamrpc.test.TestIpcServiceHandler; + +import java.util.LinkedList; +import java.util.List; +import java.util.Optional; +import java.util.Random; +import java.util.concurrent.*; +import java.util.function.Consumer; + +public class EventStreamRPCClientTests { + private static final Random RANDOM = new Random(); //default instantiation uses time + public static int randomPort() { + return RANDOM.nextInt(65535-1024) + 1024; + } + + static { + Log.initLoggingToFile(Log.LogLevel.Trace, "crt-EventStreamRPCClientTests.log"); + } + + @Test + public void testConnectionEstablished() { + final int port = randomPort(); + SocketOptions socketOptions = new SocketOptions(); + socketOptions.connectTimeoutMs = 3000; + socketOptions.domain = SocketOptions.SocketDomain.IPv4; + socketOptions.type = SocketOptions.SocketType.STREAM; + + //below class is generated and just gets instantiated for what it is + final TestIpcServiceHandler service = new TestIpcServiceHandler(false, + request -> request, + EventStreamJsonMessage.class, EventStreamJsonMessage.class, + EventStreamJsonMessage.class, EventStreamJsonMessage.class); + + //handlers aren't relevant since no request will be made + service.setAuthenticationHandler(TestAuthNZHandlers.getAuthNHandler()); + service.setAuthorizationHandler(TestAuthNZHandlers.getAuthZHandler()); + + final CompletableFuture disconnectFuture = new CompletableFuture<>(); + final CompletableFuture connectedFuture = new CompletableFuture<>(); + + try(final EventLoopGroup elGroup = new EventLoopGroup(1); + final ClientBootstrap clientBootstrap = new ClientBootstrap(elGroup, null)) { + final RpcServer ipcServer = new RpcServer(elGroup, socketOptions, null, "127.0.0.1", port, service); + ipcServer.runServer(); + + final EventStreamRPCConnectionConfig config = new EventStreamRPCConnectionConfig( + clientBootstrap, elGroup, socketOptions, null, "127.0.0.1", port, () -> + { + final List
headers = new LinkedList<>(); + headers.add(Header.createHeader("client-name", "accepted.foo")); + return new MessageAmendInfo(headers, null); + } + ); + final EventStreamRPCConnection connection = new EventStreamRPCConnection(config); + final EventStreamRPCConnection.LifecycleHandler lifecycleHandler = new EventStreamRPCConnection.LifecycleHandler() { + @Override + public void onConnect() { + connectedFuture.complete(null); + } + + @Override + public void onDisconnect(int errorCode) { + disconnectFuture.complete(null); + } + + @Override + public boolean onError(Throwable t) { + if (!connectedFuture.isDone()) { + connectedFuture.completeExceptionally(t); + } + if (!disconnectFuture.isDone()) { + disconnectFuture.completeExceptionally(t); + } + return true; + } + }; + final CompletableFuture initialConnect = connection.connect(lifecycleHandler); + //highly likely above line is establishing connection + Assertions.assertThrows(IllegalStateException.class, () -> connection.connect(lifecycleHandler)); + connectedFuture.get(2, TimeUnit.SECONDS); + Assertions.assertTrue(initialConnect.isDone() && !initialConnect.isCompletedExceptionally()); + //connection is fully established + Assertions.assertThrows(IllegalStateException.class, () -> connection.connect(lifecycleHandler)); + connection.disconnect(); + } catch (ExecutionException | TimeoutException | InterruptedException e) { + throw new RuntimeException(e); + } finally { + try { + disconnectFuture.get(5, TimeUnit.SECONDS); + } catch (ExecutionException | TimeoutException | InterruptedException e) { + throw new RuntimeException(e); + } + } + } + + @Test + public void testConnectionVersionMismatch() { + final int port = randomPort(); + SocketOptions socketOptions = new SocketOptions(); + socketOptions.connectTimeoutMs = 3000; + socketOptions.domain = SocketOptions.SocketDomain.IPv4; + socketOptions.type = SocketOptions.SocketType.STREAM; + + //below class is generated and just gets instantiated for what it is + final TestIpcServiceHandler service = new TestIpcServiceHandler(false, + request -> request, + EventStreamJsonMessage.class, EventStreamJsonMessage.class, + EventStreamJsonMessage.class, EventStreamJsonMessage.class); + + //handlers aren't relevant since no request will be made + service.setAuthenticationHandler(TestAuthNZHandlers.getAuthNHandler()); + service.setAuthorizationHandler(TestAuthNZHandlers.getAuthZHandler()); + + try(final EventLoopGroup elGroup = new EventLoopGroup(1); + final ClientBootstrap clientBootstrap = new ClientBootstrap(elGroup, null)) { + final RpcServer ipcServer = new RpcServer(elGroup, socketOptions, null, "127.0.0.1", port, service); + ipcServer.runServer(); + + final EventStreamRPCConnectionConfig config = new EventStreamRPCConnectionConfig( + clientBootstrap, elGroup, socketOptions, null, "127.0.0.1", port, () -> + { + final List
headers = new LinkedList<>(); + headers.add(Header.createHeader("client-name", "accepted.foo")); + return new MessageAmendInfo(headers, null); + } + ); + final EventStreamRPCConnection connection = new EventStreamRPCConnection(config) { + @Override + protected String getVersionString() { + return "19.19.19"; + } + }; + final CompletableFuture futureAccessDenied = new CompletableFuture<>(); + final CompletableFuture shutdownFuture = new CompletableFuture<>(); + final CompletableFuture initialConnect = connection.connect(new EventStreamRPCConnection.LifecycleHandler() { + @Override + public void onConnect() { + futureAccessDenied.completeExceptionally(new AssertionFailedError("onConnect lifecycle handler method should not be called!")); + } + @Override + public void onDisconnect(int errorCode) { + shutdownFuture.complete(errorCode); + } + @Override + public boolean onError(Throwable t) { + futureAccessDenied.complete(t); + return true; + } + }); + futureAccessDenied.get(5, TimeUnit.SECONDS); + } catch (InterruptedException | ExecutionException | TimeoutException e) { + Assertions.fail(e); + } + } + + @Test + public void testConnectionAccessDenied() { + final int port = randomPort(); + SocketOptions socketOptions = new SocketOptions(); + socketOptions.connectTimeoutMs = 3000; + socketOptions.domain = SocketOptions.SocketDomain.IPv4; + socketOptions.type = SocketOptions.SocketType.STREAM; + + //below class is generated and just gets instantiated for what it is + final TestIpcServiceHandler service = new TestIpcServiceHandler(false, + request -> request, + EventStreamJsonMessage.class, EventStreamJsonMessage.class, + EventStreamJsonMessage.class, EventStreamJsonMessage.class); + + //handlers aren't relevant since no request will be made + service.setAuthenticationHandler(TestAuthNZHandlers.getAuthNHandler()); + service.setAuthorizationHandler(TestAuthNZHandlers.getAuthZHandler()); + final Semaphore semaphore = new Semaphore(1); + + try(final EventLoopGroup elGroup = new EventLoopGroup(1); + final ClientBootstrap clientBootstrap = new ClientBootstrap(elGroup, null)) { + final RpcServer ipcServer = new RpcServer(elGroup, socketOptions, null, "127.0.0.1", port, service); + ipcServer.runServer(); + + semaphore.acquire(); + final EventStreamRPCConnectionConfig config = new EventStreamRPCConnectionConfig( + clientBootstrap, elGroup, socketOptions, null, "127.0.0.1", port, () -> + { + final List
headers = new LinkedList<>(); + headers.add(Header.createHeader("client-name", "rejected.foo")); + return new MessageAmendInfo(headers, null); + } + ); + final EventStreamRPCConnection connection = new EventStreamRPCConnection(config); + final CompletableFuture initialConnect = connection.connect(new EventStreamRPCConnection.LifecycleHandler() { + @Override + public void onConnect() { + Assertions.fail("Full connection expected to be rejected"); + semaphore.release(); + } + @Override + public void onDisconnect(int errorCode) { + System.out.println("Client disconnected..."); + semaphore.release(); + } + @Override + public boolean onError(Throwable t) { + Assertions.assertEquals(t.getClass(), AccessDeniedException.class, "Expected access denied exception type!"); + semaphore.release(); + return false; + } + }); + semaphore.acquire(); + Assertions.assertTrue(initialConnect.isDone()); + try { + initialConnect.get(); + } catch (ExecutionException e) { + Assertions.assertTrue(e.getCause() instanceof AccessDeniedException); + } + connection.disconnect(); + semaphore.acquire(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + + /** + * Runs a dummy service on a random port and creates a connection for it so a test can do whatever on the connection. + * Assumes the particular operation invocations don't matter. + * @param lifecycleHandler + * @param testCode + */ + public static void runDummyService(EventStreamRPCConnection.LifecycleHandler lifecycleHandler, Consumer testCode) { + final int port = randomPort(); + SocketOptions socketOptions = new SocketOptions(); + socketOptions.connectTimeoutMs = 3000; + socketOptions.domain = SocketOptions.SocketDomain.IPv4; + socketOptions.type = SocketOptions.SocketType.STREAM; + final TestIpcServiceHandler service = new TestIpcServiceHandler(false, + request -> request, + EventStreamJsonMessage.class, EventStreamJsonMessage.class, + EventStreamJsonMessage.class, EventStreamJsonMessage.class); + + service.setAuthenticationHandler(TestAuthNZHandlers.getAuthNHandler()); + service.setAuthorizationHandler(TestAuthNZHandlers.getAuthZHandler()); + + try(final EventLoopGroup elGroup = new EventLoopGroup(1); + final ClientBootstrap clientBootstrap = new ClientBootstrap(elGroup, null)) { + final RpcServer ipcServer = new RpcServer(elGroup, socketOptions, null, "127.0.0.1", port, service); + ipcServer.runServer(); + + final EventStreamRPCConnectionConfig config = new EventStreamRPCConnectionConfig( + clientBootstrap, elGroup, socketOptions, null, "127.0.0.1", port, () -> + { + final List
headers = new LinkedList<>(); + headers.add(Header.createHeader("client-name", "accepted.foo")); + return new MessageAmendInfo(headers, null); + } + ); + final EventStreamRPCConnection connection = new EventStreamRPCConnection(config); + final CompletableFuture initialConnect = connection.connect(lifecycleHandler); + initialConnect.get(2, TimeUnit.SECONDS); + testCode.accept(connection); + } catch (ExecutionException | TimeoutException | InterruptedException e) { + Assertions.fail(e); + } + } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/DeserializationException.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/DeserializationException.java new file mode 100644 index 000000000..da3e5a389 --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/DeserializationException.java @@ -0,0 +1,11 @@ +package software.amazon.awssdk.eventstreamrpc; + +public class DeserializationException extends RuntimeException { + public DeserializationException(Object lexicalData) { + this(lexicalData, null); + } + + public DeserializationException(Object lexicalData, Throwable cause) { + super("Could not deserialize data: [" + lexicalData.toString() + "]", cause); + } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamClosedException.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamClosedException.java new file mode 100644 index 000000000..567178588 --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamClosedException.java @@ -0,0 +1,13 @@ +package software.amazon.awssdk.eventstreamrpc; + +public class EventStreamClosedException extends RuntimeException { + public EventStreamClosedException(long continauationId) { + //TODO: Is hex formatting here useful? It is short, but not consistent anywhere else yet + super(String.format("EventStream continuation [%s] is already closed!", Long.toHexString(continauationId))); + } + + public EventStreamClosedException(String msg) { + //TODO: Is hex formatting here useful? It is short, but not consistent anywhere else yet + super(msg); + } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCServiceModel.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCServiceModel.java new file mode 100644 index 000000000..0a6a1916a --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/EventStreamRPCServiceModel.java @@ -0,0 +1,277 @@ +package software.amazon.awssdk.eventstreamrpc; + +import com.google.gson.*; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; +import software.amazon.awssdk.eventstreamrpc.model.*; +import software.amazon.awssdk.eventstreamrpc.model.UnsupportedOperationException; + +import java.io.IOException; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; +import java.time.Instant; +import java.util.*; + +/** + * Implementers of this service model are expected to likely be singletons. There + * should be little value to having more than one, though between different instances + * properly constructed for a service, they can be used interchangeably + */ +public abstract class EventStreamRPCServiceModel { + private static final Gson GSON; + + //package visibility so client + static final String VERSION_HEADER = ":version"; + public static final String CONTENT_TYPE_HEADER = ":content-type"; + public static final String CONTENT_TYPE_APPLICATION_TEXT = "text/plain"; + public static final String CONTENT_TYPE_APPLICATION_JSON = "application/json"; + public static final String SERVICE_MODEL_TYPE_HEADER = "service-model-type"; + + static { + GsonBuilder builder = new GsonBuilder(); + builder.registerTypeAdapterFactory(new ForceNullsForMapTypeAdapterFactory()); + builder.registerTypeAdapterFactory(OptionalTypeAdapter.FACTORY); + builder.registerTypeAdapter(byte[].class, new Base64BlobSerializerDeserializer()); + builder.registerTypeAdapter(Instant.class, new InstantSerializerDeserializer()); + GSON = builder.create(); + } + + private static class ForceNullsForMapTypeAdapterFactory implements TypeAdapterFactory { + + public final TypeAdapter create(Gson gson, TypeToken type) { + if (Map.class.isAssignableFrom(type.getRawType())) { + final TypeAdapter delegate = gson.getDelegateAdapter(this, type); + return createCustomTypeAdapter(delegate); + } + + return null; + } + + private TypeAdapter createCustomTypeAdapter(TypeAdapter delegate) { + return new TypeAdapter() { + @Override + public void write(JsonWriter out, T value) throws IOException { + final boolean serializeNulls = out.getSerializeNulls(); + try { + out.setSerializeNulls(true); + delegate.write(out, value); + } finally { + out.setSerializeNulls(serializeNulls); + } + } + + @Override + public T read(JsonReader in) throws IOException { + return delegate.read(in); + } + }; + } + } + + private static class OptionalTypeAdapter extends TypeAdapter> { + public static final TypeAdapterFactory FACTORY = new TypeAdapterFactory() { + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + Class rawType = (Class) type.getRawType(); + if (rawType != Optional.class) { + return null; + } + final ParameterizedType parameterizedType = (ParameterizedType) type.getType(); + final Type actualType = parameterizedType.getActualTypeArguments()[0]; + final TypeAdapter adapter = gson.getAdapter(TypeToken.get(actualType)); + return new OptionalTypeAdapter(adapter); + } + }; + + private final TypeAdapter adapter; + + public OptionalTypeAdapter(TypeAdapter adapter) { + this.adapter = adapter; + } + + @Override + public void write(JsonWriter out, Optional value) throws IOException { + if (value.isPresent()){ + adapter.write(out, value.get()); + } else if (value != null) { + out.nullValue(); + } else { } + } + + @Override + public Optional read(JsonReader in) throws IOException { + final JsonToken peek = in.peek(); + if (peek != JsonToken.NULL){ + return Optional.ofNullable(adapter.read(in)); + } + return Optional.empty(); + } + } + + /** + * Used to compare two members of a blob shape for equality. Array equals nesting + * inside of an Optional doesn't work + * + * Note: Generated code for equals method of Smithy shapes relies on this + * + * @param lhs + * @param rhs + * @return + */ + public static boolean blobTypeEquals(Optional lhs, Optional rhs) { + if (lhs.equals(rhs)) { + //both are same instance, both are same contained array, or both are empty + return true; + } + if (!lhs.isPresent() || !rhs.isPresent()) { + //if just one or the other is empty at this point + return false; + } + //now we know both are present so compare the arrays + return Arrays.equals(lhs.get(), rhs.get()); + } + + private static class Base64BlobSerializerDeserializer implements JsonSerializer, JsonDeserializer { + private static final Base64.Encoder BASE_64_ENCODER = Base64.getEncoder(); + private static final Base64.Decoder BASE_64_DECODER = Base64.getDecoder(); + + @Override + public byte[] deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + return BASE_64_DECODER.decode(json.getAsString()); + } + + @Override + public JsonElement serialize(byte[] src, Type typeOfSrc, JsonSerializationContext context) { + return new JsonPrimitive(BASE_64_ENCODER.encodeToString(src)); + } + } + + private static class InstantSerializerDeserializer implements JsonSerializer, JsonDeserializer { + @Override + public Instant deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + double fSecondsEpoch = json.getAsDouble(); + long secondsEpoch = (long)fSecondsEpoch; + long nanoEpoch = (long)((fSecondsEpoch - secondsEpoch) * 1_000_000_000.); + return Instant.ofEpochSecond(secondsEpoch, nanoEpoch); + } + + @Override + public JsonElement serialize(Instant src, Type typeOfSrc, JsonSerializationContext context) { + return new JsonPrimitive((double)src.getEpochSecond() + (double)src.getNano() / 1000000000.); + } + } + + /** + * For actual + * @return + */ + public abstract String getServiceName(); + + private static final Map> FRAMEWORK_APPLICATION_MODEL_TYPES + = new HashMap<>(); + static { + //TODO: find a reliable way to verify all of these are set? reflection cannot scan a package + FRAMEWORK_APPLICATION_MODEL_TYPES.put(AccessDeniedException.ERROR_CODE, AccessDeniedException.class); + FRAMEWORK_APPLICATION_MODEL_TYPES.put(UnsupportedOperationException.ERROR_CODE, UnsupportedOperationException.class); + FRAMEWORK_APPLICATION_MODEL_TYPES.put(ValidationException.ERROR_CODE, ValidationException.class); + } + + final public Optional> getApplicationModelClass(final String applicationModelType) { + final Class clazz = FRAMEWORK_APPLICATION_MODEL_TYPES.get(applicationModelType); + if (clazz != null) { + return Optional.of(clazz); + } + return getServiceClassType(applicationModelType); + } + + /** + * Retreives all operations on the service + * @return + */ + public abstract Collection getAllOperations(); + + /** + * Need to override per specific service type so it can look up all associated types and errors + * possible. + * + * @param applicationModelType + * @return + */ + protected abstract Optional> getServiceClassType(String applicationModelType); + + /** + * Retrieves the operation model context for a given operation name on the service + * + * This may not be a useful interface as generated code will typically pull a known operation model context + * Public visibility is useful for testing + * @param operationName + * @return + */ + public abstract OperationModelContext getOperationModelContext(String operationName); + + public byte[] toJson(final EventStreamJsonMessage message) { + try { + final byte[] json = message.toPayload(getGson()); + final String stringJson = new String(json, StandardCharsets.UTF_8); + //this feels like a hack. I'd prefer if java objects with no fields set serialized to being an empty object + //rather than "null" + if (null == stringJson || "null".equals(stringJson) || stringJson.isEmpty()) { + return "{}".getBytes(StandardCharsets.UTF_8); + } + return json; + } catch (Exception e) { + throw new SerializationException(message, e); + } + } + + public String toJsonString(final EventStreamJsonMessage message) { + return new String(toJson(message), StandardCharsets.UTF_8); + } + + /** + * Internal getter method can be used by subclasses of specific service models to override default Gson + * @return + */ + protected Gson getGson() { + return GSON; + } + + /** + * In situations where the framework needs to do some JSON processing + * without a specific service/operation in context + * + * @return the static Gson instance capable of processing the basics of EventStreamableJsonMessage + */ + public static Gson getStaticGson() { + return GSON; + } + + /** + * Uses this service's specific model class + * @param applicationModelType + * @param payload + * @return + */ + public EventStreamJsonMessage fromJson(final String applicationModelType, byte[] payload) { + final Optional> clazz = getApplicationModelClass(applicationModelType); + if (!clazz.isPresent()) { + throw new UnmappedDataException(applicationModelType); + } + final EventStreamJsonMessage msg = fromJson(clazz.get(), payload); + msg.postFromJson(); + return msg; + } + + public T fromJson(final Class clazz, byte[] payload) { + try { + final T obj = getGson().fromJson(new String(payload, StandardCharsets.UTF_8), clazz); + obj.postFromJson(); + return obj; + } catch (Exception e) { + throw new DeserializationException(payload, e); + } + } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/InvalidDataException.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/InvalidDataException.java new file mode 100644 index 000000000..ff6e7f82c --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/InvalidDataException.java @@ -0,0 +1,12 @@ +package software.amazon.awssdk.eventstreamrpc; + +import software.amazon.awssdk.crt.eventstream.MessageType; + +/** + * + */ +public class InvalidDataException extends RuntimeException { + public InvalidDataException(MessageType unexpectedType) { + super(String.format("Unexpected message type received: %s", unexpectedType.name())); + } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/MessageAmendInfo.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/MessageAmendInfo.java new file mode 100644 index 000000000..0ee2377dd --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/MessageAmendInfo.java @@ -0,0 +1,37 @@ +package software.amazon.awssdk.eventstreamrpc; + +import software.amazon.awssdk.crt.eventstream.Header; + +import java.util.List; + +/** + * Small data class used to hold information that may be used differently depending on the context + * + * For sending messages, the headers stored in the object may be used to append to existing headers, + * where it won't overwrite an existing one that may be outgoing. + * + * The payload may or may not be used. Refer to the method that accepts or expects this structure to + * understand what parts are used and which are not. For example, for EventStreamRPCConnection's + * connect() method, the headers are used verbatim into the activate request and the payload too. + * + * For a sendStreamEvent(obj, amendInfo) hypothetical overload, only the headers that don't overwrite + * :content-type, service-model-type would be used, and the payload would be completely ignored from + * this structure. + */ +public class MessageAmendInfo { + private final List
headers; + private final byte[] payload; + + public MessageAmendInfo(List
headers, byte[] payload) { + this.headers = headers; + this.payload = payload; + } + + public List
getHeaders() { + return headers; + } + + public byte[] getPayload() { + return payload; + } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/OperationModelContext.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/OperationModelContext.java new file mode 100644 index 000000000..17a34ae8e --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/OperationModelContext.java @@ -0,0 +1,101 @@ +package software.amazon.awssdk.eventstreamrpc; + +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +import java.util.Optional; + +/** + * Interface used for both client and server to dictate how to handle operations modeled by implementing this + * interface. + * + * Smithy code generation should produce one of these per model, but we aren't going to take steps to prevent + * hand construction. + * + * @param + * @param + * @param + * @param + */ +public interface OperationModelContext + { + + /** + * Returns the service model which can look up all/any Java error class types if an + * operation throws it so the handling has a chance + * + * @return + */ + EventStreamRPCServiceModel getServiceModel(); + + /** + * Returns the canonical operation name associated with this context across any client language. + * Namespace included + * + * Example: aws.greengrass#SubscribeToTopic + * @return + */ + String getOperationName(); + + /** + * Returns the initial-request java class type + * @return + */ + Class getRequestTypeClass(); + + /** + * Returns the application model type string for the initial-request object + * @return + */ + String getRequestApplicationModelType(); + + /** + * Returns the initial-response java class type + * @return + */ + Class getResponseTypeClass(); + + /** + * Returns the application model type string for the initial response object + * @return + */ + String getResponseApplicationModelType(); + + /** + * Returns the streaming-request java class type + * @return + */ + Optional> getStreamingRequestTypeClass(); + + /** + * Returns the application model type of + * @return + */ + Optional getStreamingRequestApplicationModelType(); + + /** + * Returns the streaming-response java class type + * + * @return + */ + Optional> getStreamingResponseTypeClass(); + + /** + * Returns the streaming response application model string + * + * @return + */ + Optional getStreamingResponseApplicationModelType(); + + /** + * Returns true if there is a streaming request or response associated with the operation + * or both + * @return + */ + default boolean isStreamingOperation() { + return getStreamingRequestTypeClass().isPresent() || getStreamingResponseTypeClass().isPresent(); + } + +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/SerializationException.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/SerializationException.java new file mode 100644 index 000000000..69b0cf73b --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/SerializationException.java @@ -0,0 +1,11 @@ +package software.amazon.awssdk.eventstreamrpc; + +public class SerializationException extends RuntimeException { + public SerializationException(Object object) { + this(object, null); + } + + public SerializationException(Object object, Throwable cause) { + super("Could not serialize object: " + object.toString()); + } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/StreamEventPublisher.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/StreamEventPublisher.java new file mode 100644 index 000000000..db1e97d2b --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/StreamEventPublisher.java @@ -0,0 +1,27 @@ +package software.amazon.awssdk.eventstreamrpc; + +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +import java.util.concurrent.CompletableFuture; + +/** + * Interface to enable sending events over an open stream operation. + * + * @param Data to push over the open stream + */ +public interface StreamEventPublisher { + /** + * Publish an event over an open stream operation. + * + * @param streamEvent event to publish + * @return Completable future indicating flush of the event over the stream + */ + public CompletableFuture sendStreamEvent(final StreamEventType streamEvent); + + /** + * Closes the stream by sending an empty message + * + * @return Completable future indicating flush of the stream termination message + */ + public CompletableFuture closeStream(); +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/UnmappedDataException.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/UnmappedDataException.java new file mode 100644 index 000000000..ca47a67ed --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/UnmappedDataException.java @@ -0,0 +1,22 @@ +package software.amazon.awssdk.eventstreamrpc; + +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +/** + * Unmapped data exception is generated either on server or client side when recieving data + * over the wire and is unable to map properly to an expected type to be received + * for the operation. Or an exception (don't have to be called out). + */ +public class UnmappedDataException extends RuntimeException { + public UnmappedDataException(String applicationModelType) { + super(String.format("Cannot find Java class type for application model type: %s", applicationModelType)); + } + + public UnmappedDataException(Class expectedClass) { + super(String.format("Data does not map into Java class: %s", expectedClass.getCanonicalName())); + } + + public UnmappedDataException(String applicationModelType, Class expectedClass) { + super(String.format("Found model-type {%s} which does not map into Java class: %s", applicationModelType, expectedClass.getCanonicalName())); + } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/Version.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/Version.java new file mode 100644 index 000000000..7293b2fcb --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/Version.java @@ -0,0 +1,83 @@ +package software.amazon.awssdk.eventstreamrpc; + +import java.util.Objects; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * https://semver.org/ minus the labels + */ +public class Version implements Comparable { + private final static String PATTERN_REGEX_STRING = "^(\\d+)\\.(\\d+)\\.(\\d+)$"; + public final static Pattern PATTERN = Pattern.compile(PATTERN_REGEX_STRING); + + public static final int MAJOR = 0; + public static final int MINOR = 1; + public static final int PATCH = 0; + + private static final Version INSTANCE = new Version(MAJOR, MINOR, PATCH); + + public static Version getInstance() { return INSTANCE; } + + private final int major; + private final int minor; + private final int patch; + + private Version(int major, int minor, int patch) { + this.major = major; + this.minor = minor; + this.patch = patch; + } + + public String getVersionString() { + return String.format("%d.%d.%d", MAJOR, MINOR, PATCH); + } + + @Override + public String toString() { + return getVersionString(); + } + + public static Version fromString(final String versionString) { + if (versionString == null) { + throw new IllegalArgumentException("Cannot extract version from null string"); + } + final Matcher matcher = PATTERN.matcher(versionString); + if (!matcher.matches()) { + throw new IllegalArgumentException("Version string does not match regex: " + PATTERN_REGEX_STRING); + } + return new Version(Integer.parseInt(matcher.group(1)), + Integer.parseInt(matcher.group(2)), + Integer.parseInt(matcher.group(3))); + } + + @Override + public int hashCode() { + return Objects.hash(major, minor, patch); + } + + @Override + public boolean equals(final Object rhs) { + if (rhs == null) { + return false; + } + if (rhs instanceof Version) { + return compareTo((Version)rhs) == 0; + } + return false; + } + + @Override + public int compareTo(final Version rhs) { + if (rhs == null) { + throw new IllegalArgumentException("Cannot compare to null version!"); + } + if (major - rhs.major == 0) { + if (minor - rhs.minor == 0) { + return patch - rhs.patch; + } + return minor - rhs.minor; + } + return major - rhs.major; + } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/AccessDeniedException.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/AccessDeniedException.java new file mode 100644 index 000000000..ff827af0e --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/AccessDeniedException.java @@ -0,0 +1,32 @@ +package software.amazon.awssdk.eventstreamrpc.model; + +public class AccessDeniedException extends EventStreamOperationError { + public static final String ERROR_CODE = "aws#AccessDenied"; + + /** + * Message constructor may reveal what operation or resource was denied access + * or the principal/authN that was rejected + * + * Do not overexpose reason or logic for AccessDenied. Prefer internal logging + * + * @param serviceName + * @param message + */ + public AccessDeniedException(String serviceName, String message) { + super(serviceName, ERROR_CODE, message); + } + + public AccessDeniedException(String serviceName) { + super(serviceName, ERROR_CODE, "AccessDenied"); + } + + /** + * Returns the named model type. May be used for a header. + * + * @return + */ + @Override + public String getApplicationModelType() { + return ERROR_CODE; + } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/EventStreamError.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/EventStreamError.java new file mode 100644 index 000000000..97b79f37f --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/EventStreamError.java @@ -0,0 +1,56 @@ +package software.amazon.awssdk.eventstreamrpc.model; + +import software.amazon.awssdk.crt.eventstream.Header; +import software.amazon.awssdk.crt.eventstream.MessageType; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; + +import java.util.HashMap; +import java.util.List; + +/** + * Used to hold event stream RPC error messages that are not tied to any service. + * Message info comes back with a payload of JSON like: + * + * { "message": "..." } + * + * And we map that to this exception type to convey the information + */ +public class EventStreamError + extends RuntimeException { + + private final List
headers; + private final MessageType messageType; + + /** + * Put + * @param headers currently unusued, but likely a useful element for output + * @param payload + * @param messageType + * @return + */ + public static EventStreamError create(final List
headers, final byte[] payload, final MessageType messageType) { + final HashMap map = EventStreamRPCServiceModel.getStaticGson().fromJson(new String(payload), HashMap.class); + final String message = map.getOrDefault("message", "no message").toString(); + return new EventStreamError(String.format("%s: %s", messageType.name(), message), headers, messageType); + } + + public EventStreamError(String message) { + super(message); + this.messageType = null; + this.headers = null; + } + + public EventStreamError(String message, List
headers, MessageType messageType) { + super(message); + this.messageType = messageType; + this.headers = headers; + } + + public List
getMessageHeaders() { + return headers; + } + + public MessageType getMessageType() { + return messageType; + } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/EventStreamJsonMessage.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/EventStreamJsonMessage.java new file mode 100644 index 000000000..34fea6a99 --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/EventStreamJsonMessage.java @@ -0,0 +1,49 @@ +package software.amazon.awssdk.eventstreamrpc.model; + +import com.google.gson.Gson; + +import java.nio.charset.StandardCharsets; + +/** + * All generated model types implement this interface, including errors. + */ +public interface EventStreamJsonMessage { + /** + * Serialize this object into a JSON payload. Does not validate object being serialized + * + * WARNING: implementers should not override this method. This could be an abstract class + * with final implementations for serialization/deserialization. Or better yet, rework + * how it works + * + * @param gson + * @return + */ + default byte[] toPayload(final Gson gson) { + final String payloadString = gson.toJson(this); + if (payloadString == null || payloadString.isEmpty() || payloadString.equals("null")) { + return "{}".getBytes(StandardCharsets.UTF_8); + } + return gson.toJson(this).getBytes(StandardCharsets.UTF_8); + } + + default EventStreamJsonMessage fromJson(final Gson gson, byte[] payload) { + final String payloadString = new String(payload, StandardCharsets.UTF_8); + if (payloadString.equals("null")) { + return gson.fromJson("{}", this.getClass()); + } + return gson.fromJson(payloadString, this.getClass()); + } + + /** + * If anything needs to be done in memory after parsing from JSON, override and perform it here + */ + default void postFromJson() { } + + /** + * Returns the named model type. May be used for a header. + * @return + */ + public String getApplicationModelType(); + + default boolean isVoid() { return false; } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/EventStreamOperationError.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/EventStreamOperationError.java new file mode 100644 index 000000000..8bd8308cf --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/EventStreamOperationError.java @@ -0,0 +1,52 @@ +package software.amazon.awssdk.eventstreamrpc.model; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +/** + * Root error type returned by any continuation error message + * + * TODO: To mimic public AWS SDK clients, any exception thrown by + * a given service should inherit from it's generated model + * service exception. + */ +public abstract class EventStreamOperationError + extends RuntimeException + implements EventStreamJsonMessage { + @SerializedName("_service") + @Expose(serialize = true, deserialize = true) + private final String _service; + + @SerializedName("_message") + @Expose(serialize = true, deserialize = true) + private final String _message; + + @SerializedName("_errorCode") + @Expose(serialize = true, deserialize = true) + private final String _errorCode; + + public EventStreamOperationError(final String serviceName, final String errorCode, final String message) { + super(String.format("%s[%s]: %s", errorCode, serviceName, message)); + this._service = serviceName; + this._errorCode = errorCode; + this._message = message; + } + + public String getService() { + return _service; + } + + /** + * Likely overridden by a specific field defined in service-operation model + * @return + */ + public String getMessage() { + return _message; + } + + /** + * Likely subclasses will have a more limited set of valid error codes + * @return + */ + public String getErrorCode() { return _errorCode; } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/InternalServerException.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/InternalServerException.java new file mode 100644 index 000000000..bc415ae65 --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/InternalServerException.java @@ -0,0 +1,19 @@ +package software.amazon.awssdk.eventstreamrpc.model; + +public class InternalServerException extends EventStreamOperationError { + public static final String ERROR_CODE = "aws#InternalServerException"; + + public InternalServerException(String serviceName) { + super(serviceName, ERROR_CODE, "An internal server exception has occurred."); + } + + /** + * Returns the named model type. May be used for a header. + * + * @return + */ + @Override + public String getApplicationModelType() { + return ERROR_CODE; + } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/UnsupportedOperationException.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/UnsupportedOperationException.java new file mode 100644 index 000000000..46d3a23c9 --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/UnsupportedOperationException.java @@ -0,0 +1,19 @@ +package software.amazon.awssdk.eventstreamrpc.model; + +public class UnsupportedOperationException extends EventStreamOperationError { + public static final String ERROR_CODE = "aws#UnsupportedOperation"; + + public UnsupportedOperationException(String serviceName, String operationName) { + super(serviceName, ERROR_CODE, "UnsupportedOperation: " + operationName); + } + + /** + * Returns the named model type. May be used for a header. + * + * @return + */ + @Override + public String getApplicationModelType() { + return ERROR_CODE; + } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/ValidationException.java b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/ValidationException.java new file mode 100644 index 000000000..c062d35df --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/main/java/software/amazon/awssdk/eventstreamrpc/model/ValidationException.java @@ -0,0 +1,19 @@ +package software.amazon.awssdk.eventstreamrpc.model; + +public class ValidationException extends EventStreamOperationError { + public static final String ERROR_CODE = "aws#ValidationException"; + + public ValidationException(String serviceName, String message) { + super(serviceName, ERROR_CODE, message); + } + + /** + * Returns the named model type. May be used for a header. + * + * @return + */ + @Override + public String getApplicationModelType() { + return ERROR_CODE; + } +} diff --git a/sdk/greengrass/event-stream-rpc-model/src/test/java/software/amazon/awssdk/eventstreamrpc/ObjectModelTests.java b/sdk/greengrass/event-stream-rpc-model/src/test/java/software/amazon/awssdk/eventstreamrpc/ObjectModelTests.java new file mode 100644 index 000000000..ca73eb9b3 --- /dev/null +++ b/sdk/greengrass/event-stream-rpc-model/src/test/java/software/amazon/awssdk/eventstreamrpc/ObjectModelTests.java @@ -0,0 +1,167 @@ +package software.amazon.awssdk.eventstreamrpc; + +import org.json.JSONObject; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import software.amazon.awssdk.awstest.EchoTestRPCServiceModel; +import software.amazon.awssdk.awstest.model.*; + +import java.nio.charset.StandardCharsets; +import java.time.Instant; +import java.util.*; + +public class ObjectModelTests { + @Test + void testBasicModelSerialize() { + final String testString = "fooStringMessage"; + final EchoMessageRequest requestObject = new EchoMessageRequest(); + final MessageData data = new MessageData(); + data.setStringMessage(testString); + requestObject.setMessage(data); + final JSONObject jsonObject = new JSONObject(new String(EchoTestRPCServiceModel.getInstance().toJson(requestObject), StandardCharsets.UTF_8)); + Assertions.assertTrue(jsonObject.has("message")); + Assertions.assertTrue(jsonObject.getJSONObject("message").has("stringMessage")); + Assertions.assertEquals(testString, jsonObject.getJSONObject("message").getString("stringMessage")); + } + + @Test + void testBlobAndDeserializeEquivalence() { + byte[] testContent = new byte[] { (byte)0xDE, (byte)0xAD, (byte)0xBE, (byte)0xEF }; + final EchoMessageRequest requestObject = new EchoMessageRequest(); + final MessageData data = new MessageData(); + data.setBlobMessage(testContent); + requestObject.setMessage(data); + final JSONObject jsonObject = new JSONObject(new String(EchoTestRPCServiceModel.getInstance().toJson(requestObject), StandardCharsets.UTF_8)); + Assertions.assertTrue(jsonObject.has("message")); + Assertions.assertTrue(jsonObject.getJSONObject("message").has("blobMessage")); + Assertions.assertEquals(new String(Base64.getEncoder().encode(testContent), StandardCharsets.UTF_8), + jsonObject.getJSONObject("message").getString("blobMessage")); + + final EchoMessageRequest deserialized = EchoTestRPCServiceModel.getInstance().fromJson(EchoMessageRequest.class, + jsonObject.toString().getBytes(StandardCharsets.UTF_8)); + Assertions.assertTrue(requestObject.equals(deserialized)); + } + + @Test + void testEmptyObjectIsNotNullAndIsEmpty() { + final EchoMessageRequest requestObject = new EchoMessageRequest(); + final JSONObject jsonObject = new JSONObject(new String(EchoTestRPCServiceModel.getInstance().toJson(requestObject), StandardCharsets.UTF_8)); + Assertions.assertTrue(jsonObject.isEmpty()); + } + + @Test + void testNestedEqualsAndHashCodeObject() { + final String testString = "fooStringMessage"; + final EchoMessageRequest requestObject = new EchoMessageRequest(); + final MessageData data = new MessageData(); + data.setStringMessage(testString); + requestObject.setMessage(data); + + final String testString2 = "fooStringMessage"; + final EchoMessageRequest requestObject2 = new EchoMessageRequest(); + final MessageData data2 = new MessageData(); + data2.setStringMessage(testString2); + requestObject2.setMessage(data2); + + final String testString3 = "fooStringMessage-changed"; + final EchoMessageRequest requestObject3 = new EchoMessageRequest(); + final MessageData data3 = new MessageData(); + data3.setStringMessage(testString3); + requestObject3.setMessage(data3); + + //Test equals both ways + Assertions.assertTrue(requestObject.equals(requestObject2)); + Assertions.assertTrue(requestObject2.equals(requestObject)); + Assertions.assertFalse(requestObject.equals(null)); + Assertions.assertFalse(requestObject2.equals(null)); + Assertions.assertFalse(requestObject.equals(requestObject3)); + Assertions.assertTrue(requestObject.hashCode() == requestObject2.hashCode(), + "Hash code of nested equivalent objects are not equal!"); + Assertions.assertTrue(requestObject.hashCode() != requestObject3.hashCode(), + "Hash code of nested different objects should not be equals!"); + } + + @Test + void testSetRequiredFieldToNull() { + //"key" setKey() is a required field in the presence of a Pair + //however, it should never be verified client side via object model + final Pair pair = new Pair(); + pair.setKey(null); + pair.setValue(null); + } + + @Test + void testInstantSerialization() { + final MessageData data = new MessageData(); + final Instant someInstant = Instant.ofEpochSecond(1606173648); + data.setTimeMessage(someInstant); + + final JSONObject jsonObject = new JSONObject(EchoTestRPCServiceModel.getInstance().toJsonString(data)); + final MessageData dataDeserialized = EchoTestRPCServiceModel.getInstance().fromJson(MessageData.class, + jsonObject.toString().getBytes(StandardCharsets.UTF_8)); + + //Timestamp comparison is susceptible to precision issues due to double and serialization to JSON + Assertions.assertEquals(Math.abs(data.getTimeMessage().toEpochMilli()), Math.abs(dataDeserialized.getTimeMessage().toEpochMilli())); + } + + @Test + void testUnionShapeSerializeAndDeserialize() { + final EchoStreamingMessage streamingMessage = new EchoStreamingMessage(); + final Pair pair = new Pair(); + pair.setKey("fooKey"); + pair.setValue("barValue"); + streamingMessage.setKeyValuePair(pair); + final JSONObject obj = new JSONObject(EchoTestRPCServiceModel.getInstance().toJsonString(streamingMessage)); + Assertions.assertTrue(obj.has("keyValuePair")); + final EchoStreamingMessage deserialized = EchoTestRPCServiceModel.getInstance() + .fromJson(EchoStreamingMessage.class, obj.toString().getBytes(StandardCharsets.UTF_8)); + Assertions.assertEquals(EchoStreamingMessage.UnionMember.KEY_VALUE_PAIR, deserialized.getSetUnionMember()); + Assertions.assertTrue(deserialized.getKeyValuePair().equals(pair)); + + streamingMessage.selfDesignateSetUnionMember(); //shouldn't throw exception + Assertions.assertEquals(streamingMessage, deserialized); //and should remain the same internally + + //changing the set member should cause prior member to be null + //and self designating should not see more than one member + final MessageData data = new MessageData(); + data.setEnumMessage(FruitEnum.BANANA); + streamingMessage.setStreamMessage(data); + Assertions.assertNull(streamingMessage.getKeyValuePair()); + streamingMessage.selfDesignateSetUnionMember(); + } + + @Test + void testEnumSerializeDeserialize() { + final MessageData data = new MessageData(); + data.setEnumMessage(FruitEnum.BANANA); + final JSONObject obj = new JSONObject(EchoTestRPCServiceModel.getInstance().toJsonString(data)); + Assertions.assertTrue(obj.has("enumMessage")); + Assertions.assertEquals(FruitEnum.BANANA.getValue(), obj.get("enumMessage")); + final MessageData deserialized = EchoTestRPCServiceModel.getInstance() + .fromJson(MessageData.class, obj.toString().getBytes(StandardCharsets.UTF_8)); + Assertions.assertTrue(data.equals(deserialized)); + } + + @Test + void testDocumentNullSerialize() { + final MessageData data = new MessageData(); + final Map docPart = new HashMap<>(); + //TODO: Gson deserializes integers into float and causes equals checks to fail later + // questionable if this is considered improper + //docPart.put("int", Integer.valueOf(1)); + docPart.put("string", "bar"); + docPart.put("null", null); + docPart.put("nullStringValueLiteral", "null"); + data.setDocumentMessage(docPart); + + final JSONObject obj = new JSONObject(EchoTestRPCServiceModel.getInstance().toJsonString(data)); + final MessageData deserialized = EchoTestRPCServiceModel.getInstance() + .fromJson(MessageData.class, obj.toString().getBytes(StandardCharsets.UTF_8)); + + Assertions.assertTrue(data.equals(deserialized)); + //verifies that the null deserialized back + Assertions.assertTrue(deserialized.getDocumentMessage().containsKey("null")); + Assertions.assertFalse(deserialized.getDocumentMessage().containsKey("nullNotPresent")); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/CreateDebugPasswordResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/CreateDebugPasswordResponseHandler.java new file mode 100644 index 000000000..78b4bc211 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/CreateDebugPasswordResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.CreateDebugPasswordResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class CreateDebugPasswordResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public CreateDebugPasswordResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/CreateLocalDeploymentResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/CreateLocalDeploymentResponseHandler.java new file mode 100644 index 000000000..8c186b99f --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/CreateLocalDeploymentResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.CreateLocalDeploymentResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class CreateLocalDeploymentResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public CreateLocalDeploymentResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/DeferComponentUpdateResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/DeferComponentUpdateResponseHandler.java new file mode 100644 index 000000000..ddac267f8 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/DeferComponentUpdateResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.DeferComponentUpdateResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class DeferComponentUpdateResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public DeferComponentUpdateResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GetComponentDetailsResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GetComponentDetailsResponseHandler.java new file mode 100644 index 000000000..bcf1940f7 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GetComponentDetailsResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.GetComponentDetailsResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class GetComponentDetailsResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public GetComponentDetailsResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GetConfigurationResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GetConfigurationResponseHandler.java new file mode 100644 index 000000000..8e4d65bfd --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GetConfigurationResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.GetConfigurationResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class GetConfigurationResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public GetConfigurationResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GetLocalDeploymentStatusResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GetLocalDeploymentStatusResponseHandler.java new file mode 100644 index 000000000..28a8f4b7c --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GetLocalDeploymentStatusResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.GetLocalDeploymentStatusResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class GetLocalDeploymentStatusResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public GetLocalDeploymentStatusResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GetSecretValueResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GetSecretValueResponseHandler.java new file mode 100644 index 000000000..77da20b33 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GetSecretValueResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.GetSecretValueResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class GetSecretValueResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public GetSecretValueResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GreengrassCoreIPC.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GreengrassCoreIPC.java new file mode 100644 index 000000000..b9cb10c55 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GreengrassCoreIPC.java @@ -0,0 +1,109 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.ComponentUpdatePolicyEvents; +import software.amazon.awssdk.aws.greengrass.model.ConfigurationUpdateEvents; +import software.amazon.awssdk.aws.greengrass.model.CreateDebugPasswordRequest; +import software.amazon.awssdk.aws.greengrass.model.CreateLocalDeploymentRequest; +import software.amazon.awssdk.aws.greengrass.model.DeferComponentUpdateRequest; +import software.amazon.awssdk.aws.greengrass.model.GetComponentDetailsRequest; +import software.amazon.awssdk.aws.greengrass.model.GetConfigurationRequest; +import software.amazon.awssdk.aws.greengrass.model.GetLocalDeploymentStatusRequest; +import software.amazon.awssdk.aws.greengrass.model.GetSecretValueRequest; +import software.amazon.awssdk.aws.greengrass.model.IoTCoreMessage; +import software.amazon.awssdk.aws.greengrass.model.ListComponentsRequest; +import software.amazon.awssdk.aws.greengrass.model.ListLocalDeploymentsRequest; +import software.amazon.awssdk.aws.greengrass.model.PublishToIoTCoreRequest; +import software.amazon.awssdk.aws.greengrass.model.PublishToTopicRequest; +import software.amazon.awssdk.aws.greengrass.model.RestartComponentRequest; +import software.amazon.awssdk.aws.greengrass.model.SendConfigurationValidityReportRequest; +import software.amazon.awssdk.aws.greengrass.model.StopComponentRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToComponentUpdatesRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToConfigurationUpdateRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToIoTCoreRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToTopicRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToValidateConfigurationUpdatesRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscriptionResponseMessage; +import software.amazon.awssdk.aws.greengrass.model.UpdateConfigurationRequest; +import software.amazon.awssdk.aws.greengrass.model.UpdateStateRequest; +import software.amazon.awssdk.aws.greengrass.model.ValidateAuthorizationTokenRequest; +import software.amazon.awssdk.aws.greengrass.model.ValidateConfigurationUpdateEvents; +import software.amazon.awssdk.eventstreamrpc.StreamResponseHandler; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public interface GreengrassCoreIPC { + SubscribeToIoTCoreResponseHandler subscribeToIoTCore(final SubscribeToIoTCoreRequest request, + final Optional> streamResponseHandler); + + PublishToTopicResponseHandler publishToTopic(final PublishToTopicRequest request, + final Optional> streamResponseHandler); + + PublishToIoTCoreResponseHandler publishToIoTCore(final PublishToIoTCoreRequest request, + final Optional> streamResponseHandler); + + SubscribeToConfigurationUpdateResponseHandler subscribeToConfigurationUpdate( + final SubscribeToConfigurationUpdateRequest request, + final Optional> streamResponseHandler); + + ListComponentsResponseHandler listComponents(final ListComponentsRequest request, + final Optional> streamResponseHandler); + + CreateDebugPasswordResponseHandler createDebugPassword(final CreateDebugPasswordRequest request, + final Optional> streamResponseHandler); + + DeferComponentUpdateResponseHandler deferComponentUpdate( + final DeferComponentUpdateRequest request, + final Optional> streamResponseHandler); + + SendConfigurationValidityReportResponseHandler sendConfigurationValidityReport( + final SendConfigurationValidityReportRequest request, + final Optional> streamResponseHandler); + + UpdateConfigurationResponseHandler updateConfiguration(final UpdateConfigurationRequest request, + final Optional> streamResponseHandler); + + SubscribeToValidateConfigurationUpdatesResponseHandler subscribeToValidateConfigurationUpdates( + final SubscribeToValidateConfigurationUpdatesRequest request, + final Optional> streamResponseHandler); + + ValidateAuthorizationTokenResponseHandler validateAuthorizationToken( + final ValidateAuthorizationTokenRequest request, + final Optional> streamResponseHandler); + + RestartComponentResponseHandler restartComponent(final RestartComponentRequest request, + final Optional> streamResponseHandler); + + GetLocalDeploymentStatusResponseHandler getLocalDeploymentStatus( + final GetLocalDeploymentStatusRequest request, + final Optional> streamResponseHandler); + + GetSecretValueResponseHandler getSecretValue(final GetSecretValueRequest request, + final Optional> streamResponseHandler); + + UpdateStateResponseHandler updateState(final UpdateStateRequest request, + final Optional> streamResponseHandler); + + GetConfigurationResponseHandler getConfiguration(final GetConfigurationRequest request, + final Optional> streamResponseHandler); + + SubscribeToTopicResponseHandler subscribeToTopic(final SubscribeToTopicRequest request, + final Optional> streamResponseHandler); + + GetComponentDetailsResponseHandler getComponentDetails(final GetComponentDetailsRequest request, + final Optional> streamResponseHandler); + + SubscribeToComponentUpdatesResponseHandler subscribeToComponentUpdates( + final SubscribeToComponentUpdatesRequest request, + final Optional> streamResponseHandler); + + ListLocalDeploymentsResponseHandler listLocalDeployments( + final ListLocalDeploymentsRequest request, + final Optional> streamResponseHandler); + + StopComponentResponseHandler stopComponent(final StopComponentRequest request, + final Optional> streamResponseHandler); + + CreateLocalDeploymentResponseHandler createLocalDeployment( + final CreateLocalDeploymentRequest request, + final Optional> streamResponseHandler); +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GreengrassCoreIPCClient.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GreengrassCoreIPCClient.java new file mode 100644 index 000000000..a68a746c5 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GreengrassCoreIPCClient.java @@ -0,0 +1,208 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.ComponentUpdatePolicyEvents; +import software.amazon.awssdk.aws.greengrass.model.ConfigurationUpdateEvents; +import software.amazon.awssdk.aws.greengrass.model.CreateDebugPasswordRequest; +import software.amazon.awssdk.aws.greengrass.model.CreateLocalDeploymentRequest; +import software.amazon.awssdk.aws.greengrass.model.DeferComponentUpdateRequest; +import software.amazon.awssdk.aws.greengrass.model.GetComponentDetailsRequest; +import software.amazon.awssdk.aws.greengrass.model.GetConfigurationRequest; +import software.amazon.awssdk.aws.greengrass.model.GetLocalDeploymentStatusRequest; +import software.amazon.awssdk.aws.greengrass.model.GetSecretValueRequest; +import software.amazon.awssdk.aws.greengrass.model.IoTCoreMessage; +import software.amazon.awssdk.aws.greengrass.model.ListComponentsRequest; +import software.amazon.awssdk.aws.greengrass.model.ListLocalDeploymentsRequest; +import software.amazon.awssdk.aws.greengrass.model.PublishToIoTCoreRequest; +import software.amazon.awssdk.aws.greengrass.model.PublishToTopicRequest; +import software.amazon.awssdk.aws.greengrass.model.RestartComponentRequest; +import software.amazon.awssdk.aws.greengrass.model.SendConfigurationValidityReportRequest; +import software.amazon.awssdk.aws.greengrass.model.StopComponentRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToComponentUpdatesRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToConfigurationUpdateRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToIoTCoreRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToTopicRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToValidateConfigurationUpdatesRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscriptionResponseMessage; +import software.amazon.awssdk.aws.greengrass.model.UpdateConfigurationRequest; +import software.amazon.awssdk.aws.greengrass.model.UpdateStateRequest; +import software.amazon.awssdk.aws.greengrass.model.ValidateAuthorizationTokenRequest; +import software.amazon.awssdk.aws.greengrass.model.ValidateConfigurationUpdateEvents; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCClient; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCConnection; +import software.amazon.awssdk.eventstreamrpc.StreamResponseHandler; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class GreengrassCoreIPCClient extends EventStreamRPCClient implements GreengrassCoreIPC { + public GreengrassCoreIPCClient(final EventStreamRPCConnection connection) { + super(connection); + } + + @Override + public SubscribeToIoTCoreResponseHandler subscribeToIoTCore( + final SubscribeToIoTCoreRequest request, + final Optional> streamResponseHandler) { + final SubscribeToIoTCoreOperationContext operationContext = GreengrassCoreIPCServiceModel.getSubscribeToIoTCoreModelContext(); + return new SubscribeToIoTCoreResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public PublishToTopicResponseHandler publishToTopic(final PublishToTopicRequest request, + final Optional> streamResponseHandler) { + final PublishToTopicOperationContext operationContext = GreengrassCoreIPCServiceModel.getPublishToTopicModelContext(); + return new PublishToTopicResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public PublishToIoTCoreResponseHandler publishToIoTCore(final PublishToIoTCoreRequest request, + final Optional> streamResponseHandler) { + final PublishToIoTCoreOperationContext operationContext = GreengrassCoreIPCServiceModel.getPublishToIoTCoreModelContext(); + return new PublishToIoTCoreResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public SubscribeToConfigurationUpdateResponseHandler subscribeToConfigurationUpdate( + final SubscribeToConfigurationUpdateRequest request, + final Optional> streamResponseHandler) { + final SubscribeToConfigurationUpdateOperationContext operationContext = GreengrassCoreIPCServiceModel.getSubscribeToConfigurationUpdateModelContext(); + return new SubscribeToConfigurationUpdateResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public ListComponentsResponseHandler listComponents(final ListComponentsRequest request, + final Optional> streamResponseHandler) { + final ListComponentsOperationContext operationContext = GreengrassCoreIPCServiceModel.getListComponentsModelContext(); + return new ListComponentsResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public CreateDebugPasswordResponseHandler createDebugPassword( + final CreateDebugPasswordRequest request, + final Optional> streamResponseHandler) { + final CreateDebugPasswordOperationContext operationContext = GreengrassCoreIPCServiceModel.getCreateDebugPasswordModelContext(); + return new CreateDebugPasswordResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public DeferComponentUpdateResponseHandler deferComponentUpdate( + final DeferComponentUpdateRequest request, + final Optional> streamResponseHandler) { + final DeferComponentUpdateOperationContext operationContext = GreengrassCoreIPCServiceModel.getDeferComponentUpdateModelContext(); + return new DeferComponentUpdateResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public SendConfigurationValidityReportResponseHandler sendConfigurationValidityReport( + final SendConfigurationValidityReportRequest request, + final Optional> streamResponseHandler) { + final SendConfigurationValidityReportOperationContext operationContext = GreengrassCoreIPCServiceModel.getSendConfigurationValidityReportModelContext(); + return new SendConfigurationValidityReportResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public UpdateConfigurationResponseHandler updateConfiguration( + final UpdateConfigurationRequest request, + final Optional> streamResponseHandler) { + final UpdateConfigurationOperationContext operationContext = GreengrassCoreIPCServiceModel.getUpdateConfigurationModelContext(); + return new UpdateConfigurationResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public SubscribeToValidateConfigurationUpdatesResponseHandler subscribeToValidateConfigurationUpdates( + final SubscribeToValidateConfigurationUpdatesRequest request, + final Optional> streamResponseHandler) { + final SubscribeToValidateConfigurationUpdatesOperationContext operationContext = GreengrassCoreIPCServiceModel.getSubscribeToValidateConfigurationUpdatesModelContext(); + return new SubscribeToValidateConfigurationUpdatesResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public ValidateAuthorizationTokenResponseHandler validateAuthorizationToken( + final ValidateAuthorizationTokenRequest request, + final Optional> streamResponseHandler) { + final ValidateAuthorizationTokenOperationContext operationContext = GreengrassCoreIPCServiceModel.getValidateAuthorizationTokenModelContext(); + return new ValidateAuthorizationTokenResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public RestartComponentResponseHandler restartComponent(final RestartComponentRequest request, + final Optional> streamResponseHandler) { + final RestartComponentOperationContext operationContext = GreengrassCoreIPCServiceModel.getRestartComponentModelContext(); + return new RestartComponentResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public GetLocalDeploymentStatusResponseHandler getLocalDeploymentStatus( + final GetLocalDeploymentStatusRequest request, + final Optional> streamResponseHandler) { + final GetLocalDeploymentStatusOperationContext operationContext = GreengrassCoreIPCServiceModel.getGetLocalDeploymentStatusModelContext(); + return new GetLocalDeploymentStatusResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public GetSecretValueResponseHandler getSecretValue(final GetSecretValueRequest request, + final Optional> streamResponseHandler) { + final GetSecretValueOperationContext operationContext = GreengrassCoreIPCServiceModel.getGetSecretValueModelContext(); + return new GetSecretValueResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public UpdateStateResponseHandler updateState(final UpdateStateRequest request, + final Optional> streamResponseHandler) { + final UpdateStateOperationContext operationContext = GreengrassCoreIPCServiceModel.getUpdateStateModelContext(); + return new UpdateStateResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public GetConfigurationResponseHandler getConfiguration(final GetConfigurationRequest request, + final Optional> streamResponseHandler) { + final GetConfigurationOperationContext operationContext = GreengrassCoreIPCServiceModel.getGetConfigurationModelContext(); + return new GetConfigurationResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public SubscribeToTopicResponseHandler subscribeToTopic(final SubscribeToTopicRequest request, + final Optional> streamResponseHandler) { + final SubscribeToTopicOperationContext operationContext = GreengrassCoreIPCServiceModel.getSubscribeToTopicModelContext(); + return new SubscribeToTopicResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public GetComponentDetailsResponseHandler getComponentDetails( + final GetComponentDetailsRequest request, + final Optional> streamResponseHandler) { + final GetComponentDetailsOperationContext operationContext = GreengrassCoreIPCServiceModel.getGetComponentDetailsModelContext(); + return new GetComponentDetailsResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public SubscribeToComponentUpdatesResponseHandler subscribeToComponentUpdates( + final SubscribeToComponentUpdatesRequest request, + final Optional> streamResponseHandler) { + final SubscribeToComponentUpdatesOperationContext operationContext = GreengrassCoreIPCServiceModel.getSubscribeToComponentUpdatesModelContext(); + return new SubscribeToComponentUpdatesResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public ListLocalDeploymentsResponseHandler listLocalDeployments( + final ListLocalDeploymentsRequest request, + final Optional> streamResponseHandler) { + final ListLocalDeploymentsOperationContext operationContext = GreengrassCoreIPCServiceModel.getListLocalDeploymentsModelContext(); + return new ListLocalDeploymentsResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public StopComponentResponseHandler stopComponent(final StopComponentRequest request, + final Optional> streamResponseHandler) { + final StopComponentOperationContext operationContext = GreengrassCoreIPCServiceModel.getStopComponentModelContext(); + return new StopComponentResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } + + @Override + public CreateLocalDeploymentResponseHandler createLocalDeployment( + final CreateLocalDeploymentRequest request, + final Optional> streamResponseHandler) { + final CreateLocalDeploymentOperationContext operationContext = GreengrassCoreIPCServiceModel.getCreateLocalDeploymentModelContext(); + return new CreateLocalDeploymentResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler)); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/ListComponentsResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/ListComponentsResponseHandler.java new file mode 100644 index 000000000..1b250f4fe --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/ListComponentsResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.ListComponentsResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class ListComponentsResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public ListComponentsResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/ListLocalDeploymentsResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/ListLocalDeploymentsResponseHandler.java new file mode 100644 index 000000000..056b6668b --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/ListLocalDeploymentsResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.ListLocalDeploymentsResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class ListLocalDeploymentsResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public ListLocalDeploymentsResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/PublishToIoTCoreResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/PublishToIoTCoreResponseHandler.java new file mode 100644 index 000000000..6b156b0c7 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/PublishToIoTCoreResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.PublishToIoTCoreResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class PublishToIoTCoreResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public PublishToIoTCoreResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/PublishToTopicResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/PublishToTopicResponseHandler.java new file mode 100644 index 000000000..9e809dd66 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/PublishToTopicResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.PublishToTopicResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class PublishToTopicResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public PublishToTopicResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/RestartComponentResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/RestartComponentResponseHandler.java new file mode 100644 index 000000000..f026dad12 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/RestartComponentResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.RestartComponentResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class RestartComponentResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public RestartComponentResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SendConfigurationValidityReportResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SendConfigurationValidityReportResponseHandler.java new file mode 100644 index 000000000..5499619e7 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SendConfigurationValidityReportResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.SendConfigurationValidityReportResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class SendConfigurationValidityReportResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public SendConfigurationValidityReportResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/StopComponentResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/StopComponentResponseHandler.java new file mode 100644 index 000000000..983ef8300 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/StopComponentResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.StopComponentResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class StopComponentResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public StopComponentResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToComponentUpdatesResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToComponentUpdatesResponseHandler.java new file mode 100644 index 000000000..fe61c8156 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToComponentUpdatesResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToComponentUpdatesResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class SubscribeToComponentUpdatesResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public SubscribeToComponentUpdatesResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToConfigurationUpdateResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToConfigurationUpdateResponseHandler.java new file mode 100644 index 000000000..dc419a80a --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToConfigurationUpdateResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToConfigurationUpdateResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class SubscribeToConfigurationUpdateResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public SubscribeToConfigurationUpdateResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToIoTCoreResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToIoTCoreResponseHandler.java new file mode 100644 index 000000000..a59919ec0 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToIoTCoreResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToIoTCoreResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class SubscribeToIoTCoreResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public SubscribeToIoTCoreResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToTopicResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToTopicResponseHandler.java new file mode 100644 index 000000000..5f78b1331 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToTopicResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToTopicResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class SubscribeToTopicResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public SubscribeToTopicResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToValidateConfigurationUpdatesResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToValidateConfigurationUpdatesResponseHandler.java new file mode 100644 index 000000000..0c8c3b569 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/SubscribeToValidateConfigurationUpdatesResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToValidateConfigurationUpdatesResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class SubscribeToValidateConfigurationUpdatesResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public SubscribeToValidateConfigurationUpdatesResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/UpdateConfigurationResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/UpdateConfigurationResponseHandler.java new file mode 100644 index 000000000..743e9d429 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/UpdateConfigurationResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.UpdateConfigurationResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class UpdateConfigurationResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public UpdateConfigurationResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/UpdateStateResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/UpdateStateResponseHandler.java new file mode 100644 index 000000000..e74301a7d --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/UpdateStateResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.UpdateStateResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class UpdateStateResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public UpdateStateResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/ValidateAuthorizationTokenResponseHandler.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/ValidateAuthorizationTokenResponseHandler.java new file mode 100644 index 000000000..765215ce6 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/ValidateAuthorizationTokenResponseHandler.java @@ -0,0 +1,43 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Override; +import java.lang.Void; +import java.util.concurrent.CompletableFuture; +import software.amazon.awssdk.aws.greengrass.model.ValidateAuthorizationTokenResponse; +import software.amazon.awssdk.eventstreamrpc.OperationResponse; +import software.amazon.awssdk.eventstreamrpc.StreamResponse; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public final class ValidateAuthorizationTokenResponseHandler implements StreamResponse { + private final OperationResponse operationResponse; + + public ValidateAuthorizationTokenResponseHandler( + final OperationResponse operationResponse) { + this.operationResponse = operationResponse; + } + + @Override + public CompletableFuture getRequestFlushFuture() { + return operationResponse.getRequestFlushFuture(); + } + + @Override + public CompletableFuture getResponse() { + return operationResponse.getResponse(); + } + + @Override + public CompletableFuture sendStreamEvent(final EventStreamJsonMessage event) { + return operationResponse.sendStreamEvent(event); + } + + @Override + public CompletableFuture closeStream() { + return operationResponse.closeStream(); + } + + @Override + public boolean isClosed() { + return operationResponse.isClosed(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/CreateDebugPasswordOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/CreateDebugPasswordOperationContext.java new file mode 100644 index 000000000..8bfab27fd --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/CreateDebugPasswordOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.CreateDebugPasswordRequest; +import software.amazon.awssdk.aws.greengrass.model.CreateDebugPasswordResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class CreateDebugPasswordOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.CREATE_DEBUG_PASSWORD; + } + + @Override + public Class getRequestTypeClass() { + return CreateDebugPasswordRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return CreateDebugPasswordResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return CreateDebugPasswordRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return CreateDebugPasswordResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/CreateLocalDeploymentOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/CreateLocalDeploymentOperationContext.java new file mode 100644 index 000000000..109ee5373 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/CreateLocalDeploymentOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.CreateLocalDeploymentRequest; +import software.amazon.awssdk.aws.greengrass.model.CreateLocalDeploymentResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class CreateLocalDeploymentOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.CREATE_LOCAL_DEPLOYMENT; + } + + @Override + public Class getRequestTypeClass() { + return CreateLocalDeploymentRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return CreateLocalDeploymentResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return CreateLocalDeploymentRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return CreateLocalDeploymentResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/DeferComponentUpdateOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/DeferComponentUpdateOperationContext.java new file mode 100644 index 000000000..f0e7aca7d --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/DeferComponentUpdateOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.DeferComponentUpdateRequest; +import software.amazon.awssdk.aws.greengrass.model.DeferComponentUpdateResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class DeferComponentUpdateOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.DEFER_COMPONENT_UPDATE; + } + + @Override + public Class getRequestTypeClass() { + return DeferComponentUpdateRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return DeferComponentUpdateResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return DeferComponentUpdateRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return DeferComponentUpdateResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GetComponentDetailsOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GetComponentDetailsOperationContext.java new file mode 100644 index 000000000..46021fccf --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GetComponentDetailsOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.GetComponentDetailsRequest; +import software.amazon.awssdk.aws.greengrass.model.GetComponentDetailsResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class GetComponentDetailsOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.GET_COMPONENT_DETAILS; + } + + @Override + public Class getRequestTypeClass() { + return GetComponentDetailsRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return GetComponentDetailsResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return GetComponentDetailsRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return GetComponentDetailsResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GetConfigurationOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GetConfigurationOperationContext.java new file mode 100644 index 000000000..ca224c9ae --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GetConfigurationOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.GetConfigurationRequest; +import software.amazon.awssdk.aws.greengrass.model.GetConfigurationResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class GetConfigurationOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.GET_CONFIGURATION; + } + + @Override + public Class getRequestTypeClass() { + return GetConfigurationRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return GetConfigurationResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return GetConfigurationRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return GetConfigurationResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GetLocalDeploymentStatusOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GetLocalDeploymentStatusOperationContext.java new file mode 100644 index 000000000..4e614afbb --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GetLocalDeploymentStatusOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.GetLocalDeploymentStatusRequest; +import software.amazon.awssdk.aws.greengrass.model.GetLocalDeploymentStatusResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class GetLocalDeploymentStatusOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.GET_LOCAL_DEPLOYMENT_STATUS; + } + + @Override + public Class getRequestTypeClass() { + return GetLocalDeploymentStatusRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return GetLocalDeploymentStatusResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return GetLocalDeploymentStatusRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return GetLocalDeploymentStatusResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GetSecretValueOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GetSecretValueOperationContext.java new file mode 100644 index 000000000..e690429bd --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GetSecretValueOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.GetSecretValueRequest; +import software.amazon.awssdk.aws.greengrass.model.GetSecretValueResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class GetSecretValueOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.GET_SECRET_VALUE; + } + + @Override + public Class getRequestTypeClass() { + return GetSecretValueRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return GetSecretValueResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return GetSecretValueRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return GetSecretValueResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GreengrassCoreIPCServiceModel.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GreengrassCoreIPCServiceModel.java new file mode 100644 index 000000000..a6df68b68 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GreengrassCoreIPCServiceModel.java @@ -0,0 +1,444 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import software.amazon.awssdk.aws.greengrass.model.BinaryMessage; +import software.amazon.awssdk.aws.greengrass.model.ComponentDetails; +import software.amazon.awssdk.aws.greengrass.model.ComponentNotFoundError; +import software.amazon.awssdk.aws.greengrass.model.ComponentUpdatePolicyEvents; +import software.amazon.awssdk.aws.greengrass.model.ConfigurationUpdateEvent; +import software.amazon.awssdk.aws.greengrass.model.ConfigurationUpdateEvents; +import software.amazon.awssdk.aws.greengrass.model.ConfigurationValidityReport; +import software.amazon.awssdk.aws.greengrass.model.ConfigurationValidityStatus; +import software.amazon.awssdk.aws.greengrass.model.ConflictError; +import software.amazon.awssdk.aws.greengrass.model.CreateDebugPasswordRequest; +import software.amazon.awssdk.aws.greengrass.model.CreateDebugPasswordResponse; +import software.amazon.awssdk.aws.greengrass.model.CreateLocalDeploymentRequest; +import software.amazon.awssdk.aws.greengrass.model.CreateLocalDeploymentResponse; +import software.amazon.awssdk.aws.greengrass.model.DeferComponentUpdateRequest; +import software.amazon.awssdk.aws.greengrass.model.DeferComponentUpdateResponse; +import software.amazon.awssdk.aws.greengrass.model.DeploymentStatus; +import software.amazon.awssdk.aws.greengrass.model.FailedUpdateConditionCheckError; +import software.amazon.awssdk.aws.greengrass.model.GetComponentDetailsRequest; +import software.amazon.awssdk.aws.greengrass.model.GetComponentDetailsResponse; +import software.amazon.awssdk.aws.greengrass.model.GetConfigurationRequest; +import software.amazon.awssdk.aws.greengrass.model.GetConfigurationResponse; +import software.amazon.awssdk.aws.greengrass.model.GetLocalDeploymentStatusRequest; +import software.amazon.awssdk.aws.greengrass.model.GetLocalDeploymentStatusResponse; +import software.amazon.awssdk.aws.greengrass.model.GetSecretValueRequest; +import software.amazon.awssdk.aws.greengrass.model.GetSecretValueResponse; +import software.amazon.awssdk.aws.greengrass.model.InvalidArgumentsError; +import software.amazon.awssdk.aws.greengrass.model.InvalidArtifactsDirectoryPathError; +import software.amazon.awssdk.aws.greengrass.model.InvalidRecipeDirectoryPathError; +import software.amazon.awssdk.aws.greengrass.model.InvalidTokenError; +import software.amazon.awssdk.aws.greengrass.model.IoTCoreMessage; +import software.amazon.awssdk.aws.greengrass.model.JsonMessage; +import software.amazon.awssdk.aws.greengrass.model.LifecycleState; +import software.amazon.awssdk.aws.greengrass.model.ListComponentsRequest; +import software.amazon.awssdk.aws.greengrass.model.ListComponentsResponse; +import software.amazon.awssdk.aws.greengrass.model.ListLocalDeploymentsRequest; +import software.amazon.awssdk.aws.greengrass.model.ListLocalDeploymentsResponse; +import software.amazon.awssdk.aws.greengrass.model.LocalDeployment; +import software.amazon.awssdk.aws.greengrass.model.MQTTMessage; +import software.amazon.awssdk.aws.greengrass.model.PostComponentUpdateEvent; +import software.amazon.awssdk.aws.greengrass.model.PreComponentUpdateEvent; +import software.amazon.awssdk.aws.greengrass.model.PublishMessage; +import software.amazon.awssdk.aws.greengrass.model.PublishToIoTCoreRequest; +import software.amazon.awssdk.aws.greengrass.model.PublishToIoTCoreResponse; +import software.amazon.awssdk.aws.greengrass.model.PublishToTopicRequest; +import software.amazon.awssdk.aws.greengrass.model.PublishToTopicResponse; +import software.amazon.awssdk.aws.greengrass.model.QOS; +import software.amazon.awssdk.aws.greengrass.model.ReportedLifecycleState; +import software.amazon.awssdk.aws.greengrass.model.RequestStatus; +import software.amazon.awssdk.aws.greengrass.model.ResourceNotFoundError; +import software.amazon.awssdk.aws.greengrass.model.RestartComponentRequest; +import software.amazon.awssdk.aws.greengrass.model.RestartComponentResponse; +import software.amazon.awssdk.aws.greengrass.model.RunWithInfo; +import software.amazon.awssdk.aws.greengrass.model.SecretValue; +import software.amazon.awssdk.aws.greengrass.model.SendConfigurationValidityReportRequest; +import software.amazon.awssdk.aws.greengrass.model.SendConfigurationValidityReportResponse; +import software.amazon.awssdk.aws.greengrass.model.ServiceError; +import software.amazon.awssdk.aws.greengrass.model.StopComponentRequest; +import software.amazon.awssdk.aws.greengrass.model.StopComponentResponse; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToComponentUpdatesRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToComponentUpdatesResponse; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToConfigurationUpdateRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToConfigurationUpdateResponse; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToIoTCoreRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToIoTCoreResponse; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToTopicRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToTopicResponse; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToValidateConfigurationUpdatesRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToValidateConfigurationUpdatesResponse; +import software.amazon.awssdk.aws.greengrass.model.SubscriptionResponseMessage; +import software.amazon.awssdk.aws.greengrass.model.UnauthorizedError; +import software.amazon.awssdk.aws.greengrass.model.UpdateConfigurationRequest; +import software.amazon.awssdk.aws.greengrass.model.UpdateConfigurationResponse; +import software.amazon.awssdk.aws.greengrass.model.UpdateStateRequest; +import software.amazon.awssdk.aws.greengrass.model.UpdateStateResponse; +import software.amazon.awssdk.aws.greengrass.model.ValidateAuthorizationTokenRequest; +import software.amazon.awssdk.aws.greengrass.model.ValidateAuthorizationTokenResponse; +import software.amazon.awssdk.aws.greengrass.model.ValidateConfigurationUpdateEvent; +import software.amazon.awssdk.aws.greengrass.model.ValidateConfigurationUpdateEvents; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class GreengrassCoreIPCServiceModel extends EventStreamRPCServiceModel { + private static final GreengrassCoreIPCServiceModel INSTANCE = new GreengrassCoreIPCServiceModel(); + + public static final String SERVICE_NAMESPACE = "aws.greengrass"; + + public static final String SERVICE_NAME = SERVICE_NAMESPACE + "#" + "GreengrassCoreIPC"; + + private static final Set SERVICE_OPERATION_SET = new HashSet(); + + private static final Map SERVICE_OPERATION_MODEL_MAP = new HashMap(); + + private static final Map> SERVICE_OBJECT_MODEL_MAP = new HashMap>(); + + public static final String SUBSCRIBE_TO_IOT_CORE = SERVICE_NAMESPACE + "#" + "SubscribeToIoTCore"; + + private static final SubscribeToIoTCoreOperationContext _SUBSCRIBE_TO_IOT_CORE_OPERATION_CONTEXT = new SubscribeToIoTCoreOperationContext(); + + public static final String PUBLISH_TO_TOPIC = SERVICE_NAMESPACE + "#" + "PublishToTopic"; + + private static final PublishToTopicOperationContext _PUBLISH_TO_TOPIC_OPERATION_CONTEXT = new PublishToTopicOperationContext(); + + public static final String PUBLISH_TO_IOT_CORE = SERVICE_NAMESPACE + "#" + "PublishToIoTCore"; + + private static final PublishToIoTCoreOperationContext _PUBLISH_TO_IOT_CORE_OPERATION_CONTEXT = new PublishToIoTCoreOperationContext(); + + public static final String SUBSCRIBE_TO_CONFIGURATION_UPDATE = SERVICE_NAMESPACE + "#" + "SubscribeToConfigurationUpdate"; + + private static final SubscribeToConfigurationUpdateOperationContext _SUBSCRIBE_TO_CONFIGURATION_UPDATE_OPERATION_CONTEXT = new SubscribeToConfigurationUpdateOperationContext(); + + public static final String LIST_COMPONENTS = SERVICE_NAMESPACE + "#" + "ListComponents"; + + private static final ListComponentsOperationContext _LIST_COMPONENTS_OPERATION_CONTEXT = new ListComponentsOperationContext(); + + public static final String CREATE_DEBUG_PASSWORD = SERVICE_NAMESPACE + "#" + "CreateDebugPassword"; + + private static final CreateDebugPasswordOperationContext _CREATE_DEBUG_PASSWORD_OPERATION_CONTEXT = new CreateDebugPasswordOperationContext(); + + public static final String DEFER_COMPONENT_UPDATE = SERVICE_NAMESPACE + "#" + "DeferComponentUpdate"; + + private static final DeferComponentUpdateOperationContext _DEFER_COMPONENT_UPDATE_OPERATION_CONTEXT = new DeferComponentUpdateOperationContext(); + + public static final String SEND_CONFIGURATION_VALIDITY_REPORT = SERVICE_NAMESPACE + "#" + "SendConfigurationValidityReport"; + + private static final SendConfigurationValidityReportOperationContext _SEND_CONFIGURATION_VALIDITY_REPORT_OPERATION_CONTEXT = new SendConfigurationValidityReportOperationContext(); + + public static final String UPDATE_CONFIGURATION = SERVICE_NAMESPACE + "#" + "UpdateConfiguration"; + + private static final UpdateConfigurationOperationContext _UPDATE_CONFIGURATION_OPERATION_CONTEXT = new UpdateConfigurationOperationContext(); + + public static final String SUBSCRIBE_TO_VALIDATE_CONFIGURATION_UPDATES = SERVICE_NAMESPACE + "#" + "SubscribeToValidateConfigurationUpdates"; + + private static final SubscribeToValidateConfigurationUpdatesOperationContext _SUBSCRIBE_TO_VALIDATE_CONFIGURATION_UPDATES_OPERATION_CONTEXT = new SubscribeToValidateConfigurationUpdatesOperationContext(); + + public static final String VALIDATE_AUTHORIZATION_TOKEN = SERVICE_NAMESPACE + "#" + "ValidateAuthorizationToken"; + + private static final ValidateAuthorizationTokenOperationContext _VALIDATE_AUTHORIZATION_TOKEN_OPERATION_CONTEXT = new ValidateAuthorizationTokenOperationContext(); + + public static final String RESTART_COMPONENT = SERVICE_NAMESPACE + "#" + "RestartComponent"; + + private static final RestartComponentOperationContext _RESTART_COMPONENT_OPERATION_CONTEXT = new RestartComponentOperationContext(); + + public static final String GET_LOCAL_DEPLOYMENT_STATUS = SERVICE_NAMESPACE + "#" + "GetLocalDeploymentStatus"; + + private static final GetLocalDeploymentStatusOperationContext _GET_LOCAL_DEPLOYMENT_STATUS_OPERATION_CONTEXT = new GetLocalDeploymentStatusOperationContext(); + + public static final String GET_SECRET_VALUE = SERVICE_NAMESPACE + "#" + "GetSecretValue"; + + private static final GetSecretValueOperationContext _GET_SECRET_VALUE_OPERATION_CONTEXT = new GetSecretValueOperationContext(); + + public static final String UPDATE_STATE = SERVICE_NAMESPACE + "#" + "UpdateState"; + + private static final UpdateStateOperationContext _UPDATE_STATE_OPERATION_CONTEXT = new UpdateStateOperationContext(); + + public static final String GET_CONFIGURATION = SERVICE_NAMESPACE + "#" + "GetConfiguration"; + + private static final GetConfigurationOperationContext _GET_CONFIGURATION_OPERATION_CONTEXT = new GetConfigurationOperationContext(); + + public static final String SUBSCRIBE_TO_TOPIC = SERVICE_NAMESPACE + "#" + "SubscribeToTopic"; + + private static final SubscribeToTopicOperationContext _SUBSCRIBE_TO_TOPIC_OPERATION_CONTEXT = new SubscribeToTopicOperationContext(); + + public static final String GET_COMPONENT_DETAILS = SERVICE_NAMESPACE + "#" + "GetComponentDetails"; + + private static final GetComponentDetailsOperationContext _GET_COMPONENT_DETAILS_OPERATION_CONTEXT = new GetComponentDetailsOperationContext(); + + public static final String SUBSCRIBE_TO_COMPONENT_UPDATES = SERVICE_NAMESPACE + "#" + "SubscribeToComponentUpdates"; + + private static final SubscribeToComponentUpdatesOperationContext _SUBSCRIBE_TO_COMPONENT_UPDATES_OPERATION_CONTEXT = new SubscribeToComponentUpdatesOperationContext(); + + public static final String LIST_LOCAL_DEPLOYMENTS = SERVICE_NAMESPACE + "#" + "ListLocalDeployments"; + + private static final ListLocalDeploymentsOperationContext _LIST_LOCAL_DEPLOYMENTS_OPERATION_CONTEXT = new ListLocalDeploymentsOperationContext(); + + public static final String STOP_COMPONENT = SERVICE_NAMESPACE + "#" + "StopComponent"; + + private static final StopComponentOperationContext _STOP_COMPONENT_OPERATION_CONTEXT = new StopComponentOperationContext(); + + public static final String CREATE_LOCAL_DEPLOYMENT = SERVICE_NAMESPACE + "#" + "CreateLocalDeployment"; + + private static final CreateLocalDeploymentOperationContext _CREATE_LOCAL_DEPLOYMENT_OPERATION_CONTEXT = new CreateLocalDeploymentOperationContext(); + + static { + SERVICE_OPERATION_MODEL_MAP.put(SUBSCRIBE_TO_IOT_CORE, _SUBSCRIBE_TO_IOT_CORE_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(SUBSCRIBE_TO_IOT_CORE); + SERVICE_OPERATION_MODEL_MAP.put(PUBLISH_TO_TOPIC, _PUBLISH_TO_TOPIC_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(PUBLISH_TO_TOPIC); + SERVICE_OPERATION_MODEL_MAP.put(PUBLISH_TO_IOT_CORE, _PUBLISH_TO_IOT_CORE_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(PUBLISH_TO_IOT_CORE); + SERVICE_OPERATION_MODEL_MAP.put(SUBSCRIBE_TO_CONFIGURATION_UPDATE, _SUBSCRIBE_TO_CONFIGURATION_UPDATE_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(SUBSCRIBE_TO_CONFIGURATION_UPDATE); + SERVICE_OPERATION_MODEL_MAP.put(LIST_COMPONENTS, _LIST_COMPONENTS_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(LIST_COMPONENTS); + SERVICE_OPERATION_MODEL_MAP.put(CREATE_DEBUG_PASSWORD, _CREATE_DEBUG_PASSWORD_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(CREATE_DEBUG_PASSWORD); + SERVICE_OPERATION_MODEL_MAP.put(DEFER_COMPONENT_UPDATE, _DEFER_COMPONENT_UPDATE_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(DEFER_COMPONENT_UPDATE); + SERVICE_OPERATION_MODEL_MAP.put(SEND_CONFIGURATION_VALIDITY_REPORT, _SEND_CONFIGURATION_VALIDITY_REPORT_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(SEND_CONFIGURATION_VALIDITY_REPORT); + SERVICE_OPERATION_MODEL_MAP.put(UPDATE_CONFIGURATION, _UPDATE_CONFIGURATION_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(UPDATE_CONFIGURATION); + SERVICE_OPERATION_MODEL_MAP.put(SUBSCRIBE_TO_VALIDATE_CONFIGURATION_UPDATES, _SUBSCRIBE_TO_VALIDATE_CONFIGURATION_UPDATES_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(SUBSCRIBE_TO_VALIDATE_CONFIGURATION_UPDATES); + SERVICE_OPERATION_MODEL_MAP.put(VALIDATE_AUTHORIZATION_TOKEN, _VALIDATE_AUTHORIZATION_TOKEN_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(VALIDATE_AUTHORIZATION_TOKEN); + SERVICE_OPERATION_MODEL_MAP.put(RESTART_COMPONENT, _RESTART_COMPONENT_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(RESTART_COMPONENT); + SERVICE_OPERATION_MODEL_MAP.put(GET_LOCAL_DEPLOYMENT_STATUS, _GET_LOCAL_DEPLOYMENT_STATUS_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(GET_LOCAL_DEPLOYMENT_STATUS); + SERVICE_OPERATION_MODEL_MAP.put(GET_SECRET_VALUE, _GET_SECRET_VALUE_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(GET_SECRET_VALUE); + SERVICE_OPERATION_MODEL_MAP.put(UPDATE_STATE, _UPDATE_STATE_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(UPDATE_STATE); + SERVICE_OPERATION_MODEL_MAP.put(GET_CONFIGURATION, _GET_CONFIGURATION_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(GET_CONFIGURATION); + SERVICE_OPERATION_MODEL_MAP.put(SUBSCRIBE_TO_TOPIC, _SUBSCRIBE_TO_TOPIC_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(SUBSCRIBE_TO_TOPIC); + SERVICE_OPERATION_MODEL_MAP.put(GET_COMPONENT_DETAILS, _GET_COMPONENT_DETAILS_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(GET_COMPONENT_DETAILS); + SERVICE_OPERATION_MODEL_MAP.put(SUBSCRIBE_TO_COMPONENT_UPDATES, _SUBSCRIBE_TO_COMPONENT_UPDATES_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(SUBSCRIBE_TO_COMPONENT_UPDATES); + SERVICE_OPERATION_MODEL_MAP.put(LIST_LOCAL_DEPLOYMENTS, _LIST_LOCAL_DEPLOYMENTS_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(LIST_LOCAL_DEPLOYMENTS); + SERVICE_OPERATION_MODEL_MAP.put(STOP_COMPONENT, _STOP_COMPONENT_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(STOP_COMPONENT); + SERVICE_OPERATION_MODEL_MAP.put(CREATE_LOCAL_DEPLOYMENT, _CREATE_LOCAL_DEPLOYMENT_OPERATION_CONTEXT); + SERVICE_OPERATION_SET.add(CREATE_LOCAL_DEPLOYMENT); + SERVICE_OBJECT_MODEL_MAP.put(SubscribeToIoTCoreRequest.APPLICATION_MODEL_TYPE, SubscribeToIoTCoreRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(SubscribeToIoTCoreResponse.APPLICATION_MODEL_TYPE, SubscribeToIoTCoreResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(ServiceError.APPLICATION_MODEL_TYPE, ServiceError.class); + SERVICE_OBJECT_MODEL_MAP.put(UnauthorizedError.APPLICATION_MODEL_TYPE, UnauthorizedError.class); + SERVICE_OBJECT_MODEL_MAP.put(PublishToTopicRequest.APPLICATION_MODEL_TYPE, PublishToTopicRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(PublishToTopicResponse.APPLICATION_MODEL_TYPE, PublishToTopicResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(PublishToIoTCoreRequest.APPLICATION_MODEL_TYPE, PublishToIoTCoreRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(PublishToIoTCoreResponse.APPLICATION_MODEL_TYPE, PublishToIoTCoreResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(SubscribeToConfigurationUpdateRequest.APPLICATION_MODEL_TYPE, SubscribeToConfigurationUpdateRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(SubscribeToConfigurationUpdateResponse.APPLICATION_MODEL_TYPE, SubscribeToConfigurationUpdateResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(ResourceNotFoundError.APPLICATION_MODEL_TYPE, ResourceNotFoundError.class); + SERVICE_OBJECT_MODEL_MAP.put(ListComponentsRequest.APPLICATION_MODEL_TYPE, ListComponentsRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(ListComponentsResponse.APPLICATION_MODEL_TYPE, ListComponentsResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(CreateDebugPasswordRequest.APPLICATION_MODEL_TYPE, CreateDebugPasswordRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(CreateDebugPasswordResponse.APPLICATION_MODEL_TYPE, CreateDebugPasswordResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(DeferComponentUpdateRequest.APPLICATION_MODEL_TYPE, DeferComponentUpdateRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(DeferComponentUpdateResponse.APPLICATION_MODEL_TYPE, DeferComponentUpdateResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(InvalidArgumentsError.APPLICATION_MODEL_TYPE, InvalidArgumentsError.class); + SERVICE_OBJECT_MODEL_MAP.put(SendConfigurationValidityReportRequest.APPLICATION_MODEL_TYPE, SendConfigurationValidityReportRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(SendConfigurationValidityReportResponse.APPLICATION_MODEL_TYPE, SendConfigurationValidityReportResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(UpdateConfigurationRequest.APPLICATION_MODEL_TYPE, UpdateConfigurationRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(UpdateConfigurationResponse.APPLICATION_MODEL_TYPE, UpdateConfigurationResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(ConflictError.APPLICATION_MODEL_TYPE, ConflictError.class); + SERVICE_OBJECT_MODEL_MAP.put(FailedUpdateConditionCheckError.APPLICATION_MODEL_TYPE, FailedUpdateConditionCheckError.class); + SERVICE_OBJECT_MODEL_MAP.put(SubscribeToValidateConfigurationUpdatesRequest.APPLICATION_MODEL_TYPE, SubscribeToValidateConfigurationUpdatesRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(SubscribeToValidateConfigurationUpdatesResponse.APPLICATION_MODEL_TYPE, SubscribeToValidateConfigurationUpdatesResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(ValidateAuthorizationTokenRequest.APPLICATION_MODEL_TYPE, ValidateAuthorizationTokenRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(ValidateAuthorizationTokenResponse.APPLICATION_MODEL_TYPE, ValidateAuthorizationTokenResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(InvalidTokenError.APPLICATION_MODEL_TYPE, InvalidTokenError.class); + SERVICE_OBJECT_MODEL_MAP.put(RestartComponentRequest.APPLICATION_MODEL_TYPE, RestartComponentRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(RestartComponentResponse.APPLICATION_MODEL_TYPE, RestartComponentResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(ComponentNotFoundError.APPLICATION_MODEL_TYPE, ComponentNotFoundError.class); + SERVICE_OBJECT_MODEL_MAP.put(GetLocalDeploymentStatusRequest.APPLICATION_MODEL_TYPE, GetLocalDeploymentStatusRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(GetLocalDeploymentStatusResponse.APPLICATION_MODEL_TYPE, GetLocalDeploymentStatusResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(GetSecretValueRequest.APPLICATION_MODEL_TYPE, GetSecretValueRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(GetSecretValueResponse.APPLICATION_MODEL_TYPE, GetSecretValueResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(UpdateStateRequest.APPLICATION_MODEL_TYPE, UpdateStateRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(UpdateStateResponse.APPLICATION_MODEL_TYPE, UpdateStateResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(GetConfigurationRequest.APPLICATION_MODEL_TYPE, GetConfigurationRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(GetConfigurationResponse.APPLICATION_MODEL_TYPE, GetConfigurationResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(SubscribeToTopicRequest.APPLICATION_MODEL_TYPE, SubscribeToTopicRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(SubscribeToTopicResponse.APPLICATION_MODEL_TYPE, SubscribeToTopicResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(GetComponentDetailsRequest.APPLICATION_MODEL_TYPE, GetComponentDetailsRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(GetComponentDetailsResponse.APPLICATION_MODEL_TYPE, GetComponentDetailsResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(SubscribeToComponentUpdatesRequest.APPLICATION_MODEL_TYPE, SubscribeToComponentUpdatesRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(SubscribeToComponentUpdatesResponse.APPLICATION_MODEL_TYPE, SubscribeToComponentUpdatesResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(ListLocalDeploymentsRequest.APPLICATION_MODEL_TYPE, ListLocalDeploymentsRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(ListLocalDeploymentsResponse.APPLICATION_MODEL_TYPE, ListLocalDeploymentsResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(StopComponentRequest.APPLICATION_MODEL_TYPE, StopComponentRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(StopComponentResponse.APPLICATION_MODEL_TYPE, StopComponentResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(CreateLocalDeploymentRequest.APPLICATION_MODEL_TYPE, CreateLocalDeploymentRequest.class); + SERVICE_OBJECT_MODEL_MAP.put(CreateLocalDeploymentResponse.APPLICATION_MODEL_TYPE, CreateLocalDeploymentResponse.class); + SERVICE_OBJECT_MODEL_MAP.put(InvalidRecipeDirectoryPathError.APPLICATION_MODEL_TYPE, InvalidRecipeDirectoryPathError.class); + SERVICE_OBJECT_MODEL_MAP.put(InvalidArtifactsDirectoryPathError.APPLICATION_MODEL_TYPE, InvalidArtifactsDirectoryPathError.class); + SERVICE_OBJECT_MODEL_MAP.put(QOS.APPLICATION_MODEL_TYPE, QOS.class); + SERVICE_OBJECT_MODEL_MAP.put(IoTCoreMessage.APPLICATION_MODEL_TYPE, IoTCoreMessage.class); + SERVICE_OBJECT_MODEL_MAP.put(PublishMessage.APPLICATION_MODEL_TYPE, PublishMessage.class); + SERVICE_OBJECT_MODEL_MAP.put(ConfigurationUpdateEvents.APPLICATION_MODEL_TYPE, ConfigurationUpdateEvents.class); + SERVICE_OBJECT_MODEL_MAP.put(ConfigurationValidityReport.APPLICATION_MODEL_TYPE, ConfigurationValidityReport.class); + SERVICE_OBJECT_MODEL_MAP.put(ValidateConfigurationUpdateEvents.APPLICATION_MODEL_TYPE, ValidateConfigurationUpdateEvents.class); + SERVICE_OBJECT_MODEL_MAP.put(RequestStatus.APPLICATION_MODEL_TYPE, RequestStatus.class); + SERVICE_OBJECT_MODEL_MAP.put(LocalDeployment.APPLICATION_MODEL_TYPE, LocalDeployment.class); + SERVICE_OBJECT_MODEL_MAP.put(SecretValue.APPLICATION_MODEL_TYPE, SecretValue.class); + SERVICE_OBJECT_MODEL_MAP.put(ReportedLifecycleState.APPLICATION_MODEL_TYPE, ReportedLifecycleState.class); + SERVICE_OBJECT_MODEL_MAP.put(SubscriptionResponseMessage.APPLICATION_MODEL_TYPE, SubscriptionResponseMessage.class); + SERVICE_OBJECT_MODEL_MAP.put(ComponentDetails.APPLICATION_MODEL_TYPE, ComponentDetails.class); + SERVICE_OBJECT_MODEL_MAP.put(ComponentUpdatePolicyEvents.APPLICATION_MODEL_TYPE, ComponentUpdatePolicyEvents.class); + SERVICE_OBJECT_MODEL_MAP.put(MQTTMessage.APPLICATION_MODEL_TYPE, MQTTMessage.class); + SERVICE_OBJECT_MODEL_MAP.put(JsonMessage.APPLICATION_MODEL_TYPE, JsonMessage.class); + SERVICE_OBJECT_MODEL_MAP.put(BinaryMessage.APPLICATION_MODEL_TYPE, BinaryMessage.class); + SERVICE_OBJECT_MODEL_MAP.put(ConfigurationUpdateEvent.APPLICATION_MODEL_TYPE, ConfigurationUpdateEvent.class); + SERVICE_OBJECT_MODEL_MAP.put(ConfigurationValidityStatus.APPLICATION_MODEL_TYPE, ConfigurationValidityStatus.class); + SERVICE_OBJECT_MODEL_MAP.put(ValidateConfigurationUpdateEvent.APPLICATION_MODEL_TYPE, ValidateConfigurationUpdateEvent.class); + SERVICE_OBJECT_MODEL_MAP.put(DeploymentStatus.APPLICATION_MODEL_TYPE, DeploymentStatus.class); + SERVICE_OBJECT_MODEL_MAP.put(LifecycleState.APPLICATION_MODEL_TYPE, LifecycleState.class); + SERVICE_OBJECT_MODEL_MAP.put(PreComponentUpdateEvent.APPLICATION_MODEL_TYPE, PreComponentUpdateEvent.class); + SERVICE_OBJECT_MODEL_MAP.put(PostComponentUpdateEvent.APPLICATION_MODEL_TYPE, PostComponentUpdateEvent.class); + SERVICE_OBJECT_MODEL_MAP.put(RunWithInfo.APPLICATION_MODEL_TYPE, RunWithInfo.class); + } + + private GreengrassCoreIPCServiceModel() { + } + + public static GreengrassCoreIPCServiceModel getInstance() { + return INSTANCE; + } + + @Override + public String getServiceName() { + return "aws.greengrass#GreengrassCoreIPC"; + } + + public static SubscribeToIoTCoreOperationContext getSubscribeToIoTCoreModelContext() { + return _SUBSCRIBE_TO_IOT_CORE_OPERATION_CONTEXT; + } + + public static PublishToTopicOperationContext getPublishToTopicModelContext() { + return _PUBLISH_TO_TOPIC_OPERATION_CONTEXT; + } + + public static PublishToIoTCoreOperationContext getPublishToIoTCoreModelContext() { + return _PUBLISH_TO_IOT_CORE_OPERATION_CONTEXT; + } + + public static SubscribeToConfigurationUpdateOperationContext getSubscribeToConfigurationUpdateModelContext( + ) { + return _SUBSCRIBE_TO_CONFIGURATION_UPDATE_OPERATION_CONTEXT; + } + + public static ListComponentsOperationContext getListComponentsModelContext() { + return _LIST_COMPONENTS_OPERATION_CONTEXT; + } + + public static CreateDebugPasswordOperationContext getCreateDebugPasswordModelContext() { + return _CREATE_DEBUG_PASSWORD_OPERATION_CONTEXT; + } + + public static DeferComponentUpdateOperationContext getDeferComponentUpdateModelContext() { + return _DEFER_COMPONENT_UPDATE_OPERATION_CONTEXT; + } + + public static SendConfigurationValidityReportOperationContext getSendConfigurationValidityReportModelContext( + ) { + return _SEND_CONFIGURATION_VALIDITY_REPORT_OPERATION_CONTEXT; + } + + public static UpdateConfigurationOperationContext getUpdateConfigurationModelContext() { + return _UPDATE_CONFIGURATION_OPERATION_CONTEXT; + } + + public static SubscribeToValidateConfigurationUpdatesOperationContext getSubscribeToValidateConfigurationUpdatesModelContext( + ) { + return _SUBSCRIBE_TO_VALIDATE_CONFIGURATION_UPDATES_OPERATION_CONTEXT; + } + + public static ValidateAuthorizationTokenOperationContext getValidateAuthorizationTokenModelContext( + ) { + return _VALIDATE_AUTHORIZATION_TOKEN_OPERATION_CONTEXT; + } + + public static RestartComponentOperationContext getRestartComponentModelContext() { + return _RESTART_COMPONENT_OPERATION_CONTEXT; + } + + public static GetLocalDeploymentStatusOperationContext getGetLocalDeploymentStatusModelContext() { + return _GET_LOCAL_DEPLOYMENT_STATUS_OPERATION_CONTEXT; + } + + public static GetSecretValueOperationContext getGetSecretValueModelContext() { + return _GET_SECRET_VALUE_OPERATION_CONTEXT; + } + + public static UpdateStateOperationContext getUpdateStateModelContext() { + return _UPDATE_STATE_OPERATION_CONTEXT; + } + + public static GetConfigurationOperationContext getGetConfigurationModelContext() { + return _GET_CONFIGURATION_OPERATION_CONTEXT; + } + + public static SubscribeToTopicOperationContext getSubscribeToTopicModelContext() { + return _SUBSCRIBE_TO_TOPIC_OPERATION_CONTEXT; + } + + public static GetComponentDetailsOperationContext getGetComponentDetailsModelContext() { + return _GET_COMPONENT_DETAILS_OPERATION_CONTEXT; + } + + public static SubscribeToComponentUpdatesOperationContext getSubscribeToComponentUpdatesModelContext( + ) { + return _SUBSCRIBE_TO_COMPONENT_UPDATES_OPERATION_CONTEXT; + } + + public static ListLocalDeploymentsOperationContext getListLocalDeploymentsModelContext() { + return _LIST_LOCAL_DEPLOYMENTS_OPERATION_CONTEXT; + } + + public static StopComponentOperationContext getStopComponentModelContext() { + return _STOP_COMPONENT_OPERATION_CONTEXT; + } + + public static CreateLocalDeploymentOperationContext getCreateLocalDeploymentModelContext() { + return _CREATE_LOCAL_DEPLOYMENT_OPERATION_CONTEXT; + } + + @Override + public final Collection getAllOperations() { + // Return a defensive copy so caller cannot change internal structure of service model + return new HashSet(SERVICE_OPERATION_SET); + } + + @Override + protected Optional> getServiceClassType( + String applicationModelType) { + if (SERVICE_OBJECT_MODEL_MAP.containsKey(applicationModelType)) { + return Optional.of(SERVICE_OBJECT_MODEL_MAP.get(applicationModelType)); + } + return Optional.empty(); + } + + @Override + public OperationModelContext getOperationModelContext(String operationName) { + return SERVICE_OPERATION_MODEL_MAP.get(operationName); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/ListComponentsOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/ListComponentsOperationContext.java new file mode 100644 index 000000000..4714f0934 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/ListComponentsOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.ListComponentsRequest; +import software.amazon.awssdk.aws.greengrass.model.ListComponentsResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ListComponentsOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.LIST_COMPONENTS; + } + + @Override + public Class getRequestTypeClass() { + return ListComponentsRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return ListComponentsResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return ListComponentsRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return ListComponentsResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/ListLocalDeploymentsOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/ListLocalDeploymentsOperationContext.java new file mode 100644 index 000000000..cc3e3cbec --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/ListLocalDeploymentsOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.ListLocalDeploymentsRequest; +import software.amazon.awssdk.aws.greengrass.model.ListLocalDeploymentsResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ListLocalDeploymentsOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.LIST_LOCAL_DEPLOYMENTS; + } + + @Override + public Class getRequestTypeClass() { + return ListLocalDeploymentsRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return ListLocalDeploymentsResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return ListLocalDeploymentsRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return ListLocalDeploymentsResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/PublishToIoTCoreOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/PublishToIoTCoreOperationContext.java new file mode 100644 index 000000000..695e9a1e0 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/PublishToIoTCoreOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.PublishToIoTCoreRequest; +import software.amazon.awssdk.aws.greengrass.model.PublishToIoTCoreResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class PublishToIoTCoreOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.PUBLISH_TO_IOT_CORE; + } + + @Override + public Class getRequestTypeClass() { + return PublishToIoTCoreRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return PublishToIoTCoreResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return PublishToIoTCoreRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return PublishToIoTCoreResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/PublishToTopicOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/PublishToTopicOperationContext.java new file mode 100644 index 000000000..5150b484b --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/PublishToTopicOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.PublishToTopicRequest; +import software.amazon.awssdk.aws.greengrass.model.PublishToTopicResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class PublishToTopicOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.PUBLISH_TO_TOPIC; + } + + @Override + public Class getRequestTypeClass() { + return PublishToTopicRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return PublishToTopicResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return PublishToTopicRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return PublishToTopicResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/RestartComponentOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/RestartComponentOperationContext.java new file mode 100644 index 000000000..6fc0ca8a3 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/RestartComponentOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.RestartComponentRequest; +import software.amazon.awssdk.aws.greengrass.model.RestartComponentResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class RestartComponentOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.RESTART_COMPONENT; + } + + @Override + public Class getRequestTypeClass() { + return RestartComponentRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return RestartComponentResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return RestartComponentRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return RestartComponentResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SendConfigurationValidityReportOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SendConfigurationValidityReportOperationContext.java new file mode 100644 index 000000000..7e17c2020 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SendConfigurationValidityReportOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.SendConfigurationValidityReportRequest; +import software.amazon.awssdk.aws.greengrass.model.SendConfigurationValidityReportResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SendConfigurationValidityReportOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.SEND_CONFIGURATION_VALIDITY_REPORT; + } + + @Override + public Class getRequestTypeClass() { + return SendConfigurationValidityReportRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return SendConfigurationValidityReportResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return SendConfigurationValidityReportRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return SendConfigurationValidityReportResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/StopComponentOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/StopComponentOperationContext.java new file mode 100644 index 000000000..f330d1742 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/StopComponentOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.StopComponentRequest; +import software.amazon.awssdk.aws.greengrass.model.StopComponentResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class StopComponentOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.STOP_COMPONENT; + } + + @Override + public Class getRequestTypeClass() { + return StopComponentRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return StopComponentResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return StopComponentRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return StopComponentResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToComponentUpdatesOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToComponentUpdatesOperationContext.java new file mode 100644 index 000000000..e9ec19aa0 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToComponentUpdatesOperationContext.java @@ -0,0 +1,63 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.ComponentUpdatePolicyEvents; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToComponentUpdatesRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToComponentUpdatesResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToComponentUpdatesOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.SUBSCRIBE_TO_COMPONENT_UPDATES; + } + + @Override + public Class getRequestTypeClass() { + return SubscribeToComponentUpdatesRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return SubscribeToComponentUpdatesResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return SubscribeToComponentUpdatesRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return SubscribeToComponentUpdatesResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.of(ComponentUpdatePolicyEvents.class); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.of(ComponentUpdatePolicyEvents.APPLICATION_MODEL_TYPE); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToConfigurationUpdateOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToConfigurationUpdateOperationContext.java new file mode 100644 index 000000000..e06274800 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToConfigurationUpdateOperationContext.java @@ -0,0 +1,63 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.ConfigurationUpdateEvents; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToConfigurationUpdateRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToConfigurationUpdateResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToConfigurationUpdateOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.SUBSCRIBE_TO_CONFIGURATION_UPDATE; + } + + @Override + public Class getRequestTypeClass() { + return SubscribeToConfigurationUpdateRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return SubscribeToConfigurationUpdateResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return SubscribeToConfigurationUpdateRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return SubscribeToConfigurationUpdateResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.of(ConfigurationUpdateEvents.class); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.of(ConfigurationUpdateEvents.APPLICATION_MODEL_TYPE); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToIoTCoreOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToIoTCoreOperationContext.java new file mode 100644 index 000000000..e223f4cad --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToIoTCoreOperationContext.java @@ -0,0 +1,63 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.IoTCoreMessage; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToIoTCoreRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToIoTCoreResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToIoTCoreOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.SUBSCRIBE_TO_IOT_CORE; + } + + @Override + public Class getRequestTypeClass() { + return SubscribeToIoTCoreRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return SubscribeToIoTCoreResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return SubscribeToIoTCoreRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return SubscribeToIoTCoreResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.of(IoTCoreMessage.class); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.of(IoTCoreMessage.APPLICATION_MODEL_TYPE); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToTopicOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToTopicOperationContext.java new file mode 100644 index 000000000..ec9657bb4 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToTopicOperationContext.java @@ -0,0 +1,63 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToTopicRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToTopicResponse; +import software.amazon.awssdk.aws.greengrass.model.SubscriptionResponseMessage; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToTopicOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.SUBSCRIBE_TO_TOPIC; + } + + @Override + public Class getRequestTypeClass() { + return SubscribeToTopicRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return SubscribeToTopicResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return SubscribeToTopicRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return SubscribeToTopicResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.of(SubscriptionResponseMessage.class); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.of(SubscriptionResponseMessage.APPLICATION_MODEL_TYPE); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToValidateConfigurationUpdatesOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToValidateConfigurationUpdatesOperationContext.java new file mode 100644 index 000000000..891abe759 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/SubscribeToValidateConfigurationUpdatesOperationContext.java @@ -0,0 +1,63 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToValidateConfigurationUpdatesRequest; +import software.amazon.awssdk.aws.greengrass.model.SubscribeToValidateConfigurationUpdatesResponse; +import software.amazon.awssdk.aws.greengrass.model.ValidateConfigurationUpdateEvents; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToValidateConfigurationUpdatesOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.SUBSCRIBE_TO_VALIDATE_CONFIGURATION_UPDATES; + } + + @Override + public Class getRequestTypeClass() { + return SubscribeToValidateConfigurationUpdatesRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return SubscribeToValidateConfigurationUpdatesResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return SubscribeToValidateConfigurationUpdatesRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return SubscribeToValidateConfigurationUpdatesResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.of(ValidateConfigurationUpdateEvents.class); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.of(ValidateConfigurationUpdateEvents.APPLICATION_MODEL_TYPE); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/UpdateConfigurationOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/UpdateConfigurationOperationContext.java new file mode 100644 index 000000000..e190265eb --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/UpdateConfigurationOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.UpdateConfigurationRequest; +import software.amazon.awssdk.aws.greengrass.model.UpdateConfigurationResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class UpdateConfigurationOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.UPDATE_CONFIGURATION; + } + + @Override + public Class getRequestTypeClass() { + return UpdateConfigurationRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return UpdateConfigurationResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return UpdateConfigurationRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return UpdateConfigurationResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/UpdateStateOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/UpdateStateOperationContext.java new file mode 100644 index 000000000..9adfbbf52 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/UpdateStateOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.UpdateStateRequest; +import software.amazon.awssdk.aws.greengrass.model.UpdateStateResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class UpdateStateOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.UPDATE_STATE; + } + + @Override + public Class getRequestTypeClass() { + return UpdateStateRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return UpdateStateResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return UpdateStateRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return UpdateStateResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/ValidateAuthorizationTokenOperationContext.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/ValidateAuthorizationTokenOperationContext.java new file mode 100644 index 000000000..897da1248 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/ValidateAuthorizationTokenOperationContext.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.aws.greengrass; + +import java.lang.Class; +import java.lang.Override; +import java.lang.String; +import java.util.Optional; +import software.amazon.awssdk.aws.greengrass.model.ValidateAuthorizationTokenRequest; +import software.amazon.awssdk.aws.greengrass.model.ValidateAuthorizationTokenResponse; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.OperationModelContext; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ValidateAuthorizationTokenOperationContext implements OperationModelContext { + @Override + public EventStreamRPCServiceModel getServiceModel() { + return GreengrassCoreIPCServiceModel.getInstance(); + } + + @Override + public String getOperationName() { + return GreengrassCoreIPCServiceModel.VALIDATE_AUTHORIZATION_TOKEN; + } + + @Override + public Class getRequestTypeClass() { + return ValidateAuthorizationTokenRequest.class; + } + + @Override + public Class getResponseTypeClass() { + return ValidateAuthorizationTokenResponse.class; + } + + @Override + public String getRequestApplicationModelType() { + return ValidateAuthorizationTokenRequest.APPLICATION_MODEL_TYPE; + } + + @Override + public String getResponseApplicationModelType() { + return ValidateAuthorizationTokenResponse.APPLICATION_MODEL_TYPE; + } + + @Override + public Optional> getStreamingRequestTypeClass() { + return Optional.empty(); + } + + @Override + public Optional> getStreamingResponseTypeClass() { + return Optional.empty(); + } + + public Optional getStreamingRequestApplicationModelType() { + return Optional.empty(); + } + + @Override + public Optional getStreamingResponseApplicationModelType() { + return Optional.empty(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/BinaryMessage.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/BinaryMessage.java new file mode 100644 index 000000000..e6207097c --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/BinaryMessage.java @@ -0,0 +1,67 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class BinaryMessage implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#BinaryMessage"; + + public static final BinaryMessage VOID; + + static { + VOID = new BinaryMessage() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + public BinaryMessage() { + this.message = Optional.empty(); + } + + public byte[] getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final byte[] message) { + this.message = Optional.ofNullable(message); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof BinaryMessage)) return false; + if (this == rhs) return true; + final BinaryMessage other = (BinaryMessage)rhs; + boolean isEquals = true; + isEquals = isEquals && EventStreamRPCServiceModel.blobTypeEquals(this.message, other.message); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(message); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ComponentDetails.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ComponentDetails.java new file mode 100644 index 000000000..40a6dd8d4 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ComponentDetails.java @@ -0,0 +1,135 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ComponentDetails implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ComponentDetails"; + + public static final ComponentDetails VOID; + + static { + VOID = new ComponentDetails() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional componentName; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional version; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional state; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> configuration; + + public ComponentDetails() { + this.componentName = Optional.empty(); + this.version = Optional.empty(); + this.state = Optional.empty(); + this.configuration = Optional.empty(); + } + + public String getComponentName() { + if (componentName.isPresent()) { + return componentName.get(); + } + return null; + } + + public void setComponentName(final String componentName) { + this.componentName = Optional.ofNullable(componentName); + } + + public String getVersion() { + if (version.isPresent()) { + return version.get(); + } + return null; + } + + public void setVersion(final String version) { + this.version = Optional.ofNullable(version); + } + + public LifecycleState getState() { + if (state.isPresent()) { + return LifecycleState.get(state.get()); + } + return null; + } + + public String getStateAsString() { + if (state.isPresent()) { + return state.get(); + } + return null; + } + + public void setState(final LifecycleState state) { + this.state = Optional.ofNullable(state.getValue()); + } + + public void setState(final String state) { + this.state = Optional.ofNullable(state); + } + + public Map getConfiguration() { + if (configuration.isPresent()) { + return configuration.get(); + } + return null; + } + + public void setConfiguration(final Map configuration) { + this.configuration = Optional.ofNullable(configuration); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ComponentDetails)) return false; + if (this == rhs) return true; + final ComponentDetails other = (ComponentDetails)rhs; + boolean isEquals = true; + isEquals = isEquals && this.componentName.equals(other.componentName); + isEquals = isEquals && this.version.equals(other.version); + isEquals = isEquals && this.state.equals(other.state); + isEquals = isEquals && this.configuration.equals(other.configuration); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(componentName, version, state, configuration); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ComponentNotFoundError.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ComponentNotFoundError.java new file mode 100644 index 000000000..876a79c33 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ComponentNotFoundError.java @@ -0,0 +1,77 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ComponentNotFoundError extends GreengrassCoreIPCError implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ComponentNotFoundError"; + + public static final ComponentNotFoundError VOID; + + static { + VOID = new ComponentNotFoundError() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + public ComponentNotFoundError(String errorMessage) { + super("ComponentNotFoundError", errorMessage); + this.message = Optional.ofNullable(errorMessage); + } + + public ComponentNotFoundError() { + super("ComponentNotFoundError", ""); + this.message = Optional.empty(); + } + + @Override + public String getErrorTypeString() { + return "client"; + } + + public String getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final String message) { + this.message = Optional.ofNullable(message); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ComponentNotFoundError)) return false; + if (this == rhs) return true; + final ComponentNotFoundError other = (ComponentNotFoundError)rhs; + boolean isEquals = true; + isEquals = isEquals && this.message.equals(other.message); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(message); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ComponentUpdatePolicyEvents.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ComponentUpdatePolicyEvents.java new file mode 100644 index 000000000..73a9afe3c --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ComponentUpdatePolicyEvents.java @@ -0,0 +1,141 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Consumer; +import java.util.function.Predicate; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ComponentUpdatePolicyEvents implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ComponentUpdatePolicyEvents"; + + private transient UnionMember setUnionMember; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional preUpdateEvent; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional postUpdateEvent; + + public ComponentUpdatePolicyEvents() { + this.preUpdateEvent = Optional.empty(); + this.postUpdateEvent = Optional.empty(); + } + + public PreComponentUpdateEvent getPreUpdateEvent() { + if (preUpdateEvent.isPresent() && (setUnionMember == UnionMember.PRE_UPDATE_EVENT)) { + return preUpdateEvent.get(); + } + return null; + } + + public void setPreUpdateEvent(final PreComponentUpdateEvent preUpdateEvent) { + if (setUnionMember != null) { + setUnionMember.nullify(this); + } + this.preUpdateEvent = Optional.of(preUpdateEvent); + this.setUnionMember = UnionMember.PRE_UPDATE_EVENT; + } + + public PostComponentUpdateEvent getPostUpdateEvent() { + if (postUpdateEvent.isPresent() && (setUnionMember == UnionMember.POST_UPDATE_EVENT)) { + return postUpdateEvent.get(); + } + return null; + } + + public void setPostUpdateEvent(final PostComponentUpdateEvent postUpdateEvent) { + if (setUnionMember != null) { + setUnionMember.nullify(this); + } + this.postUpdateEvent = Optional.of(postUpdateEvent); + this.setUnionMember = UnionMember.POST_UPDATE_EVENT; + } + + /** + * Returns an indicator for which enum member is set. Can be used to convert to proper type. + */ + public UnionMember getSetUnionMember() { + return setUnionMember; + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + public void selfDesignateSetUnionMember() { + int setCount = 0; + UnionMember[] members = UnionMember.values(); + for (int memberIdx = 0; memberIdx < UnionMember.values().length; ++memberIdx) { + if (members[memberIdx].isPresent(this)) { + ++setCount; + this.setUnionMember = members[memberIdx]; + } + } + // only bad outcome here is if there's more than one member set. It's possible for none to be set + if (setCount > 1) { + throw new IllegalArgumentException("More than one union member set for type: " + getApplicationModelType()); + } + } + + @Override + public void postFromJson() { + selfDesignateSetUnionMember(); + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ComponentUpdatePolicyEvents)) return false; + if (this == rhs) return true; + final ComponentUpdatePolicyEvents other = (ComponentUpdatePolicyEvents)rhs; + boolean isEquals = true; + isEquals = isEquals && this.preUpdateEvent.equals(other.preUpdateEvent); + isEquals = isEquals && this.postUpdateEvent.equals(other.postUpdateEvent); + isEquals = isEquals && this.setUnionMember.equals(other.setUnionMember); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(preUpdateEvent, postUpdateEvent, setUnionMember); + } + + public enum UnionMember { + PRE_UPDATE_EVENT("PRE_UPDATE_EVENT", (software.amazon.awssdk.aws.greengrass.model.ComponentUpdatePolicyEvents obj) -> obj.preUpdateEvent = Optional.empty(), (software.amazon.awssdk.aws.greengrass.model.ComponentUpdatePolicyEvents obj) -> obj.preUpdateEvent != null && obj.preUpdateEvent.isPresent()), + + POST_UPDATE_EVENT("POST_UPDATE_EVENT", (software.amazon.awssdk.aws.greengrass.model.ComponentUpdatePolicyEvents obj) -> obj.postUpdateEvent = Optional.empty(), (software.amazon.awssdk.aws.greengrass.model.ComponentUpdatePolicyEvents obj) -> obj.postUpdateEvent != null && obj.postUpdateEvent.isPresent()); + + private String fieldName; + + private Consumer nullifier; + + private Predicate isPresent; + + UnionMember(String fieldName, Consumer nullifier, + Predicate isPresent) { + this.fieldName = fieldName; + this.nullifier = nullifier; + this.isPresent = isPresent; + } + + void nullify(ComponentUpdatePolicyEvents obj) { + nullifier.accept(obj); + } + + boolean isPresent(ComponentUpdatePolicyEvents obj) { + return isPresent.test(obj); + } + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConfigurationUpdateEvent.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConfigurationUpdateEvent.java new file mode 100644 index 000000000..a915cddfc --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConfigurationUpdateEvent.java @@ -0,0 +1,86 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ConfigurationUpdateEvent implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ConfigurationUpdateEvent"; + + public static final ConfigurationUpdateEvent VOID; + + static { + VOID = new ConfigurationUpdateEvent() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional componentName; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> keyPath; + + public ConfigurationUpdateEvent() { + this.componentName = Optional.empty(); + this.keyPath = Optional.empty(); + } + + public String getComponentName() { + if (componentName.isPresent()) { + return componentName.get(); + } + return null; + } + + public void setComponentName(final String componentName) { + this.componentName = Optional.ofNullable(componentName); + } + + public List getKeyPath() { + if (keyPath.isPresent()) { + return keyPath.get(); + } + return null; + } + + public void setKeyPath(final List keyPath) { + this.keyPath = Optional.ofNullable(keyPath); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ConfigurationUpdateEvent)) return false; + if (this == rhs) return true; + final ConfigurationUpdateEvent other = (ConfigurationUpdateEvent)rhs; + boolean isEquals = true; + isEquals = isEquals && this.componentName.equals(other.componentName); + isEquals = isEquals && this.keyPath.equals(other.keyPath); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(componentName, keyPath); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConfigurationUpdateEvents.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConfigurationUpdateEvents.java new file mode 100644 index 000000000..9fbde1b74 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConfigurationUpdateEvents.java @@ -0,0 +1,116 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Consumer; +import java.util.function.Predicate; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ConfigurationUpdateEvents implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ConfigurationUpdateEvents"; + + private transient UnionMember setUnionMember; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional configurationUpdateEvent; + + public ConfigurationUpdateEvents() { + this.configurationUpdateEvent = Optional.empty(); + } + + public ConfigurationUpdateEvent getConfigurationUpdateEvent() { + if (configurationUpdateEvent.isPresent() && (setUnionMember == UnionMember.CONFIGURATION_UPDATE_EVENT)) { + return configurationUpdateEvent.get(); + } + return null; + } + + public void setConfigurationUpdateEvent(final ConfigurationUpdateEvent configurationUpdateEvent) { + if (setUnionMember != null) { + setUnionMember.nullify(this); + } + this.configurationUpdateEvent = Optional.of(configurationUpdateEvent); + this.setUnionMember = UnionMember.CONFIGURATION_UPDATE_EVENT; + } + + /** + * Returns an indicator for which enum member is set. Can be used to convert to proper type. + */ + public UnionMember getSetUnionMember() { + return setUnionMember; + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + public void selfDesignateSetUnionMember() { + int setCount = 0; + UnionMember[] members = UnionMember.values(); + for (int memberIdx = 0; memberIdx < UnionMember.values().length; ++memberIdx) { + if (members[memberIdx].isPresent(this)) { + ++setCount; + this.setUnionMember = members[memberIdx]; + } + } + // only bad outcome here is if there's more than one member set. It's possible for none to be set + if (setCount > 1) { + throw new IllegalArgumentException("More than one union member set for type: " + getApplicationModelType()); + } + } + + @Override + public void postFromJson() { + selfDesignateSetUnionMember(); + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ConfigurationUpdateEvents)) return false; + if (this == rhs) return true; + final ConfigurationUpdateEvents other = (ConfigurationUpdateEvents)rhs; + boolean isEquals = true; + isEquals = isEquals && this.configurationUpdateEvent.equals(other.configurationUpdateEvent); + isEquals = isEquals && this.setUnionMember.equals(other.setUnionMember); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(configurationUpdateEvent, setUnionMember); + } + + public enum UnionMember { + CONFIGURATION_UPDATE_EVENT("CONFIGURATION_UPDATE_EVENT", (software.amazon.awssdk.aws.greengrass.model.ConfigurationUpdateEvents obj) -> obj.configurationUpdateEvent = Optional.empty(), (software.amazon.awssdk.aws.greengrass.model.ConfigurationUpdateEvents obj) -> obj.configurationUpdateEvent != null && obj.configurationUpdateEvent.isPresent()); + + private String fieldName; + + private Consumer nullifier; + + private Predicate isPresent; + + UnionMember(String fieldName, Consumer nullifier, + Predicate isPresent) { + this.fieldName = fieldName; + this.nullifier = nullifier; + this.isPresent = isPresent; + } + + void nullify(ConfigurationUpdateEvents obj) { + nullifier.accept(obj); + } + + boolean isPresent(ConfigurationUpdateEvents obj) { + return isPresent.test(obj); + } + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConfigurationValidityReport.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConfigurationValidityReport.java new file mode 100644 index 000000000..0a2ff1dac --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConfigurationValidityReport.java @@ -0,0 +1,115 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ConfigurationValidityReport implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ConfigurationValidityReport"; + + public static final ConfigurationValidityReport VOID; + + static { + VOID = new ConfigurationValidityReport() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional status; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional deploymentId; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + public ConfigurationValidityReport() { + this.status = Optional.empty(); + this.deploymentId = Optional.empty(); + this.message = Optional.empty(); + } + + public ConfigurationValidityStatus getStatus() { + if (status.isPresent()) { + return ConfigurationValidityStatus.get(status.get()); + } + return null; + } + + public String getStatusAsString() { + if (status.isPresent()) { + return status.get(); + } + return null; + } + + public void setStatus(final ConfigurationValidityStatus status) { + this.status = Optional.ofNullable(status.getValue()); + } + + public void setStatus(final String status) { + this.status = Optional.ofNullable(status); + } + + public String getDeploymentId() { + if (deploymentId.isPresent()) { + return deploymentId.get(); + } + return null; + } + + public void setDeploymentId(final String deploymentId) { + this.deploymentId = Optional.ofNullable(deploymentId); + } + + public String getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final String message) { + this.message = Optional.ofNullable(message); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ConfigurationValidityReport)) return false; + if (this == rhs) return true; + final ConfigurationValidityReport other = (ConfigurationValidityReport)rhs; + boolean isEquals = true; + isEquals = isEquals && this.status.equals(other.status); + isEquals = isEquals && this.deploymentId.equals(other.deploymentId); + isEquals = isEquals && this.message.equals(other.message); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(status, deploymentId, message); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConfigurationValidityStatus.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConfigurationValidityStatus.java new file mode 100644 index 000000000..9a03814e3 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConfigurationValidityStatus.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.SerializedName; +import java.lang.Override; +import java.lang.String; +import java.util.HashMap; +import java.util.Map; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public enum ConfigurationValidityStatus implements EventStreamJsonMessage { + @SerializedName("ACCEPTED") + ACCEPTED("ACCEPTED"), + + @SerializedName("REJECTED") + REJECTED("REJECTED"); + + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ConfigurationValidityStatus"; + + private static final Map lookup = new HashMap(); + + static { + for (ConfigurationValidityStatus value:ConfigurationValidityStatus.values()) { + lookup.put(value.getValue(), value); + } + } + + String value; + + ConfigurationValidityStatus(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + public static ConfigurationValidityStatus get(String value) { + return lookup.get(value); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConflictError.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConflictError.java new file mode 100644 index 000000000..6a0c81fba --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ConflictError.java @@ -0,0 +1,77 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ConflictError extends GreengrassCoreIPCError implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ConflictError"; + + public static final ConflictError VOID; + + static { + VOID = new ConflictError() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + public ConflictError(String errorMessage) { + super("ConflictError", errorMessage); + this.message = Optional.ofNullable(errorMessage); + } + + public ConflictError() { + super("ConflictError", ""); + this.message = Optional.empty(); + } + + @Override + public String getErrorTypeString() { + return "client"; + } + + public String getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final String message) { + this.message = Optional.ofNullable(message); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ConflictError)) return false; + if (this == rhs) return true; + final ConflictError other = (ConflictError)rhs; + boolean isEquals = true; + isEquals = isEquals && this.message.equals(other.message); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(message); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/CreateDebugPasswordRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/CreateDebugPasswordRequest.java new file mode 100644 index 000000000..2550b0f60 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/CreateDebugPasswordRequest.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class CreateDebugPasswordRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#CreateDebugPasswordRequest"; + + public static final CreateDebugPasswordRequest VOID; + + static { + VOID = new CreateDebugPasswordRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public CreateDebugPasswordRequest() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof CreateDebugPasswordRequest)) return false; + if (this == rhs) return true; + final CreateDebugPasswordRequest other = (CreateDebugPasswordRequest)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/CreateDebugPasswordResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/CreateDebugPasswordResponse.java new file mode 100644 index 000000000..e08c1d632 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/CreateDebugPasswordResponse.java @@ -0,0 +1,105 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.time.Instant; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class CreateDebugPasswordResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#CreateDebugPasswordResponse"; + + public static final CreateDebugPasswordResponse VOID; + + static { + VOID = new CreateDebugPasswordResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional password; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional username; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional passwordExpiration; + + public CreateDebugPasswordResponse() { + this.password = Optional.empty(); + this.username = Optional.empty(); + this.passwordExpiration = Optional.empty(); + } + + public String getPassword() { + if (password.isPresent()) { + return password.get(); + } + return null; + } + + public void setPassword(final String password) { + this.password = Optional.ofNullable(password); + } + + public String getUsername() { + if (username.isPresent()) { + return username.get(); + } + return null; + } + + public void setUsername(final String username) { + this.username = Optional.ofNullable(username); + } + + public Instant getPasswordExpiration() { + if (passwordExpiration.isPresent()) { + return passwordExpiration.get(); + } + return null; + } + + public void setPasswordExpiration(final Instant passwordExpiration) { + this.passwordExpiration = Optional.ofNullable(passwordExpiration); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof CreateDebugPasswordResponse)) return false; + if (this == rhs) return true; + final CreateDebugPasswordResponse other = (CreateDebugPasswordResponse)rhs; + boolean isEquals = true; + isEquals = isEquals && this.password.equals(other.password); + isEquals = isEquals && this.username.equals(other.username); + isEquals = isEquals && this.passwordExpiration.equals(other.passwordExpiration); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(password, username, passwordExpiration); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/CreateLocalDeploymentRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/CreateLocalDeploymentRequest.java new file mode 100644 index 000000000..6fe5840fb --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/CreateLocalDeploymentRequest.java @@ -0,0 +1,183 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class CreateLocalDeploymentRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#CreateLocalDeploymentRequest"; + + public static final CreateLocalDeploymentRequest VOID; + + static { + VOID = new CreateLocalDeploymentRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional groupName; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> rootComponentVersionsToAdd; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> rootComponentsToRemove; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional>> componentToConfiguration; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> componentToRunWithInfo; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional recipeDirectoryPath; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional artifactsDirectoryPath; + + public CreateLocalDeploymentRequest() { + this.groupName = Optional.empty(); + this.rootComponentVersionsToAdd = Optional.empty(); + this.rootComponentsToRemove = Optional.empty(); + this.componentToConfiguration = Optional.empty(); + this.componentToRunWithInfo = Optional.empty(); + this.recipeDirectoryPath = Optional.empty(); + this.artifactsDirectoryPath = Optional.empty(); + } + + public String getGroupName() { + if (groupName.isPresent()) { + return groupName.get(); + } + return null; + } + + public void setGroupName(final String groupName) { + this.groupName = Optional.ofNullable(groupName); + } + + public Map getRootComponentVersionsToAdd() { + if (rootComponentVersionsToAdd.isPresent()) { + return rootComponentVersionsToAdd.get(); + } + return null; + } + + public void setRootComponentVersionsToAdd(final Map rootComponentVersionsToAdd) { + this.rootComponentVersionsToAdd = Optional.ofNullable(rootComponentVersionsToAdd); + } + + public List getRootComponentsToRemove() { + if (rootComponentsToRemove.isPresent()) { + return rootComponentsToRemove.get(); + } + return null; + } + + public void setRootComponentsToRemove(final List rootComponentsToRemove) { + this.rootComponentsToRemove = Optional.ofNullable(rootComponentsToRemove); + } + + public Map> getComponentToConfiguration() { + if (componentToConfiguration.isPresent()) { + return componentToConfiguration.get(); + } + return null; + } + + public void setComponentToConfiguration( + final Map> componentToConfiguration) { + this.componentToConfiguration = Optional.ofNullable(componentToConfiguration); + } + + public Map getComponentToRunWithInfo() { + if (componentToRunWithInfo.isPresent()) { + return componentToRunWithInfo.get(); + } + return null; + } + + public void setComponentToRunWithInfo(final Map componentToRunWithInfo) { + this.componentToRunWithInfo = Optional.ofNullable(componentToRunWithInfo); + } + + public String getRecipeDirectoryPath() { + if (recipeDirectoryPath.isPresent()) { + return recipeDirectoryPath.get(); + } + return null; + } + + public void setRecipeDirectoryPath(final String recipeDirectoryPath) { + this.recipeDirectoryPath = Optional.ofNullable(recipeDirectoryPath); + } + + public String getArtifactsDirectoryPath() { + if (artifactsDirectoryPath.isPresent()) { + return artifactsDirectoryPath.get(); + } + return null; + } + + public void setArtifactsDirectoryPath(final String artifactsDirectoryPath) { + this.artifactsDirectoryPath = Optional.ofNullable(artifactsDirectoryPath); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof CreateLocalDeploymentRequest)) return false; + if (this == rhs) return true; + final CreateLocalDeploymentRequest other = (CreateLocalDeploymentRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.groupName.equals(other.groupName); + isEquals = isEquals && this.rootComponentVersionsToAdd.equals(other.rootComponentVersionsToAdd); + isEquals = isEquals && this.rootComponentsToRemove.equals(other.rootComponentsToRemove); + isEquals = isEquals && this.componentToConfiguration.equals(other.componentToConfiguration); + isEquals = isEquals && this.componentToRunWithInfo.equals(other.componentToRunWithInfo); + isEquals = isEquals && this.recipeDirectoryPath.equals(other.recipeDirectoryPath); + isEquals = isEquals && this.artifactsDirectoryPath.equals(other.artifactsDirectoryPath); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(groupName, rootComponentVersionsToAdd, rootComponentsToRemove, componentToConfiguration, componentToRunWithInfo, recipeDirectoryPath, artifactsDirectoryPath); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/CreateLocalDeploymentResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/CreateLocalDeploymentResponse.java new file mode 100644 index 000000000..f8b0a8077 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/CreateLocalDeploymentResponse.java @@ -0,0 +1,66 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class CreateLocalDeploymentResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#CreateLocalDeploymentResponse"; + + public static final CreateLocalDeploymentResponse VOID; + + static { + VOID = new CreateLocalDeploymentResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional deploymentId; + + public CreateLocalDeploymentResponse() { + this.deploymentId = Optional.empty(); + } + + public String getDeploymentId() { + if (deploymentId.isPresent()) { + return deploymentId.get(); + } + return null; + } + + public void setDeploymentId(final String deploymentId) { + this.deploymentId = Optional.ofNullable(deploymentId); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof CreateLocalDeploymentResponse)) return false; + if (this == rhs) return true; + final CreateLocalDeploymentResponse other = (CreateLocalDeploymentResponse)rhs; + boolean isEquals = true; + isEquals = isEquals && this.deploymentId.equals(other.deploymentId); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(deploymentId); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/DeferComponentUpdateRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/DeferComponentUpdateRequest.java new file mode 100644 index 000000000..a41b8419c --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/DeferComponentUpdateRequest.java @@ -0,0 +1,105 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Long; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class DeferComponentUpdateRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#DeferComponentUpdateRequest"; + + public static final DeferComponentUpdateRequest VOID; + + static { + VOID = new DeferComponentUpdateRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional deploymentId; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional recheckAfterMs; + + public DeferComponentUpdateRequest() { + this.deploymentId = Optional.empty(); + this.message = Optional.empty(); + this.recheckAfterMs = Optional.empty(); + } + + public String getDeploymentId() { + if (deploymentId.isPresent()) { + return deploymentId.get(); + } + return null; + } + + public void setDeploymentId(final String deploymentId) { + this.deploymentId = Optional.ofNullable(deploymentId); + } + + public String getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final String message) { + this.message = Optional.ofNullable(message); + } + + public Long getRecheckAfterMs() { + if (recheckAfterMs.isPresent()) { + return recheckAfterMs.get(); + } + return null; + } + + public void setRecheckAfterMs(final Long recheckAfterMs) { + this.recheckAfterMs = Optional.ofNullable(recheckAfterMs); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof DeferComponentUpdateRequest)) return false; + if (this == rhs) return true; + final DeferComponentUpdateRequest other = (DeferComponentUpdateRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.deploymentId.equals(other.deploymentId); + isEquals = isEquals && this.message.equals(other.message); + isEquals = isEquals && this.recheckAfterMs.equals(other.recheckAfterMs); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(deploymentId, message, recheckAfterMs); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/DeferComponentUpdateResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/DeferComponentUpdateResponse.java new file mode 100644 index 000000000..ab0bda2b4 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/DeferComponentUpdateResponse.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class DeferComponentUpdateResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#DeferComponentUpdateResponse"; + + public static final DeferComponentUpdateResponse VOID; + + static { + VOID = new DeferComponentUpdateResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public DeferComponentUpdateResponse() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof DeferComponentUpdateResponse)) return false; + if (this == rhs) return true; + final DeferComponentUpdateResponse other = (DeferComponentUpdateResponse)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/DeploymentStatus.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/DeploymentStatus.java new file mode 100644 index 000000000..8e8f0cd64 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/DeploymentStatus.java @@ -0,0 +1,51 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.SerializedName; +import java.lang.Override; +import java.lang.String; +import java.util.HashMap; +import java.util.Map; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public enum DeploymentStatus implements EventStreamJsonMessage { + @SerializedName("QUEUED") + QUEUED("QUEUED"), + + @SerializedName("IN_PROGRESS") + IN_PROGRESS("IN_PROGRESS"), + + @SerializedName("SUCCEEDED") + SUCCEEDED("SUCCEEDED"), + + @SerializedName("FAILED") + FAILED("FAILED"); + + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#DeploymentStatus"; + + private static final Map lookup = new HashMap(); + + static { + for (DeploymentStatus value:DeploymentStatus.values()) { + lookup.put(value.getValue(), value); + } + } + + String value; + + DeploymentStatus(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + public static DeploymentStatus get(String value) { + return lookup.get(value); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/FailedUpdateConditionCheckError.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/FailedUpdateConditionCheckError.java new file mode 100644 index 000000000..28ea78d56 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/FailedUpdateConditionCheckError.java @@ -0,0 +1,77 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class FailedUpdateConditionCheckError extends GreengrassCoreIPCError implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#FailedUpdateConditionCheckError"; + + public static final FailedUpdateConditionCheckError VOID; + + static { + VOID = new FailedUpdateConditionCheckError() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + public FailedUpdateConditionCheckError(String errorMessage) { + super("FailedUpdateConditionCheckError", errorMessage); + this.message = Optional.ofNullable(errorMessage); + } + + public FailedUpdateConditionCheckError() { + super("FailedUpdateConditionCheckError", ""); + this.message = Optional.empty(); + } + + @Override + public String getErrorTypeString() { + return "client"; + } + + public String getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final String message) { + this.message = Optional.ofNullable(message); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof FailedUpdateConditionCheckError)) return false; + if (this == rhs) return true; + final FailedUpdateConditionCheckError other = (FailedUpdateConditionCheckError)rhs; + boolean isEquals = true; + isEquals = isEquals && this.message.equals(other.message); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(message); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetComponentDetailsRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetComponentDetailsRequest.java new file mode 100644 index 000000000..0aa30569f --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetComponentDetailsRequest.java @@ -0,0 +1,66 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class GetComponentDetailsRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#GetComponentDetailsRequest"; + + public static final GetComponentDetailsRequest VOID; + + static { + VOID = new GetComponentDetailsRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional componentName; + + public GetComponentDetailsRequest() { + this.componentName = Optional.empty(); + } + + public String getComponentName() { + if (componentName.isPresent()) { + return componentName.get(); + } + return null; + } + + public void setComponentName(final String componentName) { + this.componentName = Optional.ofNullable(componentName); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof GetComponentDetailsRequest)) return false; + if (this == rhs) return true; + final GetComponentDetailsRequest other = (GetComponentDetailsRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.componentName.equals(other.componentName); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(componentName); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetComponentDetailsResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetComponentDetailsResponse.java new file mode 100644 index 000000000..55ea4061e --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetComponentDetailsResponse.java @@ -0,0 +1,66 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class GetComponentDetailsResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#GetComponentDetailsResponse"; + + public static final GetComponentDetailsResponse VOID; + + static { + VOID = new GetComponentDetailsResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional componentDetails; + + public GetComponentDetailsResponse() { + this.componentDetails = Optional.empty(); + } + + public ComponentDetails getComponentDetails() { + if (componentDetails.isPresent()) { + return componentDetails.get(); + } + return null; + } + + public void setComponentDetails(final ComponentDetails componentDetails) { + this.componentDetails = Optional.ofNullable(componentDetails); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof GetComponentDetailsResponse)) return false; + if (this == rhs) return true; + final GetComponentDetailsResponse other = (GetComponentDetailsResponse)rhs; + boolean isEquals = true; + isEquals = isEquals && this.componentDetails.equals(other.componentDetails); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(componentDetails); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetConfigurationRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetConfigurationRequest.java new file mode 100644 index 000000000..6da005ee8 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetConfigurationRequest.java @@ -0,0 +1,86 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class GetConfigurationRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#GetConfigurationRequest"; + + public static final GetConfigurationRequest VOID; + + static { + VOID = new GetConfigurationRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional componentName; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> keyPath; + + public GetConfigurationRequest() { + this.componentName = Optional.empty(); + this.keyPath = Optional.empty(); + } + + public String getComponentName() { + if (componentName.isPresent()) { + return componentName.get(); + } + return null; + } + + public void setComponentName(final String componentName) { + this.componentName = Optional.ofNullable(componentName); + } + + public List getKeyPath() { + if (keyPath.isPresent()) { + return keyPath.get(); + } + return null; + } + + public void setKeyPath(final List keyPath) { + this.keyPath = Optional.ofNullable(keyPath); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof GetConfigurationRequest)) return false; + if (this == rhs) return true; + final GetConfigurationRequest other = (GetConfigurationRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.componentName.equals(other.componentName); + isEquals = isEquals && this.keyPath.equals(other.keyPath); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(componentName, keyPath); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetConfigurationResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetConfigurationResponse.java new file mode 100644 index 000000000..be40c199d --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetConfigurationResponse.java @@ -0,0 +1,86 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class GetConfigurationResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#GetConfigurationResponse"; + + public static final GetConfigurationResponse VOID; + + static { + VOID = new GetConfigurationResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional componentName; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> value; + + public GetConfigurationResponse() { + this.componentName = Optional.empty(); + this.value = Optional.empty(); + } + + public String getComponentName() { + if (componentName.isPresent()) { + return componentName.get(); + } + return null; + } + + public void setComponentName(final String componentName) { + this.componentName = Optional.ofNullable(componentName); + } + + public Map getValue() { + if (value.isPresent()) { + return value.get(); + } + return null; + } + + public void setValue(final Map value) { + this.value = Optional.ofNullable(value); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof GetConfigurationResponse)) return false; + if (this == rhs) return true; + final GetConfigurationResponse other = (GetConfigurationResponse)rhs; + boolean isEquals = true; + isEquals = isEquals && this.componentName.equals(other.componentName); + isEquals = isEquals && this.value.equals(other.value); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(componentName, value); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetLocalDeploymentStatusRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetLocalDeploymentStatusRequest.java new file mode 100644 index 000000000..2588c471a --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetLocalDeploymentStatusRequest.java @@ -0,0 +1,66 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class GetLocalDeploymentStatusRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#GetLocalDeploymentStatusRequest"; + + public static final GetLocalDeploymentStatusRequest VOID; + + static { + VOID = new GetLocalDeploymentStatusRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional deploymentId; + + public GetLocalDeploymentStatusRequest() { + this.deploymentId = Optional.empty(); + } + + public String getDeploymentId() { + if (deploymentId.isPresent()) { + return deploymentId.get(); + } + return null; + } + + public void setDeploymentId(final String deploymentId) { + this.deploymentId = Optional.ofNullable(deploymentId); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof GetLocalDeploymentStatusRequest)) return false; + if (this == rhs) return true; + final GetLocalDeploymentStatusRequest other = (GetLocalDeploymentStatusRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.deploymentId.equals(other.deploymentId); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(deploymentId); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetLocalDeploymentStatusResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetLocalDeploymentStatusResponse.java new file mode 100644 index 000000000..983c09987 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetLocalDeploymentStatusResponse.java @@ -0,0 +1,66 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class GetLocalDeploymentStatusResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#GetLocalDeploymentStatusResponse"; + + public static final GetLocalDeploymentStatusResponse VOID; + + static { + VOID = new GetLocalDeploymentStatusResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional deployment; + + public GetLocalDeploymentStatusResponse() { + this.deployment = Optional.empty(); + } + + public LocalDeployment getDeployment() { + if (deployment.isPresent()) { + return deployment.get(); + } + return null; + } + + public void setDeployment(final LocalDeployment deployment) { + this.deployment = Optional.ofNullable(deployment); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof GetLocalDeploymentStatusResponse)) return false; + if (this == rhs) return true; + final GetLocalDeploymentStatusResponse other = (GetLocalDeploymentStatusResponse)rhs; + boolean isEquals = true; + isEquals = isEquals && this.deployment.equals(other.deployment); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(deployment); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetSecretValueRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetSecretValueRequest.java new file mode 100644 index 000000000..0e12d7440 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetSecretValueRequest.java @@ -0,0 +1,104 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class GetSecretValueRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#GetSecretValueRequest"; + + public static final GetSecretValueRequest VOID; + + static { + VOID = new GetSecretValueRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional secretId; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional versionId; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional versionStage; + + public GetSecretValueRequest() { + this.secretId = Optional.empty(); + this.versionId = Optional.empty(); + this.versionStage = Optional.empty(); + } + + public String getSecretId() { + if (secretId.isPresent()) { + return secretId.get(); + } + return null; + } + + public void setSecretId(final String secretId) { + this.secretId = Optional.ofNullable(secretId); + } + + public String getVersionId() { + if (versionId.isPresent()) { + return versionId.get(); + } + return null; + } + + public void setVersionId(final String versionId) { + this.versionId = Optional.ofNullable(versionId); + } + + public String getVersionStage() { + if (versionStage.isPresent()) { + return versionStage.get(); + } + return null; + } + + public void setVersionStage(final String versionStage) { + this.versionStage = Optional.ofNullable(versionStage); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof GetSecretValueRequest)) return false; + if (this == rhs) return true; + final GetSecretValueRequest other = (GetSecretValueRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.secretId.equals(other.secretId); + isEquals = isEquals && this.versionId.equals(other.versionId); + isEquals = isEquals && this.versionStage.equals(other.versionStage); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(secretId, versionId, versionStage); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetSecretValueResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetSecretValueResponse.java new file mode 100644 index 000000000..ba7cd619a --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GetSecretValueResponse.java @@ -0,0 +1,124 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class GetSecretValueResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#GetSecretValueResponse"; + + public static final GetSecretValueResponse VOID; + + static { + VOID = new GetSecretValueResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional secretId; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional versionId; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> versionStage; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional secretValue; + + public GetSecretValueResponse() { + this.secretId = Optional.empty(); + this.versionId = Optional.empty(); + this.versionStage = Optional.empty(); + this.secretValue = Optional.empty(); + } + + public String getSecretId() { + if (secretId.isPresent()) { + return secretId.get(); + } + return null; + } + + public void setSecretId(final String secretId) { + this.secretId = Optional.ofNullable(secretId); + } + + public String getVersionId() { + if (versionId.isPresent()) { + return versionId.get(); + } + return null; + } + + public void setVersionId(final String versionId) { + this.versionId = Optional.ofNullable(versionId); + } + + public List getVersionStage() { + if (versionStage.isPresent()) { + return versionStage.get(); + } + return null; + } + + public void setVersionStage(final List versionStage) { + this.versionStage = Optional.ofNullable(versionStage); + } + + public SecretValue getSecretValue() { + if (secretValue.isPresent()) { + return secretValue.get(); + } + return null; + } + + public void setSecretValue(final SecretValue secretValue) { + this.secretValue = Optional.ofNullable(secretValue); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof GetSecretValueResponse)) return false; + if (this == rhs) return true; + final GetSecretValueResponse other = (GetSecretValueResponse)rhs; + boolean isEquals = true; + isEquals = isEquals && this.secretId.equals(other.secretId); + isEquals = isEquals && this.versionId.equals(other.versionId); + isEquals = isEquals && this.versionStage.equals(other.versionStage); + isEquals = isEquals && this.secretValue.equals(other.secretValue); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(secretId, versionId, versionStage, secretValue); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GreengrassCoreIPCError.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GreengrassCoreIPCError.java new file mode 100644 index 000000000..f4d42530a --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/GreengrassCoreIPCError.java @@ -0,0 +1,25 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.String; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamOperationError; + +public abstract class GreengrassCoreIPCError extends EventStreamOperationError implements EventStreamJsonMessage { + GreengrassCoreIPCError(String errorCode, String errorMessage) { + super("aws.greengrass#GreengrassCoreIPC", errorCode, errorMessage); + } + + public abstract String getErrorTypeString(); + + public boolean isRetryable() { + return getErrorTypeString().equals("server"); + } + + public boolean isServerError() { + return getErrorTypeString().equals("server"); + } + + public boolean isClientError() { + return getErrorTypeString().equals("client"); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/InvalidArgumentsError.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/InvalidArgumentsError.java new file mode 100644 index 000000000..d8f972106 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/InvalidArgumentsError.java @@ -0,0 +1,77 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class InvalidArgumentsError extends GreengrassCoreIPCError implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#InvalidArgumentsError"; + + public static final InvalidArgumentsError VOID; + + static { + VOID = new InvalidArgumentsError() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + public InvalidArgumentsError(String errorMessage) { + super("InvalidArgumentsError", errorMessage); + this.message = Optional.ofNullable(errorMessage); + } + + public InvalidArgumentsError() { + super("InvalidArgumentsError", ""); + this.message = Optional.empty(); + } + + @Override + public String getErrorTypeString() { + return "client"; + } + + public String getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final String message) { + this.message = Optional.ofNullable(message); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof InvalidArgumentsError)) return false; + if (this == rhs) return true; + final InvalidArgumentsError other = (InvalidArgumentsError)rhs; + boolean isEquals = true; + isEquals = isEquals && this.message.equals(other.message); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(message); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/InvalidArtifactsDirectoryPathError.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/InvalidArtifactsDirectoryPathError.java new file mode 100644 index 000000000..5143b51f1 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/InvalidArtifactsDirectoryPathError.java @@ -0,0 +1,77 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class InvalidArtifactsDirectoryPathError extends GreengrassCoreIPCError implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#InvalidArtifactsDirectoryPathError"; + + public static final InvalidArtifactsDirectoryPathError VOID; + + static { + VOID = new InvalidArtifactsDirectoryPathError() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + public InvalidArtifactsDirectoryPathError(String errorMessage) { + super("InvalidArtifactsDirectoryPathError", errorMessage); + this.message = Optional.ofNullable(errorMessage); + } + + public InvalidArtifactsDirectoryPathError() { + super("InvalidArtifactsDirectoryPathError", ""); + this.message = Optional.empty(); + } + + @Override + public String getErrorTypeString() { + return "client"; + } + + public String getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final String message) { + this.message = Optional.ofNullable(message); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof InvalidArtifactsDirectoryPathError)) return false; + if (this == rhs) return true; + final InvalidArtifactsDirectoryPathError other = (InvalidArtifactsDirectoryPathError)rhs; + boolean isEquals = true; + isEquals = isEquals && this.message.equals(other.message); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(message); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/InvalidRecipeDirectoryPathError.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/InvalidRecipeDirectoryPathError.java new file mode 100644 index 000000000..2975acfbc --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/InvalidRecipeDirectoryPathError.java @@ -0,0 +1,77 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class InvalidRecipeDirectoryPathError extends GreengrassCoreIPCError implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#InvalidRecipeDirectoryPathError"; + + public static final InvalidRecipeDirectoryPathError VOID; + + static { + VOID = new InvalidRecipeDirectoryPathError() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + public InvalidRecipeDirectoryPathError(String errorMessage) { + super("InvalidRecipeDirectoryPathError", errorMessage); + this.message = Optional.ofNullable(errorMessage); + } + + public InvalidRecipeDirectoryPathError() { + super("InvalidRecipeDirectoryPathError", ""); + this.message = Optional.empty(); + } + + @Override + public String getErrorTypeString() { + return "client"; + } + + public String getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final String message) { + this.message = Optional.ofNullable(message); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof InvalidRecipeDirectoryPathError)) return false; + if (this == rhs) return true; + final InvalidRecipeDirectoryPathError other = (InvalidRecipeDirectoryPathError)rhs; + boolean isEquals = true; + isEquals = isEquals && this.message.equals(other.message); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(message); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/InvalidTokenError.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/InvalidTokenError.java new file mode 100644 index 000000000..563331246 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/InvalidTokenError.java @@ -0,0 +1,77 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class InvalidTokenError extends GreengrassCoreIPCError implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#InvalidTokenError"; + + public static final InvalidTokenError VOID; + + static { + VOID = new InvalidTokenError() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + public InvalidTokenError(String errorMessage) { + super("InvalidTokenError", errorMessage); + this.message = Optional.ofNullable(errorMessage); + } + + public InvalidTokenError() { + super("InvalidTokenError", ""); + this.message = Optional.empty(); + } + + @Override + public String getErrorTypeString() { + return "server"; + } + + public String getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final String message) { + this.message = Optional.ofNullable(message); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof InvalidTokenError)) return false; + if (this == rhs) return true; + final InvalidTokenError other = (InvalidTokenError)rhs; + boolean isEquals = true; + isEquals = isEquals && this.message.equals(other.message); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(message); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/IoTCoreMessage.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/IoTCoreMessage.java new file mode 100644 index 000000000..f2832d907 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/IoTCoreMessage.java @@ -0,0 +1,116 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Consumer; +import java.util.function.Predicate; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class IoTCoreMessage implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#IoTCoreMessage"; + + private transient UnionMember setUnionMember; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + public IoTCoreMessage() { + this.message = Optional.empty(); + } + + public MQTTMessage getMessage() { + if (message.isPresent() && (setUnionMember == UnionMember.MESSAGE)) { + return message.get(); + } + return null; + } + + public void setMessage(final MQTTMessage message) { + if (setUnionMember != null) { + setUnionMember.nullify(this); + } + this.message = Optional.of(message); + this.setUnionMember = UnionMember.MESSAGE; + } + + /** + * Returns an indicator for which enum member is set. Can be used to convert to proper type. + */ + public UnionMember getSetUnionMember() { + return setUnionMember; + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + public void selfDesignateSetUnionMember() { + int setCount = 0; + UnionMember[] members = UnionMember.values(); + for (int memberIdx = 0; memberIdx < UnionMember.values().length; ++memberIdx) { + if (members[memberIdx].isPresent(this)) { + ++setCount; + this.setUnionMember = members[memberIdx]; + } + } + // only bad outcome here is if there's more than one member set. It's possible for none to be set + if (setCount > 1) { + throw new IllegalArgumentException("More than one union member set for type: " + getApplicationModelType()); + } + } + + @Override + public void postFromJson() { + selfDesignateSetUnionMember(); + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof IoTCoreMessage)) return false; + if (this == rhs) return true; + final IoTCoreMessage other = (IoTCoreMessage)rhs; + boolean isEquals = true; + isEquals = isEquals && this.message.equals(other.message); + isEquals = isEquals && this.setUnionMember.equals(other.setUnionMember); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(message, setUnionMember); + } + + public enum UnionMember { + MESSAGE("MESSAGE", (software.amazon.awssdk.aws.greengrass.model.IoTCoreMessage obj) -> obj.message = Optional.empty(), (software.amazon.awssdk.aws.greengrass.model.IoTCoreMessage obj) -> obj.message != null && obj.message.isPresent()); + + private String fieldName; + + private Consumer nullifier; + + private Predicate isPresent; + + UnionMember(String fieldName, Consumer nullifier, + Predicate isPresent) { + this.fieldName = fieldName; + this.nullifier = nullifier; + this.isPresent = isPresent; + } + + void nullify(IoTCoreMessage obj) { + nullifier.accept(obj); + } + + boolean isPresent(IoTCoreMessage obj) { + return isPresent.test(obj); + } + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/JsonMessage.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/JsonMessage.java new file mode 100644 index 000000000..cbedaccbe --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/JsonMessage.java @@ -0,0 +1,67 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class JsonMessage implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#JsonMessage"; + + public static final JsonMessage VOID; + + static { + VOID = new JsonMessage() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> message; + + public JsonMessage() { + this.message = Optional.empty(); + } + + public Map getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final Map message) { + this.message = Optional.ofNullable(message); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof JsonMessage)) return false; + if (this == rhs) return true; + final JsonMessage other = (JsonMessage)rhs; + boolean isEquals = true; + isEquals = isEquals && this.message.equals(other.message); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(message); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/LifecycleState.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/LifecycleState.java new file mode 100644 index 000000000..632413dc7 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/LifecycleState.java @@ -0,0 +1,63 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.SerializedName; +import java.lang.Override; +import java.lang.String; +import java.util.HashMap; +import java.util.Map; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public enum LifecycleState implements EventStreamJsonMessage { + @SerializedName("RUNNING") + RUNNING("RUNNING"), + + @SerializedName("ERRORED") + ERRORED("ERRORED"), + + @SerializedName("NEW") + NEW("NEW"), + + @SerializedName("FINISHED") + FINISHED("FINISHED"), + + @SerializedName("INSTALLED") + INSTALLED("INSTALLED"), + + @SerializedName("BROKEN") + BROKEN("BROKEN"), + + @SerializedName("STARTING") + STARTING("STARTING"), + + @SerializedName("STOPPING") + STOPPING("STOPPING"); + + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#LifecycleState"; + + private static final Map lookup = new HashMap(); + + static { + for (LifecycleState value:LifecycleState.values()) { + lookup.put(value.getValue(), value); + } + } + + String value; + + LifecycleState(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + public static LifecycleState get(String value) { + return lookup.get(value); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ListComponentsRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ListComponentsRequest.java new file mode 100644 index 000000000..08b558047 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ListComponentsRequest.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ListComponentsRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ListComponentsRequest"; + + public static final ListComponentsRequest VOID; + + static { + VOID = new ListComponentsRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public ListComponentsRequest() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ListComponentsRequest)) return false; + if (this == rhs) return true; + final ListComponentsRequest other = (ListComponentsRequest)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ListComponentsResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ListComponentsResponse.java new file mode 100644 index 000000000..953baa37d --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ListComponentsResponse.java @@ -0,0 +1,67 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ListComponentsResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ListComponentsResponse"; + + public static final ListComponentsResponse VOID; + + static { + VOID = new ListComponentsResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> components; + + public ListComponentsResponse() { + this.components = Optional.empty(); + } + + public List getComponents() { + if (components.isPresent()) { + return components.get(); + } + return null; + } + + public void setComponents(final List components) { + this.components = Optional.ofNullable(components); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ListComponentsResponse)) return false; + if (this == rhs) return true; + final ListComponentsResponse other = (ListComponentsResponse)rhs; + boolean isEquals = true; + isEquals = isEquals && this.components.equals(other.components); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(components); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ListLocalDeploymentsRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ListLocalDeploymentsRequest.java new file mode 100644 index 000000000..0591f67dd --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ListLocalDeploymentsRequest.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ListLocalDeploymentsRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ListLocalDeploymentsRequest"; + + public static final ListLocalDeploymentsRequest VOID; + + static { + VOID = new ListLocalDeploymentsRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public ListLocalDeploymentsRequest() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ListLocalDeploymentsRequest)) return false; + if (this == rhs) return true; + final ListLocalDeploymentsRequest other = (ListLocalDeploymentsRequest)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ListLocalDeploymentsResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ListLocalDeploymentsResponse.java new file mode 100644 index 000000000..e3e29e930 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ListLocalDeploymentsResponse.java @@ -0,0 +1,67 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ListLocalDeploymentsResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ListLocalDeploymentsResponse"; + + public static final ListLocalDeploymentsResponse VOID; + + static { + VOID = new ListLocalDeploymentsResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> localDeployments; + + public ListLocalDeploymentsResponse() { + this.localDeployments = Optional.empty(); + } + + public List getLocalDeployments() { + if (localDeployments.isPresent()) { + return localDeployments.get(); + } + return null; + } + + public void setLocalDeployments(final List localDeployments) { + this.localDeployments = Optional.ofNullable(localDeployments); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ListLocalDeploymentsResponse)) return false; + if (this == rhs) return true; + final ListLocalDeploymentsResponse other = (ListLocalDeploymentsResponse)rhs; + boolean isEquals = true; + isEquals = isEquals && this.localDeployments.equals(other.localDeployments); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(localDeployments); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/LocalDeployment.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/LocalDeployment.java new file mode 100644 index 000000000..3f4d8f690 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/LocalDeployment.java @@ -0,0 +1,96 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class LocalDeployment implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#LocalDeployment"; + + public static final LocalDeployment VOID; + + static { + VOID = new LocalDeployment() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional deploymentId; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional status; + + public LocalDeployment() { + this.deploymentId = Optional.empty(); + this.status = Optional.empty(); + } + + public String getDeploymentId() { + if (deploymentId.isPresent()) { + return deploymentId.get(); + } + return null; + } + + public void setDeploymentId(final String deploymentId) { + this.deploymentId = Optional.ofNullable(deploymentId); + } + + public DeploymentStatus getStatus() { + if (status.isPresent()) { + return DeploymentStatus.get(status.get()); + } + return null; + } + + public String getStatusAsString() { + if (status.isPresent()) { + return status.get(); + } + return null; + } + + public void setStatus(final DeploymentStatus status) { + this.status = Optional.ofNullable(status.getValue()); + } + + public void setStatus(final String status) { + this.status = Optional.ofNullable(status); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof LocalDeployment)) return false; + if (this == rhs) return true; + final LocalDeployment other = (LocalDeployment)rhs; + boolean isEquals = true; + isEquals = isEquals && this.deploymentId.equals(other.deploymentId); + isEquals = isEquals && this.status.equals(other.status); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(deploymentId, status); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/MQTTMessage.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/MQTTMessage.java new file mode 100644 index 000000000..aa90fa6bd --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/MQTTMessage.java @@ -0,0 +1,86 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class MQTTMessage implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#MQTTMessage"; + + public static final MQTTMessage VOID; + + static { + VOID = new MQTTMessage() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional topicName; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional payload; + + public MQTTMessage() { + this.topicName = Optional.empty(); + this.payload = Optional.empty(); + } + + public String getTopicName() { + if (topicName.isPresent()) { + return topicName.get(); + } + return null; + } + + public void setTopicName(final String topicName) { + this.topicName = Optional.ofNullable(topicName); + } + + public byte[] getPayload() { + if (payload.isPresent()) { + return payload.get(); + } + return null; + } + + public void setPayload(final byte[] payload) { + this.payload = Optional.ofNullable(payload); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof MQTTMessage)) return false; + if (this == rhs) return true; + final MQTTMessage other = (MQTTMessage)rhs; + boolean isEquals = true; + isEquals = isEquals && this.topicName.equals(other.topicName); + isEquals = isEquals && EventStreamRPCServiceModel.blobTypeEquals(this.payload, other.payload); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(topicName, payload); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PostComponentUpdateEvent.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PostComponentUpdateEvent.java new file mode 100644 index 000000000..c1e5b0cf9 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PostComponentUpdateEvent.java @@ -0,0 +1,66 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class PostComponentUpdateEvent implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#PostComponentUpdateEvent"; + + public static final PostComponentUpdateEvent VOID; + + static { + VOID = new PostComponentUpdateEvent() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional deploymentId; + + public PostComponentUpdateEvent() { + this.deploymentId = Optional.empty(); + } + + public String getDeploymentId() { + if (deploymentId.isPresent()) { + return deploymentId.get(); + } + return null; + } + + public void setDeploymentId(final String deploymentId) { + this.deploymentId = Optional.ofNullable(deploymentId); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof PostComponentUpdateEvent)) return false; + if (this == rhs) return true; + final PostComponentUpdateEvent other = (PostComponentUpdateEvent)rhs; + boolean isEquals = true; + isEquals = isEquals && this.deploymentId.equals(other.deploymentId); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(deploymentId); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PreComponentUpdateEvent.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PreComponentUpdateEvent.java new file mode 100644 index 000000000..a8a64b718 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PreComponentUpdateEvent.java @@ -0,0 +1,86 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Boolean; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class PreComponentUpdateEvent implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#PreComponentUpdateEvent"; + + public static final PreComponentUpdateEvent VOID; + + static { + VOID = new PreComponentUpdateEvent() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional deploymentId; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional isGgcRestarting; + + public PreComponentUpdateEvent() { + this.deploymentId = Optional.empty(); + this.isGgcRestarting = Optional.empty(); + } + + public String getDeploymentId() { + if (deploymentId.isPresent()) { + return deploymentId.get(); + } + return null; + } + + public void setDeploymentId(final String deploymentId) { + this.deploymentId = Optional.ofNullable(deploymentId); + } + + public Boolean isIsGgcRestarting() { + if (isGgcRestarting.isPresent()) { + return isGgcRestarting.get(); + } + return null; + } + + public void setIsGgcRestarting(final Boolean isGgcRestarting) { + this.isGgcRestarting = Optional.ofNullable(isGgcRestarting); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof PreComponentUpdateEvent)) return false; + if (this == rhs) return true; + final PreComponentUpdateEvent other = (PreComponentUpdateEvent)rhs; + boolean isEquals = true; + isEquals = isEquals && this.deploymentId.equals(other.deploymentId); + isEquals = isEquals && this.isGgcRestarting.equals(other.isGgcRestarting); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(deploymentId, isGgcRestarting); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishMessage.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishMessage.java new file mode 100644 index 000000000..d030d5c9c --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishMessage.java @@ -0,0 +1,141 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Consumer; +import java.util.function.Predicate; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class PublishMessage implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#PublishMessage"; + + private transient UnionMember setUnionMember; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional jsonMessage; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional binaryMessage; + + public PublishMessage() { + this.jsonMessage = Optional.empty(); + this.binaryMessage = Optional.empty(); + } + + public JsonMessage getJsonMessage() { + if (jsonMessage.isPresent() && (setUnionMember == UnionMember.JSON_MESSAGE)) { + return jsonMessage.get(); + } + return null; + } + + public void setJsonMessage(final JsonMessage jsonMessage) { + if (setUnionMember != null) { + setUnionMember.nullify(this); + } + this.jsonMessage = Optional.of(jsonMessage); + this.setUnionMember = UnionMember.JSON_MESSAGE; + } + + public BinaryMessage getBinaryMessage() { + if (binaryMessage.isPresent() && (setUnionMember == UnionMember.BINARY_MESSAGE)) { + return binaryMessage.get(); + } + return null; + } + + public void setBinaryMessage(final BinaryMessage binaryMessage) { + if (setUnionMember != null) { + setUnionMember.nullify(this); + } + this.binaryMessage = Optional.of(binaryMessage); + this.setUnionMember = UnionMember.BINARY_MESSAGE; + } + + /** + * Returns an indicator for which enum member is set. Can be used to convert to proper type. + */ + public UnionMember getSetUnionMember() { + return setUnionMember; + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + public void selfDesignateSetUnionMember() { + int setCount = 0; + UnionMember[] members = UnionMember.values(); + for (int memberIdx = 0; memberIdx < UnionMember.values().length; ++memberIdx) { + if (members[memberIdx].isPresent(this)) { + ++setCount; + this.setUnionMember = members[memberIdx]; + } + } + // only bad outcome here is if there's more than one member set. It's possible for none to be set + if (setCount > 1) { + throw new IllegalArgumentException("More than one union member set for type: " + getApplicationModelType()); + } + } + + @Override + public void postFromJson() { + selfDesignateSetUnionMember(); + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof PublishMessage)) return false; + if (this == rhs) return true; + final PublishMessage other = (PublishMessage)rhs; + boolean isEquals = true; + isEquals = isEquals && this.jsonMessage.equals(other.jsonMessage); + isEquals = isEquals && this.binaryMessage.equals(other.binaryMessage); + isEquals = isEquals && this.setUnionMember.equals(other.setUnionMember); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(jsonMessage, binaryMessage, setUnionMember); + } + + public enum UnionMember { + JSON_MESSAGE("JSON_MESSAGE", (software.amazon.awssdk.aws.greengrass.model.PublishMessage obj) -> obj.jsonMessage = Optional.empty(), (software.amazon.awssdk.aws.greengrass.model.PublishMessage obj) -> obj.jsonMessage != null && obj.jsonMessage.isPresent()), + + BINARY_MESSAGE("BINARY_MESSAGE", (software.amazon.awssdk.aws.greengrass.model.PublishMessage obj) -> obj.binaryMessage = Optional.empty(), (software.amazon.awssdk.aws.greengrass.model.PublishMessage obj) -> obj.binaryMessage != null && obj.binaryMessage.isPresent()); + + private String fieldName; + + private Consumer nullifier; + + private Predicate isPresent; + + UnionMember(String fieldName, Consumer nullifier, + Predicate isPresent) { + this.fieldName = fieldName; + this.nullifier = nullifier; + this.isPresent = isPresent; + } + + void nullify(PublishMessage obj) { + nullifier.accept(obj); + } + + boolean isPresent(PublishMessage obj) { + return isPresent.test(obj); + } + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishToIoTCoreRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishToIoTCoreRequest.java new file mode 100644 index 000000000..89b4bbc8c --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishToIoTCoreRequest.java @@ -0,0 +1,116 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class PublishToIoTCoreRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#PublishToIoTCoreRequest"; + + public static final PublishToIoTCoreRequest VOID; + + static { + VOID = new PublishToIoTCoreRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional topicName; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional qos; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional payload; + + public PublishToIoTCoreRequest() { + this.topicName = Optional.empty(); + this.qos = Optional.empty(); + this.payload = Optional.empty(); + } + + public String getTopicName() { + if (topicName.isPresent()) { + return topicName.get(); + } + return null; + } + + public void setTopicName(final String topicName) { + this.topicName = Optional.ofNullable(topicName); + } + + public QOS getQos() { + if (qos.isPresent()) { + return QOS.get(qos.get()); + } + return null; + } + + public String getQosAsString() { + if (qos.isPresent()) { + return qos.get(); + } + return null; + } + + public void setQos(final QOS qos) { + this.qos = Optional.ofNullable(qos.getValue()); + } + + public void setQos(final String qos) { + this.qos = Optional.ofNullable(qos); + } + + public byte[] getPayload() { + if (payload.isPresent()) { + return payload.get(); + } + return null; + } + + public void setPayload(final byte[] payload) { + this.payload = Optional.ofNullable(payload); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof PublishToIoTCoreRequest)) return false; + if (this == rhs) return true; + final PublishToIoTCoreRequest other = (PublishToIoTCoreRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.topicName.equals(other.topicName); + isEquals = isEquals && this.qos.equals(other.qos); + isEquals = isEquals && EventStreamRPCServiceModel.blobTypeEquals(this.payload, other.payload); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(topicName, qos, payload); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishToIoTCoreResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishToIoTCoreResponse.java new file mode 100644 index 000000000..ead1360ac --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishToIoTCoreResponse.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class PublishToIoTCoreResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#PublishToIoTCoreResponse"; + + public static final PublishToIoTCoreResponse VOID; + + static { + VOID = new PublishToIoTCoreResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public PublishToIoTCoreResponse() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof PublishToIoTCoreResponse)) return false; + if (this == rhs) return true; + final PublishToIoTCoreResponse other = (PublishToIoTCoreResponse)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishToTopicRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishToTopicRequest.java new file mode 100644 index 000000000..18154565b --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishToTopicRequest.java @@ -0,0 +1,85 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class PublishToTopicRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#PublishToTopicRequest"; + + public static final PublishToTopicRequest VOID; + + static { + VOID = new PublishToTopicRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional topic; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional publishMessage; + + public PublishToTopicRequest() { + this.topic = Optional.empty(); + this.publishMessage = Optional.empty(); + } + + public String getTopic() { + if (topic.isPresent()) { + return topic.get(); + } + return null; + } + + public void setTopic(final String topic) { + this.topic = Optional.ofNullable(topic); + } + + public PublishMessage getPublishMessage() { + if (publishMessage.isPresent()) { + return publishMessage.get(); + } + return null; + } + + public void setPublishMessage(final PublishMessage publishMessage) { + this.publishMessage = Optional.ofNullable(publishMessage); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof PublishToTopicRequest)) return false; + if (this == rhs) return true; + final PublishToTopicRequest other = (PublishToTopicRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.topic.equals(other.topic); + isEquals = isEquals && this.publishMessage.equals(other.publishMessage); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(topic, publishMessage); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishToTopicResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishToTopicResponse.java new file mode 100644 index 000000000..189a0666e --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/PublishToTopicResponse.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class PublishToTopicResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#PublishToTopicResponse"; + + public static final PublishToTopicResponse VOID; + + static { + VOID = new PublishToTopicResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public PublishToTopicResponse() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof PublishToTopicResponse)) return false; + if (this == rhs) return true; + final PublishToTopicResponse other = (PublishToTopicResponse)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/QOS.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/QOS.java new file mode 100644 index 000000000..3cdf38acd --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/QOS.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.SerializedName; +import java.lang.Override; +import java.lang.String; +import java.util.HashMap; +import java.util.Map; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public enum QOS implements EventStreamJsonMessage { + @SerializedName("0") + AT_MOST_ONCE("0"), + + @SerializedName("1") + AT_LEAST_ONCE("1"); + + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#QOS"; + + private static final Map lookup = new HashMap(); + + static { + for (QOS value:QOS.values()) { + lookup.put(value.getValue(), value); + } + } + + String value; + + QOS(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + public static QOS get(String value) { + return lookup.get(value); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ReportedLifecycleState.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ReportedLifecycleState.java new file mode 100644 index 000000000..2f7b3d99b --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ReportedLifecycleState.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.SerializedName; +import java.lang.Override; +import java.lang.String; +import java.util.HashMap; +import java.util.Map; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public enum ReportedLifecycleState implements EventStreamJsonMessage { + @SerializedName("RUNNING") + RUNNING("RUNNING"), + + @SerializedName("ERRORED") + ERRORED("ERRORED"); + + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ReportedLifecycleState"; + + private static final Map lookup = new HashMap(); + + static { + for (ReportedLifecycleState value:ReportedLifecycleState.values()) { + lookup.put(value.getValue(), value); + } + } + + String value; + + ReportedLifecycleState(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + public static ReportedLifecycleState get(String value) { + return lookup.get(value); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/RequestStatus.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/RequestStatus.java new file mode 100644 index 000000000..ec4249e5e --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/RequestStatus.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.SerializedName; +import java.lang.Override; +import java.lang.String; +import java.util.HashMap; +import java.util.Map; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public enum RequestStatus implements EventStreamJsonMessage { + @SerializedName("SUCCEEDED") + SUCCEEDED("SUCCEEDED"), + + @SerializedName("FAILED") + FAILED("FAILED"); + + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#RequestStatus"; + + private static final Map lookup = new HashMap(); + + static { + for (RequestStatus value:RequestStatus.values()) { + lookup.put(value.getValue(), value); + } + } + + String value; + + RequestStatus(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + public static RequestStatus get(String value) { + return lookup.get(value); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ResourceNotFoundError.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ResourceNotFoundError.java new file mode 100644 index 000000000..9de3bfa4f --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ResourceNotFoundError.java @@ -0,0 +1,117 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ResourceNotFoundError extends GreengrassCoreIPCError implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ResourceNotFoundError"; + + public static final ResourceNotFoundError VOID; + + static { + VOID = new ResourceNotFoundError() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional resourceType; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional resourceName; + + public ResourceNotFoundError(String errorMessage) { + super("ResourceNotFoundError", errorMessage); + this.message = Optional.ofNullable(errorMessage); + this.resourceType = Optional.empty(); + this.resourceName = Optional.empty(); + } + + public ResourceNotFoundError() { + super("ResourceNotFoundError", ""); + this.message = Optional.empty(); + this.resourceType = Optional.empty(); + this.resourceName = Optional.empty(); + } + + @Override + public String getErrorTypeString() { + return "client"; + } + + public String getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final String message) { + this.message = Optional.ofNullable(message); + } + + public String getResourceType() { + if (resourceType.isPresent()) { + return resourceType.get(); + } + return null; + } + + public void setResourceType(final String resourceType) { + this.resourceType = Optional.ofNullable(resourceType); + } + + public String getResourceName() { + if (resourceName.isPresent()) { + return resourceName.get(); + } + return null; + } + + public void setResourceName(final String resourceName) { + this.resourceName = Optional.ofNullable(resourceName); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ResourceNotFoundError)) return false; + if (this == rhs) return true; + final ResourceNotFoundError other = (ResourceNotFoundError)rhs; + boolean isEquals = true; + isEquals = isEquals && this.message.equals(other.message); + isEquals = isEquals && this.resourceType.equals(other.resourceType); + isEquals = isEquals && this.resourceName.equals(other.resourceName); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(message, resourceType, resourceName); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/RestartComponentRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/RestartComponentRequest.java new file mode 100644 index 000000000..63f52a219 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/RestartComponentRequest.java @@ -0,0 +1,66 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class RestartComponentRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#RestartComponentRequest"; + + public static final RestartComponentRequest VOID; + + static { + VOID = new RestartComponentRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional componentName; + + public RestartComponentRequest() { + this.componentName = Optional.empty(); + } + + public String getComponentName() { + if (componentName.isPresent()) { + return componentName.get(); + } + return null; + } + + public void setComponentName(final String componentName) { + this.componentName = Optional.ofNullable(componentName); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof RestartComponentRequest)) return false; + if (this == rhs) return true; + final RestartComponentRequest other = (RestartComponentRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.componentName.equals(other.componentName); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(componentName); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/RestartComponentResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/RestartComponentResponse.java new file mode 100644 index 000000000..fdf01c3a1 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/RestartComponentResponse.java @@ -0,0 +1,96 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class RestartComponentResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#RestartComponentResponse"; + + public static final RestartComponentResponse VOID; + + static { + VOID = new RestartComponentResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional restartStatus; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + public RestartComponentResponse() { + this.restartStatus = Optional.empty(); + this.message = Optional.empty(); + } + + public RequestStatus getRestartStatus() { + if (restartStatus.isPresent()) { + return RequestStatus.get(restartStatus.get()); + } + return null; + } + + public String getRestartStatusAsString() { + if (restartStatus.isPresent()) { + return restartStatus.get(); + } + return null; + } + + public void setRestartStatus(final RequestStatus restartStatus) { + this.restartStatus = Optional.ofNullable(restartStatus.getValue()); + } + + public void setRestartStatus(final String restartStatus) { + this.restartStatus = Optional.ofNullable(restartStatus); + } + + public String getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final String message) { + this.message = Optional.ofNullable(message); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof RestartComponentResponse)) return false; + if (this == rhs) return true; + final RestartComponentResponse other = (RestartComponentResponse)rhs; + boolean isEquals = true; + isEquals = isEquals && this.restartStatus.equals(other.restartStatus); + isEquals = isEquals && this.message.equals(other.message); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(restartStatus, message); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/RunWithInfo.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/RunWithInfo.java new file mode 100644 index 000000000..4e537fdfb --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/RunWithInfo.java @@ -0,0 +1,66 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class RunWithInfo implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#RunWithInfo"; + + public static final RunWithInfo VOID; + + static { + VOID = new RunWithInfo() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional posixUser; + + public RunWithInfo() { + this.posixUser = Optional.empty(); + } + + public String getPosixUser() { + if (posixUser.isPresent()) { + return posixUser.get(); + } + return null; + } + + public void setPosixUser(final String posixUser) { + this.posixUser = Optional.ofNullable(posixUser); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof RunWithInfo)) return false; + if (this == rhs) return true; + final RunWithInfo other = (RunWithInfo)rhs; + boolean isEquals = true; + isEquals = isEquals && this.posixUser.equals(other.posixUser); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(posixUser); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SecretValue.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SecretValue.java new file mode 100644 index 000000000..401b84db6 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SecretValue.java @@ -0,0 +1,142 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Consumer; +import java.util.function.Predicate; +import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SecretValue implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#SecretValue"; + + private transient UnionMember setUnionMember; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional secretString; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional secretBinary; + + public SecretValue() { + this.secretString = Optional.empty(); + this.secretBinary = Optional.empty(); + } + + public String getSecretString() { + if (secretString.isPresent() && (setUnionMember == UnionMember.SECRET_STRING)) { + return secretString.get(); + } + return null; + } + + public void setSecretString(final String secretString) { + if (setUnionMember != null) { + setUnionMember.nullify(this); + } + this.secretString = Optional.of(secretString); + this.setUnionMember = UnionMember.SECRET_STRING; + } + + public byte[] getSecretBinary() { + if (secretBinary.isPresent() && (setUnionMember == UnionMember.SECRET_BINARY)) { + return secretBinary.get(); + } + return null; + } + + public void setSecretBinary(final byte[] secretBinary) { + if (setUnionMember != null) { + setUnionMember.nullify(this); + } + this.secretBinary = Optional.of(secretBinary); + this.setUnionMember = UnionMember.SECRET_BINARY; + } + + /** + * Returns an indicator for which enum member is set. Can be used to convert to proper type. + */ + public UnionMember getSetUnionMember() { + return setUnionMember; + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + public void selfDesignateSetUnionMember() { + int setCount = 0; + UnionMember[] members = UnionMember.values(); + for (int memberIdx = 0; memberIdx < UnionMember.values().length; ++memberIdx) { + if (members[memberIdx].isPresent(this)) { + ++setCount; + this.setUnionMember = members[memberIdx]; + } + } + // only bad outcome here is if there's more than one member set. It's possible for none to be set + if (setCount > 1) { + throw new IllegalArgumentException("More than one union member set for type: " + getApplicationModelType()); + } + } + + @Override + public void postFromJson() { + selfDesignateSetUnionMember(); + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof SecretValue)) return false; + if (this == rhs) return true; + final SecretValue other = (SecretValue)rhs; + boolean isEquals = true; + isEquals = isEquals && this.secretString.equals(other.secretString); + isEquals = isEquals && EventStreamRPCServiceModel.blobTypeEquals(this.secretBinary, other.secretBinary); + isEquals = isEquals && this.setUnionMember.equals(other.setUnionMember); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(secretString, secretBinary, setUnionMember); + } + + public enum UnionMember { + SECRET_STRING("SECRET_STRING", (software.amazon.awssdk.aws.greengrass.model.SecretValue obj) -> obj.secretString = Optional.empty(), (software.amazon.awssdk.aws.greengrass.model.SecretValue obj) -> obj.secretString != null && obj.secretString.isPresent()), + + SECRET_BINARY("SECRET_BINARY", (software.amazon.awssdk.aws.greengrass.model.SecretValue obj) -> obj.secretBinary = Optional.empty(), (software.amazon.awssdk.aws.greengrass.model.SecretValue obj) -> obj.secretBinary != null && obj.secretBinary.isPresent()); + + private String fieldName; + + private Consumer nullifier; + + private Predicate isPresent; + + UnionMember(String fieldName, Consumer nullifier, + Predicate isPresent) { + this.fieldName = fieldName; + this.nullifier = nullifier; + this.isPresent = isPresent; + } + + void nullify(SecretValue obj) { + nullifier.accept(obj); + } + + boolean isPresent(SecretValue obj) { + return isPresent.test(obj); + } + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SendConfigurationValidityReportRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SendConfigurationValidityReportRequest.java new file mode 100644 index 000000000..e084571c2 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SendConfigurationValidityReportRequest.java @@ -0,0 +1,67 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SendConfigurationValidityReportRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#SendConfigurationValidityReportRequest"; + + public static final SendConfigurationValidityReportRequest VOID; + + static { + VOID = new SendConfigurationValidityReportRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional configurationValidityReport; + + public SendConfigurationValidityReportRequest() { + this.configurationValidityReport = Optional.empty(); + } + + public ConfigurationValidityReport getConfigurationValidityReport() { + if (configurationValidityReport.isPresent()) { + return configurationValidityReport.get(); + } + return null; + } + + public void setConfigurationValidityReport( + final ConfigurationValidityReport configurationValidityReport) { + this.configurationValidityReport = Optional.ofNullable(configurationValidityReport); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof SendConfigurationValidityReportRequest)) return false; + if (this == rhs) return true; + final SendConfigurationValidityReportRequest other = (SendConfigurationValidityReportRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.configurationValidityReport.equals(other.configurationValidityReport); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(configurationValidityReport); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SendConfigurationValidityReportResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SendConfigurationValidityReportResponse.java new file mode 100644 index 000000000..b99bbf9c0 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SendConfigurationValidityReportResponse.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SendConfigurationValidityReportResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#SendConfigurationValidityReportResponse"; + + public static final SendConfigurationValidityReportResponse VOID; + + static { + VOID = new SendConfigurationValidityReportResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public SendConfigurationValidityReportResponse() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof SendConfigurationValidityReportResponse)) return false; + if (this == rhs) return true; + final SendConfigurationValidityReportResponse other = (SendConfigurationValidityReportResponse)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ServiceError.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ServiceError.java new file mode 100644 index 000000000..a8742d7bc --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ServiceError.java @@ -0,0 +1,77 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ServiceError extends GreengrassCoreIPCError implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ServiceError"; + + public static final ServiceError VOID; + + static { + VOID = new ServiceError() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + public ServiceError(String errorMessage) { + super("ServiceError", errorMessage); + this.message = Optional.ofNullable(errorMessage); + } + + public ServiceError() { + super("ServiceError", ""); + this.message = Optional.empty(); + } + + @Override + public String getErrorTypeString() { + return "server"; + } + + public String getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final String message) { + this.message = Optional.ofNullable(message); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ServiceError)) return false; + if (this == rhs) return true; + final ServiceError other = (ServiceError)rhs; + boolean isEquals = true; + isEquals = isEquals && this.message.equals(other.message); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(message); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/StopComponentRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/StopComponentRequest.java new file mode 100644 index 000000000..3919a944c --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/StopComponentRequest.java @@ -0,0 +1,66 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class StopComponentRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#StopComponentRequest"; + + public static final StopComponentRequest VOID; + + static { + VOID = new StopComponentRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional componentName; + + public StopComponentRequest() { + this.componentName = Optional.empty(); + } + + public String getComponentName() { + if (componentName.isPresent()) { + return componentName.get(); + } + return null; + } + + public void setComponentName(final String componentName) { + this.componentName = Optional.ofNullable(componentName); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof StopComponentRequest)) return false; + if (this == rhs) return true; + final StopComponentRequest other = (StopComponentRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.componentName.equals(other.componentName); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(componentName); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/StopComponentResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/StopComponentResponse.java new file mode 100644 index 000000000..0aae9d84a --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/StopComponentResponse.java @@ -0,0 +1,96 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class StopComponentResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#StopComponentResponse"; + + public static final StopComponentResponse VOID; + + static { + VOID = new StopComponentResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional stopStatus; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + public StopComponentResponse() { + this.stopStatus = Optional.empty(); + this.message = Optional.empty(); + } + + public RequestStatus getStopStatus() { + if (stopStatus.isPresent()) { + return RequestStatus.get(stopStatus.get()); + } + return null; + } + + public String getStopStatusAsString() { + if (stopStatus.isPresent()) { + return stopStatus.get(); + } + return null; + } + + public void setStopStatus(final RequestStatus stopStatus) { + this.stopStatus = Optional.ofNullable(stopStatus.getValue()); + } + + public void setStopStatus(final String stopStatus) { + this.stopStatus = Optional.ofNullable(stopStatus); + } + + public String getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final String message) { + this.message = Optional.ofNullable(message); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof StopComponentResponse)) return false; + if (this == rhs) return true; + final StopComponentResponse other = (StopComponentResponse)rhs; + boolean isEquals = true; + isEquals = isEquals && this.stopStatus.equals(other.stopStatus); + isEquals = isEquals && this.message.equals(other.message); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(stopStatus, message); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToComponentUpdatesRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToComponentUpdatesRequest.java new file mode 100644 index 000000000..2418ffe44 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToComponentUpdatesRequest.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToComponentUpdatesRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#SubscribeToComponentUpdatesRequest"; + + public static final SubscribeToComponentUpdatesRequest VOID; + + static { + VOID = new SubscribeToComponentUpdatesRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public SubscribeToComponentUpdatesRequest() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof SubscribeToComponentUpdatesRequest)) return false; + if (this == rhs) return true; + final SubscribeToComponentUpdatesRequest other = (SubscribeToComponentUpdatesRequest)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToComponentUpdatesResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToComponentUpdatesResponse.java new file mode 100644 index 000000000..5c3c378d5 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToComponentUpdatesResponse.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToComponentUpdatesResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#SubscribeToComponentUpdatesResponse"; + + public static final SubscribeToComponentUpdatesResponse VOID; + + static { + VOID = new SubscribeToComponentUpdatesResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public SubscribeToComponentUpdatesResponse() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof SubscribeToComponentUpdatesResponse)) return false; + if (this == rhs) return true; + final SubscribeToComponentUpdatesResponse other = (SubscribeToComponentUpdatesResponse)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToConfigurationUpdateRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToConfigurationUpdateRequest.java new file mode 100644 index 000000000..39fe8dd32 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToConfigurationUpdateRequest.java @@ -0,0 +1,86 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToConfigurationUpdateRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#SubscribeToConfigurationUpdateRequest"; + + public static final SubscribeToConfigurationUpdateRequest VOID; + + static { + VOID = new SubscribeToConfigurationUpdateRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional componentName; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> keyPath; + + public SubscribeToConfigurationUpdateRequest() { + this.componentName = Optional.empty(); + this.keyPath = Optional.empty(); + } + + public String getComponentName() { + if (componentName.isPresent()) { + return componentName.get(); + } + return null; + } + + public void setComponentName(final String componentName) { + this.componentName = Optional.ofNullable(componentName); + } + + public List getKeyPath() { + if (keyPath.isPresent()) { + return keyPath.get(); + } + return null; + } + + public void setKeyPath(final List keyPath) { + this.keyPath = Optional.ofNullable(keyPath); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof SubscribeToConfigurationUpdateRequest)) return false; + if (this == rhs) return true; + final SubscribeToConfigurationUpdateRequest other = (SubscribeToConfigurationUpdateRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.componentName.equals(other.componentName); + isEquals = isEquals && this.keyPath.equals(other.keyPath); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(componentName, keyPath); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToConfigurationUpdateResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToConfigurationUpdateResponse.java new file mode 100644 index 000000000..009a8d3ec --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToConfigurationUpdateResponse.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToConfigurationUpdateResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#SubscribeToConfigurationUpdateResponse"; + + public static final SubscribeToConfigurationUpdateResponse VOID; + + static { + VOID = new SubscribeToConfigurationUpdateResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public SubscribeToConfigurationUpdateResponse() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof SubscribeToConfigurationUpdateResponse)) return false; + if (this == rhs) return true; + final SubscribeToConfigurationUpdateResponse other = (SubscribeToConfigurationUpdateResponse)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToIoTCoreRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToIoTCoreRequest.java new file mode 100644 index 000000000..703cda19e --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToIoTCoreRequest.java @@ -0,0 +1,96 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToIoTCoreRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#SubscribeToIoTCoreRequest"; + + public static final SubscribeToIoTCoreRequest VOID; + + static { + VOID = new SubscribeToIoTCoreRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional topicName; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional qos; + + public SubscribeToIoTCoreRequest() { + this.topicName = Optional.empty(); + this.qos = Optional.empty(); + } + + public String getTopicName() { + if (topicName.isPresent()) { + return topicName.get(); + } + return null; + } + + public void setTopicName(final String topicName) { + this.topicName = Optional.ofNullable(topicName); + } + + public QOS getQos() { + if (qos.isPresent()) { + return QOS.get(qos.get()); + } + return null; + } + + public String getQosAsString() { + if (qos.isPresent()) { + return qos.get(); + } + return null; + } + + public void setQos(final QOS qos) { + this.qos = Optional.ofNullable(qos.getValue()); + } + + public void setQos(final String qos) { + this.qos = Optional.ofNullable(qos); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof SubscribeToIoTCoreRequest)) return false; + if (this == rhs) return true; + final SubscribeToIoTCoreRequest other = (SubscribeToIoTCoreRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.topicName.equals(other.topicName); + isEquals = isEquals && this.qos.equals(other.qos); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(topicName, qos); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToIoTCoreResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToIoTCoreResponse.java new file mode 100644 index 000000000..b22f17b92 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToIoTCoreResponse.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToIoTCoreResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#SubscribeToIoTCoreResponse"; + + public static final SubscribeToIoTCoreResponse VOID; + + static { + VOID = new SubscribeToIoTCoreResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public SubscribeToIoTCoreResponse() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof SubscribeToIoTCoreResponse)) return false; + if (this == rhs) return true; + final SubscribeToIoTCoreResponse other = (SubscribeToIoTCoreResponse)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToTopicRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToTopicRequest.java new file mode 100644 index 000000000..1541128dc --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToTopicRequest.java @@ -0,0 +1,66 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToTopicRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#SubscribeToTopicRequest"; + + public static final SubscribeToTopicRequest VOID; + + static { + VOID = new SubscribeToTopicRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional topic; + + public SubscribeToTopicRequest() { + this.topic = Optional.empty(); + } + + public String getTopic() { + if (topic.isPresent()) { + return topic.get(); + } + return null; + } + + public void setTopic(final String topic) { + this.topic = Optional.ofNullable(topic); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof SubscribeToTopicRequest)) return false; + if (this == rhs) return true; + final SubscribeToTopicRequest other = (SubscribeToTopicRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.topic.equals(other.topic); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(topic); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToTopicResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToTopicResponse.java new file mode 100644 index 000000000..68d9a5d80 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToTopicResponse.java @@ -0,0 +1,66 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToTopicResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#SubscribeToTopicResponse"; + + public static final SubscribeToTopicResponse VOID; + + static { + VOID = new SubscribeToTopicResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional topicName; + + public SubscribeToTopicResponse() { + this.topicName = Optional.empty(); + } + + public String getTopicName() { + if (topicName.isPresent()) { + return topicName.get(); + } + return null; + } + + public void setTopicName(final String topicName) { + this.topicName = Optional.ofNullable(topicName); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof SubscribeToTopicResponse)) return false; + if (this == rhs) return true; + final SubscribeToTopicResponse other = (SubscribeToTopicResponse)rhs; + boolean isEquals = true; + isEquals = isEquals && this.topicName.equals(other.topicName); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(topicName); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToValidateConfigurationUpdatesRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToValidateConfigurationUpdatesRequest.java new file mode 100644 index 000000000..870a77834 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToValidateConfigurationUpdatesRequest.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToValidateConfigurationUpdatesRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#SubscribeToValidateConfigurationUpdatesRequest"; + + public static final SubscribeToValidateConfigurationUpdatesRequest VOID; + + static { + VOID = new SubscribeToValidateConfigurationUpdatesRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public SubscribeToValidateConfigurationUpdatesRequest() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof SubscribeToValidateConfigurationUpdatesRequest)) return false; + if (this == rhs) return true; + final SubscribeToValidateConfigurationUpdatesRequest other = (SubscribeToValidateConfigurationUpdatesRequest)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToValidateConfigurationUpdatesResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToValidateConfigurationUpdatesResponse.java new file mode 100644 index 000000000..49ed4d9a8 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscribeToValidateConfigurationUpdatesResponse.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscribeToValidateConfigurationUpdatesResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#SubscribeToValidateConfigurationUpdatesResponse"; + + public static final SubscribeToValidateConfigurationUpdatesResponse VOID; + + static { + VOID = new SubscribeToValidateConfigurationUpdatesResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public SubscribeToValidateConfigurationUpdatesResponse() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof SubscribeToValidateConfigurationUpdatesResponse)) return false; + if (this == rhs) return true; + final SubscribeToValidateConfigurationUpdatesResponse other = (SubscribeToValidateConfigurationUpdatesResponse)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscriptionResponseMessage.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscriptionResponseMessage.java new file mode 100644 index 000000000..37c021f9c --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/SubscriptionResponseMessage.java @@ -0,0 +1,141 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Consumer; +import java.util.function.Predicate; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class SubscriptionResponseMessage implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#SubscriptionResponseMessage"; + + private transient UnionMember setUnionMember; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional jsonMessage; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional binaryMessage; + + public SubscriptionResponseMessage() { + this.jsonMessage = Optional.empty(); + this.binaryMessage = Optional.empty(); + } + + public JsonMessage getJsonMessage() { + if (jsonMessage.isPresent() && (setUnionMember == UnionMember.JSON_MESSAGE)) { + return jsonMessage.get(); + } + return null; + } + + public void setJsonMessage(final JsonMessage jsonMessage) { + if (setUnionMember != null) { + setUnionMember.nullify(this); + } + this.jsonMessage = Optional.of(jsonMessage); + this.setUnionMember = UnionMember.JSON_MESSAGE; + } + + public BinaryMessage getBinaryMessage() { + if (binaryMessage.isPresent() && (setUnionMember == UnionMember.BINARY_MESSAGE)) { + return binaryMessage.get(); + } + return null; + } + + public void setBinaryMessage(final BinaryMessage binaryMessage) { + if (setUnionMember != null) { + setUnionMember.nullify(this); + } + this.binaryMessage = Optional.of(binaryMessage); + this.setUnionMember = UnionMember.BINARY_MESSAGE; + } + + /** + * Returns an indicator for which enum member is set. Can be used to convert to proper type. + */ + public UnionMember getSetUnionMember() { + return setUnionMember; + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + public void selfDesignateSetUnionMember() { + int setCount = 0; + UnionMember[] members = UnionMember.values(); + for (int memberIdx = 0; memberIdx < UnionMember.values().length; ++memberIdx) { + if (members[memberIdx].isPresent(this)) { + ++setCount; + this.setUnionMember = members[memberIdx]; + } + } + // only bad outcome here is if there's more than one member set. It's possible for none to be set + if (setCount > 1) { + throw new IllegalArgumentException("More than one union member set for type: " + getApplicationModelType()); + } + } + + @Override + public void postFromJson() { + selfDesignateSetUnionMember(); + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof SubscriptionResponseMessage)) return false; + if (this == rhs) return true; + final SubscriptionResponseMessage other = (SubscriptionResponseMessage)rhs; + boolean isEquals = true; + isEquals = isEquals && this.jsonMessage.equals(other.jsonMessage); + isEquals = isEquals && this.binaryMessage.equals(other.binaryMessage); + isEquals = isEquals && this.setUnionMember.equals(other.setUnionMember); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(jsonMessage, binaryMessage, setUnionMember); + } + + public enum UnionMember { + JSON_MESSAGE("JSON_MESSAGE", (software.amazon.awssdk.aws.greengrass.model.SubscriptionResponseMessage obj) -> obj.jsonMessage = Optional.empty(), (software.amazon.awssdk.aws.greengrass.model.SubscriptionResponseMessage obj) -> obj.jsonMessage != null && obj.jsonMessage.isPresent()), + + BINARY_MESSAGE("BINARY_MESSAGE", (software.amazon.awssdk.aws.greengrass.model.SubscriptionResponseMessage obj) -> obj.binaryMessage = Optional.empty(), (software.amazon.awssdk.aws.greengrass.model.SubscriptionResponseMessage obj) -> obj.binaryMessage != null && obj.binaryMessage.isPresent()); + + private String fieldName; + + private Consumer nullifier; + + private Predicate isPresent; + + UnionMember(String fieldName, Consumer nullifier, + Predicate isPresent) { + this.fieldName = fieldName; + this.nullifier = nullifier; + this.isPresent = isPresent; + } + + void nullify(SubscriptionResponseMessage obj) { + nullifier.accept(obj); + } + + boolean isPresent(SubscriptionResponseMessage obj) { + return isPresent.test(obj); + } + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UnauthorizedError.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UnauthorizedError.java new file mode 100644 index 000000000..1581f27e0 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UnauthorizedError.java @@ -0,0 +1,77 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class UnauthorizedError extends GreengrassCoreIPCError implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#UnauthorizedError"; + + public static final UnauthorizedError VOID; + + static { + VOID = new UnauthorizedError() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional message; + + public UnauthorizedError(String errorMessage) { + super("UnauthorizedError", errorMessage); + this.message = Optional.ofNullable(errorMessage); + } + + public UnauthorizedError() { + super("UnauthorizedError", ""); + this.message = Optional.empty(); + } + + @Override + public String getErrorTypeString() { + return "client"; + } + + public String getMessage() { + if (message.isPresent()) { + return message.get(); + } + return null; + } + + public void setMessage(final String message) { + this.message = Optional.ofNullable(message); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof UnauthorizedError)) return false; + if (this == rhs) return true; + final UnauthorizedError other = (UnauthorizedError)rhs; + boolean isEquals = true; + isEquals = isEquals && this.message.equals(other.message); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(message); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UpdateConfigurationRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UpdateConfigurationRequest.java new file mode 100644 index 000000000..3e12dbc78 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UpdateConfigurationRequest.java @@ -0,0 +1,107 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.time.Instant; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class UpdateConfigurationRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#UpdateConfigurationRequest"; + + public static final UpdateConfigurationRequest VOID; + + static { + VOID = new UpdateConfigurationRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> keyPath; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional timestamp; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> valueToMerge; + + public UpdateConfigurationRequest() { + this.keyPath = Optional.empty(); + this.timestamp = Optional.empty(); + this.valueToMerge = Optional.empty(); + } + + public List getKeyPath() { + if (keyPath.isPresent()) { + return keyPath.get(); + } + return null; + } + + public void setKeyPath(final List keyPath) { + this.keyPath = Optional.ofNullable(keyPath); + } + + public Instant getTimestamp() { + if (timestamp.isPresent()) { + return timestamp.get(); + } + return null; + } + + public void setTimestamp(final Instant timestamp) { + this.timestamp = Optional.ofNullable(timestamp); + } + + public Map getValueToMerge() { + if (valueToMerge.isPresent()) { + return valueToMerge.get(); + } + return null; + } + + public void setValueToMerge(final Map valueToMerge) { + this.valueToMerge = Optional.ofNullable(valueToMerge); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof UpdateConfigurationRequest)) return false; + if (this == rhs) return true; + final UpdateConfigurationRequest other = (UpdateConfigurationRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.keyPath.equals(other.keyPath); + isEquals = isEquals && this.timestamp.equals(other.timestamp); + isEquals = isEquals && this.valueToMerge.equals(other.valueToMerge); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(keyPath, timestamp, valueToMerge); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UpdateConfigurationResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UpdateConfigurationResponse.java new file mode 100644 index 000000000..92c58c570 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UpdateConfigurationResponse.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class UpdateConfigurationResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#UpdateConfigurationResponse"; + + public static final UpdateConfigurationResponse VOID; + + static { + VOID = new UpdateConfigurationResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public UpdateConfigurationResponse() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof UpdateConfigurationResponse)) return false; + if (this == rhs) return true; + final UpdateConfigurationResponse other = (UpdateConfigurationResponse)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UpdateStateRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UpdateStateRequest.java new file mode 100644 index 000000000..b09fabdd3 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UpdateStateRequest.java @@ -0,0 +1,77 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class UpdateStateRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#UpdateStateRequest"; + + public static final UpdateStateRequest VOID; + + static { + VOID = new UpdateStateRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional state; + + public UpdateStateRequest() { + this.state = Optional.empty(); + } + + public ReportedLifecycleState getState() { + if (state.isPresent()) { + return ReportedLifecycleState.get(state.get()); + } + return null; + } + + public String getStateAsString() { + if (state.isPresent()) { + return state.get(); + } + return null; + } + + public void setState(final ReportedLifecycleState state) { + this.state = Optional.ofNullable(state.getValue()); + } + + public void setState(final String state) { + this.state = Optional.ofNullable(state); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof UpdateStateRequest)) return false; + if (this == rhs) return true; + final UpdateStateRequest other = (UpdateStateRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.state.equals(other.state); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(state); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UpdateStateResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UpdateStateResponse.java new file mode 100644 index 000000000..1a80548ca --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/UpdateStateResponse.java @@ -0,0 +1,45 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class UpdateStateResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#UpdateStateResponse"; + + public static final UpdateStateResponse VOID; + + static { + VOID = new UpdateStateResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + public UpdateStateResponse() { + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof UpdateStateResponse)) return false; + if (this == rhs) return true; + final UpdateStateResponse other = (UpdateStateResponse)rhs; + boolean isEquals = true; + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ValidateAuthorizationTokenRequest.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ValidateAuthorizationTokenRequest.java new file mode 100644 index 000000000..a571e6b93 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ValidateAuthorizationTokenRequest.java @@ -0,0 +1,66 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ValidateAuthorizationTokenRequest implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ValidateAuthorizationTokenRequest"; + + public static final ValidateAuthorizationTokenRequest VOID; + + static { + VOID = new ValidateAuthorizationTokenRequest() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional token; + + public ValidateAuthorizationTokenRequest() { + this.token = Optional.empty(); + } + + public String getToken() { + if (token.isPresent()) { + return token.get(); + } + return null; + } + + public void setToken(final String token) { + this.token = Optional.ofNullable(token); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ValidateAuthorizationTokenRequest)) return false; + if (this == rhs) return true; + final ValidateAuthorizationTokenRequest other = (ValidateAuthorizationTokenRequest)rhs; + boolean isEquals = true; + isEquals = isEquals && this.token.equals(other.token); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(token); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ValidateAuthorizationTokenResponse.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ValidateAuthorizationTokenResponse.java new file mode 100644 index 000000000..756e93d6d --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ValidateAuthorizationTokenResponse.java @@ -0,0 +1,67 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Boolean; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ValidateAuthorizationTokenResponse implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ValidateAuthorizationTokenResponse"; + + public static final ValidateAuthorizationTokenResponse VOID; + + static { + VOID = new ValidateAuthorizationTokenResponse() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional isValid; + + public ValidateAuthorizationTokenResponse() { + this.isValid = Optional.empty(); + } + + public Boolean isIsValid() { + if (isValid.isPresent()) { + return isValid.get(); + } + return null; + } + + public void setIsValid(final Boolean isValid) { + this.isValid = Optional.ofNullable(isValid); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ValidateAuthorizationTokenResponse)) return false; + if (this == rhs) return true; + final ValidateAuthorizationTokenResponse other = (ValidateAuthorizationTokenResponse)rhs; + boolean isEquals = true; + isEquals = isEquals && this.isValid.equals(other.isValid); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(isValid); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ValidateConfigurationUpdateEvent.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ValidateConfigurationUpdateEvent.java new file mode 100644 index 000000000..d65a7e80d --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ValidateConfigurationUpdateEvent.java @@ -0,0 +1,86 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ValidateConfigurationUpdateEvent implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ValidateConfigurationUpdateEvent"; + + public static final ValidateConfigurationUpdateEvent VOID; + + static { + VOID = new ValidateConfigurationUpdateEvent() { + @Override + public boolean isVoid() { + return true; + } + }; + } + + @Expose( + serialize = true, + deserialize = true + ) + private Optional> configuration; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional deploymentId; + + public ValidateConfigurationUpdateEvent() { + this.configuration = Optional.empty(); + this.deploymentId = Optional.empty(); + } + + public Map getConfiguration() { + if (configuration.isPresent()) { + return configuration.get(); + } + return null; + } + + public void setConfiguration(final Map configuration) { + this.configuration = Optional.ofNullable(configuration); + } + + public String getDeploymentId() { + if (deploymentId.isPresent()) { + return deploymentId.get(); + } + return null; + } + + public void setDeploymentId(final String deploymentId) { + this.deploymentId = Optional.ofNullable(deploymentId); + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ValidateConfigurationUpdateEvent)) return false; + if (this == rhs) return true; + final ValidateConfigurationUpdateEvent other = (ValidateConfigurationUpdateEvent)rhs; + boolean isEquals = true; + isEquals = isEquals && this.configuration.equals(other.configuration); + isEquals = isEquals && this.deploymentId.equals(other.deploymentId); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(configuration, deploymentId); + } +} diff --git a/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ValidateConfigurationUpdateEvents.java b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ValidateConfigurationUpdateEvents.java new file mode 100644 index 000000000..7327f6366 --- /dev/null +++ b/sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/model/ValidateConfigurationUpdateEvents.java @@ -0,0 +1,117 @@ +package software.amazon.awssdk.aws.greengrass.model; + +import com.google.gson.annotations.Expose; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Consumer; +import java.util.function.Predicate; +import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage; + +public class ValidateConfigurationUpdateEvents implements EventStreamJsonMessage { + public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#ValidateConfigurationUpdateEvents"; + + private transient UnionMember setUnionMember; + + @Expose( + serialize = true, + deserialize = true + ) + private Optional validateConfigurationUpdateEvent; + + public ValidateConfigurationUpdateEvents() { + this.validateConfigurationUpdateEvent = Optional.empty(); + } + + public ValidateConfigurationUpdateEvent getValidateConfigurationUpdateEvent() { + if (validateConfigurationUpdateEvent.isPresent() && (setUnionMember == UnionMember.VALIDATE_CONFIGURATION_UPDATE_EVENT)) { + return validateConfigurationUpdateEvent.get(); + } + return null; + } + + public void setValidateConfigurationUpdateEvent( + final ValidateConfigurationUpdateEvent validateConfigurationUpdateEvent) { + if (setUnionMember != null) { + setUnionMember.nullify(this); + } + this.validateConfigurationUpdateEvent = Optional.of(validateConfigurationUpdateEvent); + this.setUnionMember = UnionMember.VALIDATE_CONFIGURATION_UPDATE_EVENT; + } + + /** + * Returns an indicator for which enum member is set. Can be used to convert to proper type. + */ + public UnionMember getSetUnionMember() { + return setUnionMember; + } + + @Override + public String getApplicationModelType() { + return APPLICATION_MODEL_TYPE; + } + + public void selfDesignateSetUnionMember() { + int setCount = 0; + UnionMember[] members = UnionMember.values(); + for (int memberIdx = 0; memberIdx < UnionMember.values().length; ++memberIdx) { + if (members[memberIdx].isPresent(this)) { + ++setCount; + this.setUnionMember = members[memberIdx]; + } + } + // only bad outcome here is if there's more than one member set. It's possible for none to be set + if (setCount > 1) { + throw new IllegalArgumentException("More than one union member set for type: " + getApplicationModelType()); + } + } + + @Override + public void postFromJson() { + selfDesignateSetUnionMember(); + } + + @Override + public boolean equals(Object rhs) { + if (rhs == null) return false; + if (!(rhs instanceof ValidateConfigurationUpdateEvents)) return false; + if (this == rhs) return true; + final ValidateConfigurationUpdateEvents other = (ValidateConfigurationUpdateEvents)rhs; + boolean isEquals = true; + isEquals = isEquals && this.validateConfigurationUpdateEvent.equals(other.validateConfigurationUpdateEvent); + isEquals = isEquals && this.setUnionMember.equals(other.setUnionMember); + return isEquals; + } + + @Override + public int hashCode() { + return Objects.hash(validateConfigurationUpdateEvent, setUnionMember); + } + + public enum UnionMember { + VALIDATE_CONFIGURATION_UPDATE_EVENT("VALIDATE_CONFIGURATION_UPDATE_EVENT", (software.amazon.awssdk.aws.greengrass.model.ValidateConfigurationUpdateEvents obj) -> obj.validateConfigurationUpdateEvent = Optional.empty(), (software.amazon.awssdk.aws.greengrass.model.ValidateConfigurationUpdateEvents obj) -> obj.validateConfigurationUpdateEvent != null && obj.validateConfigurationUpdateEvent.isPresent()); + + private String fieldName; + + private Consumer nullifier; + + private Predicate isPresent; + + UnionMember(String fieldName, Consumer nullifier, + Predicate isPresent) { + this.fieldName = fieldName; + this.nullifier = nullifier; + this.isPresent = isPresent; + } + + void nullify(ValidateConfigurationUpdateEvents obj) { + nullifier.accept(obj); + } + + boolean isPresent(ValidateConfigurationUpdateEvents obj) { + return isPresent.test(obj); + } + } +} diff --git a/sdk/pom.xml b/sdk/pom.xml index fa9e8c2c8..82d65bbd1 100644 --- a/sdk/pom.xml +++ b/sdk/pom.xml @@ -35,14 +35,14 @@ 1.8 1.8 UTF-8 + ./gradlew software.amazon.awssdk.crt aws-crt - 0.8.6 - compile + 0.9.2 junit @@ -63,6 +63,49 @@ + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.2.0 + + + add-sources + generate-sources + + add-source + + + + greengrass/event-stream-rpc-model/src/main + greengrass/event-stream-rpc-client/src/main + greengrass/greengrass-client/src/event-stream-rpc-java/client + greengrass/greengrass-client/src/event-stream-rpc-java/model + + + + + + + + + release