weaver      2004/10/12 12:38:14

  Modified:    components/jetspeed project.xml
  Added:       components/jetspeed/src/java/org/apache/jetspeed/rewriter/html/neko
                        XMLAttributesWrapper.java URLRewriterFilter.java
                        CallbackElementRemover.java
                        NeckoHTMLParserAdapter.java
  Log:
  see: http://nagoya.apache.org/jira/browse/JS2-138#action_53952
  
  Revision  Changes    Path
  1.1                  
jakarta-jetspeed-2/components/jetspeed/src/java/org/apache/jetspeed/rewriter/html/neko/XMLAttributesWrapper.java
  
  Index: XMLAttributesWrapper.java
  ===================================================================
  /*
   * Copyright 2000-2001,2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.rewriter.html.neko;
  
  import org.apache.jetspeed.rewriter.MutableAttributes;
  import org.apache.xerces.xni.Augmentations;
  import org.apache.xerces.xni.QName;
  import org.apache.xerces.xni.XMLAttributes;
  
  /**
   * <p>
   * XMLAttributesWrapper
   * </p>
   * <p>
   *
   * </p>
   * @author <a href="mailto:[EMAIL PROTECTED]">Scott T. Weaver</a>
   * @version $Id: XMLAttributesWrapper.java,v 1.1 2004/10/12 19:38:14 weaver Exp $
   *
   */
  public class XMLAttributesWrapper implements MutableAttributes
  {
      protected XMLAttributes attrs;
      
      /**
       * 
       */
      public XMLAttributesWrapper(XMLAttributes attrs)
      {
          super();
          this.attrs = attrs;
      }
  
      /**
       * <p>
       * addAttribute
       * </p>
       *
       * @param arg0
       * @param arg1
       * @param arg2
       * @return
       */
      public int addAttribute( QName arg0, String arg1, String arg2 )
      {
          return attrs.addAttribute(arg0, arg1, arg2);
      }
      /**
       * <p>
       * equals
       * </p>
       *
       * @see java.lang.Object#equals(java.lang.Object)
       * @param obj
       * @return
       */
      public boolean equals( Object obj )
      {
          return attrs.equals(obj);
      }
      /**
       * <p>
       * getAugmentations
       * </p>
       *
       * @param arg0
       * @return
       */
      public Augmentations getAugmentations( int arg0 )
      {
          return attrs.getAugmentations(arg0);
      }
      /**
       * <p>
       * getAugmentations
       * </p>
       *
       * @param arg0
       * @return
       */
      public Augmentations getAugmentations( String arg0 )
      {
          return attrs.getAugmentations(arg0);
      }
      /**
       * <p>
       * getAugmentations
       * </p>
       *
       * @param arg0
       * @param arg1
       * @return
       */
      public Augmentations getAugmentations( String arg0, String arg1 )
      {
          return attrs.getAugmentations(arg0, arg1);
      }
      /**
       * <p>
       * getIndex
       * </p>
       *
       * @param arg0
       * @return
       */
      public int getIndex( String arg0 )
      {
          return attrs.getIndex(arg0);
      }
      /**
       * <p>
       * getIndex
       * </p>
       *
       * @param arg0
       * @param arg1
       * @return
       */
      public int getIndex( String arg0, String arg1 )
      {
          return attrs.getIndex(arg0, arg1);
      }
      /**
       * <p>
       * getLength
       * </p>
       *
       * @return
       */
      public int getLength()
      {
          return attrs.getLength();
      }
      /**
       * <p>
       * getLocalName
       * </p>
       *
       * @param arg0
       * @return
       */
      public String getLocalName( int arg0 )
      {
          return attrs.getLocalName(arg0);
      }
      /**
       * <p>
       * getName
       * </p>
       *
       * @param arg0
       * @param arg1
       */
      public void getName( int arg0, QName arg1 )
      {
          attrs.getName(arg0, arg1);
      }
      /**
       * <p>
       * getNonNormalizedValue
       * </p>
       *
       * @param arg0
       * @return
       */
      public String getNonNormalizedValue( int arg0 )
      {
          return attrs.getNonNormalizedValue(arg0);
      }
      /**
       * <p>
       * getPrefix
       * </p>
       *
       * @param arg0
       * @return
       */
      public String getPrefix( int arg0 )
      {
          return attrs.getPrefix(arg0);
      }
      /**
       * <p>
       * getQName
       * </p>
       *
       * @param arg0
       * @return
       */
      public String getQName( int arg0 )
      {
          return attrs.getQName(arg0);
      }
      /**
       * <p>
       * getType
       * </p>
       *
       * @param arg0
       * @return
       */
      public String getType( int arg0 )
      {
          return attrs.getType(arg0);
      }
      /**
       * <p>
       * getType
       * </p>
       *
       * @param arg0
       * @return
       */
      public String getType( String arg0 )
      {
          return attrs.getType(arg0);
      }
      /**
       * <p>
       * getType
       * </p>
       *
       * @param arg0
       * @param arg1
       * @return
       */
      public String getType( String arg0, String arg1 )
      {
          return attrs.getType(arg0, arg1);
      }
      /**
       * <p>
       * getURI
       * </p>
       *
       * @param arg0
       * @return
       */
      public String getURI( int arg0 )
      {
          return attrs.getURI(arg0);
      }
      /**
       * <p>
       * getValue
       * </p>
       *
       * @param arg0
       * @return
       */
      public String getValue( int arg0 )
      {
          return attrs.getValue(arg0);
      }
      /**
       * <p>
       * getValue
       * </p>
       *
       * @param arg0
       * @return
       */
      public String getValue( String arg0 )
      {
          return attrs.getValue(arg0);
      }
      /**
       * <p>
       * getValue
       * </p>
       *
       * @param arg0
       * @param arg1
       * @return
       */
      public String getValue( String arg0, String arg1 )
      {
          return attrs.getValue(arg0, arg1);
      }
      /**
       * <p>
       * hashCode
       * </p>
       *
       * @see java.lang.Object#hashCode()
       * @return
       */
      public int hashCode()
      {
          return attrs.hashCode();
      }
      /**
       * <p>
       * isSpecified
       * </p>
       *
       * @param arg0
       * @return
       */
      public boolean isSpecified( int arg0 )
      {
          return attrs.isSpecified(arg0);
      }
      /**
       * <p>
       * removeAllAttributes
       * </p>
       *
       * 
       */
      public void removeAllAttributes()
      {
          attrs.removeAllAttributes();
      }
      /**
       * <p>
       * removeAttributeAt
       * </p>
       *
       * @param arg0
       */
      public void removeAttributeAt( int arg0 )
      {
          attrs.removeAttributeAt(arg0);
      }
      /**
       * <p>
       * setAugmentations
       * </p>
       *
       * @param arg0
       * @param arg1
       */
      public void setAugmentations( int arg0, Augmentations arg1 )
      {
          attrs.setAugmentations(arg0, arg1);
      }
      /**
       * <p>
       * setName
       * </p>
       *
       * @param arg0
       * @param arg1
       */
      public void setName( int arg0, QName arg1 )
      {
          attrs.setName(arg0, arg1);
      }
      /**
       * <p>
       * setNonNormalizedValue
       * </p>
       *
       * @param arg0
       * @param arg1
       */
      public void setNonNormalizedValue( int arg0, String arg1 )
      {
          attrs.setNonNormalizedValue(arg0, arg1);
      }
      /**
       * <p>
       * setSpecified
       * </p>
       *
       * @param arg0
       * @param arg1
       */
      public void setSpecified( int arg0, boolean arg1 )
      {
          attrs.setSpecified(arg0, arg1);
      }
      /**
       * <p>
       * setType
       * </p>
       *
       * @param arg0
       * @param arg1
       */
      public void setType( int arg0, String arg1 )
      {
          attrs.setType(arg0, arg1);
      }
      /**
       * <p>
       * setValue
       * </p>
       *
       * @param arg0
       * @param arg1
       */
      public void setValue( int arg0, String arg1 )
      {
          attrs.setValue(arg0, arg1);
      }
      /**
       * <p>
       * toString
       * </p>
       *
       * @see java.lang.Object#toString()
       * @return
       */
      public String toString()
      {
          return attrs.toString();
      }
      /**
       * <p>
       * addAttribute
       * </p>
       *
       * @see 
org.apache.jetspeed.rewriter.MutableAttributes#addAttribute(java.lang.String, 
java.lang.Object)
       * @param name
       * @param value
       */
      public void addAttribute( String name, Object value )
      {
          addAttribute(new QName(null, name.toUpperCase(), name.toUpperCase(), 
null),"CDATA", value.toString());
  
      }
  }
  
  
  
  1.1                  
