Thanks for the test case, but I am having issues following it as it pertains
to the original example.

Here is the processor from the original:

    private class MappingProcessor implements Processor {

        private Class<?> beanClass;
        private Object instance;

        public MappingProcessor(Object obj) {
            beanClass = obj.getClass();
            instance = obj;
        }

        public void process(Exchange exchange) throws Exception {
            String operationName =
exchange.getIn().getHeader(CxfConstants.OPERATION_NAME, String.class);
            Method method = findMethod(operationName,
exchange.getIn().getBody(Object[].class));
            try {
                Object response = method.invoke(instance,
exchange.getIn().getBody(Object[].class));
                if (response instanceof CallEvent) {
                    logger.info("we have a CallEvent");
                }
                exchange.getOut().setBody(response);
            } catch (InvocationTargetException e) {
                throw (Exception) e.getCause();
            }
        }

        private Method findMethod(String operationName, Object[] parameters)
throws SecurityException, NoSuchMethodException {
            return beanClass.getMethod(operationName,
getParameterTypes(parameters));
        }

        private Class<?>[] getParameterTypes(Object[] parameters) {
            if (parameters == null) {
                return new Class[0];
            }
            Class<?>[] answer = new Class[parameters.length];
            int i = 0;
            for (Object object : parameters) {
                answer[i] = object.getClass();
                i++;
            }
            return answer;
        }
    }


And I still get the error
HolderOutInterceptor           ERROR The message content list of the in
message and out message are same, CXF can't set the holder object into the
message content list of the out message.


So far I was able to get a custom Object sent into my seda:tap like:


        from(Routes.INPUT_TAP).routeId("INPUT_TAP")
                .doTry()
                .log("------------------>INPUT_TAP")
                .marshal().json()
                .to(Routes.INPUT_MARSHALED)
                .doCatch(Exception.class)
                .bean(ExceptionProcessor.class,
ExceptionProcessor.HANDLE_MARSHAL_ERROR)
                .end()
        ;


and this is the json I get:

