package org.piraso.server.bridge.net; import org.apache.commons.lang.Validate; import org.apache.http.*; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HttpContext; import org.apache.http.util.EntityUtils; import org.apache.log4j.Logger; import org.codehaus.jackson.map.ObjectMapper; import org.piraso.api.JacksonUtils; import org.piraso.api.entry.Entry; import org.piraso.client.net.AbstractHttpHandler; import org.piraso.client.net.HttpPirasoException; import org.piraso.server.service.User; import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import java.util.ArrayList; import java.util.List; import static org.piraso.api.PirasoConstants.*; public class HttpPirasoLogHandler extends AbstractHttpHandler { private static final Logger LOG = Logger.getLogger(HttpPirasoLogHandler.class); private Entry entry; private User user; private ObjectMapper mapper; private HttpEntity responseEntity; public HttpPirasoLogHandler(HttpClient client, HttpContext context) { super(client, context); mapper = JacksonUtils.MAPPER; } public void setEntry(Entry entry) { this.entry = entry; } public void setUser(User user) { this.user = user; } @Override public void execute() throws IOException, SAXException, ParserConfigurationException { try { doExecute(); } finally { EntityUtils.consume(responseEntity); } } private void doExecute() throws IOException, SAXException, ParserConfigurationException { Validate.notNull(uri, "uri should not be null."); Validate.notNull(entry, "entry should not be null."); Validate.notNull(user, "user should not be null."); LOG.info(String.format("Executing %s...", uri)); HttpPost post = new HttpPost(uri.getPath()); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair(SERVICE_PARAMETER, SERVICE_LOG_PARAMETER_VALUE)); params.add(new BasicNameValuePair(ENTRY_CLASS_NAME_PARAMETER, entry.getClass().getName())); params.add(new BasicNameValuePair(ENTRY_REQUEST_ID_PARAMETER, String.valueOf(entry.getRequestId()))); params.add(new BasicNameValuePair(ENTRY_PARAMETER, mapper.writeValueAsString(entry))); params.add(new BasicNameValuePair(USER_PARAMETER, mapper.writeValueAsString(user))); post.setEntity(new UrlEncodedFormEntity(params, ENCODING_UTF_8)); HttpResponse response = client.execute(targetHost, post, context); StatusLine status = response.getStatusLine(); if(status.getStatusCode() != HttpStatus.SC_OK) { throw new HttpPirasoException(status.toString()); } responseEntity = response.getEntity(); } }