@@ -78,6 +78,10 @@ public class DefaultConverter extends ConverterHelper {
7878 private static final VariantInfo VARIANT_OBJECT_XML = new VariantInfo (
7979 MediaType .APPLICATION_JAVA_OBJECT_XML );
8080
81+ /** Indicates whether the JavaBeans XML deserialization is supported or not. */
82+ private static final boolean VARIANT_OBJECT_XML_SUPPORTED = Boolean
83+ .getBoolean ("org.restlet.engine.converter.DefaultConverter.VARIANT_OBJECT_XML_SUPPORTED" );
84+
8185 @ Override
8286 public List <Class <?>> getObjectClasses (Variant source ) {
8387 List <Class <?>> result = null ;
@@ -90,7 +94,8 @@ public List<Class<?>> getObjectClasses(Variant source) {
9094 MediaType mediaType = source .getMediaType ();
9195
9296 if (MediaType .APPLICATION_JAVA_OBJECT .equals (mediaType )
93- || MediaType .APPLICATION_JAVA_OBJECT_XML .equals (mediaType )) {
97+ || (VARIANT_OBJECT_XML_SUPPORTED && MediaType .APPLICATION_JAVA_OBJECT_XML
98+ .equals (mediaType ))) {
9499 result = addObjectClass (result , Object .class );
95100 } else if (MediaType .APPLICATION_WWW_FORM .equals (mediaType )) {
96101 result = addObjectClass (result , Form .class );
@@ -124,7 +129,9 @@ public List<VariantInfo> getVariants(Class<?> source) {
124129 result = addVariant (result , VARIANT_FORM );
125130 } else if (Serializable .class .isAssignableFrom (source )) {
126131 result = addVariant (result , VARIANT_OBJECT );
127- result = addVariant (result , VARIANT_OBJECT_XML );
132+ if (VARIANT_OBJECT_XML_SUPPORTED ) {
133+ result = addVariant (result , VARIANT_OBJECT_XML );
134+ }
128135 }
129136 }
130137
@@ -161,11 +168,13 @@ public float score(Object source, Variant target, UniformResource resource) {
161168 } else if (MediaType .APPLICATION_JAVA_OBJECT
162169 .isCompatible (target .getMediaType ())) {
163170 result = 0.6F ;
164- } else if (MediaType .APPLICATION_JAVA_OBJECT_XML .equals (target
165- .getMediaType ())) {
171+ } else if (VARIANT_OBJECT_XML_SUPPORTED
172+ && MediaType .APPLICATION_JAVA_OBJECT_XML .equals (target
173+ .getMediaType ())) {
166174 result = 1.0F ;
167- } else if (MediaType .APPLICATION_JAVA_OBJECT_XML
168- .isCompatible (target .getMediaType ())) {
175+ } else if (VARIANT_OBJECT_XML_SUPPORTED
176+ && MediaType .APPLICATION_JAVA_OBJECT_XML
177+ .isCompatible (target .getMediaType ())) {
169178 result = 0.6F ;
170179 }
171180 } else {
@@ -217,11 +226,13 @@ public <T> float score(Representation source, Class<T> target,
217226 } else if (MediaType .APPLICATION_JAVA_OBJECT
218227 .isCompatible (source .getMediaType ())) {
219228 result = 0.6F ;
220- } else if (MediaType .APPLICATION_JAVA_OBJECT_XML .equals (source
221- .getMediaType ())) {
229+ } else if (VARIANT_OBJECT_XML_SUPPORTED
230+ && MediaType .APPLICATION_JAVA_OBJECT_XML .equals (source
231+ .getMediaType ())) {
222232 result = 1.0F ;
223- } else if (MediaType .APPLICATION_JAVA_OBJECT_XML
224- .isCompatible (source .getMediaType ())) {
233+ } else if (VARIANT_OBJECT_XML_SUPPORTED
234+ && MediaType .APPLICATION_JAVA_OBJECT_XML
235+ .isCompatible (source .getMediaType ())) {
225236 result = 0.6F ;
226237 } else {
227238 result = 0.5F ;
@@ -332,8 +343,10 @@ public <T> void updatePreferences(List<Preference<MediaType>> preferences,
332343 } else if (Serializable .class .isAssignableFrom (entity )) {
333344 updatePreferences (preferences , MediaType .APPLICATION_JAVA_OBJECT ,
334345 1.0F );
335- updatePreferences (preferences ,
336- MediaType .APPLICATION_JAVA_OBJECT_XML , 1.0F );
346+ if (VARIANT_OBJECT_XML_SUPPORTED ) {
347+ updatePreferences (preferences ,
348+ MediaType .APPLICATION_JAVA_OBJECT_XML , 1.0F );
349+ }
337350 } else if (String .class .isAssignableFrom (entity )
338351 || Reader .class .isAssignableFrom (entity )) {
339352 updatePreferences (preferences , MediaType .TEXT_PLAIN , 1.0F );
0 commit comments