You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ecs-dev@jakarta.apache.org by sn...@apache.org on 2001/07/30 16:55:24 UTC

cvs commit: jakarta-ecs/src/java/org/apache/ecs ConcreteElement.java

snagy       01/07/30 07:55:24

  Modified:    src/java/org/apache/ecs ConcreteElement.java
  Log:
  Add overloaded method to ConcreteElement.output.
  Submitted by: Tony Barrile
  Reviewed by: Stephan Nagy
  
  Revision  Changes    Path
  1.26      +62 -43    jakarta-ecs/src/java/org/apache/ecs/ConcreteElement.java
  
  Index: ConcreteElement.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ecs/src/java/org/apache/ecs/ConcreteElement.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- ConcreteElement.java	2001/04/04 20:41:02	1.25
  +++ ConcreteElement.java	2001/07/30 14:55:24	1.26
  @@ -69,15 +69,12 @@
       This class is to be subclassed by those elements that are made up of
       other elements. i.e. BODY,HEAD,etc.
   
  -    @version $Id: ConcreteElement.java,v 1.25 2001/04/04 20:41:02 rdonkin Exp $
  +    @version $Id: ConcreteElement.java,v 1.26 2001/07/30 14:55:24 snagy Exp $
       @author <a href="mailto:snagy@servletapi.com">Stephan Nagy</a>
       @author <a href="mailto:jon@clearink.com">Jon S. Stevens</a>
   */
   public class ConcreteElement extends ElementAttributes implements Cloneable
   {
  -	/** The line separator to use for pretty printing */
  -	private static String lineSeparator = System.getProperty("line.separator");
  -
       /** @serial registry registry */
       private Hashtable registry = new Hashtable(4); // keep a list of elements that need to be added to the element
       /** Maintain an ordered list of elements */
  @@ -280,45 +277,44 @@
       }
   
       /**
  -        Override output(OutputStream) incase any elements are in the registry.
  +        Overload output(OutputStream).
           @param output OutputStream to write to.
  +		@param ConcreteElement	Instance of ConcreteElement
       */
  -    public void output(OutputStream out)
  +    public static void output(OutputStream out, ConcreteElement ce) 
   	{
  -		boolean prettyPrint = getPrettyPrint();
  -		int tabLevel = getTabLevel();
  +		boolean prettyPrint = ce.getPrettyPrint();
  +		int tabLevel = ce.getTabLevel();
   		try
   		{
  -			if (registry.size() == 0)
  -			{
  -				if ((prettyPrint && this instanceof Printable) && (tabLevel > 0))
  -					putTabs(tabLevel, out);
  -                super.output(out);
  +			if (ce.registry.size() == 0)
  +			{	
  +				ce.output(out);
   			}
   			else
   			{
  -                if ((prettyPrint && this instanceof Printable) && (tabLevel > 0))
  -					putTabs(tabLevel, out);
  +                if ((prettyPrint && ce instanceof Printable) && (tabLevel > 0))
  +					ce.putTabs(tabLevel, out);
   
  -				out.write(createStartTag().getBytes());
  +				out.write(ce.createStartTag().getBytes());
   
                   // If this is a StringElement that has ChildElements still print the TagText
  -                if(getTagText() != null)
  -                    out.write(getTagText().getBytes());
  +                if(ce.getTagText() != null)
  +                    out.write(ce.getTagText().getBytes());
   
  -				Enumeration enum = registryList.elements();
  +				Enumeration enum = ce.registryList.elements();
   
   				while(enum.hasMoreElements())
   				{
  -					Object obj = registry.get((String)enum.nextElement());
  +					Object obj = ce.registry.get((String)enum.nextElement());
   					if(obj instanceof GenericElement)
   					{
   						Element e = (Element)obj;
  -						if (prettyPrint && this instanceof Printable)
  +						if (prettyPrint && ce instanceof Printable)
   						{
  -                            if ( getNeedLineBreak() )
  +                            if ( ce.getNeedLineBreak() )
                               {
  -						    	out.write(lineSeparator.getBytes());
  +						    	out.write('\n');
   							    e.setTabLevel(tabLevel + 1);
                               }
   						}
  @@ -326,30 +322,30 @@
   					}
   					else
   					{
  -						if (prettyPrint && this instanceof Printable)
  +						if (prettyPrint && ce instanceof Printable)
   						{
  -                            if ( getNeedLineBreak() )
  +                            if ( ce.getNeedLineBreak() )
                               {
  -                                out.write(lineSeparator.getBytes());
  -							    putTabs(tabLevel + 1, out);
  +                                out.write('\n');
  +							    ce.putTabs(tabLevel + 1, out);
                               }
   						}
   						String string = obj.toString();
   						out.write(string.getBytes());
   					}
   				}
  -				if (getNeedClosingTag())
  +				if (ce.getNeedClosingTag())
   				{
  - 					if (prettyPrint && this instanceof Printable)
  + 					if (prettyPrint && ce instanceof Printable)
   					{
  -                        if ( getNeedLineBreak() )
  +                        if ( ce.getNeedLineBreak() )
                           {
  -                            out.write(lineSeparator.getBytes());
  +                            out.write('\n');
                               if (tabLevel > 0)
  -                                putTabs(tabLevel, out);
  +                                ce.putTabs(tabLevel, out);
                           }
   					}
  -				   out.write(createEndTag().getBytes());
  +				   out.write(ce.createEndTag().getBytes());
   				}
   			}
   		}
  @@ -358,6 +354,34 @@
   			ioe.printStackTrace(new PrintWriter(out));
   		}
   	}
  +	
  +    /**
  +        Override output(OutputStream) incase any elements are in the registry.
  +        @param output OutputStream to write to.
  +    */
  +    public void output(OutputStream out)
  +	{
  +		if (this.registry.size() == 0)
  +		{
  +				int tabLevel = getTabLevel();
  +				if ((getPrettyPrint() && this instanceof Printable) && (tabLevel > 0))  
  +				{
  +					try 
  +					{
  +						this.putTabs(tabLevel, out);
  +					}
  +					catch(IOException ioe) 
  +					{
  +						ioe.printStackTrace(new PrintWriter(out));					
  +					}
  +				}
  +                super.output(out);
  +		} 
  +		else  
  +		{
  +			output(out,this);
  +		}
  +	}
   
       /**
           Writer version of this method.
  @@ -366,7 +390,7 @@
       {
           output ( new PrintWriter(out) );
       }
  -
  +    
       /**
           Override output(BufferedWriter) incase any elements are in the registry.
           @param output OutputStream to write to.
  @@ -402,7 +426,7 @@
   					if (prettyPrint && this instanceof Printable)
   					{
                           if (getNeedLineBreak()) {
  -							out.write(lineSeparator);
  +							out.write('\n');
   							e.setTabLevel(tabLevel + 1);
   						}
   					}
  @@ -413,7 +437,7 @@
   					if (prettyPrint && this instanceof Printable)
   					{
                           if (getNeedLineBreak()) {
  -							out.write(lineSeparator);
  +							out.write('\n');
   							putTabs(tabLevel + 1, out);
   						}
   					}
  @@ -429,7 +453,7 @@
   				if (prettyPrint && this instanceof Printable)
   				{
                       if (getNeedLineBreak()) {
  -						out.write(lineSeparator);
  +						out.write('\n');
   						if (tabLevel > 0)
   							putTabs(tabLevel, out);
   					}
  @@ -468,10 +492,5 @@
           {
               throw new InternalError(ioe.toString());
           }
  -    }
  -    
  -    public boolean isEmpty()
  -    {
  -        return registryList.isEmpty();
       }
  -}
  \ No newline at end of file
  +}
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: ecs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: ecs-dev-help@jakarta.apache.org