*{"org.apache.cxf.message.MessageContentsList*
":{"@serialization":"custom","unserializable-parents":"","list":{"default":{"size":1},"int":6,"com.comcast.ivr.integration.domain.CallEvent":{"browserType":"AVAYA","dasSessionId":"JAXWS-2-d46502d4-23c2-4cbf-b517-808a2674e1a8","applicationType":"AGENT","ani":1234567890,"dnis":"0987654321","languageSelected":"ENGLISH","callEndReason":"CALLER_HUNGUP","functionalArea":"PRE_MAIN_MENU","startTime":0,"endTime":0}}}}

I thought I would get something like (or similar to):


*{"com.comcast.ivr.integration.domain.CallEvent"*
:{"browserType":"AVAYA","dasSessionId":"JAXWS-2-d46502d4-23c2-4cbf-b517-808a2674e1a8","applicationType":"AGENT","ani":1234567890,"dnis":"0987654321","languageSelected":"ENGLISH","callEndReason":"CALLER_HUNGUP","functionalArea":"PRE_MAIN_MENU","startTime":0,"endTime":0}}


---
Thank You…

Mick Knutson, President

BASE Logic, Inc.
Enterprise Architecture, Design, Mentoring & Agile Consulting
p. (855) BASE-LOGIC: (227-3564-42)
p. (478) BASE-LOGIC (227-3564-42)
f. (855) BASE-LOGIC: (227-3564-42)

Website: http://www.baselogic.com
Blog: http://www.baselogic.com/blog/
Linked IN: http://linkedin.com/in/mickknutson
Twitter: http://twitter.com/mickknutson
---



On Tue, Aug 23, 2011 at 10:10 AM, Willem Jiang <willem.ji...@gmail.com>wrote:

> Hi Mick,
>
> I just committed a simple unit test[1] into camel-cxf, you make take a look
> and add the missing part that you need.
>
> [1]http://svn.apache.org/**viewvc?rev=1160701&view=rev<http://svn.apache.org/viewvc?rev=1160701&view=rev>
>
>
> On 8/23/11 7:43 PM, Mick Knutson wrote:
>
>> Hmm. Thanks for helping me start to think about things.
>> So it looks like I was originally trying to do this:
>>
>> 1. take RS or WS Object into process method
>> 2. wiretap Object into queue
>> 3. write tapped Object to file
>> 4. return from process method
>>
>> So, what _should_ I do if all I want is to take an CXF RS Object in, then
>> add it to a queue which is part of a totally different flow?
>>
>> ---
>> Thank You…
>>
>> Mick Knutson, President
>>
>> BASE Logic, Inc.
>> Enterprise Architecture, Design, Mentoring&  Agile Consulting
>> p. (855) BASE-LOGIC: (227-3564-42)
>> p. (478) BASE-LOGIC (227-3564-42)
>> f. (855) BASE-LOGIC: (227-3564-42)
>>
>> Website: http://www.baselogic.com
>> Blog: http://www.baselogic.com/blog/
>> Linked IN: 
>> http://linkedin.com/in/**mickknutson<http://linkedin.com/in/mickknutson>
>> Twitter: http://twitter.com/mickknutson
>> ---
>>
>>
>>
>> On Mon, Aug 22, 2011 at 9:11 PM, Willem Jiang<willem.ji...@gmail.com>**
>> wrote:
>>
>>  Hi,
>>>
>>> It looks like your route doesn't consume the parameter of the message
>>> body
>>> from the camel-cxf consumer, and the CXF HolderOutInterceptor complains
>>> about it.
>>>
>>> You may need to set the response message in the MappingProcessor or add
>>> another processor after the wrieTap(INPUT_TAP).
>>>
>>>
>>> On 8/23/11 1:35 AM, Mick Knutson wrote:
>>>
>>>  I am trying to modify the cxf example in the camel source to write the
>>>> contents of the incoming CXF request object to a file:
>>>>
>>>>     public static final String INPUT_TAP = "seda:tap";
>>>> public static final String WRITE_TO_FILE = "direct:writeToFile";
>>>>     public static final String PROCESSED_FILE_DIR =
>>>> "file:target/reports";
>>>> public static final String PROCESSED_FILE_NAME =
>>>> "processed-${in.header."+
>>>> SESSION_ID +"}.txt";
>>>>
>>>>         // populate the message queue with some messages
>>>>         from(SOAP_ENDPOINT_URI)
>>>>             .process(new MappingProcessor(new BookStoreImpl(false)))
>>>>             .wireTap(INPUT_TAP)
>>>>         ;
>>>>         from(WRITE_TO_FILE).routeId("****WRITE_TO_FILE")
>>>>                 .log("-->WRITE_TO_FILE")
>>>>                 .setHeader(Exchange.FILE_NAME,
>>>> constant(PROCESSED_FILE_NAME))
>>>>                 .to(PROCESSED_FILE_DIR)
>>>>         ;
>>>>         from(INPUT_TAP).routeId("****INPUT_TAP")
>>>>                 .log("-->INPUT_TAP")
>>>>                 .multicast()
>>>>                 .to(WRITE_TO_FILE)
>>>>         ;
>>>>
>>>>
>>>> I keep getting this error:
>>>>
>>>> [                qtp25163668-15] HolderOutInterceptor           ERROR
>>>> The
>>>> message content list of the in message and out message are same, CXF
>>>> can't
>>>> set the holder object into the message content list of the out message.
>>>>
>>>> and no files are written
>>>>
>>>> I have spent the entire day trying to get this simple example to work
>>>> and
>>>> feel I have not made any progress. I really would appreciate some
>>>> assistance
>>>> with this.
>>>>
>>>>
>>>>
>>>> ---
>>>> Thank You…
>>>>
>>>> Mick Knutson, President
>>>>
>>>> BASE Logic, Inc.
>>>> Enterprise Architecture, Design, Mentoring&   Agile Consulting
>>>> p. (855) BASE-LOGIC: (227-3564-42)
>>>> p. (478) BASE-LOGIC (227-3564-42)
>>>> f. (855) BASE-LOGIC: (227-3564-42)
>>>>
>>>> Website: http://www.baselogic.com
>>>> Blog: http://www.baselogic.com/blog/
>>>> Linked IN: 
>>>> http://linkedin.com/in/****mickknutson<http://linkedin.com/in/**mickknutson>
>>>> <http://linkedin.**com/in/mickknutson<http://linkedin.com/in/mickknutson>
>>>> >
>>>>
>>>> Twitter: http://twitter.com/mickknutson
>>>> ---
>>>>
>>>>
>>>>
>>> --
>>> Willem
>>> ------------------------------****----
>>> FuseSource
>>> Web: http://www.fusesource.com
>>> Blog:    http://willemjiang.blogspot.****com<http://willemjiang.**
>>> blogspot.com <http://willemjiang.blogspot.com>>(English)
>>>
>>>         http://jnn.javaeye.com (Chinese)
>>> Twitter: willemjiang
>>> Weibo: willemjiang
>>>
>>>
>>
>
> --
> Willem
> ------------------------------**----
> FuseSource
> Web: http://www.fusesource.com
> Blog:    
> http://willemjiang.blogspot.**com<http://willemjiang.blogspot.com>(English)
>         http://jnn.javaeye.com (Chinese)
> Twitter: willemjiang
> Weibo: willemjiang
>

Reply via email to