cziegeler    02/01/16 02:26:57

  Modified:    src/scratchpad/src/org/apache/cocoon/treeprocessor
                        MapStackResolver.java
  Log:
  Fixed compilation problems. Sylvain, please check if this is correct now
  
  Revision  Changes    Path
  1.4       +47 -47    
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/treeprocessor/MapStackResolver.java
  
  Index: MapStackResolver.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/treeprocessor/MapStackResolver.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MapStackResolver.java     16 Jan 2002 09:27:58 -0000      1.3
  +++ MapStackResolver.java     16 Jan 2002 10:26:57 -0000      1.4
  @@ -18,29 +18,29 @@
    * Utility class for handling {...} pattern substitutions from a List of 
Maps.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Sylvain Wallez</a>
  - * @version CVS $Revision: 1.3 $ $Date: 2002/01/16 09:27:58 $
  + * @version CVS $Revision: 1.4 $ $Date: 2002/01/16 10:26:57 $
    */
   
   public abstract class MapStackResolver {
  -    
  +
       /**
        * An empty <code>Parameters</code> object, returned by 
<code>buildParameters()</code>
        * if it is given a <code>null</code> Map.
        */
       public static final Parameters EMPTY_PARAMETERS;
  -    
  +
       static {
           EMPTY_PARAMETERS = new Parameters();
           EMPTY_PARAMETERS.makeReadOnly();
       }
  -    
  +
       public static final Map EMPTY_MAP = Collections.unmodifiableMap(new 
java.util.HashMap(0));
  -    
  +
       /**
        * Resolve all {...} patterns using the values given in the list of maps.
        */
       public abstract String resolve(List mapStack) throws PatternException;
  -    
  +
       /**
        * Does an expression need resolving (i.e. contain {...} patterns) ?
        */
  @@ -48,16 +48,16 @@
           if (expression == null || expression.length() == 0) {
               return false;
           }
  -        
  +
           // Is the first char a '{' ?
           if (expression.charAt(0) == '{') {
               return true;
           }
  -        
  +
           if (expression.length() < 2) {
               return false;
           }
  -        
  +
           // Is there any unescaped '{' ?
           int pos = 1;
           while ( (pos = expression.indexOf('{', pos)) != -1) {
  @@ -65,13 +65,13 @@
               if (expression.charAt(pos - 1) != '\\') {
                   // No : need to resolve
                   return true;
  -            }            
  +            }
               pos++;
           }
           // Nothing found...
           return false;
       }
  -    
  +
       /**
        * Unescape an expression that doesn't need to be resolved, but may 
contain
        * escaped '{' characters.
  @@ -92,10 +92,10 @@
                   buf.append(ch);
               }
           }
  -        
  +
           return buf.toString();
       }
  -    
  +
       /**
        * Get a resolver for a given expression. Chooses the most efficient 
implementation
        * depending on <code>expression</code>.
  @@ -108,7 +108,7 @@
               return new NullResolver(expression);
           }
       }
  -    
  +
       /**
        * Build a <code>Parameters</code> object from a Map of named 
<code>ListOfMapResolver</code>s and
        * a list of Maps used for resolution.
  @@ -119,16 +119,16 @@
           if (expressions == null || expressions.size() == 0) {
               return EMPTY_PARAMETERS;
           }
  -        
  +
           Parameters result = new Parameters();
  -        
  +
           Iterator iter = expressions.entrySet().iterator();
           while (iter.hasNext()) {
               Map.Entry entry = (Map.Entry)iter.next();
               String value = 
((MapStackResolver)entry.getValue()).resolve(mapStack);
               result.setParameter((String)entry.getKey(), value);
           }
  -        
  +
           return result;
       }
   
  @@ -143,16 +143,16 @@
           if (expressions == null || (size = expressions.size()) == 0) {
               return EMPTY_MAP;
           }
  -        
  +
           Map result = new HashMap(size);
  -        
  +
           Iterator iter = expressions.entrySet().iterator();
           while (iter.hasNext()) {
               Map.Entry entry = (Map.Entry)iter.next();
               String value = 
((MapStackResolver)entry.getValue()).resolve(mapStack);
               result.put(entry.getKey(), value);
           }
  -        
  +
           return result;
       }
   
  @@ -170,18 +170,18 @@
                   this.expression = this.unescape(expression);
               }
           }
  -        
  +
           public String toString() {
               return this.originalExpr;
           }
  -        
  +
           public String resolve(List mapStack) {
               return this.expression;
           }
       }
  -    
  +
       
//-------------------------------------------------------------------------
  -        
  +
       /**
        * Compiled form for faster substitution
        */
  @@ -190,22 +190,22 @@
   
           private String[] strings;
           private int[] levels;
  -        
  +
           public CompiledResolver(String expression) throws PatternException {
               this.originalExpr = expression;
               compile(expression);
           }
  -        
  +
           public String toString() {
               return this.originalExpr;
           }
  -        
  +
           private void compile(String expr) throws PatternException {
               // We're sure here that expr *contains* some substitutions
  -            
  +
               List stringList = new ArrayList();
               List levelList  = new ArrayList();
  -            
  +
               int length = expr.length();
               int prev = 0; // position after last closing brace
   
  @@ -217,43 +217,43 @@
                         (pos != 0 && expr.charAt(pos - 1) == '\\')) {
                       pos++;
                   }
  -                
  +
                   if (pos >= length || pos == -1) {
                       // no more braces
                       if (prev < length - 1) {
  -                        stringList.add(unescape(expr.substring(prev)));
  +                        stringList.add(this.unescape(expr.substring(prev)));
                           levelList.add(new Integer(-1));
                       }
                       break comp;
                   }
  -                
  +
                   // Pass closing brace
                   pos++;
  -                
  +
                   // Add litteral strings between closing and next opening 