jakarta-jetspeed-2/components/jetspeed/src/java/org/apache/jetspeed/rewriter/html/neko/URLRewriterFilter.java
  
  Index: URLRewriterFilter.java
  ===================================================================
  /*
   * Copyright 2000-2001,2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.rewriter.html.neko;
  
  import org.apache.jetspeed.rewriter.Rewriter;
  import org.apache.jetspeed.rewriter.html.SwingAttributes;
  import org.apache.xerces.xni.Augmentations;
  import org.apache.xerces.xni.QName;
  import org.apache.xerces.xni.XMLAttributes;
  import org.apache.xerces.xni.XMLString;
  import org.apache.xerces.xni.XNIException;
  import org.cyberneko.html.filters.DefaultFilter;
  
  /**
   * <p>
   * URLRewriterFilter
   * </p>
   * <p>
   * 
   * </p>
   * 
   * @author <a href="mailto:[EMAIL PROTECTED]">Scott T. Weaver </a>
   * @version $Id: URLRewriterFilter.java,v 1.1 2004/10/12 19:38:14 weaver Exp $
   *  
   */
  public class URLRewriterFilter extends DefaultFilter
  {
      
      private Rewriter rewriter; 
      
      
      /**
       *  
       */
      public URLRewriterFilter(Rewriter rewriter )
      {
          super();
          this.rewriter = rewriter;
      }
          
  
      /**
       * <p>
       * startElement
       * </p>
       * 
       * @see 
org.apache.xerces.xni.XMLDocumentHandler#startElement(org.apache.xerces.xni.QName,
       *      org.apache.xerces.xni.XMLAttributes,
       *      org.apache.xerces.xni.Augmentations)
       * @param element
       * @param attrs
       * @param augs
       * @throws org.apache.xerces.xni.XNIException
       */
      public void startElement( QName element, XMLAttributes attrs, Augmentations augs 
) throws XNIException
      {
          if (false == rewriter.enterSimpleTagEvent(element.rawname, new 
XMLAttributesWrapper(attrs)))
          {
              doRewrite(element, attrs);
              String appended = rewriter.exitSimpleTagEvent(element.rawname, new 
XMLAttributesWrapper(attrs));
              if (null != appended)
              {
                //TODO: implement this!
              }
          }
          
          super.startElement(element, attrs, augs);
      }
  
      /**
       * <p>
       * doRewrite
       * </p>
       *
       * @param element
       * @param attrs
       */
      protected void doRewrite( QName element, XMLAttributes attrs )
      {
          if (element.rawname.equals("A"))
          {            
              rewriteAttribute("href", attrs);
          }
          else if (element.rawname.equals("FORM"))
          {            
              rewriteAttribute("action", attrs);
          }
      }
  
      protected void rewriteAttribute( String attrName, XMLAttributes attributes )
      {
  
          String uri = attributes.getValue(attrName);
          
          
          if (uri != null)
          {
                 // attributes.setValue(attributes.getIndex(attrName), 
urlGenerator.createUrl(uri));
           
          }
  
      }
      /**
       * <p>
       * emptyElement
       * </p>
       *
       * @see 
org.apache.xerces.xni.XMLDocumentHandler#emptyElement(org.apache.xerces.xni.QName, 
org.apache.xerces.xni.XMLAttributes, org.apache.xerces.xni.Augmentations)
       * @param arg0
       * @param arg1
       * @param arg2
       * @throws org.apache.xerces.xni.XNIException
       */
      public void emptyElement( QName element, XMLAttributes attrs, Augmentations arg2 
) throws XNIException
      {
          doRewrite(element, attrs);
          super.emptyElement(element, attrs, arg2);
      }
      /**
       * <p>
       * comment
       * </p>
       *
       * @see 
org.apache.xerces.xni.XMLDocumentHandler#comment(org.apache.xerces.xni.XMLString, 
org.apache.xerces.xni.Augmentations)
       * @param comment
       * @param augs
       * @throws org.apache.xerces.xni.XNIException
       */
      public void comment( XMLString comment, Augmentations augs ) throws XNIException
      {
          if (!rewriter.shouldRemoveComments())
          {
              super.comment(comment, augs);                  
          }
          
      }
      /**
       * <p>
       * endElement
       * </p>
       *
       * @see 
org.apache.xerces.xni.XMLDocumentHandler#endElement(org.apache.xerces.xni.QName, 
org.apache.xerces.xni.Augmentations)
       * @param arg0
       * @param arg1
       * @throws org.apache.xerces.xni.XNIException
       */
      public void endElement( QName element, Augmentations augs ) throws XNIException
      {
          String elementName = element.rawname;
          
          
          super.endElement(element, augs);
      }
      /**
       * <p>
       * characters
       * </p>
       *
       * @see 
org.apache.xerces.xni.XMLDocumentHandler#characters(org.apache.xerces.xni.XMLString, 
org.apache.xerces.xni.Augmentations)
       * @param arg0
       * @param arg1
       * @throws org.apache.xerces.xni.XNIException
       */
      public void characters( XMLString text, Augmentations arg1 ) throws XNIException
      {        
          if (!(text.ch[0] == '>') && ! rewriter.enterText(text.ch, text.offset))
          {                            
              super.characters(text, arg1);
          }         
      }
  }
  
  
  1.1                  
