"text/xml" is the standard content type for SOAP 1.1. So if you try to send
a POX message with text/xml content type the formatter will change that
back to application/xml. I don't think changing this behavior will break
something though (fingers crossed on that :)).

Thanks,
Hiranya

On Tue, Jan 31, 2012 at 12:08 AM, Abid Khan <[email protected]> wrote:

> Hello all,
>
> Please look at the following code and tell me why this code is explicitly
> changing contentType from "text/xml" to "application/xml"?
>
> This issue is because this kind of code in ApplicationXMLFormatter,
>
>      if (contentType == null) {
>          contentType = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
>      } else if (isSOAPContentType(contentType)) {
>          contentType = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
>          if (log.isDebugEnabled()) {
>              log.debug("contentType is set incorrectly for Application
> XML.");
>              log.debug("It is changed to " + contentType);
>          }
>      }
>
> Along with function in
>
>
>   private boolean isSOAPContentType(String contentType) {
>       if (JavaUtils.indexOfIgnoreCase(contentType,
> SOAP12Constants.SOAP_12_CONTENT_TYPE) > -1) {
>           return true;
>       }
>       // search for "type=text/xml"
>       else if (JavaUtils.indexOfIgnoreCase(contentType,
>
>  SOAP11Constants.SOAP_11_CONTENT_TYPE) > -1) {
>           return true;
>       }
>       return false;
>   }
>
> This code is explicitly changing the content type to "application/xml" if
> it is "text/xml"
>
> I would like to know if changing this code would have any negative impacts.
>
> Regards,
> Abid
>
> -----Original Message-----
> From: Abid Khan
> Sent: Friday, January 27, 2012 9:34 AM
> To: '[email protected]'
> Subject: RE: Help needed for endpoint level content type.
>
> Hello all,
>
> I have tried all options, I do need to change the content-type to
> "text/xml". And I do neet a quick resolution to this.
>
> Can anyone please point me to right direction.
>
> Thanks in advance,
> Abid
>
>
>
>
>
> -----Original Message-----
> From: Abid Khan
> Sent: Tuesday, January 24, 2012 4:02 PM
> To: [email protected]
> Subject: RE: Help needed for endpoint level content type.
>
> Hello Sadeep,
>
> I tried this, and several others. It look either synapse or axis2 is
> completely ignoring those properties. No matter what I set I always get
> "application/xml".
>
> So there may be a bug somewhere or this is by design. The content type are
> always posted as "application/xml"
>
>
> -----Original Message-----
> From: Sadeep Jayasumana [mailto:[email protected]]
> Sent: Tuesday, January 24, 2012 11:23 AM
> To: [email protected]
> Subject: Re: Help needed for endpoint level content type.
>
> Hi,
>
> You can set these properties conditionally within your CBR logic. Please
> check whether it works for you.
>
> Eg:
> <proxy name="CBRProxy">
>    <target>
>        <inSequence>
>          <switch source="//m0:getQuote/m0:request/m0:symbol" xmlns:m0="
> http://services.samples";>
>              <case regex="IBM">
>                  <!-- Send with text/xml content type to endpoint 1 -->
>                  <property name="messageType" value="text/xml"
> scope="axis2"/>
>                  <property name="ContentType" value="text/xml"
> scope="axis2"/>
>                  <send>
>                      <endpoint>
>                          <address uri="http://localhost:9000/endpoint1"; />
>                      </endpoint>
>                  </send>
>              </case>
>              <case regex="MSFT">
>                  <!-- Send with application/xml content type to endpoint 2
> -->
>                  <property name="messageType" value="application/xml"
> scope="axis2"/>
>                  <property name="ContentType" value="application/xml"
> scope="axis2"/>
>                  <send>
>                      <endpoint>
>                          <address uri="http://localhost:9000/endpoint2"; />
>                      </endpoint>
>                  </send>
>              </case>
>           </switch>
>       </inSequence>
>   </target>
> </proxy>
>
> Thanks,
> Sadeep
>
> On Tue, Jan 24, 2012 at 9:14 PM, Abid Khan <[email protected]> wrote:
>
> > Hello Sadeep,
> >
> > Thanks for the quicker response.
> >
> > I actually knew this approach, but my problem is multiple application
> send
> > request to same proxy. That same proxy is delivering message (using
> content
> > based routing) to different endpoints.
> >
> > One of those endpoint expects "Content-Type=text/xml", where as rest of
> > them expect "Content-Type=application/xml".
> >
> > Having said that I need something in the endpoint not in the proxy.
> >
> > Thanks,
> > Abid
> >
> >
> >
> > -----Original Message-----
> > From: Sadeep Jayasumana [mailto:[email protected]]
> > Sent: Tuesday, January 24, 2012 12:52 AM
> > To: [email protected]
> > Subject: Re: Help needed for endpoint level content type.
> >
> > Hi,
> >
> > You can force the content type while sending a message out using
> > "messageType" and "ContentType" Axis2 level properties. Please check
> > whether this works for your scenario. This might not work if the message
> > content is not compatible with the formatter associated to the content
> type
> > you are forcibly setting.
> >
> >     ..
> >     ..
> >     <property name="messageType" value="text/xml" scope="axis2"/>
> >     <property name="ContentType" value="text/xml" scope="axis2"/>
> >     <send>
> >        <endpoint>
> >            <address uri="http://localhost:9000/endpoint1"; />
> >        </endpoint>
> >     </send>
> >
> > AND
> >
> >     ..
> >     ..
> >     <property name="messageType" value="application/xml" scope="axis2"/>
> >     <property name="ContentType" value="application/xml" scope="axis2"/>
> >     <send>
> >        <endpoint>
> >            <address uri="http://localhost:9000/endpoint2"; />
> >        </endpoint>
> >     </send>
> >
> > Thanks,
> > Sadeep
> >
> > On Tue, Jan 24, 2012 at 9:47 AM, Hiranya Jayathilaka
> > <[email protected]>wrote:
> >
> > > I believe these endpoints are being invoked through some proxy service.
> > If
> > > so what is the content type of the requests sent to the proxy service?
> > >
> > > Thanks,
> > > Hiranya
> > >
> > > On Tue, Jan 24, 2012 at 7:03 AM, Abid Khan <[email protected]>
> > wrote:
> > >
> > > > Hello all,
> > > >
> > > > Please help me in following scenario. (I am using synapse 1.2)
> > > >
> > > > I have two different endpoint, the application on one endpoint
> accepts
> > > > "Content-Type=application/xml", and second application on the other
> > > > endpoint accepts "Content-Type=text/xml".
> > > >
> > > > Those application are external application and are running for
> several
> > > > years, is there any way I can configure Synapse to send content type
> > > > properly to their respective endpoint.
> > > >
> > > > A prompt response will be much appreciated.
> > > >
> > > > Regards,
> > > > Abid
> > > >
> > >
> > >
> > >
> > > --
> > > Hiranya Jayathilaka
> > > Associate Technical Lead;
> > > WSO2 Inc.;  http://wso2.org
> > > E-mail: [email protected];  Mobile: +94 77 633 3491
> > > Blog: http://techfeast-hiranya.blogspot.com
> > >
> >
> >
> >
> > --
> >
> > Sadeep Jayasumana****
> >
> > Email: [email protected]****
> >
> > Phone: +94-77-2266507
> >
>
>
>
> --
>
> Sadeep Jayasumana****
>
> Email: [email protected]****
>
> Phone: +94-77-2266507
>



-- 
Hiranya Jayathilaka
Associate Technical Lead;
WSO2 Inc.;  http://wso2.org
E-mail: [email protected];  Mobile: +94 77 633 3491
Blog: http://techfeast-hiranya.blogspot.com

Reply via email to