Java tutorial
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.oodt.cas.wmservices.client; import java.io.DataOutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import org.apache.commons.io.IOUtils; import org.apache.oodt.cas.wmservices.repository.PackagedWorkflowManager; import org.apache.oodt.cas.workflow.structs.Workflow; import org.apache.oodt.cas.workflow.structs.exceptions.RepositoryException; /** * Client class to connect to cas-wm-services * * @author vratnakar */ public class WmServicesClient { String serverurl; String service = "/service/"; /** * Constructor * * @param workflowDir * the directory where workflow files exist */ public WmServicesClient(String serverurl) { this.serverurl = serverurl; } /** * Add a Packaged workflow * * @param workflowId * id of the workflow * @param workflow * the workflow to be added * @return true if operation successful * @throws RepositoryException */ public boolean addPackagedWorkflow(String workflowId, Workflow workflow) throws RepositoryException { try { PackagedWorkflowManager editor = new PackagedWorkflowManager(); String xml = editor.serializeWorkflow(workflow); // Now Make a POST call to the servlet with this xml String result = this.query("POST", "addPackagedRepositoryWorkflow", "workflowID", workflowId, "workflowXML", xml); return Boolean.parseBoolean(result); } catch (Exception e) { throw new RepositoryException("Could not add packaged workflow: " + e.getMessage()); } } /** * Delete a Packaged workflow * * @param workflowId * id of the workflow to be deleted * @return true if operation successful * @throws RepositoryException */ public boolean deletePackagedWorkflow(String workflowId) throws RepositoryException { try { // Now Make a POST call to the servlet with this xml String result = this.query("POST", "deletePackagedRepositoryWorkflow", "workflowID", workflowId); return Boolean.parseBoolean(result); } catch (Exception e) { throw new RepositoryException("Could not delete packaged workflow: " + e.getMessage()); } } // Private functions private String query(String method, String op, Object... args) { String url = this.serverurl + this.service + op; try { String params = ""; for (int i = 0; i < args.length; i += 2) { if (i > 0) params += "&"; params += args[i] + "=" + URLEncoder.encode(args[i + 1].toString(), "UTF-8"); } if ("GET".equals(method)) { URL urlobj = new URL(url + "?" + params); return IOUtils.toString(urlobj.openStream()); } else { URL urlobj = new URL(url); HttpURLConnection con = (HttpURLConnection) urlobj.openConnection(); con.setRequestMethod(method); con.setDoOutput(true); DataOutputStream out = new DataOutputStream(con.getOutputStream()); out.writeBytes(params); out.flush(); out.close(); String result = IOUtils.toString(con.getInputStream()); con.disconnect(); return result; } } catch (Exception e) { e.printStackTrace(); } return null; } }