jakarta-jetspeed-2/components/jetspeed/src/java/org/apache/jetspeed/rewriter/html/neko/CallbackElementRemover.java
  
  Index: CallbackElementRemover.java
  ===================================================================
  /*
   * Copyright 2000-2001,2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.rewriter.html.neko;
  
  import org.apache.jetspeed.rewriter.Rewriter;
  import org.apache.xerces.xni.Augmentations;
  import org.apache.xerces.xni.QName;
  import org.apache.xerces.xni.XMLAttributes;
  import org.apache.xerces.xni.XNIException;
  import org.cyberneko.html.filters.ElementRemover;
  
  /**
   * <p>
   * CallbackElementRemover
   * </p>
   * <p>
   *  Extended version of the NekoHTML ElementRemover which provides
   *  tag stripping/removal based on Rewriter settings.
   * </p>
   * 
   * @author <a href="mailto:[EMAIL PROTECTED]">Scott T. Weaver </a>
   * @version $Id: CallbackElementRemover.java,v 1.1 2004/10/12 19:38:14 weaver Exp $
   *  
   */
  public class CallbackElementRemover extends ElementRemover
  {
  
      private Rewriter rewriter;
  
      /**
       *  
       */
      public CallbackElementRemover( Rewriter rewriter )
      {
          super();
      }
  
      /**
       * <p>
       * emptyElement
       * </p>
       * 
       * @see 
org.apache.xerces.xni.XMLDocumentHandler#emptyElement(org.apache.xerces.xni.QName,
       *      org.apache.xerces.xni.XMLAttributes,
       *      org.apache.xerces.xni.Augmentations)
       * @param element
       * @param arg1
       * @param arg2
       * @throws org.apache.xerces.xni.XNIException
       */
      public void emptyElement( QName element, XMLAttributes arg1, Augmentations arg2 
) throws XNIException
      {
          processTag(element.rawname);
          super.emptyElement(element, arg1, arg2);
      }
  
      /**
       * <p>
       * processTag
       * </p>
       * 
       * @param tag
       */
      protected void processTag( String tag )
      {
          if (!fAcceptedElements.contains(tag.toLowerCase()) && 
!fRemovedElements.contains(tag.toLowerCase()))
          {
              if (!rewriter.shouldRemoveTag(tag) && !rewriter.shouldStripTag(tag))
              {
                  acceptElement(tag, null);
              }
              else if (rewriter.shouldStripTag(tag))
              {
                  removeElement(tag);
              }
          }
      }
  
      /**
       * <p>
       * startElement
       * </p>
       * 
       * @see 
org.apache.xerces.xni.XMLDocumentHandler#startElement(org.apache.xerces.xni.QName,
       *      org.apache.xerces.xni.XMLAttributes,
       *      org.apache.xerces.xni.Augmentations)
       * @param element
       * @param arg1
       * @param arg2
       * @throws org.apache.xerces.xni.XNIException
       */
      public void startElement( QName element, XMLAttributes arg1, Augmentations arg2 
) throws XNIException
      {
          processTag(element.rawname);
          super.startElement(element, arg1, arg2);
      }
  }
  
  
  1.1                  
