You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by rd...@apache.org on 2005/02/24 23:29:52 UTC
svn commit: r155266 - in jakarta/commons/proper/betwixt/trunk/xdocs:
guide/binding.xml tasks.xml
Author: rdonkin
Date: Thu Feb 24 14:29:51 2005
New Revision: 155266
URL: http://svn.apache.org/viewcvs?view=rev&rev=155266
Log:
Documentation for change ObjectToStringConverter to make context available and to make options available from context. This is an alternative way to address the needs of Issue 33331.
Modified:
jakarta/commons/proper/betwixt/trunk/xdocs/guide/binding.xml
jakarta/commons/proper/betwixt/trunk/xdocs/tasks.xml
Modified: jakarta/commons/proper/betwixt/trunk/xdocs/guide/binding.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/xdocs/guide/binding.xml?view=diff&r1=155265&r2=155266
==============================================================================
--- jakarta/commons/proper/betwixt/trunk/xdocs/guide/binding.xml (original)
+++ jakarta/commons/proper/betwixt/trunk/xdocs/guide/binding.xml Thu Feb 24 14:29:51 2005
@@ -667,6 +667,67 @@
<code>org.apache.commons.betwixt.strategy</code> package. Examining the source code for these classes
is a good please to start when creating your own implementation.
</p>
+ </subsection>
+ <subsection name='Flavours For Custom Converters'>
+ <p>
+One problem facing those who create custom converters is that objects of the same type
+may (in different contexts) require different conversions. For example, a <code>java.util.Date</code>
+may in one context have the symantic meaning of a day (and so the conversion needs to suppress the
+time component) and in another may indicate a date time (and so the conversion in this case needs to
+render the time components). The same type may come in different <em>flavours</em>.
+ </p>
+ <p>
+The recommended way to solve this kind of problem is to added options to the betwixt file
+which can then be picked up by the custom converter and used to determine the appropriate
+conversion.
+ </p>
+ <p>
+For example, consider a bean representing a person with an attribute
+giving that person's date of birth. Suppose that this is stored
+as aa <code>java.util.Date</code>. This needs to be rendered as
+a date string (without a time component). A good approach would be
+to add an option to the dot betwixt file as follows:
+ </p>
+<source><![CDATA[
+<?xml version='1.0'?>
+<info primitiveTypes="attribute">
+ <element name=''>
+ <element name='birthday' property='birthday'>
+ <option>
+ <name>org.apache.commons.betwixt.flavour</name>
+ <value>Day</value>
+ </option>
+ </element>
+ <addDefaults/>
+ </element>
+</info>
+]]>
+</source>
+ <p>
+The following code snippet illustrates how a custom converter
+can use this information:
+ </p>
+<source><![CDATA[
+ public String objectToString(Object object, Class type, Context context) {
+ String flavour = null;
+ Options options = context.getOptions();
+ if (options != null) {
+ flavour = options.getValue("org.apache.commons.betwixt.flavour");
+ }
+
+ if ("Day".equals(flavour)) {
+ // render as date with no time component
+ ...
+ } else {
+ // Do normal rendering
+ ...
+ }
+ }
+]]>
+</source>
+ <p>
+Of course, the choice of the option name is purely arbitrary.
+ </p>
</subsection>
</section>
<section name='Multi Mapping'>
Modified: jakarta/commons/proper/betwixt/trunk/xdocs/tasks.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/xdocs/tasks.xml?view=diff&r1=155265&r2=155266
==============================================================================
--- jakarta/commons/proper/betwixt/trunk/xdocs/tasks.xml (original)
+++ jakarta/commons/proper/betwixt/trunk/xdocs/tasks.xml Thu Feb 24 14:29:51 2005
@@ -186,6 +186,9 @@
<section name='Completed'>
<subsection name='since 0.6'>
<ul>
+ <li>Added <strong>options to context</strong>. This replaces direct flavour mechanism.
+ (Flavour becomes just a specific option).</li>
+ <li>Factored out <strong>id storage</strong> into strategy</li>
<li><strong>anonymous collections</strong> now allowed in betwixt files</li>
<li><strong>Improved introspection support for DynaBeans</strong></li>
<li><strong>Improved introspection for interfaces</strong> superinterface
@@ -334,6 +337,16 @@
</subsection>
</section>
<section name='Deprecated'>
+ <subsection name='since 0.6'>
+ <ul>
+ <li>ObjectStringConverter direct flavour replaced with use of options
+ <ul>
+ <li>objectToString replaced by method without flavour in signature</li>
+ <li>stringToObject replaced by method without flavour in signature</li>
+ </ul>
+ </li>
+ </ul>
+ </subsection>
<subsection name='0.6'>
<ul>
<li><strong>Refactoring (more declarative descriptors)</strong>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org