Revision: 1953
Author: florianstratil
Date: Mon Jan 19 12:52:10 2015 UTC
Log: Update mit MTOM
https://code.google.com/p/extra-standard/source/detail?r=1953
Modified:
/trunk/java/apps/extraClientLight/src/main/java/de/extra/extraClientLight/helper/BuildExtraTransport.java
/trunk/java/apps/extraClientLight/src/main/java/de/extra/extraClientLight/helper/ExtraResponseHelper.java
=======================================
---
/trunk/java/apps/extraClientLight/src/main/java/de/extra/extraClientLight/helper/BuildExtraTransport.java
Fri Nov 7 11:31:42 2014 UTC
+++
/trunk/java/apps/extraClientLight/src/main/java/de/extra/extraClientLight/helper/BuildExtraTransport.java
Mon Jan 19 12:52:10 2015 UTC
@@ -19,12 +19,19 @@
package de.extra.extraClientLight.helper;
+import java.io.IOException;
+import java.io.InputStream;
+
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.mail.util.ByteArrayDataSource;
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
+import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import de.drv.dsrv.spoc.extra.v1_3.jaxb.components.Base64CharSequenceType;
import de.drv.dsrv.spoc.extra.v1_3.jaxb.components.ClassifiableIDType;
import de.drv.dsrv.spoc.extra.v1_3.jaxb.components.DataType;
@@ -45,6 +52,7 @@
import de.extra.extraClientLight.util.ClientConstants;
public class BuildExtraTransport {
+ private static Logger LOGGER =
LoggerFactory.getLogger(BuildExtraTransport.class);
public static TransportRequestType buildTransportRequest(
RequestExtraBean requestBean) {
@@ -55,8 +63,12 @@
request.setProfile(requestBean.getProfile());
request.setTransportHeader(buildHeader(requestBean));
if (!requestBean.getDataObjekt().isQuery()) {
- request.setTransportBody(buildBody(requestBean.getDataObjekt()
- .getData()));
+ try {
+ request.setTransportBody(buildBody(requestBean.getDataObjekt()
+ .getData()));
+ } catch (IOException e) {
+ LOGGER.error("Fehler beim Lesen des InputStreams",e);
+ }
} else {
request.setTransportBody(buildQueryBody(requestBean));
@@ -94,12 +106,14 @@
}
- private static TransportRequestBodyType buildBody(byte[] nutzdaten) {
+ private static TransportRequestBodyType buildBody(InputStream nutzdaten)
+ throws IOException {
TransportRequestBodyType requestBody = new TransportRequestBodyType();
DataType data = new DataType();
Base64CharSequenceType payload = new Base64CharSequenceType();
- DataSource ds = new ByteArrayDataSource(nutzdaten, "application");
+ DataSource ds = new ByteArrayDataSource(IOUtils.toByteArray(nutzdaten),
+ "application");
DataHandler dataHandler = new DataHandler(ds);
payload.setValue(dataHandler);
data.setBase64CharSequence(payload);
@@ -164,17 +178,17 @@
new QName("
http://www.extra-standard.de/namespace/message/1",
"GT"), OperandType.class, operand);
jaxbOperand.setValue(operand);
-
+
requestIdArgument.getContent().add(jaxbOperand);
dataQuery.getArgument().add(requestIdArgument);
-/*
- procedureArgument.setProperty(ClientConstants.QUERY_PROCEDURE);
-
- dataQuery.getArgument().add(procedureArgument);
-
- dataTypeArgument.setProperty(ClientConstants.QUERY_DATATYPE);
- dataQuery.getArgument().add(dataTypeArgument);
-*/
+ /*
+ * procedureArgument.setProperty(ClientConstants.QUERY_PROCEDURE);
+ *
+ * dataQuery.getArgument().add(procedureArgument);
+ *
+ * dataTypeArgument.setProperty(ClientConstants.QUERY_DATATYPE);
+ * dataQuery.getArgument().add(dataTypeArgument);
+ */
dataRequest.setQuery(dataQuery);
return dataRequest;
=======================================
---
/trunk/java/apps/extraClientLight/src/main/java/de/extra/extraClientLight/helper/ExtraResponseHelper.java
Fri Nov 7 11:31:42 2014 UTC
+++
/trunk/java/apps/extraClientLight/src/main/java/de/extra/extraClientLight/helper/ExtraResponseHelper.java
Mon Jan 19 12:52:10 2015 UTC
@@ -19,13 +19,24 @@
package de.extra.extraClientLight.helper;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
+
+import javax.activation.DataSource;
+import javax.mail.util.ByteArrayDataSource;
+import javax.xml.bind.JAXBException;
import org.apache.commons.io.IOUtils;
+import org.apache.cxf.attachment.AttachmentDataSource;
+import org.apache.cxf.attachment.LazyAttachmentCollection;
+import org.apache.cxf.attachment.LazyDataSource;
+import org.apache.cxf.message.Attachment;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import de.drv.dsrv.spoc.extra.v1_3.ExtraJaxbMarshaller;
import de.drv.dsrv.spoc.extra.v1_3.jaxb.components.FlagType;
import de.drv.dsrv.spoc.extra.v1_3.jaxb.response.TransportResponseType;
import de.extra.extraClientLight.model.ResponseExtraBean;
@@ -52,11 +63,28 @@
.getResponseDetails().getReport().getFlag().get(0);
getReportInformation(reportFlag);
+
+ // TODO Attachments in Response auslesen.
+
try {
- final InputStream in = extraResponse.getTransportBody().getData()
- .getBase64CharSequence().getValue().getInputStream();
- responseBean.setData(IOUtils.toByteArray(in));
+ DataSource nutzdatenDS = extraResponse.getTransportBody().getData()
+ .getBase64CharSequence().getValue().getDataSource();
+
+ InputStream in = null;
+ if (nutzdatenDS instanceof ByteArrayDataSource) {
+ in = extraResponse.getTransportBody().getData()
+ .getBase64CharSequence().getValue().getInputStream();
+
+ }
+
+ if (nutzdatenDS instanceof LazyDataSource) {
+
+ in = nutzdatenDS.getInputStream();
+
+ }
+
+ responseBean.setData(in);
} catch (IOException e) {
LOGGER.error("Fehler beim Lesen des Datenstreams");
responseBean.setReturnCode(9);
@@ -85,4 +113,22 @@
responseBean.setReturnCode(2);
}
}
+
+ public static void printResponse(TransportResponseType response) {
+
+ try {
+
+ ExtraJaxbMarshaller extraMarshaller = new ExtraJaxbMarshaller();
+
+ OutputStream outputStream = new ByteArrayOutputStream();
+
+ String responseString = extraMarshaller
+ .marshalTransportResponse(response);
+
+ LOGGER.debug("eXTra-Marshaller: " + responseString);
+
+ } catch (JAXBException e) {
+ LOGGER.error("Fehler beim marshalling", e);
+ }
+ }
}