blob: f80b1517a819a58667ecf570585544207f0df27e [file] [log] [blame]
<%@ 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!");
}
}
}
}
%>