On Wed, 2004-07-14 at 00:09, robert burrell donkin wrote: > On 13 Jul 2004, at 16:51, Henning P. Schmiedehausen wrote: > > > Hi, > > hi henning
Hi, > XMLIntrospectorHelper is very limiting and will hopefully be completely > deprecated sometime soon. the primitives concept needs to be extended > into the more flexible concept of simple type. (the simple type concept > is more often used in the xml-object binding community.) the refactored > code with improved design has been merged into HEAD now and some of > these changes in this direction have been made (but i've lost track a > bit since i'm currently juggling a number of releases at the moment). > just FYI the plan is to cut a 1.6 based on the improved design very > soon. This sounds nice. I felt that the XMLIntrospectionHelper is not flexible enough to fit to all needs. Getting it pluggable through a strategy object would help here. > > In the end I came up with the attached patch, which works fine for me > > (it might not > > be ideal, because the resulting XML contains the raw sew^Wbinary data > > if you write the bean out. > > i'm not sure i parse this correctly. (it's a little late, so it might > be me.) care to expand? It's simple. With this patch, when you introspect a bean that contains a byte [] array, you might end up with <foo bytes="random noise right from the bean"> without any escaping or CDATA encapsulation. Most of the times, this is not what the developer wants (and it might not be valid XML). In my application I have a custom converter which does import org.apache.commons.codec.binary.Base64; public class CustomConverter extends DefaultObjectStringConverter { public String objectToString(Object object, Class type, String flavour, Context context) { if (object instanceof byte[]) { return new String(Base64.encodeBase64Chunked(object), "ISO-8859-1"); } else { return super.objectToString(object, type, flavour, context); } } public Object stringToObject(String value, Class type, String flavour, Context context) { if (type.equals(byte [].class)) { return Base64.decodeBase64(value.getBytes("ISO-8859-1")); } else { return super.stringToObject(value, type, flavour, context); } } } So I get my byte arrays converted into base64 Strings. [...] > > I was wondering if it would be more clever to allow the user to > > explicitly set the primitiveType property of the element descriptor > > from the .betwixt file. I found no way to do so, though and I already > > had this patch which works for me. > > the answer is yes but the concept needs to move from a fixed list of > primitives to a flexible, configurable (with strategy plugin as well as > property) simple type binding. this is definitely on the to-do list but > i'm right in the middle of managing various release cycles so i'm not > sure when i'll get the chance to look at this. > > it should be pretty straightforward and i'd be willing to help explain > the new design, so if you'd like to volunteer to take this on, that > would be great. I will take a look. No promises, though. > > > Anyway, here is the patch, discussions welcome. ;-) This is against > > CVS HEAD. I would volunteer to write an Unit test for it if has a > > chance to get applied. > > there is every chance that a fix for this would get committed with a > unit test :) > > i have an idea that the patch is against the 0.5 code base (but i could > be wrong since i haven't looked into this in detail). please set my > suspicious mind at rest by updating before you start getting into this. Well, it is against CVS HEAD, which identifies itself as 0.6-dev in the project.xml. Is there another version? Regards Henning -- Dipl.-Inf. (Univ.) Henning P. Schmiedehausen INTERMETA GmbH [EMAIL PROTECTED] +49 9131 50 654 0 http://www.intermeta.de/ RedHat Certified Engineer -- Jakarta Turbine Development -- hero for hire Linux, Java, perl, Solaris -- Consulting, Training, Development "Fighting for one's political stand is an honorable action, but re- fusing to acknowledge that there might be weaknesses in one's position - in order to identify them so that they can be remedied - is a large enough problem with the Open Source movement that it deserves to be on this list of the top five problems." --Michelle Levesque, "Fundamental Issues with Open Source Software Development" --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]