You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by dm...@apache.org on 2004/04/05 01:16:24 UTC

cvs commit: jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/compiler ExtensionFunctionTest.java

dmitri      2004/04/04 16:16:24

  Modified:    jxpath/src/java/org/apache/commons/jxpath
                        PackageFunctions.java JXPathContext.java
               jxpath/src/java/org/apache/commons/jxpath/ri
                        JXPathContextReferenceImpl.java
               jxpath/src/test/org/apache/commons/jxpath/ri/compiler
                        ExtensionFunctionTest.java
  Log:
  setFunctions now completely overrides the default, 
  thus enabling a secure implementation of the Functions interface
  
  Revision  Changes    Path
  1.14      +2 -2      jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/PackageFunctions.java
  
  Index: PackageFunctions.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/PackageFunctions.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- PackageFunctions.java	25 Mar 2004 05:42:01 -0000	1.13
  +++ PackageFunctions.java	4 Apr 2004 23:16:23 -0000	1.14
  @@ -189,7 +189,7 @@
                   ex);
           }
   
  -        if (methodName.endsWith("new")) {
  +        if (methodName.equals("new")) {
               Constructor constructor =
                   MethodLookupUtils.lookupConstructor(functionClass, parameters);
               if (constructor != null) {
  
  
  
  1.24      +11 -2     jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/JXPathContext.java
  
  Index: JXPathContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/JXPathContext.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- JXPathContext.java	1 Apr 2004 02:55:31 -0000	1.23
  +++ JXPathContext.java	4 Apr 2004 23:16:23 -0000	1.24
  @@ -389,6 +389,9 @@
   
       private static JXPathContextFactory contextFactory;
       private static JXPathContext compilationContext;
  +    
  +    private static final PackageFunctions GENERIC_FUNCTIONS =
  +        new PackageFunctions("", null);
   
       /**
        * Creates a new JXPathContext with the specified object as the root node.
  @@ -488,7 +491,13 @@
        * Returns the set of functions installed on the context.
        */
       public Functions getFunctions() {
  -        return functions;
  +        if (functions != null) {
  +            return functions;
  +        }
  +        if (parentContext == null) {
  +            return GENERIC_FUNCTIONS;
  +        }
  +        return null;
       }
   
       /**
  
  
  
  1.43      +1 -8      jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/JXPathContextReferenceImpl.java
  
  Index: JXPathContextReferenceImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/JXPathContextReferenceImpl.java,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- JXPathContextReferenceImpl.java	4 Apr 2004 22:06:36 -0000	1.42
  +++ JXPathContextReferenceImpl.java	4 Apr 2004 23:16:23 -0000	1.43
  @@ -32,7 +32,6 @@
   import org.apache.commons.jxpath.Functions;
   import org.apache.commons.jxpath.JXPathContext;
   import org.apache.commons.jxpath.JXPathException;
  -import org.apache.commons.jxpath.PackageFunctions;
   import org.apache.commons.jxpath.Pointer;
   import org.apache.commons.jxpath.Variables;
   import org.apache.commons.jxpath.ri.axes.InitialContext;
  @@ -66,8 +65,6 @@
       
       private static final Compiler COMPILER = new TreeCompiler();
       private static Map compiled = new HashMap();
  -    private static final PackageFunctions GENERIC_FUNCTIONS =
  -        new PackageFunctions("", null);
       private static int cleanupCount = 0;
       
       private static Vector nodeFactories = new Vector();
  @@ -644,10 +641,6 @@
                   }
               }
               funcCtx = funcCtx.getParentContext();
  -        }
  -        func = GENERIC_FUNCTIONS.getFunction(namespace, name, parameters);
  -        if (func != null) {
  -            return func;
           }
           throw new JXPathException(
               "Undefined function: " + functionName.toString());
  
  
  
  1.16      +9 -2      jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/compiler/ExtensionFunctionTest.java
  
  Index: ExtensionFunctionTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/compiler/ExtensionFunctionTest.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- ExtensionFunctionTest.java	25 Mar 2004 05:42:01 -0000	1.15
  +++ ExtensionFunctionTest.java	4 Apr 2004 23:16:24 -0000	1.16
  @@ -20,6 +20,8 @@
   import java.util.List;
   import java.util.Locale;
   
  +import junit.textui.TestRunner;
  +
   import org.apache.commons.jxpath.ClassFunctions;
   import org.apache.commons.jxpath.ExpressionContext;
   import org.apache.commons.jxpath.Function;
  @@ -44,6 +46,10 @@
       private Functions functions;
       private JXPathContext context;
   
  +    public static void main(String[] args) {
  +        TestRunner.run(ExtensionFunctionTest.class);
  +    }
  +    
       /**
        * Construct a new instance of this test case.
        *
  @@ -67,6 +73,7 @@
                   new PackageFunctions(
                       "org.apache.commons.jxpath.ri.compiler.",
                       "jxpathtest"));
  +            lib.addFunctions(new PackageFunctions("", null));
               context.setFunctions(lib);
           }
           functions = new ClassFunctions(TestFunctions.class, "test");
  @@ -146,7 +153,7 @@
       }
   
       public void testAllocation() {
  -
  +        
           // Allocate new object using the default constructor
           assertXPathValue(context, "string(test:new())", "foo=0; bar=null");
   
  
  
  

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