sylvain     2003/01/09 09:45:01

  Modified:    .        Tag: cocoon_2_0_3_branch changes.xml
               src/java/org/apache/cocoon/components/source Tag:
                        cocoon_2_0_3_branch FileSource.java
               src/java/org/apache/cocoon/components/treeprocessor/sitemap
                        Tag: cocoon_2_0_3_branch ReadNode.java
                        ReadNodeBuilder.java SerializeNode.java
                        SerializeNodeBuilder.java
               src/java/org/apache/cocoon/components/treeprocessor/variables
                        Tag: cocoon_2_0_3_branch
                        PreparedVariableResolver.java VariableResolver.java
  Log:
  Added sitemap variable expansion to "mime-type" in <map:read> and <map:serialize>
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.138.2.83 +5 -1      xml-cocoon2/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/changes.xml,v
  retrieving revision 1.138.2.82
  retrieving revision 1.138.2.83
  diff -u -r1.138.2.82 -r1.138.2.83
  --- changes.xml       6 Jan 2003 15:24:11 -0000       1.138.2.82
  +++ changes.xml       9 Jan 2003 17:45:00 -0000       1.138.2.83
  @@ -41,6 +41,10 @@
   
    <release version="@version@" date="@date@">
     <action dev="SW" type="update">
  +    The "mime-type" attribute on &lt;map:read&gt; and &lt;map:serialize&gt; is now
  +    expanded if it contains sitemap variables.
  +  </action>
  +  <action dev="SW" type="update">
       ZipArchiveSerializer now accepts inline content for entries of the zip archive
       and not only source URLs.
     </action>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2.2.3   +6 -1      
