rdonkin 2004/10/06 14:38:06
Modified: betwixt/src/java/org/apache/commons/betwixt
XMLIntrospector.java
betwixt/src/java/org/apache/commons/betwixt/digester
AddDefaultsRule.java
betwixt/src/java/org/apache/commons/betwixt/strategy
PropertySuppressionStrategy.java
betwixt/src/test/org/apache/commons/betwixt/derived
TestWriteClass.java
betwixt/xdocs/guide binding.xml
Log:
Improved PropertySuppressionStrategy interface and documentation. Issue #31553.
Submitted by Christoph Gaffga.
Revision Changes Path
1.38 +12 -3
jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/XMLIntrospector.java
Index: XMLIntrospector.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/XMLIntrospector.java,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- XMLIntrospector.java 4 Oct 2004 22:27:12 -0000 1.37
+++ XMLIntrospector.java 6 Oct 2004 21:38:05 -0000 1.38
@@ -1431,7 +1431,10 @@
if ( descriptors != null ) {
for (int i=0, size=descriptors.length; i<size; i++) {
if (!getConfiguration().getPropertySuppressionStrategy()
- .suppressProperty(
descriptors[i].getPropertyType(), descriptors[i].getName())) {
+ .suppressProperty(
+ beanClass,
+ descriptors[i].getPropertyType(),
+ descriptors[i].getName())) {
propertyDescriptors.add( descriptors[i] );
}
}
@@ -1446,7 +1449,10 @@
if ( descriptors != null ) {
for (int j=0, innerSize=descriptors.length;
j<innerSize; j++) {
if
(!getConfiguration().getPropertySuppressionStrategy()
- .suppressProperty(
descriptors[j].getPropertyType(), descriptors[j].getName())) {
+ .suppressProperty(
+ beanClass,
+ descriptors[j].getPropertyType(),
+ descriptors[j].getName())) {
propertyDescriptors.add( descriptors[j] );
}
}
@@ -1484,7 +1490,10 @@
PropertyDescriptor[] descriptors =
beanInfo.getPropertyDescriptors();
for (int j=0, descriptorLength=descriptors.length;
j<descriptorLength ; j++) {
if (!getConfiguration().getPropertySuppressionStrategy()
- .suppressProperty(
descriptors[j].getPropertyType(), descriptors[j].getName())) {
+ .suppressProperty(
+ beanClass,
+ descriptors[j].getPropertyType(),
+ descriptors[j].getName())) {
propertyDescriptors.add( descriptors[j] );
}
}
1.15 +4 -1
jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/digester/AddDefaultsRule.java
Index: AddDefaultsRule.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/digester/AddDefaultsRule.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- AddDefaultsRule.java 4 Oct 2004 21:50:35 -0000 1.14
+++ AddDefaultsRule.java 6 Oct 2004 21:38:05 -0000 1.15
@@ -110,7 +110,10 @@
continue;
}
if
(!getXMLIntrospector().getConfiguration().getPropertySuppressionStrategy()
- .suppressProperty(descriptor.getPropertyType(),
descriptor.getName())) {
+ .suppressProperty(
+ beanClass,
+ descriptor.getPropertyType(),
+ descriptor.getName())) {
Descriptor nodeDescriptor =
getXMLIntrospector().createXMLDescriptor(new BeanProperty(descriptor));
if ( nodeDescriptor != null ) {
1.2 +4 -3
jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/strategy/PropertySuppressionStrategy.java
Index: PropertySuppressionStrategy.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/strategy/PropertySuppressionStrategy.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PropertySuppressionStrategy.java 4 Oct 2004 21:52:13 -0000 1.1
+++ PropertySuppressionStrategy.java 6 Oct 2004 21:38:05 -0000 1.2
@@ -28,7 +28,7 @@
* found on every object.
*/
public static final PropertySuppressionStrategy DEFAULT = new
PropertySuppressionStrategy() {
- public boolean suppressProperty(Class propertyType, String propertyName) {
+ public boolean suppressProperty(Class clazz, Class propertyType, String
propertyName) {
boolean result = false;
// ignore class properties
if ( Class.class.equals( propertyType) && "class".equals( propertyName
) ) {
@@ -39,10 +39,11 @@
};
/**
- * Should the given property be supressed?
+ * Should the given property be suppressed?
+ * @param classContainingTheProperty <code>Class</code> giving the type of the
bean containing the property <code>propertyName</code>
* @param propertyType <code>Class</code> giving the type of the property, not
null
* @param propertyName the name of the property, not null
* @return true when the given property should be suppressed
*/
- public abstract boolean suppressProperty(Class propertyType, String
propertyName);
+ public abstract boolean suppressProperty(Class classContainingTheProperty,
Class propertyType, String propertyName);
}
1.2 +1 -1
jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/derived/TestWriteClass.java
Index: TestWriteClass.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/derived/TestWriteClass.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestWriteClass.java 4 Oct 2004 21:52:40 -0000 1.1
+++ TestWriteClass.java 6 Oct 2004 21:38:05 -0000 1.2
@@ -63,7 +63,7 @@
writer.getXMLIntrospector().getConfiguration().setPropertySuppressionStrategy(
new PropertySuppressionStrategy() {
- public boolean suppressProperty(Class propertyType, String
propertyName) {
+ public boolean suppressProperty(Class
classContainingThePropety, Class propertyType, String propertyName) {
if ("class".equals(propertyName)) {
return true;
}
1.11 +39 -5 jakarta-commons/betwixt/xdocs/guide/binding.xml
Index: binding.xml
===================================================================
RCS file: /home/cvs/jakarta-commons/betwixt/xdocs/guide/binding.xml,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- binding.xml 4 Oct 2004 21:49:20 -0000 1.10
+++ binding.xml 6 Oct 2004 21:38:06 -0000 1.11
@@ -501,8 +501,39 @@
or a certain type. For example, the default Betwixt configuration ignores all
properties
called 'class'. The <code>PropertySuppressionStrategy</code> pluggable strategy can
be set on the <code>IntrospectionConfiguration</code> and allows course grained
rules
-concerning which properties are to be ignored to be set.
- </p>
+concerning which properties are to be ignored to be set.</p>
+ <p>
+The following example shows a <code>PropertySuppressionStrategy</code> that shows
all
+properties, including the class property:
+<source><![CDATA[
+beanWriter.getXMLIntrospector().getConfiguration().setPropertySuppressionStrategy(
+ new PropertySuppressionStrategy() {
+ public boolean suppressProperty(Class clazz, Class type, String name) {
+ return false;
+ }
+ });
+]]></source></p>
+ <p>
+Here is another example making the choice dependant on what class contains the
+property. This one shows the class property only for classes like
+<code>Throwable</code>, <code>Exception</code>, <code>Error</code> and so on:
+<source><![CDATA[
+beanWriter.getXMLIntrospector().getConfiguration().setPropertySuppressionStrategy(
+ new PropertySuppressionStrategy() {
+ public boolean suppressProperty(Class classContainingTheProperty,
+ Class propertyType, String propertyName) {
+ if (Class.class.equals(propertyType)
+ && "class".equals(propertyName)) {
+
+ if (!Throwable.class
+ .isAssignableFrom(classContainingTheProperty)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ });
+]]></source></p>
</subsection>
</section>
@@ -548,13 +579,15 @@
For example, to delegate to <code>ConvertUtils</code> for <em>all</em> conversions
in a read:
<code><pre>
BeanReader reader = new BeanReader();
- reader.getBindingConfiguration().setObjectStringConverter(new
ConvertUtilsObjectStringConverter());
+ reader.getBindingConfiguration()
+ .setObjectStringConverter(new ConvertUtilsObjectStringConverter());
reader.parse...
</pre></code>
and in a write:
<code><pre>
BeanWriter writer = new BeanWriter();
- writer.getBindingConfiguration().setObjectStringConverter(new
ConvertUtilsObjectStringConverter());
+ writer.getBindingConfiguration()
+ .setObjectStringConverter(new ConvertUtilsObjectStringConverter());
writer.write...
</pre></code>
</p>
@@ -720,7 +753,8 @@
" </betwixt-config>";
BeanWriter beanWriter = new BeanWriter(outputWriter);
...
- beanWriter.getXMLIntrospector().register(new InputSource(new
StringReader(MAPPING)));
+ beanWriter.getXMLIntrospector()
+ .register(new InputSource(new StringReader(MAPPING)));
beanWriter.write(partyBean);
]]>
</source>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]