You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by Ruwan Linton <ru...@gmail.com> on 2008/05/03 03:45:16 UTC
Re: svn commit: r652962 - in /synapse/trunk/java/modules: core/src/main/java/org/apache/synapse/config/xml/endpoints/ core/src/main/java/org/apache/synapse/core/axis2/ core/src/main/java/org/apache/synapse/endpoints/utils/ transports/src/main/java/or
Hi Andreas,
Any specific reason why you didn't add this encoding attribute to the
WSDLEndpoint?
Thanks,
Ruwan
On Sat, May 3, 2008 at 6:32 AM, <ve...@apache.org> wrote:
> Author: veithen
> Date: Fri May 2 18:02:15 2008
> New Revision: 652962
>
> URL: http://svn.apache.org/viewvc?rev=652962&view=rev
> Log:
> SYNAPSE-261:
> * For text payloads in VFS and mail transports, always use the encoding as
> determined by BaseUtils.getOMOutputFormat.
> * Allow setting the charset encoding in <address> elements.
>
> Modified:
>
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
>
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java
>
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
>
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java
>
> synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/mail/MailTransportSender.java
>
> synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportSender.java
>
> Modified:
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
> URL:
> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java?rev=652962&r1=652961&r2=652962&view=diff
>
> ==============================================================================
> ---
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
> (original)
> +++
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
> Fri May 2 18:02:15 2008
> @@ -38,7 +38,7 @@
> * Configuration syntax:
> * <pre>
> * <endpoint [name="<em>name</em>"] [trace="enable|disable"]>
> - * <address uri="<em>url</em>" [format="soap11|soap12|pox|get"]
> [optimize="mtom|swa"] [statistics="enable|disable"]>
> + * <address uri="<em>url</em>" [format="soap11|soap12|pox|get"]
> [optimize="mtom|swa"] [encoding="<em>charset encoding</em>"]
> [statistics="enable|disable"]>
> * .. extensibility ..
> *
> * <enableRM [policy="<em>key</em>"]/>?
> @@ -142,6 +142,7 @@
> OMAttribute address = elem.getAttribute(new QName("uri"));
> OMAttribute format = elem.getAttribute(new QName("format"));
> OMAttribute optimize = elem.getAttribute(new QName("optimize"));
> + OMAttribute encoding = elem.getAttribute(new QName("encoding"));
>
> EndpointDefinition endpoint = new EndpointDefinition();
> OMAttribute statistics = elem.getAttribute(
> @@ -200,6 +201,10 @@
> endpoint.setUseSwa(true);
> }
> }
> +
> + if (encoding != null) {
> + endpoint.setCharSetEncoding(encoding.getAttributeValue());
> + }
>
> OMElement wsAddr = elem.getFirstChildWithName(new QName(
>
> org.apache.synapse.config.xml.XMLConfigConstants.SYNAPSE_NAMESPACE,
>
> Modified:
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java
> URL:
> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java?rev=652962&r1=652961&r2=652962&view=diff
>
> ==============================================================================
> ---
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java
> (original)
> +++
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java
> Fri May 2 18:02:15 2008
> @@ -109,6 +109,11 @@
> } else if (endpt.isUseMTOM()) {
> address.addAttribute(fac.createOMAttribute("optimize", null,
> "mtom"));
> }
> +
> + if (endpt.getCharSetEncoding() != null) {
> + address.addAttribute(fac.createOMAttribute("encoding", null,
> endpt.getCharSetEncoding()));
> + }
> +
> if (endpt.getAddress() != null) {
> address.addAttribute(fac.createOMAttribute(
> "uri", null, endpt.getAddress()));
>
> Modified:
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
> URL:
> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java?rev=652962&r1=652961&r2=652962&view=diff
>
> ==============================================================================
> ---
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
> (original)
> +++
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
> Fri May 2 18:02:15 2008
> @@ -107,7 +107,8 @@
> "] [ force soap11=" + endpoint.isForceSOAP11() +
> "] [ force soap12=" + endpoint.isForceSOAP12() +
> "] [ pox=" + endpoint.isForcePOX() +
> - "] [ get=" + endpoint.isForceGET() : "") +
> + "] [ get=" + endpoint.isForceGET() +
> + "] [ encoding=" + endpoint.getCharSetEncoding() : "")
> +
> "] [ to " + synapseOutMessageContext.getTo() + "]");
> }
>
> @@ -170,6 +171,11 @@
> axisOutMsgCtx.setDoingSwA(true);
> }
>
> + if (endpoint.getCharSetEncoding() != null) {
> +
> axisOutMsgCtx.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
> + endpoint.getCharSetEncoding());
> + }
> +
> if (endpoint.getAddress() != null) {
> axisOutMsgCtx.setTo(new
> EndpointReference(endpoint.getAddress()));
> }
>
> Modified:
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java
> URL:
> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java?rev=652962&r1=652961&r2=652962&view=diff
>
> ==============================================================================
> ---
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java
> (original)
> +++
> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java
> Fri May 2 18:02:15 2008
> @@ -90,7 +90,12 @@
> * Endpoint message format. pox/soap11/soap12
> */
> private String format = null;
> -
> +
> + /**
> + * The charset encoding for messages sent to the endpoint.
> + */
> + private String charSetEncoding;
> +
> /**
> * timeout duration for waiting for a response. if the user has set
> some timeout action and
> * the timeout duration is not set, default is set to 0 seconds. note
> that if the user has
> @@ -327,6 +332,24 @@
> }
>
> /**
> + * Get the charset encoding for messages sent to the endpoint.
> + *
> + * @param charSetEncoding
> + */
> + public String getCharSetEncoding() {
> + return charSetEncoding;
> + }
> +
> + /**
> + * Set the charset encoding for messages sent to the endpoint.
> + *
> + * @param charSetEncoding the charset encoding or <code>null</code>
> + */
> + public void setCharSetEncoding(String charSetEncoding) {
> + this.charSetEncoding = charSetEncoding;
> + }
> +
> + /**
> * To check whether statistics should have collected or not
> *
> * @return Returns the int value that indicate statistics is enabled
> or not.
>
> Modified:
> synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/mail/MailTransportSender.java
> URL:
> http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/mail/MailTransportSender.java?rev=652962&r1=652961&r2=652962&view=diff
>
> ==============================================================================
> ---
> synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/mail/MailTransportSender.java
> (original)
> +++
> synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/mail/MailTransportSender.java
> Fri May 2 18:02:15 2008
> @@ -340,24 +340,26 @@
> }
> }
> } else if
> (BaseConstants.DEFAULT_TEXT_WRAPPER.equals(firstChild.getQName())) {
> - if (firstChild instanceof OMSourcedElementImpl) {
> - // Note: this code will be replaced by something more
> efficient later
> - baos = new ByteArrayOutputStream();
> - try {
> - XMLStreamReader reader =
> firstChild.getXMLStreamReader();
> - while (reader.hasNext()) {
> - if (reader.next() ==
> XMLStreamReader.CHARACTERS) {
> - baos.write(reader.getText().getBytes());
> - }
> - }
> - } catch (XMLStreamException e) {
> - handleException("Error serializing 'text' payload
> from OMSourcedElement", e);
> - }
> - dataHandler = new DataHandler(new String(
> - baos.toByteArray(), format.getCharSetEncoding()),
> MailConstants.TEXT_PLAIN);
> - } else {
> - dataHandler = new DataHandler(firstChild.getText(),
> MailConstants.TEXT_PLAIN);
> - }
> +// if (firstChild instanceof OMSourcedElementImpl) {
> +// // Note: this code will be replaced by something
> more efficient later
> +// baos = new ByteArrayOutputStream();
> +// try {
> +// XMLStreamReader reader =
> firstChild.getXMLStreamReader();
> +// while (reader.hasNext()) {
> +// if (reader.next() ==
> XMLStreamReader.CHARACTERS) {
> +//
> baos.write(reader.getText().getBytes());
> +// }
> +// }
> +// } catch (XMLStreamException e) {
> +// handleException("Error serializing 'text'
> payload from OMSourcedElement", e);
> +// }
> +// dataHandler = new DataHandler(new String(
> +// baos.toByteArray(),
> format.getCharSetEncoding()), MailConstants.TEXT_PLAIN);
> +// } else {
> +// dataHandler = new DataHandler(firstChild.getText(),
> MailConstants.TEXT_PLAIN);
> +// }
> + dataHandler = new DataHandler(firstChild.getText(),
> MailConstants.TEXT_PLAIN +
> + "; charset=" + format.getCharSetEncoding());
> } else {
>
> baos = new ByteArrayOutputStream();
>
> Modified:
> synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportSender.java
> URL:
> http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportSender.java?rev=652962&r1=652961&r2=652962&view=diff
>
> ==============================================================================
> ---
> synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportSender.java
> (original)
> +++
> synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportSender.java
> Fri May 2 18:02:15 2008
> @@ -42,6 +42,8 @@
> import java.io.OutputStream;
> import java.io.IOException;
> import java.io.ByteArrayOutputStream;
> +import java.io.OutputStreamWriter;
> +import java.io.Writer;
>
> /**
> * axis2.xml - transport definition
> @@ -179,6 +181,7 @@
> // within the files but just get the payload in its native format
>
> OMElement firstChild =
> msgContext.getEnvelope().getBody().getFirstElement();
> + OMOutputFormat format = BaseUtils.getOMOutputFormat(msgContext);
> if (firstChild != null) {
> if
> (BaseConstants.DEFAULT_BINARY_WRAPPER.equals(firstChild.getQName())) {
> try {
> @@ -213,24 +216,25 @@
>
> } else if
> (BaseConstants.DEFAULT_TEXT_WRAPPER.equals(firstChild.getQName())) {
> try {
> - OutputStream os =
> responseFile.getContent().getOutputStream();
> + Writer out = new
> OutputStreamWriter(responseFile.getContent().getOutputStream(),
> + format.getCharSetEncoding());
> try {
> if (firstChild instanceof OMSourcedElementImpl) {
> XMLStreamReader reader =
> firstChild.getXMLStreamReader();
> while (reader.hasNext()) {
> if (reader.next() ==
> XMLStreamReader.CHARACTERS) {
> -
> os.write(reader.getText().getBytes());
> + out.write(reader.getText());
> }
> }
> } else {
> - os.write(firstChild.getText().getBytes());
> + out.write(firstChild.getText());
> }
> } catch (IOException e) {
> metrics.incrementFaultsSending();
> handleException("Error serializing text content of
> element : " +
>
> BaseConstants.DEFAULT_TEXT_WRAPPER, e);
> } finally {
> - os.close();
> + out.close();
> }
> } catch (FileSystemException e) {
> metrics.incrementFaultsSending();
> @@ -244,10 +248,10 @@
> handleException("Error serializing OMSourcedElement
> content", e);
> }
> } else {
> - populateSOAPFile(responseFile, msgContext);
> + populateSOAPFile(responseFile, msgContext, format);
> }
> } else {
> - populateSOAPFile(responseFile, msgContext);
> + populateSOAPFile(responseFile, msgContext, format);
> }
>
> // update metrics
> @@ -267,8 +271,7 @@
> * @param msgContext the message context that holds the message to be
> written
> * @throws AxisFault on error
> */
> - private void populateSOAPFile(FileObject responseFile, MessageContext
> msgContext) throws AxisFault {
> - OMOutputFormat format = BaseUtils.getOMOutputFormat(msgContext);
> + private void populateSOAPFile(FileObject responseFile, MessageContext
> msgContext, OMOutputFormat format) throws AxisFault {
> MessageFormatter messageFormatter = null;
> try {
> messageFormatter =
> TransportUtils.getMessageFormatter(msgContext);
>
>
>
--
Ruwan Linton
http://www.wso2.org - "Oxygenating the Web Services Platform"
Re: svn commit: r652962 - in /synapse/trunk/java/modules: core/src/main/java/org/apache/synapse/config/xml/endpoints/ core/src/main/java/org/apache/synapse/core/axis2/ core/src/main/java/org/apache/synapse/endpoints/utils/ transports/src/main/java/or
Posted by Ruwan Linton <ru...@gmail.com>.
OK, I didn't see SYNAPSE-281 earlier. +1 for refactoring the code to a
EndpointUtil class and reusing the method.
Thanks,
Ruwan
On Sat, May 3, 2008 at 7:15 AM, Ruwan Linton <ru...@gmail.com> wrote:
> Hi Andreas,
>
> Any specific reason why you didn't add this encoding attribute to the
> WSDLEndpoint?
>
> Thanks,
> Ruwan
>
>
>
--
Ruwan Linton
http://www.wso2.org - "Oxygenating the Web Services Platform"