brace
                   if (prev < pos-1) {
  -                    stringList.add(unescape(expr.substring(prev, pos - 1)));
  +                    stringList.add(this.unescape(expr.substring(prev, pos - 
1)));
                       levelList.add(new Integer(-1));
                   }
  -                
  +
                   // Determine subst level
                   int level = 1; // Start at 1 since it will be substracted 
from list.size()
                   while(expr.startsWith("../", pos)) {
                       level++;
                       pos += "../".length();
                   }
  -                
  +
                   int end = expr.indexOf('}', pos);
                   if (end == -1) {
                       throw new PatternException("Unmatched '{' in " + expr);
                   }
  -                
  +
                   stringList.add(expr.substring(pos, end));
                   levelList.add(new Integer(level));
   
                   prev = end + 1;
               }
  -            
  +
               this.strings = new String[stringList.size()];
               this.levels = new int[stringList.size()];
               for (int i = 0; i < strings.length; i++) {
  @@ -261,32 +261,32 @@
                   this.levels[i] = ((Integer)levelList.get(i)).intValue();
               }
           }
  -        
  +
           public String resolve(List mapStack) throws PatternException {
               StringBuffer result = new StringBuffer();
               int stackSize = mapStack.size();
  -            
  +
               for (int i = 0; i < this.strings.length; i++) {
                   int level = this.levels[i];
                   if (level == -1) {
                       result.append(this.strings[i]);
  -                    
  +
                   } else {
                       if (level >= stackSize) {
                           throw new PatternException("Error while evaluating 
'" + this.originalExpr +
                               "' : not so many levels");
                       }
  -                    
  +
                       Object value = ((Map)mapStack.get(stackSize - 
level)).get(this.strings[i]);
                       if (value != null) {
                           result.append(value);
                       }
                   }
               }
  -            
  +
               return result.toString();
           }
  -        
  +
   //        public void dump() {
   //            System.out.println(this.originalExpr + " compiled in :");
   //            for (int i = 0; i < this.strings.length; i++) {
  @@ -296,9 +296,9 @@
   //            System.out.println();
   //        }
       }
  -    
  +
   //    public static void main(String [] args) throws Exception {
  -//        
  +//
   //        new CompiledResolver("&{../../blah}").dump();
   //        new CompiledResolver("{t1}tt{t2}").dump();
   //        new CompiledResolver("\\{t1}tt{t2}xx").dump();
  @@ -306,6 +306,6 @@
   //        new CompiledResolver("{t1}tt{t2}xx").dump();
   //        new CompiledResolver("xx{../t1}{../../../t2}zz").dump();
   //        new CompiledResolver("xx{../t1}\\{../../../t2}zz").dump();
  -//        
  +//
   //    }
   }
  
  
  

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