You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by da...@apache.org on 2007/06/13 17:04:19 UTC
svn commit: r546903 - in /incubator/cxf/trunk:
api/src/main/java/org/apache/cxf/databinding/
rt/core/src/main/java/org/apache/cxf/databinding/source/
rt/core/src/main/java/org/apache/cxf/interceptor/
rt/databinding/aegis/src/main/java/org/apache/cxf/ae...
Author: dandiep
Date: Wed Jun 13 08:03:45 2007
New Revision: 546903
URL: http://svn.apache.org/viewvc?view=rev&rev=546903
Log:
Add an option to set the encoding on the datawriter. I'm wondering if
maybe we should extend this to a more generic interface, i.e.:
DataWriter.setProperty(DataWriter.ENCODING, encoding);
That requires yet another map and yet another property transfer though.
Thoughts?
Modified:
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataWriter.java
incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/NodeDataWriter.java
incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java
incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java
incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java
incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java
incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java
incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataWriter.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataWriter.java?view=diff&rev=546903&r1=546902&r2=546903
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataWriter.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataWriter.java Wed Jun 13 08:03:45 2007
@@ -31,4 +31,5 @@
void write(Object obj, MessagePartInfo part, T output);
void setSchema(Schema s);
void setAttachments(Collection<Attachment> attachments);
+ void setEncoding(String encoding);
}
Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/NodeDataWriter.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/NodeDataWriter.java?view=diff&rev=546903&r1=546902&r2=546903
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/NodeDataWriter.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/NodeDataWriter.java Wed Jun 13 08:03:45 2007
@@ -43,6 +43,8 @@
public class NodeDataWriter implements DataWriter<Node> {
private static final Logger LOG = LogUtils.getL7dLogger(NodeDataWriter.class);
+ private String encoding;
+
public void write(Object obj, MessagePartInfo part, Node output) {
write(obj, output);
}
@@ -68,7 +70,14 @@
}
public void setAttachments(Collection<Attachment> attachments) {
- // TODO Auto-generated method stub
-
+
}
+ public String getEncoding() {
+ return encoding;
+ }
+
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
+ }
+
}
Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java?view=diff&rev=546903&r1=546902&r2=546903
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java Wed Jun 13 08:03:45 2007
@@ -39,6 +39,8 @@
public class XMLStreamDataWriter implements DataWriter<XMLStreamWriter> {
private static final Logger LOG = LogUtils.getL7dLogger(XMLStreamDataWriter.class);
+ private String encoding;
+
public void write(Object obj, MessagePartInfo part, XMLStreamWriter output) {
write(obj, output);
}
@@ -63,7 +65,15 @@
}
public void setAttachments(Collection<Attachment> attachments) {
- // TODO Auto-generated method stub
-
+
+ }
+
+ public String getEncoding() {
+ return encoding;
+ }
+
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
}
+
}
Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java?view=diff&rev=546903&r1=546902&r2=546903
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java Wed Jun 13 08:03:45 2007
@@ -81,6 +81,7 @@
}
DataWriter<OutputStream> osWriter = getDataWriter(message, service, OutputStream.class);
+ osWriter.setEncoding((String)message.get(Message.ENCODING));
for (MessagePartInfo part : parts) {
int idx = part.getMessageInfo().getMessagePartIndex(part);
Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java?view=diff&rev=546903&r1=546902&r2=546903
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java Wed Jun 13 08:03:45 2007
@@ -60,16 +60,7 @@
// assert os != null;
// TODO: where does encoding constant go?
- String encoding = (String)message.get(Message.ENCODING);
- if (encoding == null && message.getExchange().getInMessage() != null) {
- encoding = (String) message.getExchange().getInMessage().get(Message.ENCODING);
- message.put(Message.ENCODING, encoding);
- }
-
- if (encoding == null) {
- encoding = "UTF-8";
- message.put(Message.ENCODING, encoding);
- }
+ String encoding = getEncoding(message);
try {
writer = getXMLOutputFactory(message).createXMLStreamWriter(os, encoding);
@@ -80,6 +71,20 @@
// Add a final interceptor to write end elements
message.getInterceptorChain().add(ending);
+ }
+
+ private String getEncoding(Message message) {
+ String encoding = (String)message.get(Message.ENCODING);
+ if (encoding == null && message.getExchange().getInMessage() != null) {
+ encoding = (String) message.getExchange().getInMessage().get(Message.ENCODING);
+ message.put(Message.ENCODING, encoding);
+ }
+
+ if (encoding == null) {
+ encoding = "UTF-8";
+ message.put(Message.ENCODING, encoding);
+ }
+ return encoding;
}
public static XMLOutputFactory getXMLOutputFactory(Message m) throws Fault {
Modified: incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java?view=diff&rev=546903&r1=546902&r2=546903
==============================================================================
--- incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java (original)
+++ incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java Wed Jun 13 08:03:45 2007
@@ -44,7 +44,9 @@
private AegisDatabinding databinding;
private Collection<Attachment> attachments;
-
+
+ private String encoding;
+
public XMLStreamDataWriter(AegisDatabinding databinding) {
this.databinding = databinding;
}
@@ -96,4 +98,12 @@
write(obj, null, output);
}
+ public String getEncoding() {
+ return encoding;
+ }
+
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
+ }
+
}
Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java?view=diff&rev=546903&r1=546902&r2=546903
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java (original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java Wed Jun 13 08:03:45 2007
@@ -81,7 +81,7 @@
Object elValue,
MessagePartInfo part,
Object source,
- AttachmentMarshaller am) {
+ AttachmentMarshaller am, String encoding) {
Class<?> cls = null;
if (part != null) {
cls = part.getTypeClass();
@@ -103,6 +103,10 @@
// generate the xml declaration.
u.setProperty(Marshaller.JAXB_FRAGMENT, true);
u.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);
+
+ if (encoding != null) {
+ u.setProperty(Marshaller.JAXB_ENCODING, encoding);
+ }
} catch (javax.xml.bind.PropertyException e) {
// intentionally empty.
}
@@ -158,14 +162,14 @@
}
public static void marshall(JAXBContext context, Schema schema, Object elValue, Object source) {
- marshall(context, schema, elValue, null, source, null);
+ marshall(context, schema, elValue, null, source, null, null);
}
public static void marshall(JAXBContext context, Schema schema,
Object elValue,
MessagePartInfo part,
Object source) {
- marshall(context, schema, elValue, part, source, null);
+ marshall(context, schema, elValue, part, source, null, null);
}
private static Unmarshaller createUnmarshaller(JAXBContext context, Class<?> cls) throws JAXBException {
Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java?view=diff&rev=546903&r1=546902&r2=546903
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java (original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java Wed Jun 13 08:03:45 2007
@@ -27,7 +27,8 @@
import org.apache.cxf.service.model.MessagePartInfo;
public class DataWriterImpl<T> extends JAXBDataBase implements DataWriter<T> {
-
+ private String encoding;
+
public DataWriterImpl(JAXBContext ctx) {
setJAXBContext(ctx);
}
@@ -39,7 +40,16 @@
public void write(Object obj, MessagePartInfo part, T output) {
if (obj != null) {
JAXBEncoderDecoder.marshall(getJAXBContext(), getSchema(), obj, part, output,
- getAttachmentMarrshaller());
+ getAttachmentMarrshaller(), encoding);
}
}
+
+ public String getEncoding() {
+ return encoding;
+ }
+
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
+ }
+
}