cziegeler    2003/01/30 02:59:24

  Modified:    src/java/org/apache/cocoon/components/source SourceUtil.java
               src/deprecated/java/org/apache/cocoon/environment
                        SourceResolver.java URLFactorySourceResolver.java
               src/java/org/apache/cocoon/transformation
                        CIncludeTransformer.java
               src/java/org/apache/cocoon cocoon.roles
               src/java/org/apache/cocoon/environment
                        AbstractEnvironment.java
  Log:
  Adding mime-type to cinclude transformer
  
  Revision  Changes    Path
  1.17      +53 -44    
xml-cocoon2/src/java/org/apache/cocoon/components/source/SourceUtil.java
  
  Index: SourceUtil.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/source/SourceUtil.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- SourceUtil.java   30 Jan 2003 08:23:36 -0000      1.16
  +++ SourceUtil.java   30 Jan 2003 10:59:23 -0000      1.17
  @@ -96,36 +96,49 @@
        * <b>NOTE</b> : if the implementation can produce lexical events, care should 
be taken
        * that <code>handler</code> can actually
        * directly implement the LexicalHandler interface!
  -     * @param  source The data
  -     * @param handler Content handler
  -     * @param manager Component manager
  -     *
  -     * @throws IOException If a io exception occurs.
  +     * @param  source    the data
        * @throws ProcessingException if no suitable converter is found
  -     * @throws SAXException If a SAX exception occurs.
        */
  -    static public void toSAX(Source source, ContentHandler handler,
  -                             ComponentManager manager)
  -                               throws SAXException, IOException,
  -                                      ProcessingException {
  -        if (source instanceof org.apache.excalibur.xml.sax.XMLizable) {
  -            ((org.apache.excalibur.xml.sax.XMLizable) source).toSAX(handler);
  -        } else if (source instanceof org.apache.cocoon.xml.XMLizable) {
  -            ((org.apache.cocoon.xml.XMLizable) source).toSAX(handler);
  +    static public void toSAX( Source source,
  +                              ContentHandler handler,
  +                              ComponentManager manager )
  +    throws SAXException, IOException, ProcessingException {
  +        toSAX(source, null, handler, manager);
  +    }
  +
  +    /**
  +     * Generates SAX events from the given source
  +     * <b>NOTE</b> : if the implementation can produce lexical events, care should 
be taken
  +     * that <code>handler</code> can actually
  +     * directly implement the LexicalHandler interface!
  +     * @param  source    the data
  +     * @throws ProcessingException if no suitable converter is found
  +     */
  +    static public void toSAX( Source source,
  +                                String mimeTypeHint,
  +                              ContentHandler handler,
  +                              ComponentManager manager )
  +    throws SAXException, IOException, ProcessingException {
  +        if ( source instanceof org.apache.excalibur.xml.sax.XMLizable ) {
  +            ((org.apache.excalibur.xml.sax.XMLizable)source).toSAX( handler );
  +        } else if ( source instanceof org.apache.cocoon.xml.XMLizable ) {
  +            ((org.apache.cocoon.xml.XMLizable)source).toSAX( handler );
           } else {
  +            String mimeType = source.getMimeType();
  +            if ( null == mimeType) mimeType = mimeTypeHint;
               XMLizer xmlizer = null;
  -
               try {
  -                xmlizer = (XMLizer) manager.lookup(XMLizer.ROLE);
  -                xmlizer.toSAX(source.getInputStream(), source.getMimeType(),
  -                              source.getURI(), handler);
  +                xmlizer = (XMLizer) manager.lookup( XMLizer.ROLE);
  +                xmlizer.toSAX( source.getInputStream(),
  +                               mimeType,
  +                               source.getURI(),
  +                               handler );
               } catch (SourceException se) {
                   throw SourceUtil.handle(se);
               } catch (ComponentException ce) {
  -                throw new ProcessingException("Exception during streaming source.",
  -                                              ce);
  +                throw new ProcessingException("Exception during streaming source.", 
ce);
               } finally {
  -                manager.release((Component) xmlizer);
  +                manager.release( (Component)xmlizer );
               }
           }
       }
  @@ -135,36 +148,32 @@
        * <b>NOTE</b> : if the implementation can produce lexical events, care should 
be taken
        * that <code>handler</code> can actually
        * directly implement the LexicalHandler interface!
  -     *
  -     * @param source The data.
  -     * @param handler Content handler.
  -     * @param manager Component manager.
  -     * @param typeParameters
  -     * @param filterDocumentEvent
  -     *
  -     * @throws IOException If a io exception occurs.
  +     * 
  +     * @param  source    the data
        * @throws ProcessingException if no suitable converter is found
  -     * @throws SAXException If a SAX exception occurs.
        */
  -    static public void toSAX(Source source, ContentHandler handler,
  -                             ComponentManager manager,
  -                             Parameters typeParameters,
  -                             boolean filterDocumentEvent)
  -                               throws SAXException, IOException,
  -                                      ProcessingException {
  -
  +    static public void toSAX( Source         source,
  +                              ContentHandler   handler,
  +                              ComponentManager manager,
  +                              Parameters       typeParameters,
  +                              boolean         filterDocumentEvent)
  +    throws SAXException, IOException, ProcessingException {
  +        
  +        
           // Test for url rewriting
  -        if ((typeParameters!=null) &&
  -            (typeParameters.getParameter(URLRewriter.PARAMETER_MODE, null)!=
  -             null)) {
  +        if (typeParameters != null
  +            && typeParameters.getParameter(URLRewriter.PARAMETER_MODE, null) != 
null) {
               handler = new URLRewriter(typeParameters, handler);
           }
  +        String mimeTypeHint = null;
  +        if (typeParameters != null) {
  +            mimeTypeHint = typeParameters.getParameter("mime-type", mimeTypeHint);
  +        }
           if (filterDocumentEvent) {
               IncludeXMLConsumer filter = new IncludeXMLConsumer(handler);
  -
  -            toSAX(source, filter, manager);
  +            toSAX(source, mimeTypeHint, filter, manager);
           } else {
  -            toSAX(source, handler, manager);
  +            toSAX(source, mimeTypeHint, handler, manager);
           }
       }
   
  
  
  
  1.2       +17 -1     
xml-cocoon2/src/deprecated/java/org/apache/cocoon/environment/SourceResolver.java
  
  Index: SourceResolver.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/deprecated/java/org/apache/cocoon/environment/SourceResolver.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SourceResolver.java       26 Dec 2002 18:38:57 -0000      1.1
  +++ SourceResolver.java       30 Jan 2003 10:59:23 -0000      1.2
  @@ -85,5 +85,21 @@
       void toSAX( org.apache.excalibur.source.Source source,
                   ContentHandler handler )
       throws SAXException, IOException, ProcessingException;
  +
  +
  +    /**
  +     * Generates SAX events from the given source
  +     * <b>NOTE</b> : if the implementation can produce lexical events, care should 
be taken
  +     * that <code>handler</code> can actually
  +     * directly implement the LexicalHandler interface!
  +     * @param  source       the data
  +     * @param  mimeTypeHint A hint for the mime-type, if the source does not
  +     *                       provide  one
  +     * @throws ProcessingException if no suitable converter is found
  +     */
  +    void toSAX( org.apache.excalibur.source.Source source,
  +                String         mimeTypeHint,
  +                ContentHandler handler )
  +    throws SAXException, IOException, ProcessingException;
   }
   
  
  
  
  1.2       +15 -1     
xml-cocoon2/src/deprecated/java/org/apache/cocoon/environment/URLFactorySourceResolver.java
  
  Index: URLFactorySourceResolver.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/deprecated/java/org/apache/cocoon/environment/URLFactorySourceResolver.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- URLFactorySourceResolver.java     26 Dec 2002 18:38:57 -0000      1.1
  +++ URLFactorySourceResolver.java     30 Jan 2003 10:59:23 -0000      1.2
  @@ -152,4 +152,18 @@
           throw new RuntimeException("ProcessingException.toSAX() is not implemented 
yet.");
       }
   
  +    /**
  +     * Generates SAX events from the given source
  +     * <b>NOTE</b> : if the implementation can produce lexical events, care should 
be taken
  +     * that <code>handler</code> can actually
  +     * directly implement the LexicalHandler interface!
  +     * @param  source    the data
  +     * @throws ProcessingException if no suitable converter is found
  +     */
  +    public void toSAX( org.apache.excalibur.source.Source source,
  +                String mimeTypeHint,
  +                ContentHandler handler )
  +    throws SAXException, IOException, ProcessingException {
  +        throw new RuntimeException("ProcessingException.toSAX() is not implemented 
yet.");
  +    }
   }
  
  
  
  1.21      +27 -8     
xml-cocoon2/src/java/org/apache/cocoon/transformation/CIncludeTransformer.java
  
  Index: CIncludeTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/transformation/CIncludeTransformer.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- CIncludeTransformer.java  30 Jan 2003 08:23:37 -0000      1.20
  +++ CIncludeTransformer.java  30 Jan 2003 10:59:23 -0000      1.21
  @@ -286,10 +286,16 @@
               this.resourceParameters = new SourceParameters();
               // Now get the parameters off the stack
               String label = (String)stack.pop();
  -            String value;
  +            String key = null;
  +            String value = null;
               while (!label.equals("end")) {
  -                value = (String)stack.pop();
  -                this.resourceParameters.setParameter(label, value);
  +                if (label.equals("name")) key = (String)stack.pop();
  +                if (label.equals("value")) value = (String)stack.pop();
  +                if (key != null && value != null) {
  +                    this.resourceParameters.setParameter(key, value);
  +                    key = null;
  +                    value = null;
  +                }
                   label = (String)stack.pop();
               }
   
  @@ -298,10 +304,16 @@
               this.configurationParameters = new Parameters();
               // Now get the parameters off the stack
               String label = (String)stack.pop();
  -            String value;
  +            String key = null;
  +            String value = null;
               while (!label.equals("end")) {
  -                value = (String)stack.pop();
  -                this.configurationParameters.setParameter(label, value);
  +                if (label.equals("name")) key = (String)stack.pop();
  +                if (label.equals("value")) value = (String)stack.pop();
  +                if (key != null && value != null) {
  +                    this.configurationParameters.setParameter(key, value);
  +                    key = null;
  +                    value = null;
  +                }
                   label = (String)stack.pop();
               }
   
  @@ -311,11 +323,13 @@
           } else if (name.equals(CINCLUDE_NAME_ELEMENT) == true
                      && this.state == STATE_INCLUDE) {
               stack.push(this.endTextRecording());
  +            stack.push("name");
   
           // parameter value
           } else if (name.equals(CINCLUDE_VALUE_ELEMENT) == true
                      && this.state == STATE_INCLUDE) {
               stack.push(this.endSerializedXMLRecording());
  +            stack.push("value");
   
           } else {
               super.endTransformingElement(uri, name, raw);
  @@ -381,7 +395,12 @@
                       this.manager.release((Component)processor);
                   }
               } else {
  -                this.resolver.toSAX(source, consumer);
  +                String mimeType = null;
  +                if ( null != this.configurationParameters ) {
  +                    mimeType = 
this.configurationParameters.getParameter("mime-type", mimeType);                    
  +                    System.out.println("Using mime-type:" +mimeType);
  +                }
  +                this.resolver.toSAX(source, mimeType, consumer);
               }
   
   
  
  
  
  1.45      +2 -0      xml-cocoon2/src/java/org/apache/cocoon/cocoon.roles
  
  Index: cocoon.roles
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/cocoon.roles,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- cocoon.roles      22 Jan 2003 05:19:17 -0000      1.44
  +++ cocoon.roles      30 Jan 2003 10:59:23 -0000      1.45
  @@ -44,6 +44,8 @@
           shorthand="entity-resolver"
           default-class="org.apache.cocoon.components.resolver.ResolverImpl"/>
   
  +  <!-- A Dom Serializer -->
  +  <role default-class="org.apache.excalibur.xml.dom.DefaultDOMSerializer" 
name="org.apache.excalibur.xml.dom.DOMSerializer" shorthand="dom-serializer"/>
   
     <!-- XSLT:
     -->
  
  
  
  1.36      +11 -2     
xml-cocoon2/src/java/org/apache/cocoon/environment/AbstractEnvironment.java
  
  Index: AbstractEnvironment.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/environment/AbstractEnvironment.java,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- AbstractEnvironment.java  30 Jan 2003 08:23:39 -0000      1.35
  +++ AbstractEnvironment.java  30 Jan 2003 10:59:23 -0000      1.36
  @@ -529,6 +529,15 @@
       public void toSAX( org.apache.excalibur.source.Source source,
                          ContentHandler handler )
       throws SAXException, IOException, ProcessingException {
  +        this.toSAX( source, null, handler);
  +    }
  +
  +    public void toSAX( org.apache.excalibur.source.Source source,
  +                String         mimeTypeHint,
  +                ContentHandler handler )
  +    throws SAXException, IOException, ProcessingException {
  +        String mimeType = source.getMimeType();
  +        if ( null == mimeType) mimeType = mimeTypeHint;
           if ( source instanceof org.apache.excalibur.xml.sax.XMLizable ) {
               ((org.apache.excalibur.xml.sax.XMLizable)source).toSAX( handler );
           } else if ( source instanceof org.apache.cocoon.xml.XMLizable ) {
  @@ -536,7 +545,7 @@
           } else {
               try {
                   xmlizer.toSAX( source.getInputStream(),
  -                               source.getMimeType(),
  +                               mimeType,
                                  source.getURI(),
                                  handler );
               } catch (SourceException se) {
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to