<%@ page import="java.util.List" %> <%@ page import="java.util.Iterator" %> <%@ page import="java.io.File" %> <%@ page import="java.lang.String" %> <%@ page import="java.io.InputStream" %> <%@ page import="org.apache.commons.codec.binary.Base64" %> <%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%> <%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%> <%@ page import="org.apache.commons.fileupload.*"%> <%@ page import="org.apache.axis2.client.Options" %> <%@ page import="org.apache.axis2.client.ServiceClient" %> <%@ page import="org.apache.axis2.addressing.EndpointReference" %> <%@ page import="org.apache.axiom.om.OMElement" %> <%@ page import="org.apache.axiom.om.OMFactory" %> <%@ page import="org.apache.axiom.om.OMAbstractFactory" %> <%@ page import="org.apache.axiom.om.OMText" %> <%@ page import="javax.xml.stream.XMLStreamReader"%> <%@ page import="javax.xml.stream.XMLInputFactory"%> <%@ page import="org.apache.axiom.om.impl.builder.StAXOMBuilder"%> <%@ page import="java.io.StringReader"%> <%@ page import="org.apache.commons.httpclient.protocol.ProtocolSocketFactory"%> <%@ page import="org.apache.commons.httpclient.protocol.Protocol"%> <%@ page import="org.apache.axiom.soap.SOAP11Constants"%> <%@ page import="org.apache.axiom.soap.SOAP12Constants"%> <%@ page import="org.apache.axis2.Constants"%> <%@ page import="org.apache.axis2.description.WSDL2Constants"%> <%@ page import="org.apache.axis2.util.JavaUtils"%> <%@ page import="org.apache.axis2.addressing.AddressingConstants"%> <%@ page import="org.apache.axis2.transport.http.HttpTransportProperties"%> <%@ page import="org.apache.axis2.transport.http.HTTPConstants"%> <%@ page import="org.apache.axis2.AxisFault"%> <%@ page import="org.apache.axis2.context.OperationContext"%> <%@ page import="org.apache.axis2.context.MessageContext"%> <%@ page import="org.apache.axiom.soap.SOAPEnvelope"%> <%@ page import="org.apache.axiom.om.OMNamespace"%> <%@ page contentType="text/plain" language="java" %> <% boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (!isMultipart) { } else { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List items = null; String packageName = null; try { items = upload.parseRequest(request); } catch (FileUploadException e) { e.printStackTrace(); } Iterator itr = items.iterator(); while (itr.hasNext()) { FileItem item = (FileItem) itr.next(); if (item.isFormField()) { if(item.getFieldName().equals("fileName")){ packageName = item.getString(); } } else { try { String itemName = item.getName(); String extension = itemName.toLowerCase(); if(extension.endsWith(".zip")){ long size = item.getSize(); InputStream is = item.getInputStream(); byte[] bytes = new byte[(int)size]; int offset = 0; int numRead = 0; while (offset < bytes.length && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) { offset += numRead; } if (offset < bytes.length) { out.println("Overflow Error Occurred!"); }else{ if(!Base64.isArrayByteBase64(bytes)){ byte[] encodedBytes = Base64.encodeBase64(bytes); String encodedString = new String(encodedBytes); Options opts = new Options(); opts.setAction("http://www.apache.org/ode/deployapi/DeploymentPortType/deployRequest"); opts.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI); opts.setProperty(Constants.Configuration.HTTP_METHOD, Constants.Configuration.HTTP_METHOD_POST); opts.setTo(new EndpointReference("http://localhost:8080/ode/processes/DeploymentService")); OMElement payload = null; OMFactory omFactory = OMAbstractFactory.getOMFactory(); OMNamespace ns = omFactory.createOMNamespace("http://www.apache.org/ode/pmapi","p"); payload = omFactory.createOMElement("deploy", ns); OMElement name = omFactory.createOMElement("name", ns); OMElement packageCont = omFactory.createOMElement("package", ns); OMElement zipEle = omFactory.createOMElement("zip", ns); if(packageName != null && encodedString != null){ OMText nameText = omFactory.createOMText(name, packageName); OMText packageText = omFactory.createOMText(zipEle, encodedString); packageCont.addChild(zipEle); payload.addChild(name); payload.addChild(packageCont); //creating service client ServiceClient sc = new ServiceClient(); sc.setOptions(opts); try { //invoke service OMElement responseMsg = sc.sendReceive(payload); String body = responseMsg.toString(); if(body.indexOf("name") > 0){ out.println("Package deployed successfully!"); }else{ out.println("Package deployement failed!"); } } catch (AxisFault axisFault) { out.println("Axis2 Fault Occurred while Sending the request!"); } }else{ out.println("No package Name specified!"); break; } }else{ out.println("TODO: Implement Base64 encoded string support!"); } } }else{ out.write("Wrong input format. Inout file must be zip archive!"); } } catch (Exception e) { out.println(e); out.println("Exception occuured while processing the file upload request!"); } } } } %>