/*
# Licensed Materials - Property of IBM
# Copyright IBM Corp. 2011, 2014
*/
package com.ibm.streamsx.inet.rest.servlets;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ibm.streams.operator.OutputTuple;
import com.ibm.streams.operator.StreamingOutput;
import com.ibm.streams.operator.types.ValueFactory;
import com.ibm.streams.operator.types.XML;
/**
* Inject a tuple into an output port from a HTTP GET or POST.
*
*/
public class InjectXML extends HttpServlet {
private static final long serialVersionUID = 193023456650913733L;
private final StreamingOutput<OutputTuple> port;
public InjectXML(StreamingOutput<OutputTuple> port) {
this.port = port;
}
@Override
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
final String contentType = request.getContentType();
if (contentType != null && ("application/xml".equals(contentType) || contentType.startsWith("application/xml;")))
;
else
throw new ServletException("Content type is required to be application/xml, is: " + contentType);
OutputTuple tuple = port.newTuple();
InputStream in = request.getInputStream();
XML xml = ValueFactory.newXML(in);
tuple.setXML(0, xml) ;
try {
port.submit(tuple);
} catch (Exception e) {
throw new IOException(e);
}
in.close();
response.setStatus(HttpServletResponse.SC_NO_CONTENT);
}
}