jakarta-jetspeed-2/components/jetspeed/src/java/org/apache/jetspeed/rewriter/html/neko/NeckoHTMLParserAdapter.java
  
  Index: NeckoHTMLParserAdapter.java
  ===================================================================
  /*
   * Copyright 2000-2001,2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.rewriter.html.neko;
  
  import java.io.Reader;
  import java.io.Writer;
  
  import org.apache.jetspeed.rewriter.ParserAdaptor;
  import org.apache.jetspeed.rewriter.Rewriter;
  import org.apache.jetspeed.rewriter.RewriterException;
  
  /**
   * <p>
   * NeckoHTMLParserAdapter
   * </p>
   * <p>
   *  
   * </p>
   * @author <a href="mailto:[EMAIL PROTECTED]">Scott T. Weaver</a>
   * @version $Id: NeckoHTMLParserAdapter.java,v 1.1 2004/10/12 19:38:14 weaver Exp $
   *
   */
  public class NeckoHTMLParserAdapter implements ParserAdaptor
  {
  
    
      /**
       * <p>
       * parse
       * </p>
       *
       * @see 
org.apache.jetspeed.rewriter.ParserAdaptor#parse(org.apache.jetspeed.rewriter.Rewriter,
 java.io.Reader)
       * @param rewriter
       * @param reader
       * @throws RewriterException
       */
      public void parse( Rewriter rewriter, Reader reader ) throws RewriterException
      {
          // TODO Auto-generated method stub
  
      }
  
      /**
       * <p>
       * rewrite
       * </p>
       *
       * @see 
org.apache.jetspeed.rewriter.ParserAdaptor#rewrite(org.apache.jetspeed.rewriter.Rewriter,
 java.io.Reader, java.io.Writer)
       * @param rewriter
       * @param reader
       * @param writer
       * @throws RewriterException
       */
      public void rewrite( Rewriter rewriter, Reader reader, Writer writer ) throws 
RewriterException
      {
          // TODO Auto-generated method stub
  
      }
  
  }
  
  
  
  1.12      +7 -0      jakarta-jetspeed-2/components/jetspeed/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/components/jetspeed/project.xml,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- project.xml       25 Sep 2004 23:01:20 -0000      1.11
  +++ project.xml       12 Oct 2004 19:38:14 -0000      1.12
  @@ -82,6 +82,13 @@
         </properties>
       </dependency>
       <dependency>
  +      <id>nekohtml</id>
  +      <version>0.9.3</version>
  +      <properties>
  +        <war.bundle>true</war.bundle>
  +      </properties>
  +    </dependency>
  +    <dependency>
         <id>xerces</id>
         <version>2.3.0</version>
         <properties>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to