[Yanel-dev] XML resource patch

Evaldas Taroza etaroza at optaros.com
Wed Jan 16 11:09:55 CET 2008


Ok, maybe I changed too much. What I need is to be able to serialize XML 
resource into pure text. So I introduced TEXT in SerializerFactory. If I 
use HTML serializer I get all the DTD stuff prepended, which I don't want...

Evaldas

Josias Thöny wrote:
> Hi Evaldas,
> 
> please see my comments below.
> 
> Evaldas Taroza wrote:
>> Some small changes to BasicXMLResource and SerializerFactory.
>>
>> Evaldas
>>
>>
>> ------------------------------------------------------------------------
>>
>> Index: 
>> core/java/org/wyona/yanel/core/serialization/SerializerFactory.java
>> ===================================================================
>> --- 
>> core/java/org/wyona/yanel/core/serialization/SerializerFactory.java    
>> (revision 30347)
>> +++ 
>> core/java/org/wyona/yanel/core/serialization/SerializerFactory.java    
>> (working copy)
>> @@ -4,6 +4,7 @@
>>  import org.apache.log4j.Category;
>>  import org.apache.xml.serializer.OutputPropertiesFactory;
>>  import org.apache.xml.serializer.Serializer;
>> +import org.apache.xml.serializer.SerializerFactory;
>>  
>>  /**
>>   * Factory to create serializers. @@ -16,10 +17,12 @@
>>      public static final int XHTML_STRICT = 1;
>>      public static final int HTML_TRANSITIONAL = 2;
>>      public static final int XML = 3;
>> +    public static final int TEXT = 4;
>>           public static final String XHTML_STRICT_KEY = "XHTML_STRICT";
>>      public static final String HTML_TRANSITIONAL_KEY = 
>> "HTML_TRANSITIONAL";
>>      public static final String XML_KEY = "XML";
>> +    public static final String TEXT_KEY = "TEXT";
>>  
>>      public static Serializer getSerializer(Properties format) {
>>          Serializer serializer = new HTMLSerializer();
>> @@ -32,10 +35,12 @@
>>              return getSerializer(XHTML_STRICT);
>>          } else if (key.equals(HTML_TRANSITIONAL_KEY)) {
>>              return getSerializer(HTML_TRANSITIONAL);
>> -        } if (key.equals(XML_KEY)) {
>> +        } else if (key.equals(XML_KEY)) {
>>              return getSerializer(XML);
>> +        } else if (key.equals(TEXT_KEY)) {
>> +            return getSerializer(TEXT);
>>          }
>> -        return null;
>> +        return getSerializer(TEXT);
>>      }
>>           public static Serializer getSerializer(int key) {
>> @@ -47,8 +52,7 @@
>>              format.setProperty("doctype-public", "-//W3C//DTD XHTML 
>> 1.0 Strict//EN");
>>              format.setProperty("doctype-system", 
>> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd");
>>              serializer.setOutputFormat(format);
>> -        }
>> -        if (key == HTML_TRANSITIONAL) {
>> +        }else if (key == HTML_TRANSITIONAL) {
>>              serializer = new HTMLSerializer();
>>              Properties format = 
>> OutputPropertiesFactory.getDefaultMethodProperties("html");
>>              format.setProperty("indent", "yes");
>> @@ -56,12 +60,14 @@
>>              format.setProperty("doctype-public", "-//W3C//DTD HTML 
>> 4.01 Transitional//EN");
>>              format.setProperty("doctype-system", 
>> "http://www.w3.org/TR/html4/loose.dtd");
>>              serializer.setOutputFormat(format);
>> -        }
>> -        if (key == XML) {
>> +        }else if (key == XML) {
>>              serializer = new XMLSerializer();
>>              Properties format = 
>> OutputPropertiesFactory.getDefaultMethodProperties("xml");
>>              format.setProperty("indent", "yes");
>>              serializer.setOutputFormat(format);
>> +        } else {
>> +            Properties format = 
>> OutputPropertiesFactory.getDefaultMethodProperties("text");
>> +            serializer = SerializerFactory.getSerializer(format);
> 
> I've got a question here: currently we don't have a TextSerializer, so 
> SerializerFactory.getSerializer(format) will return a HTMLSerializer. I 
> guess this is not intented in the case of text format.
> Or what is your intention with the text format?
> 
>>          }
>>          return serializer;
>>      }
>> Index: impl/java/org/wyona/yanel/impl/resources/BasicXMLResource.java
>> ===================================================================
>> --- impl/java/org/wyona/yanel/impl/resources/BasicXMLResource.java    
>> (revision 30348)
>> +++ impl/java/org/wyona/yanel/impl/resources/BasicXMLResource.java    
>> (working copy)
>> @@ -64,10 +64,6 @@
>>      protected static String DEFAULT_VIEW_ID = "default";
>>      protected static String SOURCE_VIEW_ID = "source";
>>  
>> -    protected static String SERIALIZER_OMIT_XML_DECLARATION = 
>> "serializer-omit-xml-declaration";
>> -    protected static String SERIALIZER_DOCTYPE_PUBLIC = 
>> "serializer-doctype-public";
>> -    protected static String SERIALIZER_DOCTYPE_SYSTEM = 
>> "serializer-doctype-system";
>> -
>>      protected HashMap viewDescriptors;
>>  
>>      public ViewDescriptor getViewDescriptor(String viewId) {
>> @@ -261,10 +257,8 @@
>>  
>>              if (mimeType.equals("text/html")) {
>>                  serializer = 
>> SerializerFactory.getSerializer(SerializerFactory.HTML_TRANSITIONAL);
>> -            } else if (mimeType.equals("application/xml")) {
>> -                serializer = 
>> SerializerFactory.getSerializer(SerializerFactory.XML);
>>              } else {
>> -                serializer = 
>> SerializerFactory.getSerializer(SerializerFactory.XHTML_STRICT);
>> +                serializer = 
>> SerializerFactory.getSerializer(SerializerFactory.XML);
> 
> I'm afraid we cannot change the default behavior because some existing 
> realms rely on this. With this patch, e.g. the yanel-website realm 
> doesn't work anymore.
> 
> josias
> 
>>              }
>>          }
>>          // allow to override xml declaration and doctype:
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Yanel-development mailing list
>> Yanel-development at wyona.com
>> http://lists.wyona.org/cgi-bin/mailman/listinfo/yanel-development
> 
> _______________________________________________
> Yanel-development mailing list
> Yanel-development at wyona.com
> http://lists.wyona.org/cgi-bin/mailman/listinfo/yanel-development
> 


-- 
+41 79 616 53 76
Optaros - www.optaros.com


More information about the Yanel-development mailing list