package com.sap.sapjam.samples;
import java.io.IOException;
import java.io.PrintWriter;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.util.EntityUtils;
import com.sap.core.connectivity.api.http.HttpDestination;
/**
* This simple Java servlet shows how to create a new External Object in SAP Jam. Once created External Objects can be either
* the primary business object in a group, or they can be featured in a business object.
* Once a primary or featured object is in a group, the group will receive all of the event updates for that object.
*
* This API uses the OData v2.0 specifications. For more details, visit:
* http://www.odata.org/documentation/odata-version-2-0/
*
* You will need an account on a SAP Jam instance and an associated SAP Cloud Platform trial account to run these samples.
*
* This Java SAP Cloud Platform project requires a Java destination called sap_jam_odata. This file can be found in the root of this project.
*
* * For more information about the SAP Jam API see: http://help.sap.com/download/documentation/sapjam/developer/index.html
*
*/
public class CreateExternalBusinessObject extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CreateExternalBusinessObject() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String command = "";
String id = "";
command = request.getParameter("command");
id = request.getParameter("id");
PrintWriter out = response.getWriter();
out.println("Command = " + command );
try {
// Code to retrieve the Java SAP Cloud Platform Destination.
// The SAP Cloud Platform Destination handles the SAML2OAuthBearer Assertion workflow.
Context ctx = new InitialContext();
HttpDestination destination = (HttpDestination)ctx.lookup("java:comp/env/sap_jam_odata");
HttpClient client = destination.createHttpClient();
//http://help.sap.com/download/documentation/sapjam/developer/index.html#odata/references/ExternalObjectsPOSTExternalObjects.html
String url = "/ExternalObjects";
HttpPost jamRequest = new HttpPost( url );
String name = "";
String xmlBody = getXMLRequest( name, id );
HttpEntity entity = new ByteArrayEntity(xmlBody.getBytes("UTF-8"));
jamRequest.setEntity(entity);
jamRequest.setHeader("Content-Type", "application/xml");
jamRequest.setHeader("Accept", "application/xml");
HttpResponse jamResponse = client.execute(jamRequest);
HttpEntity responseEntity = jamResponse.getEntity();
// Output to screen
if ( responseEntity != null )
out.println(EntityUtils.toString(responseEntity));
else
out.println( "There was a problem with the connection");
out.println( jamResponse.toString() );
} catch (Exception e) {
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
}
}
private String getXMLRequest(String name, String id) {
StringBuilder payload = new StringBuilder();
payload.append("<entry>");
payload.append("<content>");
payload.append("<properties>");
payload.append("<Exid>http://benefitsjam.hana.ondemand.com/BenefitType(ObjectID='" + id + "1',ObjectType='BUS1006')</Exid>");
payload.append("<Name>"+ name +"</Name>");
payload.append("<Permalink></Permalink>");
payload.append("<ODataAnnotations>https://benefitsjam.hana.ondemand.com/com.sap.hana.cloud.samples.benefits/common/annotations.xml</ODataAnnotations>");
payload.append("<ODataMetadata> </ODataMetadata>");
payload.append("<ODataLink><Exid>http:/benefitsjam.hana.ondemand.com/BenefitType(ObjectID='" + id + "1',ObjectType='BUS1006')</Exid></ODataLink>");
payload.append("<ObjectType>https://benefitsjam.hana.ondemand.com/com.sap.hana.cloud.samples.benefits/OData.svc/$metadata#BenefitTypes</ObjectType>");
payload.append("</properties></content>");
payload.append("</entry>");
return payload.toString();
}
}