Pavel,

Mock Frameworks are a subjective kind of thing, but I've had a lot of
luck with Mockito. It's DSL (And we're fans of good DSLs round here ;)
) is really clean and succinct and the Argument Capture I've found
indispensible.

http://www.mockito.org/

And I've also found Mycila very useful for injecting mocks into spring
contexts, it will work with easymock too if you prefer

http://code.google.com/p/mycila/wiki/MycilaTesting

checkit.

ste



On Fri, Jan 8, 2010 at 7:47 AM, Willem Jiang <willem.ji...@gmail.com> wrote:
> Hi Pavel,
>
> We need to do the change 1, 2 at the same time.
> My old patch can't deal with this situation
>
> from("direct:getJAXBElementValue")
>                    .unmarshal(new
> JaxbDataFormat("org.apache.camel.foo.bar"))
>                        .to("mock:result");
>
> It's very late for my time, I will work on it tomorrow.
>
> Willem
>
> Pavel wrote:
>>
>> Me again.
>> I'm trying to hook my writer to the right place and I got confused a bit.
>> There are several places that do marshalling/unmarshalling.
>>
>> 1. JaxbDataFormat - this is what I think normally steps in when route
>> needs
>> to marshal/unmarshal something.
>>
>> 2. FallbackTypeConverter - if I read camel docs correctly, this is "last
>> resort" converter, not for regular use. (BTW those "if"s in convertTo()
>> look
>> suspicious)
>>
>> 3. JaxbConverter - I'm not sure what it is. This class is not referenced
>> anywhere except tests.
>>
>> Can you please clarify that? So far I feel like filtering option needs to
>> be
>> applied to #1 only.
>>
>> Thanks,
>> Pavel
>>
>> On Fri, Jan 8, 2010 at 11:47 AM, Willem Jiang
>> <willem.ji...@gmail.com>wrote:
>>
>>> Hi Pavel,
>>>
>>> I think it is OK for us use EasyMock 2.5 as it just for testing.
>>> Look forward your XmlStream* solution :)
>>>
>>> Willem
>>>
>>>
>>>
>>> Pavel wrote:
>>>
>>>> Hi,
>>>>
>>>> I attached test to JIRA. I'll see if I can put together Xml-based
>>>> approach;
>>>> will write back on that.
>>>>
>>>> BTW, do you guys have any objections against updating EasyMock
>>>> dependency
>>>> to
>>>> 2.5?
>>>>
>>>> Thanks,
>>>> Pavel
>>>>
>>>> On Fri, Jan 8, 2010 at 5:37 AM, Willem Jiang <willem.ji...@gmail.com>
>>>> wrote:
>>>>
>>>>  Hi Pavel,
>>>>>
>>>>> It's good to keep improving this feature by discussing :)
>>>>>
>>>>> For the marshal part, I'd like to see your solution which use the
>>>>> XmlStreamWriter filtering :)
>>>>>
>>>>> We can add the option in the JAXBDataFormat to turn on or turn off the
>>>>> filtering.
>>>>>
>>>>> I didn't found the patch of test in your last mail.
>>>>> Can you submit the patch into the JIRA[1]?
>>>>>
>>>>>
>>>>> [1] https://issues.apache.org/activemq/browse/CAMEL-2330
>>>>>
>>>>> Willem
>>>>>
>>>>>
>>>>> Pavel wrote:
>>>>>
>>>>>  Hi again,
>>>>>>
>>>>>> I did look at the implementation and I have some thoughts and
>>>>>> comments.
>>>>>>
>>>>>> * This addresses how Camel-JAXB reads XML, which is good. But another
>>>>>> aspect is how Camel-JAXB produces XML. E.g. in the case I was hitting,
>>>>>> camel/jaxb was marshalling "bad" data that could not be unmarshalled
>>>>>> on
>>>>>> the
>>>>>> other end of the wire.
>>>>>>  So I think filtering for the marshalled content needs to be here too.
>>>>>>
>>>>>> * Yet whole filtering thing needs to be optional. E.g. XML1.1 does not
>>>>>> have that restriction, so I would do some sort of config-driven on/off
>>>>>> switch.
>>>>>>  Camel just does not have enough knowledge about intended payload to
>>>>>> make
>>>>>> the informed decision.
>>>>>>
>>>>>> * By default this option should be off for backward compatibility.
>>>>>> Otherwise there is a chance of unexpected side effects for those who
>>>>>> upgrade.
>>>>>>
>>>>>> * Would be nice for camel to log the fact of replacement. Silent body
>>>>>> modification may be frustrating to users, and add pain to
>>>>>> troubleshooting.
>>>>>>  - BTW this is the reason why I would go for
>>>>>> XmlStreamReader/XmlStreamWriter filtering. It would give mostly the
>>>>>> same
>>>>>> effect, but in contrast to plain Reader, Xml* classes do know some
>>>>>> context.
>>>>>> And thus may log meaningful [somewhat] messages.
>>>>>>
>>>>>>
>>>>>>
>>>>>> Down to code level, I'm attaching patch with a test for
>>>>>> JaxbFilterReader.
>>>>>>
>>>>>>
>>>>>> * I'm not sure the filtering goes exactly per spec referred (
>>>>>> http://www.w3.org/TR/2004/REC-xml-20040204/#NT-Char).
>>>>>> E.g. CR/LF/Tab are filtered out, although these should not be.
>>>>>>
>>>>>> Also, the spec  mentions 2 slightly different things.
>>>>>>
>>>>>> 1. Character range. Chars not in that range are not valid for XML 1.0.
>>>>>> 2. Discouraged characters (see the "Note:" section). Additional
>>>>>> restrictions on top of #1.
>>>>>>
>>>>>> The test assumes #1. (and I'm having hard times to interpret
>>>>>> implications
>>>>>> of "discouraged").
>>>>>>
>>>>>> * Test indicates end-of-stream problem with no-args read(). And I
>>>>>> believe
>>>>>> there is no need to override no-args read() at all, as it delegates to
>>>>>> read(char[], int, int).
>>>>>>
>>>>>> * I believe there is also an problem in 3-args read(), "len - off"
>>>>>> part.
>>>>>> I
>>>>>> would expect "len" here. Test indicates that issue - unless I missed
>>>>>> something and set incorrect expectations.
>>>>>>
>>>>>>
>>>>>> Hope this makes sense.
>>>>>>
>>>>>> Pavel
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thu, Jan 7, 2010 at 6:43 PM, Pavel <pag...@gmail.com <mailto:
>>>>>> pag...@gmail.com>> wrote:
>>>>>>
>>>>>>  Hi Willem,
>>>>>>
>>>>>>  I'm looking into it. It could take some time due to holidays I have,
>>>>>>  but I'll come back with feedback as soon as I have it.
>>>>>>
>>>>>>  Pavel
>>>>>>
>>>>>>
>>>>>>  On Thu, Jan 7, 2010 at 10:49 AM, Willem Jiang
>>>>>>  <willem.ji...@gmail.com <mailto:willem.ji...@gmail.com>> wrote:
>>>>>>
>>>>>>      Hi Pavel,
>>>>>>
>>>>>>      I committed the patch for CAMEL-2330, You can find the
>>>>>>      JaxbFilterReader code here[1].
>>>>>>      Please check out last Apache Camel 2.2-SNAPSHOT to verify it.
>>>>>>
>>>>>>      [1]
>>>>>>
>>>>>>
>>>>>>
>>>>>> https://svn.apache.org/repos/asf/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbFilterReader.java
>>>>>>
>>>>>>      Willem
>>>>>>
>>>>>>
>>>>>>      Willem Jiang wrote:
>>>>>>
>>>>>>          I just filled a JIRA[1] for adding an out of box support in
>>>>>>          camel-jaxb.
>>>>>>          So you don't need to use covertTo() DSL any more.
>>>>>>
>>>>>>          [1] https://issues.apache.org/activemq/browse/CAMEL-2330
>>>>>>
>>>>>>          Willem
>>>>>>
>>>>>>
>>>>>> ...
>>>>>>
>>>>>>
>>>>
>>
>
>

Reply via email to