Author: ltheussl
Date: Thu Sep 20 04:30:15 2007
New Revision: 577691

URL: http://svn.apache.org/viewvc?rev=577691&view=rev
Log:
Allow to set a namespace. Factor out utility method.

Modified:
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/AbstractXmlSink.java

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/AbstractXmlSink.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/AbstractXmlSink.java?rev=577691&r1=577690&r2=577691&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/AbstractXmlSink.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/AbstractXmlSink.java
 Thu Sep 20 04:30:15 2007
@@ -38,6 +38,60 @@
     extends SinkAdapter
     implements XmlMarkup
 {
+    /** Default namespace prepended to all tags */
+    private String nameSpace;
+
+    /**
+     * Sets the default namespace that is prepended to all tags written by 
this sink.
+     *
+     * @param ns the default namespace.
+     */
+    public void setNameSpace( String ns )
+    {
+        this.nameSpace = ns;
+    }
+
+    /**
+     * Return the default namespace that is prepended to all tags written by 
this sink.
+     *
+     * @return the current default namespace.
+     */
+    public String getNameSpace()
+    {
+        return this.nameSpace;
+    }
+
+    /**
+     * Utility method to get an AttributeSet as a String.
+     *
+     * @param att The AttributeSet.
+     * @return String
+     */
+    public static String getAttributeString( MutableAttributeSet att )
+    {
+        StringBuffer sb = new StringBuffer();
+
+        if ( att != null )
+        {
+            Enumeration names = att.getAttributeNames();
+
+            while ( names.hasMoreElements() )
+            {
+                Object key = names.nextElement();
+                Object value = att.getAttribute( key );
+
+                // AttributeSets are ignored
+                if ( !(value instanceof AttributeSet) )
+                {
+                    sb.append( String.valueOf( SPACE ) ).append( 
key.toString() ).append( String.valueOf( EQUAL ) )
+                        .append( String.valueOf( QUOTE ) ).append( 
value.toString() ).append( String.valueOf( QUOTE ) );
+                }
+            }
+        }
+
+        return sb.toString();
+    }
+
     /**
      * Starts a Tag. For instance:
      * <pre>
@@ -86,28 +140,15 @@
 
         StringBuffer sb = new StringBuffer();
         sb.append( String.valueOf( LESS_THAN ) );
-        sb.append( t.toString() );
 
-        if ( att != null )
+        if ( nameSpace != null )
         {
-            Enumeration names = att.getAttributeNames();
+            sb.append( nameSpace ).append( ":" );
+        }
 
-            while ( names.hasMoreElements() )
-            {
-                Object key = names.nextElement();
-                Object value = att.getAttribute( key );
+        sb.append( t.toString() );
 
-                if ( value instanceof AttributeSet )
-                {
-                    // ignored
-                }
-                else
-                {
-                    sb.append( String.valueOf( SPACE ) ).append( 
key.toString() ).append( String.valueOf( EQUAL ) )
-                        .append( String.valueOf( QUOTE ) ).append( 
value.toString() ).append( String.valueOf( QUOTE ) );
-                }
-            }
-        }
+        sb.append( getAttributeString( att ) );
 
         if ( isSimpleTag )
         {
@@ -137,6 +178,12 @@
         StringBuffer sb = new StringBuffer();
         sb.append( String.valueOf( LESS_THAN ) );
         sb.append( String.valueOf( SLASH ) );
+
+        if ( nameSpace != null )
+        {
+            sb.append( nameSpace ).append( ":" );
+        }
+
         sb.append( t.toString() );
         sb.append( String.valueOf( GREATER_THAN ) );
 


Reply via email to