teichmann@5835: package org.dive4elements.river.client.server; ingo@865: ingo@865: import org.w3c.dom.Document; ingo@865: ingo@1367: import org.apache.log4j.Logger; ingo@1367: ingo@865: import com.google.gwt.user.server.rpc.RemoteServiceServlet; ingo@865: teichmann@5835: import org.dive4elements.artifacts.common.utils.ClientProtocolUtils; ingo@865: teichmann@5835: import org.dive4elements.artifacts.httpclient.exceptions.ConnectionException; teichmann@5835: import org.dive4elements.artifacts.httpclient.http.HttpClient; teichmann@5835: import org.dive4elements.artifacts.httpclient.http.HttpClientImpl; teichmann@5835: import org.dive4elements.artifacts.httpclient.http.response.DocumentResponseHandler; ingo@865: teichmann@5835: import org.dive4elements.river.client.shared.exceptions.ServerException; teichmann@5835: import org.dive4elements.river.client.shared.model.Artifact; teichmann@5835: import org.dive4elements.river.client.client.services.DescribeArtifactService; ingo@865: ingo@865: ingo@865: /** ingo@865: * This interface provides artifact specific operation DESCRIBE. ingo@865: * ingo@865: * @author Ingo Weinzierl ingo@865: */ ingo@865: public class DescribeArtifactServiceImpl ingo@865: extends RemoteServiceServlet ingo@865: implements DescribeArtifactService ingo@865: { ingo@1367: private static final Logger logger = ingo@1367: Logger.getLogger(DescribeArtifactServiceImpl.class); ingo@1367: ingo@1367: ingo@865: public static final String ERROR_DESCRIBE_ARTIFACT = ingo@865: "error_describe_artifact"; ingo@865: ingo@865: raimund@1425: public Artifact describe(String locale, Artifact artifact) ingo@865: throws ServerException ingo@865: { ingo@1367: logger.info("DescribeArtifactServiceImpl.describe"); ingo@865: raimund@1425: String url = getServletContext().getInitParameter("server-url"); raimund@1425: ingo@865: Document describe = ClientProtocolUtils.newDescribeDocument( ingo@865: artifact.getUuid(), ingo@865: artifact.getHash(), ingo@865: true); ingo@865: ingo@865: HttpClient client = new HttpClientImpl(url, locale); ingo@865: ingo@865: try { ingo@1367: logger.debug("Start Http request now."); ingo@865: ingo@865: Document description = (Document) client.describe( teichmann@5835: new org.dive4elements.artifacts.httpclient.objects.Artifact( ingo@865: artifact.getUuid(), ingo@865: artifact.getHash()), ingo@865: describe, ingo@865: new DocumentResponseHandler()); ingo@865: ingo@865: if (description != null) { ingo@1367: logger.debug("Finished Http request sucessfully!"); ingo@865: ingo@865: return (Artifact) new FLYSArtifactCreator().create(description); ingo@865: } ingo@865: } ingo@865: catch (ConnectionException ce) { ingo@865: ce.printStackTrace(); ingo@865: } ingo@865: ingo@865: throw new ServerException(ERROR_DESCRIBE_ARTIFACT); ingo@865: } ingo@865: } ingo@865: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :