Something is screwed up about the list-server or SMTP forwarding...
I sent this and another mail on friday, but I did not seem to 
reach the list. I got responses from the list of later emails
but never from this one.

Geir, your propety switch is not sufficiently nice. I do want 
logs when nulls show up unintentionally, but no logs when I know
it may return null - so I bang it then:
  #set( $foo = $!bar.Temp("cachedXML") )
  #if( !$foo )
    ## create another one...
    #set( $foo = $Xml.load("complex/file.xml") )
    ## cache it
    #set( $bar.Temp("cachedXML", $foo) )
  #end
And I dont want the initial $foo logged together with other real 
accidentall nulls, which I do care for!

Here it is again...
-------- Original Message --------
Subject: [PATCH] ASTSetDirective to handle a bang
Date: Fri, 12 Jan 2001 15:34:27 +0100
From: Christoph Reck <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]

The following patch allows ASTSetDirective to handle a bang and 
thus supress messages into the logs file.

Note that the AbstractContext must yet be updated for it to be
completely silent.

This has no performace impact and makes the bang usage more
orthogonal.

-----------------------------------------------------------------
--- 
Apache-Velocity-20010109/src/java/org/apache/velocity/runtime/parser/node/ASTSetDirective.java
      Wed Jan  3 06:27:04 2001
+++ 
+Apache-Velocity/src/java/org/apache/velocity/runtime/parser/node/ASTSetDirective.java 
+      Tue Jan  9 11:58:42 2001
@@ -77,6 +77,7 @@
 {
     private Node right;
     private ASTReference left;
+    private boolean quietReference = false;
     boolean bDeprecated = true;
     String lit = "";
 
@@ -110,6 +111,11 @@
         right = getRightHandSide();
         left = getLeftHandSide();
 
+        if ( right.getFirstToken().image.startsWith("$!") )
+        {
+            quietReference = true;
+        }
+
         /*
          *   yechy but quick : so we can warn users they are using what will be 
          *  the deprecated version of #set
@@ -151,13 +157,11 @@
          * it's an error if we don't have a value of some sort
          */
 
-        if ( value  == null)
+        if ( (value == null) && !quietReference )
         {
-            Runtime.error("RHS of #set statement is null. Context will not be 
modified. " 
+            Runtime.error("RHS of #set statement is null. "
                           + context.getCurrentTemplateName() + " [line " + getLine() 
                           + ", column " + getColumn() + "]");
-
-            return false;
         }                
-----------------------------------------------------------------

:) Christoph

Reply via email to