diff options
author | dfilppi <dewayne@gigaspaces.com> | 2017-08-03 21:26:02 +0000 |
---|---|---|
committer | dfilppi <dewayne@gigaspaces.com> | 2017-08-07 20:05:23 +0000 |
commit | a4c936a24b8e1394753ecae9176071176974e828 (patch) | |
tree | a35c57477e1a7cb8a8b893ddbbb437b252bea526 /aria/aria-rest-java-client/src/main/java/com/gigaspaces | |
parent | d48b750fc08b11a758b4c71ac71fe6cd2a2437d3 (diff) |
ARIA java binding initial
Change-Id: I806c879f7eddadec396adbb72f3fc2117dccbeb5
Issue-id: SO-77
Signed-off-by: DeWayne Filppi <dewayne@gigaspaces.com>
Diffstat (limited to 'aria/aria-rest-java-client/src/main/java/com/gigaspaces')
21 files changed, 1271 insertions, 0 deletions
diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/AriaClient.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/AriaClient.java new file mode 100755 index 0000000000..d6e9f2434d --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/AriaClient.java @@ -0,0 +1,201 @@ +/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2017 Cloudify.co. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END====================================================
+*/
+package com.gigaspaces.aria.rest.client;
+
+import com.gigaspaces.aria.rest.client.exceptions.StorageException;
+import com.gigaspaces.aria.rest.client.exceptions.ValidationException;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by DeWayne on 7/12/2017.
+ */
+public interface AriaClient {
+
+ /**
+ * Installs a service template
+ *
+ * @param template
+ * @throws ValidationException
+ * @throws StorageException
+ */
+ public void install_service_template(ServiceTemplate template)throws ValidationException, StorageException, Exception;
+
+ /**
+ * Validate a service template
+ * @param template
+ * @return
+ */
+ public ValidationResult validate_service_template(ServiceTemplate template)throws Exception;
+
+ /**
+ * Fetch a list of stored service templates
+ *
+ * @return
+ */
+ public List<? extends ServiceTemplate> list_service_templates();
+
+ /**
+ * Delete an existing template
+ *
+ * @param template_id
+ * @throws IllegalArgumentException
+ */
+ public void delete_service_template(int template_id) throws IllegalArgumentException, Exception;
+
+ /**
+ * Returns a list of node templates for a given service template
+ * @param template_id
+ * @return
+ */
+ List<? extends NodeTemplate> list_nodes(int template_id);
+
+ /**
+ * Fetch a given node template
+ *
+ * @param node_id
+ * @return
+ * @throws IllegalArgumentException
+ */
+ public NodeTemplate get_node( int node_id) throws IllegalArgumentException;
+
+ /**
+ * List all services
+ *
+ * @return
+ */
+ public List<? extends Service> list_services();
+
+ /**
+ * Fetch the specified service
+ *
+ * @param service_id
+ * @return
+ * @throws IllegalArgumentException
+ */
+ public Service get_service(int service_id) throws IllegalArgumentException;
+
+ /**
+ * Fetch the outputs of the specified service
+ *
+ * @param service_id
+ * @return
+ * @throws IllegalArgumentException
+ */
+ public List<? extends Output> list_service_outputs(int service_id) throws IllegalArgumentException;
+
+ /**
+ * Fetch the inputs of the specified service
+ *
+ * @param service_id
+ * @return
+ * @throws IllegalArgumentException
+ */
+ public List<? extends Input> list_service_inputs(int service_id) throws IllegalArgumentException;
+
+ /**
+ * Create a service
+ *
+ * @param template_id
+ * @param service_name
+ * @param inputs
+ * @throws Exception
+ */
+ public void create_service(int template_id, String service_name, List<Input> inputs)throws Exception;
+
+ /**
+ * Delete the specified service
+ *
+ * @param service_id
+ * @throws IllegalArgumentException
+ */
+ public void delete_service(int service_id)throws Exception;
+
+ /**
+ * List workflows for the provided service
+ *
+ * @param service_id
+ * @return
+ * @throws IllegalArgumentException
+ */
+ public List<? extends Workflow> list_workflows(int service_id)throws IllegalArgumentException;
+
+ /**
+ * Fetch the specified workflow
+ *
+ * @param workflow_id
+ * @return the requested Workflow
+ * @throws IllegalArgumentException when the workflow_id doesn't exist
+ */
+ public Workflow get_workflow(int workflow_id)throws IllegalArgumentException;
+
+ /**
+ * List all executions
+ *
+ * @return
+ * @throws Exception
+ */
+ public List<? extends Execution> list_executions()throws Exception;
+
+ /**
+ * List executions for provided service
+ *
+ * @param service_id
+ * @return
+ * @throws Exception
+ */
+ public List<? extends Execution> list_executions(int service_id)throws Exception;
+
+ /**
+ * Fetch the specified execution
+ *
+ * @param execution_id
+ * @return
+ * @throws IllegalArgumentException
+ */
+ public Execution get_execution(int execution_id)throws IllegalArgumentException;
+
+ /**
+ * Starts an execution
+ *
+ * @param service_id
+ * @param workflow_name
+ * @param details
+ * @return the execution id
+ * @throws Exception
+ */
+ public int start_execution(int service_id, String workflow_name, ExecutionDetails details)throws Exception;
+
+ /**
+ * Resumes an interrupted execution
+ *
+ * @param execution_id
+ * @param details
+ * @throws IllegalArgumentException
+ */
+ public void resume_execution(int execution_id, ExecutionDetails details)throws IllegalArgumentException;
+
+ /**
+ * Cancels the specified execution
+ *
+ * @param execution_id
+ * @throws IllegalArgumentException
+ */
+ public void cancel_execution(int execution_id)throws Exception;
+}
diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/AriaClientFactory.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/AriaClientFactory.java new file mode 100755 index 0000000000..a97384e084 --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/AriaClientFactory.java @@ -0,0 +1,31 @@ +/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2017 Cloudify.co. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END====================================================
+*/
+
+package com.gigaspaces.aria.rest.client;
+
+import java.net.URL;
+
+/**
+ * Created by DeWayne on 7/12/2017.
+ */
+public class AriaClientFactory {
+
+ AriaClient createRestClient(String protocol, String address, int port, String version){
+ return new AriaRestClient(protocol, address, port, version);
+ }
+}
diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/AriaRestClient.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/AriaRestClient.java new file mode 100755 index 0000000000..a4e453395d --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/AriaRestClient.java @@ -0,0 +1,336 @@ +/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2017 Cloudify.co. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END====================================================
+*/
+package com.gigaspaces.aria.rest.client;
+
+import com.gigaspaces.aria.rest.client.exceptions.StorageException;
+import com.gigaspaces.aria.rest.client.exceptions.ValidationException;
+import org.codehaus.jackson.JsonFactory;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
+import org.codehaus.jackson.map.ObjectMapper;
+import sun.reflect.generics.reflectiveObjects.NotImplementedException;
+
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.GenericType;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+
+import static javax.ws.rs.client.Entity.entity;
+
+/**
+ * Created by DeWayne on 7/12/2017.
+ */
+public class AriaRestClient implements AriaClient {
+ private Client client=null;
+ private WebTarget base_target=null;
+
+ /**
+ * Construct an Aria REST client
+ *
+ * @param protocol either http or https
+ * @param address the IP address or host name
+ * @param port the port of the service
+ * @param version the api version
+ */
+ public AriaRestClient(String protocol, String address, int port, String version){
+ this.client = ClientBuilder.newBuilder().register(JacksonJsonProvider.class).build();
+ base_target = client.target(protocol+"://"+address+":"+port+"/api/"+version);
+ }
+
+ /**
+ * Installs a service template
+ *
+ * @param template the template object
+ * @throws ValidationException
+ * @throws StorageException
+ */
+ public void install_service_template(ServiceTemplate template) throws ValidationException, StorageException, Exception {
+
+ Response response = base_target.path("templates/"+template.getName()).request(MediaType.APPLICATION_JSON).put(Entity.entity(
+ "{\"service-template-path\":\""+template.getURI().toString()+"\""+
+ ",\"service-template-filename\":\""+template.getFilename()+"\"", MediaType.APPLICATION_JSON));
+
+ if(response.getStatus() == 500){
+ throw new StorageException(response.readEntity(String.class));
+ }
+ else if(response.getStatus() == 400){
+ throw new ValidationException(response.readEntity(String.class));
+ }
+ else if(response.getStatus()>199 && response.getStatus() <300){
+ return;
+ }
+ else{
+ throw new Exception("Error installing template: "+response.getStatus()+" "+ response.readEntity(String.class));
+ }
+ }
+
+ public ValidationResult validate_service_template(ServiceTemplate template)throws Exception{
+ Response response = base_target.path("templates").request(MediaType.APPLICATION_JSON).post(Entity.entity(
+ "{\"service-template-path\":\""+template.getURI().toString()+"\""+
+ ",\"service-template-filename\":\""+template.getFilename()+"\"}", MediaType.APPLICATION_JSON));
+
+ ValidationResultImpl result = new ValidationResultImpl();
+ if(response.getStatus() >= 200 && response.getStatus() < 300){
+ result.setFailed(false);
+ }
+ else if(response.getStatus()==400){
+ result.setFailed(true);
+ }
+ else{
+ throw new Exception("received error response '"+ response.getStatus()+"':"+response.readEntity(String.class));
+ }
+ return result;
+
+ }
+
+ /**
+ *
+ * @return a list of service templates
+ */
+ public List<? extends ServiceTemplate> list_service_templates(){
+ List<? extends ServiceTemplate> templates = base_target.path("templates").request(MediaType.APPLICATION_JSON).get(new GenericType<List<ServiceTemplateImpl>>(){});
+
+ return templates;
+ }
+
+
+ /**
+ * Deletes the specified template.
+ *
+ * TODO: Error handling is a little blunt. Need to describe failures better
+ *
+ * @param template_id the template id to delete
+ * @throws IllegalArgumentException thrown when the template can't be deleted
+ * @throws Exception other server side errors
+ */
+ public void delete_service_template(int template_id) throws IllegalArgumentException, Exception{
+ Response response = base_target.path("templates/"+template_id).request(MediaType.APPLICATION_JSON).delete();
+
+ if(response.getStatus()>=200 && response.getStatus()<300){
+ return;
+ }
+ else if(response.getStatus()==400){
+ throw new IllegalArgumentException("Error deleting template '"+template_id+"'");
+ }
+ else{
+ throw new Exception("Error processing request. Return code = "+response.getStatus());
+ }
+ }
+
+ /**
+ * List the node templates for a given template id
+ *
+ * @param template_id
+ * @return
+ */
+ public List<? extends NodeTemplate> list_nodes(int template_id) {
+ List<? extends NodeTemplate> nodes = base_target.path("templates/"+template_id+"/nodes").request(MediaType.APPLICATION_JSON).get(new GenericType<List<NodeTemplateImpl>>(){});
+ return nodes;
+ }
+
+ /**
+ * Get a specific node by id
+ *
+ * @param node_id the node id
+ * @return
+ * @throws IllegalArgumentException
+ */
+ public NodeTemplate get_node(int node_id) throws IllegalArgumentException {
+ NodeTemplate node = base_target.path("nodes/"+node_id).request(MediaType.APPLICATION_JSON).get(NodeTemplateImpl.class);
+ return node;
+ }
+
+ public List<? extends Service> list_services() {
+ List<? extends Service> services = base_target.path("services").request(MediaType.APPLICATION_JSON).get(new GenericType<List<ServiceImpl>>(){});
+ return services;
+ }
+
+ public Service get_service(int service_id) throws IllegalArgumentException {
+ throw new NotImplementedException();
+ }
+
+ public List<? extends Output> list_service_outputs(int service_id) throws IllegalArgumentException {
+ List<? extends Output> outputs = base_target.path("services").request(MediaType.APPLICATION_JSON).get(new GenericType<List<OutputImpl>>(){});
+ return outputs;
+ }
+
+ public List<? extends Input> list_service_inputs(int service_id) throws IllegalArgumentException {
+ List<? extends Input> inputs = base_target.path("services").request(MediaType.APPLICATION_JSON).get(new GenericType<List<InputImpl>>(){});
+ return inputs;
+ }
+
+ /**
+ * Create a service based on the supplied template
+ *
+ * @param template_id the template to create the service for
+ * @param service_name a name for the service
+ * @param inputs an optional list of inputs for the service (can be null)
+ * @throws Exception
+ */
+ public void create_service(int template_id, String service_name, List<Input> inputs) throws Exception {
+
+ String json="{"+inputsToJson(inputs)+"}";
+
+ Response response = base_target.path("templates/"+template_id+"/services/"+service_name).
+ request(MediaType.APPLICATION_JSON).post(
+ Entity.entity(json, MediaType.APPLICATION_JSON)
+ );
+
+ if( response.getStatus()< 200 || response.getStatus()>299){
+ throw new Exception("create service failed:"+response.getStatus()+" "+ response.readEntity(String.class));
+ }
+ }
+
+ public void delete_service(int service_id) throws Exception {
+ Response response = base_target.path("services/"+service_id).request(MediaType.APPLICATION_JSON).delete();
+ if(!responseOK(response)){
+ throw new Exception("delete service failed: "+response.getStatus()+" "+ response.readEntity(String.class));
+ }
+ }
+
+ /**
+ * List user workflows for supplied service
+ *
+ * @param service_id
+ * @return
+ * @throws IllegalArgumentException
+ */
+ public List<? extends Workflow> list_workflows(int service_id) throws IllegalArgumentException {
+ List<? extends Workflow> workflows = base_target.path("services/"+service_id+"/workflows").request(MediaType.APPLICATION_JSON).get(new GenericType<List<WorkflowImpl>>(){});
+ return workflows;
+ }
+
+ public Workflow get_workflow(int workflow_id) throws IllegalArgumentException {
+ throw new NotImplementedException();
+ }
+
+ /**
+ * List all executions
+ *
+ * @return
+ * @throws Exception
+ */
+ public List<? extends Execution> list_executions() throws Exception {
+ List<? extends Execution> executions = base_target.path("executions").request(MediaType.APPLICATION_JSON).get(new GenericType<List<ExecutionImpl>>(){});
+ return executions;
+ }
+
+ /**
+ * List executions for specified service
+ *
+ * @param service_id
+ * @return
+ * @throws Exception
+ */
+ public List<? extends Execution> list_executions(int service_id) throws Exception {
+ List<? extends Execution> executions = base_target.path("services/"+service_id+"/executions").request(MediaType.APPLICATION_JSON).get(new GenericType<List<ExecutionImpl>>(){});
+ return executions;
+ }
+
+ /**
+ * Get details about a specified execution
+ *
+ * @param execution_id
+ * @return
+ * @throws IllegalArgumentException
+ */
+ public Execution get_execution(int execution_id) throws IllegalArgumentException {
+ Execution execution = base_target.path("executions/"+execution_id).request(MediaType.APPLICATION_JSON).get(ExecutionImpl.class);
+ return execution;
+ }
+
+ /**
+ * Start an execution for the specified service
+ *
+ * @param service_id the service to run the execution for
+ * @param workflow_name the name of the workflow to execute
+ * @param details details controlling execution operation
+ * @return the execution id
+ * @throws Exception
+ */
+ public int start_execution(int service_id, String workflow_name, ExecutionDetails details) throws Exception {
+ StringBuilder json=new StringBuilder("{");
+ if(details.getExecutor().length()>0){
+ json.append("\"executor\":\"").append(details.getExecutor()).append("\",");
+ }
+ if(details.getInputs()!=null){
+ json.append(inputsToJson(details.getInputs()));
+ }
+ json.append("\"task_max_attempts\":").append(details.getTaskMaxAttempts()).append(",");
+ json.append("\"task_retry_interval\":").append(details.getTaskRetryInterval()).append("}");
+
+ System.out.println("JSON="+json.toString());
+
+ Response response = base_target.path("services/"+service_id+"/executions/"+workflow_name).request(MediaType.APPLICATION_JSON).
+ post(Entity.entity(json.toString(), MediaType.APPLICATION_JSON));
+
+ if(!responseOK(response)){
+ throw new Exception("start execution failed: "+response.getStatus()+" "+response.readEntity(String.class));
+ }
+
+ ObjectMapper mapper = new ObjectMapper(new JsonFactory());
+ JsonNode rootNode = mapper.readTree(response.readEntity(String.class));
+ int id=rootNode.get("id").asInt(-1);
+ return id;
+ }
+
+ public void resume_execution(int execution_id, ExecutionDetails details) throws IllegalArgumentException {
+ StringBuilder json=new StringBuilder("{");
+ if(details.getExecutor().length()>0){
+ json.append("\"executor\":\"").append(details.getExecutor()).append("\",");
+ }
+ json.append("\"retry_failed_tasks\":").append(details.isRetry_failed_tasks()).append("}");
+ Response response = base_target.path("executions/"+execution_id).request(MediaType.APPLICATION_JSON).
+ post(Entity.entity(json.toString(), MediaType.APPLICATION_JSON));
+ }
+
+ public void cancel_execution(int execution_id) throws Exception {
+ Response response = base_target.path("executions/"+execution_id).request(MediaType.APPLICATION_JSON).delete();
+ if(!responseOK(response)){
+ throw new Exception("delete service failed: "+response.getStatus()+" "+ response.readEntity(String.class));
+ }
+ }
+
+ /**
+ * -----
+ * ----- PRIVATE METHODS
+ * -----
+ */
+
+ private boolean responseOK(Response response){
+ return response.getStatus()>199 && response.getStatus()<300;
+ }
+
+ private String inputsToJson(List<Input> inputs){
+ if(inputs==null)return null;
+
+ StringBuilder sb=new StringBuilder("\"inputs\":{");
+ for(Input input:inputs){
+ sb.append("\"").append(input.getName()).append("\":\"").append(input.getValue()).append("\",");
+ }
+ if(inputs.size()>0)sb.deleteCharAt(sb.length()-1); //trim comma
+
+ return sb.toString();
+ }
+}
diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Execution.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Execution.java new file mode 100755 index 0000000000..ab742833e6 --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Execution.java @@ -0,0 +1,29 @@ +/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2017 Cloudify.co. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END====================================================
+*/
+package com.gigaspaces.aria.rest.client;
+
+/**
+ * Created by DeWayne on 7/12/2017.
+ */
+public interface Execution {
+ int getExecutionId();
+ String getWorkflowName();
+ String getServiceTemplateName();
+ String getServiceName();
+ String getStatus();
+}
diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ExecutionDetails.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ExecutionDetails.java new file mode 100755 index 0000000000..e7685a259c --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ExecutionDetails.java @@ -0,0 +1,73 @@ +/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2017 Cloudify.co. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END====================================================
+*/
+package com.gigaspaces.aria.rest.client;
+
+import java.util.List;
+
+/**
+ * Created by DeWayne on 7/12/2017.
+ */
+public class ExecutionDetails {
+ private String executor=""; //default
+ private int task_max_attempts=30;
+ private int task_retry_interval=30;
+ private List<Input> inputs=null;
+ private boolean retry_failed_tasks=false;
+
+ public ExecutionDetails(){}
+
+ public ExecutionDetails(String executor){
+ this.executor=executor;
+ }
+
+ public ExecutionDetails(String executor, int task_max_attempts, int task_retry_interval, boolean retry_failed_tasks,
+ List<Input> inputs){
+ this.executor=executor;
+ this.task_max_attempts=task_max_attempts;
+ this.task_retry_interval=task_retry_interval;
+ this.retry_failed_tasks = retry_failed_tasks;
+ this.inputs=inputs;
+ }
+ public String getExecutor(){
+ return executor;
+ }
+ public void setExecutor(String executor){
+ this.executor=executor;
+ }
+ public int getTaskMaxAttempts(){
+ return task_max_attempts;
+ }
+ public void setTaskMaxAttempts(int max){
+ this.task_max_attempts=max;
+ }
+ public int getTaskRetryInterval(){
+ return task_retry_interval;
+ }
+ public void setTaskRetryInterval(int interval){
+ this.task_retry_interval=interval;
+ }
+ public List<Input> getInputs(){
+ return inputs;
+ }
+ public void setInputs(List<Input> inputs){
+ this.inputs=inputs;
+ }
+ public boolean isRetry_failed_tasks() {return retry_failed_tasks;}
+ public void setRetry_failed_tasks(boolean retry_failed_tasks) {this.retry_failed_tasks = retry_failed_tasks;}
+
+}
diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ExecutionImpl.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ExecutionImpl.java new file mode 100755 index 0000000000..8e420cc16c --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ExecutionImpl.java @@ -0,0 +1,54 @@ +/* + * ============LICENSE_START=================================================== + * Copyright (c) 2017 Cloudify.co. All rights reserved. + * =================================================================== + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END==================================================== +*/ +package com.gigaspaces.aria.rest.client; + +import org.codehaus.jackson.annotate.JsonProperty; + +/** + * Created by DeWayne on 7/17/2017. + */ +public class ExecutionImpl implements Execution { + @JsonProperty("execution_id") + int execution_id; + @JsonProperty("workflow_name") + String workflow_name; + @JsonProperty("service_template_name") + String service_template_name; + @JsonProperty("service_name") + String service_name; + String status; + + public int getExecutionId() { + return execution_id; + } + public String getWorkflowName() { + return workflow_name; + } + + public String getServiceTemplateName() { + return service_template_name; + } + + public String getServiceName() { + return service_name; + } + + public String getStatus() { + return status; + } +} diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Input.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Input.java new file mode 100755 index 0000000000..595dfb1245 --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Input.java @@ -0,0 +1,27 @@ +/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2017 Cloudify.co. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END====================================================
+*/
+package com.gigaspaces.aria.rest.client;
+
+/**
+ * Created by DeWayne on 7/12/2017.
+ */
+public interface Input {
+ String getName();
+ String getDescription();
+ String getValue();
+}
diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/InputImpl.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/InputImpl.java new file mode 100755 index 0000000000..3002b7b54e --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/InputImpl.java @@ -0,0 +1,49 @@ +/* + * ============LICENSE_START=================================================== + * Copyright (c) 2017 Cloudify.co. All rights reserved. + * =================================================================== + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END==================================================== +*/ +package com.gigaspaces.aria.rest.client; + +/** + * Created by DeWayne on 7/17/2017. + */ +public class InputImpl implements Input { + private String name, description, value; + + public InputImpl(){} + + public InputImpl(String name,String value,String description){ + if(name==null || value==null){ + throw new IllegalArgumentException("null argument supplied"); + } + this.name=name; + this.value=value; + if(description!=null)this.description=description; + } + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } + + public String getValue() { + return value; + } + +} diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/NodeTemplate.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/NodeTemplate.java new file mode 100755 index 0000000000..bc46d7f5b2 --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/NodeTemplate.java @@ -0,0 +1,29 @@ +/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2017 Cloudify.co. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END====================================================
+*/
+package com.gigaspaces.aria.rest.client;
+
+/**
+ * Created by DeWayne on 7/12/2017.
+ */
+public interface NodeTemplate {
+ int getId();
+ String getName();
+ String getDescription();
+ int getServiceTemplateId();
+ String getTypeName();
+}
diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/NodeTemplateImpl.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/NodeTemplateImpl.java new file mode 100755 index 0000000000..43338c952d --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/NodeTemplateImpl.java @@ -0,0 +1,68 @@ +/* + * ============LICENSE_START=================================================== + * Copyright (c) 2017 Cloudify.co. All rights reserved. + * =================================================================== + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END==================================================== +*/ +package com.gigaspaces.aria.rest.client; + +import org.codehaus.jackson.annotate.JsonProperty; + +/** + * Created by DeWayne on 7/18/2017. + */ +public class NodeTemplateImpl implements NodeTemplate { + private int id; + private String name; + private String description=""; + @JsonProperty("service_template_id") + private int service_template_id; + @JsonProperty("type_name") + private String type_name=""; + + public NodeTemplateImpl(){} + + public NodeTemplateImpl(int id, String name, String description, int service_template_id, String type_name){ + this.id=id; + this.description=description; + this.service_template_id=service_template_id; + this.type_name=type_name; + } + + public int getId() { + return id; + } + + public String getDescription() { + return description; + } + + public int getServiceTemplateId() { + return service_template_id; + } + + public String getTypeName() { + return type_name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + +} diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Output.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Output.java new file mode 100755 index 0000000000..83363bad6c --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Output.java @@ -0,0 +1,27 @@ +/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2017 Cloudify.co. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END====================================================
+*/
+package com.gigaspaces.aria.rest.client;
+
+/**
+ * Created by DeWayne on 7/12/2017.
+ */
+public interface Output {
+ String getName();
+ String getDescription();
+ String getValue();
+}
diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/OutputImpl.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/OutputImpl.java new file mode 100755 index 0000000000..0a6cecc9c1 --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/OutputImpl.java @@ -0,0 +1,37 @@ +/* + * ============LICENSE_START=================================================== + * Copyright (c) 2017 Cloudify.co. All rights reserved. + * =================================================================== + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END==================================================== +*/ +package com.gigaspaces.aria.rest.client; + +/** + * Created by DeWayne on 7/17/2017. + */ +public class OutputImpl implements Output { + private String name, description, value; + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } + + public String getValue() { + return value; + } +} diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Service.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Service.java new file mode 100755 index 0000000000..9cf86ec73f --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Service.java @@ -0,0 +1,32 @@ +/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2017 Cloudify.co. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END====================================================
+*/
+package com.gigaspaces.aria.rest.client;
+
+import java.util.Date;
+
+/**
+ * Created by DeWayne on 7/12/2017.
+ */
+public interface Service {
+ int getId();
+ String getDescription();
+ String getName();
+ String getServiceTemplate();
+ Date getCreated();
+ Date getUpdated();
+}
diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ServiceTemplate.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ServiceTemplate.java new file mode 100755 index 0000000000..0df6d60905 --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ServiceTemplate.java @@ -0,0 +1,31 @@ +/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2017 Cloudify.co. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END====================================================
+*/
+package com.gigaspaces.aria.rest.client;
+
+import java.net.URI;
+
+/**
+ * Created by DeWayne on 7/12/2017.
+ */
+public interface ServiceTemplate {
+ String getName();
+ URI getURI();
+ int getId();
+ String getFilename();
+ String getDescription();
+}
diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ServiceTemplateImpl.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ServiceTemplateImpl.java new file mode 100755 index 0000000000..9e158a27fd --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ServiceTemplateImpl.java @@ -0,0 +1,81 @@ +/* + * ============LICENSE_START=================================================== + * Copyright (c) 2017 Cloudify.co. All rights reserved. + * =================================================================== + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END==================================================== +*/ +package com.gigaspaces.aria.rest.client; + +import java.net.URI; + +/** + * CSAR based implementation + * + * Created by DeWayne on 7/17/2017. + */ +public class ServiceTemplateImpl implements ServiceTemplate { + public static final String DEFAULT_TEMPLATE_NAME = "service-template.yaml"; + private String name; + private int id; + private URI uri; + private String filename = DEFAULT_TEMPLATE_NAME; + private String description; + + public ServiceTemplateImpl(){} + + public ServiceTemplateImpl(String name, URI uri){ + this.name=name; + this.uri=uri; + } + + /** + * Construct an instance + * @param name a textual name for the template + * @param uri a URI to a CSAR + * @param filename the filename in the CSAR representing main yaml template + */ + public ServiceTemplateImpl(String name, URI uri, String filename, String description){ + this.name=name; + this.uri=uri; + this.filename=filename; + this.description=description; + } + + public int getId(){ + return id; + } + public void setId(int id){ + this.id=id; + } + public String getName() { + return name; + } + public void setName(String name){ + this.name=name; + } + public URI getURI() { + return uri; + } + public void setPath(String path){ + this.uri=uri; + } + public String getFilename() { + return filename; + } + public void setFilename(String filename){ + this.filename=filename; + } + + public String getDescription(){ return description;} +} diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ValidationResult.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ValidationResult.java new file mode 100755 index 0000000000..3d40dfa1ec --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ValidationResult.java @@ -0,0 +1,26 @@ +/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2017 Cloudify.co. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END====================================================
+*/
+package com.gigaspaces.aria.rest.client;
+
+/**
+ * Created by DeWayne on 7/12/2017.
+ */
+public interface ValidationResult {
+
+ boolean getFailed();
+}
diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ValidationResultImpl.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ValidationResultImpl.java new file mode 100755 index 0000000000..22e34eb7b3 --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/ValidationResultImpl.java @@ -0,0 +1,32 @@ +/* + * ============LICENSE_START=================================================== + * Copyright (c) 2017 Cloudify.co. All rights reserved. + * =================================================================== + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END==================================================== +*/ +package com.gigaspaces.aria.rest.client; + +/** + * Created by DeWayne on 7/17/2017. + */ +public class ValidationResultImpl implements ValidationResult { + private boolean failed=false; + + public void setFailed(boolean failed){ + this.failed=failed; + } + public boolean getFailed() { + return failed; + } +} diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Workflow.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Workflow.java new file mode 100755 index 0000000000..7dbab18943 --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/Workflow.java @@ -0,0 +1,25 @@ +/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2017 Cloudify.co. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END====================================================
+*/
+package com.gigaspaces.aria.rest.client;
+
+/**
+ * Created by DeWayne on 7/12/2017.
+ */
+public interface Workflow {
+ String getName();
+}
diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/WorkflowImpl.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/WorkflowImpl.java new file mode 100755 index 0000000000..41105df26a --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/WorkflowImpl.java @@ -0,0 +1,29 @@ +/* + * ============LICENSE_START=================================================== + * Copyright (c) 2017 Cloudify.co. All rights reserved. + * =================================================================== + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END==================================================== +*/ +package com.gigaspaces.aria.rest.client; + +/** + * Created by DeWayne on 7/17/2017. + */ +public class WorkflowImpl implements Workflow{ + String name; + + public String getName() { + return name; + } +} diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/exceptions/StorageException.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/exceptions/StorageException.java new file mode 100755 index 0000000000..50ff38da10 --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/exceptions/StorageException.java @@ -0,0 +1,27 @@ +/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2017 Cloudify.co. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END====================================================
+*/
+package com.gigaspaces.aria.rest.client.exceptions;
+
+/**
+ * Created by DeWayne on 7/12/2017.
+ */
+public class StorageException extends Exception {
+ public StorageException(String message){
+ super(message);
+ }
+}
diff --git a/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/exceptions/ValidationException.java b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/exceptions/ValidationException.java new file mode 100755 index 0000000000..cbcee31cb4 --- /dev/null +++ b/aria/aria-rest-java-client/src/main/java/com/gigaspaces/aria/rest/client/exceptions/ValidationException.java @@ -0,0 +1,27 @@ +/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2017 Cloudify.co. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END====================================================
+*/
+package com.gigaspaces.aria.rest.client.exceptions;
+
+/**
+ * Created by DeWayne on 7/12/2017.
+ */
+public class ValidationException extends Exception {
+ public ValidationException(String message){
+ super(message);
+ }
+}
|