xml-cocoon2/src/java/org/apache/cocoon/components/source/FileSource.java
  
  Index: FileSource.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/source/FileSource.java,v
  retrieving revision 1.2.2.2
  retrieving revision 1.2.2.3
  diff -u -r1.2.2.2 -r1.2.2.3
  --- FileSource.java   21 Sep 2002 02:23:52 -0000      1.2.2.2
  +++ FileSource.java   9 Jan 2003 17:45:01 -0000       1.2.2.3
  @@ -220,6 +220,11 @@
           throw new IllegalArgumentException("The stream is not associated to this 
source");
       }
       
  +    /** Get the underlying <code>File</code> object */
  +    public File getFile() {
  +        return this.file;
  +    }
  +
       /**
        * A file outputStream that will rename the temp file to the destination file 
upon close()
        * and discard the temp file upon cancel().
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.2   +7 -5      
xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/ReadNode.java
  
  Index: ReadNode.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/ReadNode.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- ReadNode.java     25 Nov 2002 21:51:59 -0000      1.1.2.1
  +++ ReadNode.java     9 Jan 2003 17:45:01 -0000       1.1.2.2
  @@ -73,7 +73,7 @@
   
       private VariableResolver source;
   
  -    private String mimeType;
  +    private VariableResolver mimeType;
   
       private int statusCode;
   
  @@ -86,7 +86,7 @@
        * @param mimeType the mime-type, or <code>null</code> not specified.
        * @param statusCode the HTTP response status code, or <code>-1</code> if not 
specified.
        */
  -    public ReadNode(String name, VariableResolver source, String mimeType, int 
statusCode) {
  +    public ReadNode(String name, VariableResolver source, VariableResolver 
mimeType, int statusCode) {
           this.readerName = name;
           this.source = source;
           this.mimeType = mimeType;
  @@ -104,7 +104,9 @@
   
           StreamPipeline pipeline = context.getStreamPipeline();
   
  -        if (this.mimeType == null) {
  +        String actualMimeType = this.mimeType.resolve(context, objectModel);
  +
  +        if (actualMimeType == null || actualMimeType.length() == 0) {
               // No mime-type set on node
               pipeline.setReader(
                   this.readerName,
  @@ -118,7 +120,7 @@
                   this.readerName,
                   source.resolve(context, objectModel),
                   VariableResolver.buildParameters(this.parameters, context, 
objectModel),
  -                this.mimeType
  +                actualMimeType
               );
           }
   
  
  
  
  1.1.2.2   +2 -2      
xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/ReadNodeBuilder.java
  
  Index: ReadNodeBuilder.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/ReadNodeBuilder.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- ReadNodeBuilder.java      25 Nov 2002 21:51:59 -0000      1.1.2.1
  +++ ReadNodeBuilder.java      9 Jan 2003 17:45:01 -0000       1.1.2.2
  @@ -76,7 +76,7 @@
           ReadNode node = new ReadNode(
               type,
               VariableResolverFactory.getResolver(config.getAttribute("src", null), 
this.manager),
  -            config.getAttribute("mime-type", null),
  +            VariableResolverFactory.getResolver(config.getAttribute("mime-type", 
null), this.manager),
               config.getAttributeAsInteger("status-code", -1)
           );
   
  
  
  
  1.1.2.3   +6 -7      
xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/SerializeNode.java
  
  Index: SerializeNode.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/SerializeNode.java,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- SerializeNode.java        25 Nov 2002 21:51:59 -0000      1.1.2.2
  +++ SerializeNode.java        9 Jan 2003 17:45:01 -0000       1.1.2.3
  @@ -74,7 +74,7 @@
   
       private String serializerName;
   
  -    private String mimeType;
  +    private VariableResolver mimeType;
   
       private int statusCode;
   
  @@ -86,7 +86,7 @@
        * @param mimeType the mime-type, or <code>null</code> not specified.
        * @param statusCode the HTTP response status code, or <code>-1</code> if not 
specified.
        */
  -    public SerializeNode(String name, String mimeType, int statusCode) throws 
PatternException {
  +    public SerializeNode(String name, VariableResolver mimeType, int statusCode) 
throws PatternException {
           this.serializerName = name;
           this.mimeType = mimeType;
           this.statusCode = statusCode;
  @@ -123,10 +123,9 @@
   
           StreamPipeline pipeline = context.getStreamPipeline();
   
  -        List mapStack = context.getMapStack();
  -        Map objectModel = env.getObjectModel();
  +        String actualType = this.mimeType.resolve(context, env.getObjectModel());
           
  -        if (this.mimeType == null) {        
  +        if (actualType == null || actualType.length() == 0) {
               // No mime-type set on node
               pipeline.setSerializer(
                   this.serializerName,
  @@ -140,7 +139,7 @@
                   this.serializerName,
                   null,
                   Parameters.EMPTY_PARAMETERS, // No parameters on serializers
  -                this.mimeType
  +                actualType
               );
           }
   
  
  
  
  1.1.2.2   +3 -2      
xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/SerializeNodeBuilder.java
  
  Index: SerializeNodeBuilder.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/SerializeNodeBuilder.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- SerializeNodeBuilder.java 25 Nov 2002 21:51:59 -0000      1.1.2.1
  +++ SerializeNodeBuilder.java 9 Jan 2003 17:45:01 -0000       1.1.2.2
  @@ -59,6 +59,7 @@
   import org.apache.cocoon.components.treeprocessor.AbstractProcessingNodeBuilder;
   import org.apache.cocoon.components.treeprocessor.LinkedProcessingNodeBuilder;
   import org.apache.cocoon.components.treeprocessor.ProcessingNode;
  +import org.apache.cocoon.components.treeprocessor.variables.VariableResolverFactory;
   
   import java.util.*;
   
  @@ -88,7 +89,7 @@
   
           this.node = new SerializeNode(
               type,
  -            config.getAttribute("mime-type", null),
  +            VariableResolverFactory.getResolver(config.getAttribute("mime-type", 
null), this.manager),
               config.getAttributeAsInteger("status-code", -1)
           );
           return this.treeBuilder.setupNode(node, config);
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.6.2.2   +15 -7     
xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/variables/PreparedVariableResolver.java
  
  Index: PreparedVariableResolver.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/variables/PreparedVariableResolver.java,v
  retrieving revision 1.6.2.1
  retrieving revision 1.6.2.2
  diff -u -r1.6.2.1 -r1.6.2.2
  --- PreparedVariableResolver.java     25 Nov 2002 21:52:01 -0000      1.6.2.1
  +++ PreparedVariableResolver.java     9 Jan 2003 17:45:01 -0000       1.6.2.2
  @@ -80,11 +80,12 @@
       final private List items = new ArrayList();
   
       // Special constants used for levels
  +    // ROOT and ANCHOR are placed first as they need a context to be resolved (see 
resolve())
       static final int ROOT = 0;
  -    static final int LITERAL = -1;
  -    static final int THREADSAFE_MODULE = -2;
  -    static final int STATEFUL_MODULE = -3;
  -    static final int ANCHOR = -4;
  +    static final int ANCHOR = -1;
  +    static final int LITERAL = -2;
  +    static final int THREADSAFE_MODULE = -3;
  +    static final int STATEFUL_MODULE = -4;
   
       private static final Integer ROOT_OBJ = new Integer(ROOT);
       private static final Integer LITERAL_OBJ = new Integer(LITERAL);
  @@ -223,14 +224,21 @@
       }
       
       public final String resolve(InvokeContext context, Map objectModel) throws 
PatternException {
  -        List mapStack = context.getMapStack();
  +        List mapStack = null; // = context.getMapStack();
  +        int stackSize = 0;
   
           StringBuffer result = new StringBuffer();
           
  -        int stackSize = mapStack.size();
  -        
           for (int i = 0; i < this.items.size(); i++) {
               int type = ((Integer)this.items.get(i)).intValue();
  +            
  +            if (type >= ANCHOR && mapStack == null) {
  +                if (context == null) {
  +                    throw new PatternException("Need an invoke context to resolve " 
+ this);
  +                }
  +                mapStack = context.getMapStack();
  +                stackSize = mapStack.size();
  +            }                
               
               if (type > 0) {
                   // relative sitemap variable
  
  
  
  1.3.2.2   +8 -1      
xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/variables/VariableResolver.java
  
  Index: VariableResolver.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/variables/VariableResolver.java,v
  retrieving revision 1.3.2.1
  retrieving revision 1.3.2.2
  diff -u -r1.3.2.1 -r1.3.2.2
  --- VariableResolver.java     25 Nov 2002 21:52:01 -0000      1.3.2.1
  +++ VariableResolver.java     9 Jan 2003 17:45:01 -0000       1.3.2.2
  @@ -104,6 +104,13 @@
       }
   
       /**
  +     * Resolve all {...} patterns using the values given in the object model.
  +     */
  +    public String resolve(Map objectModel) throws PatternException {
  +        return resolve(null, objectModel);
  +    }
  +
  +    /**
        * Resolve all {...} patterns using the values given in the list of maps and 
the object model.
        */
       public abstract String resolve(InvokeContext context, Map objectModel) throws 
PatternException;
  
  
  

----------------------------------------------------------------------
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