Show
Ignore:
Timestamp:
03/11/10 08:19:11 (2 years ago)
Author:
amandel
Message:

Implemented #78.
If a variable used in a message starts with a colon (:) and no type definition, the parameter is assumed to be already set. This gives access to implied parameters of the log message, such as _THREAD_ID or _CAUSE and also to the parameters that are bound to the thread context.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/xml/xsl/generate-log-message-info.xsl

    r1292 r1610  
    214214      </xsl:call-template> 
    215215   </xsl:variable> 
     216   <xsl:variable name="has-expicit-parameters"><xsl:call-template name="has-expicit-parameters"> 
     217         <xsl:with-param name="tokens" select="$tokens"/> 
     218      </xsl:call-template> 
     219   </xsl:variable> 
    216220package <xsl:value-of select="$package"/>; 
    217221 
     
    234238   static final long serialVersionUID = 1L; 
    235239 
    236    <xsl:if test="normalize-space($tokens)"><xsl:call-template 
     240   <xsl:if test="$has-expicit-parameters != 'false'"><xsl:call-template 
    237241      name="exception-clazz-member-list"> 
    238242            <xsl:with-param name="tokens" select="$tokens"/></xsl:call-template></xsl:if> 
     
    245249    * @param cause the cause of this exception. 
    246250    */ 
    247    public <xsl:value-of select="$classname"/> (<xsl:if 
    248       test="normalize-space($tokens)"><xsl:call-template name="inner-clazz-log-parameter-list"> 
    249             <xsl:with-param name="tokens" select="$tokens"/> 
    250          </xsl:call-template> 
    251       ,</xsl:if> Throwable cause) 
     251   public <xsl:value-of select="$classname"/> (<xsl:call-template name="inner-clazz-log-parameter-list"> 
     252            <xsl:with-param name="tokens" select="concat($tokens, $DEFAULT_STRING_SEPARATOR, 'Throwable:cause')"/> 
     253         </xsl:call-template>) 
    252254   { 
    253255      super(<xsl:value-of select="$group-classname"/>.<xsl:value-of select="$constant-name"/>, cause); 
    254       <xsl:if test="normalize-space($tokens)"> 
     256      <xsl:if test="$has-expicit-parameters != 'false'"> 
    255257      <xsl:call-template name="exception-clazz-member-init"> 
    256258         <xsl:with-param name="tokens" select="$tokens"/> 
     
    276278   { 
    277279      super(<xsl:value-of select="$group-classname"/>.<xsl:value-of select="$constant-name"/>); 
    278       <xsl:if test="normalize-space($tokens)"> 
     280      <xsl:if test="$has-expicit-parameters != 'false'"> 
    279281      <xsl:call-template name="exception-clazz-member-init"> 
    280282         <xsl:with-param name="tokens" select="$tokens"/> 
     
    667669         select="$groupNameAbbr"/>_<xsl:value-of 
    668670         select="$message/@name"/></xsl:variable> 
     671   <xsl:variable name="has-expicit-parameters"><xsl:call-template name="has-expicit-parameters"> 
     672         <xsl:with-param name="tokens" select="$tokens"/> 
     673   </xsl:call-template></xsl:variable> 
     674 
    669675      /** 
    670676       * The unique symbolic String of the log message 
     
    753759            <xsl:when test="normalize-space($tokens)"> 
    754760         addParameters(new <xsl:value-of select="$log-event-class"/>(<xsl:value-of 
    755             select="$constant"/><xsl:if test="$isAudit">, auditPrincipal</xsl:if>), 
     761            select="$constant"/><xsl:if test="$isAudit">, auditPrincipal</xsl:if>) 
    756762               <xsl:call-template 
    757763                  name="inner-clazz-log-parameter-call"> 
    758764                  <xsl:with-param name="tokens" select="$tokens"/> 
    759                   <xsl:with-param name="isAudit" select="$isAudit"/> 
     765                  <xsl:with-param name="isFirst" select="false()"/> 
    760766               </xsl:call-template>).log();</xsl:when> 
    761767            <xsl:otherwise> 
     
    776782      public static void log (<xsl:call-template 
    777783                  name="inner-clazz-log-parameter-list"> 
    778                   <xsl:with-param name="tokens" select="$tokens"/> 
    779                   <xsl:with-param name="isAudit" select="$isAudit"/> 
    780                </xsl:call-template><xsl:if test="$isAudit or normalize-space($tokens)">,</xsl:if> 
    781                Throwable cause 
     784                  <xsl:with-param name="tokens" select="concat($tokens, $DEFAULT_STRING_SEPARATOR, 'Throwable:cause')"/> 
     785                  <xsl:with-param name="isAudit" select="$isAudit"/></xsl:call-template> 
    782786            ) 
    783787      {<xsl:choose> 
    784788            <xsl:when test="normalize-space($tokens)"> 
    785          addParameters(new <xsl:value-of select="$log-event-class"/>(<xsl:value-of select="$constant"/><xsl:if test="$isAudit">, auditPrincipal</xsl:if>, cause), 
    786                <xsl:call-template 
     789         addParameters(new <xsl:value-of select="$log-event-class"/>(<xsl:value-of 
     790           select="$constant"/><xsl:if test="$isAudit">, auditPrincipal</xsl:if>, cause)<xsl:call-template 
    787791                  name="inner-clazz-log-parameter-call"> 
    788792                  <xsl:with-param name="tokens" select="$tokens"/> 
    789                   <xsl:with-param name="isAudit" select="$isAudit"/> 
     793                  <xsl:with-param name="isFirst" select="false()"/> 
    790794               </xsl:call-template>).log();</xsl:when> 
    791795            <xsl:otherwise> 
     
    806810               </xsl:call-template> 
    807811       */ 
    808       public static void log (<xsl:value-of select="$custom-logger-class"/> logger<xsl:if 
    809        test="$isAudit or normalize-space($tokens)">, <xsl:call-template 
     812      public static void log (<xsl:value-of select="$custom-logger-class"/> logger<xsl:call-template 
    810813                  name="inner-clazz-log-parameter-list"> 
    811814                  <xsl:with-param name="tokens" select="$tokens"/> 
    812815                  <xsl:with-param name="isAudit" select="$isAudit"/> 
    813           </xsl:call-template></xsl:if>) 
     816                  <xsl:with-param name="isFirst" select="false()"/> 
     817          </xsl:call-template>) 
    814818      { 
    815819        final <xsl:value-of select="$log-event-class"/> logEvent 
    816820          = new <xsl:value-of select="$log-event-class"/>(<xsl:value-of 
    817821              select="$constant"/><xsl:if test="$isAudit">, auditPrincipal</xsl:if>); 
    818            <xsl:if test="normalize-space($tokens)"> 
     822           <xsl:if test="$has-expicit-parameters != 'false'"> 
     823        addParameters(logEvent 
     824               <xsl:call-template 
     825                  name="inner-clazz-log-parameter-call"> 
     826                  <xsl:with-param name="tokens" select="$tokens"/> 
     827                  <xsl:with-param name="isFirst" select="false()"/> 
     828               </xsl:call-template>); 
     829           </xsl:if> 
     830 
     831        logger.logp(<xsl:value-of select="$constant"/>.getLogLevel(), 
     832          <xsl:if test="$custom-logger-class != 'java.util.logging.Logger'"> 
     833           <xsl:value-of select="$constant"/>.getSymbol(),</xsl:if> 
     834           logEvent.getSourceClass(), 
     835           logEvent.getSourceMethod(), <xsl:if test="$custom-logger-class = 'java.util.logging.Logger'"> 
     836           <xsl:value-of select="$constant"/>.getSymbol() + "|" + </xsl:if> 
     837           logEvent.getTrackingNumber() + "|" + logEvent.getMessage(), 
     838           (Object) logEvent); 
     839      } 
     840 
     841      /** 
     842       * Logs the message 
     843       * &lt;tt>"<xsl:value-of select="normalize-space($message/text)"/>"&lt;/tt> 
     844       * with the given parameters to the custom logger. 
     845       * @param logger the custom logger to log to.<xsl:call-template 
     846                  name="inner-clazz-log-parameter-javadoc"> 
     847                  <xsl:with-param name="tokens" select="$tokens"/> 
     848                  <xsl:with-param name="isAudit" select="$isAudit"/> 
     849               </xsl:call-template> 
     850       * @param cause the Throwable that causes this message to be logged. 
     851       */ 
     852      public static void log (<xsl:value-of select="$custom-logger-class"/> logger<xsl:call-template 
     853                  name="inner-clazz-log-parameter-list"> 
     854                  <xsl:with-param name="tokens" select="concat($tokens, $DEFAULT_STRING_SEPARATOR, 'Throwable:cause')"/> 
     855                  <xsl:with-param name="isAudit" select="$isAudit"/> 
     856                  <xsl:with-param name="isFirst" select="false()"/> 
     857          </xsl:call-template> 
     858            ) 
     859      { 
     860        final <xsl:value-of select="$log-event-class"/> logEvent 
     861          = new <xsl:value-of select="$log-event-class"/>(<xsl:value-of 
     862              select="$constant"/><xsl:if test="$isAudit">, auditPrincipal</xsl:if>, 
     863              cause); 
     864           <xsl:if test="$has-expicit-parameters != 'false'"> 
    819865        addParameters(logEvent, 
    820866               <xsl:call-template 
     
    835881      } 
    836882 
    837       /** 
    838        * Logs the message 
    839        * &lt;tt>"<xsl:value-of select="normalize-space($message/text)"/>"&lt;/tt> 
    840        * with the given parameters to the custom logger. 
    841        * @param logger the custom logger to log to.<xsl:call-template 
    842                   name="inner-clazz-log-parameter-javadoc"> 
    843                   <xsl:with-param name="tokens" select="$tokens"/> 
    844                   <xsl:with-param name="isAudit" select="$isAudit"/> 
    845                </xsl:call-template> 
    846        * @param cause the Throwable that causes this message to be logged. 
    847        */ 
    848       public static void log (<xsl:value-of select="$custom-logger-class"/> logger<xsl:if 
    849        test="$isAudit or normalize-space($tokens)">, <xsl:call-template 
    850                   name="inner-clazz-log-parameter-list"> 
    851                   <xsl:with-param name="tokens" select="$tokens"/> 
    852                   <xsl:with-param name="isAudit" select="$isAudit"/> 
    853           </xsl:call-template></xsl:if>, 
    854                Throwable cause 
    855             ) 
    856       { 
    857         final <xsl:value-of select="$log-event-class"/> logEvent 
    858           = new <xsl:value-of select="$log-event-class"/>(<xsl:value-of 
    859               select="$constant"/><xsl:if test="$isAudit">, auditPrincipal</xsl:if>, 
    860               cause); 
    861            <xsl:if test="normalize-space($tokens)"> 
    862         addParameters(logEvent, 
    863                <xsl:call-template 
    864                   name="inner-clazz-log-parameter-call"> 
    865                   <xsl:with-param name="tokens" select="$tokens"/> 
    866                   <xsl:with-param name="isAudit" select="$isAudit"/> 
    867                </xsl:call-template>); 
    868            </xsl:if> 
    869  
    870          logger.logp(<xsl:value-of select="$constant"/>.getLogLevel(), 
    871           <xsl:if test="$custom-logger-class != 'java.util.logging.Logger'"> 
    872            <xsl:value-of select="$constant"/>.getSymbol(),</xsl:if> 
    873            logEvent.getSourceClass(), 
    874            logEvent.getSourceMethod(), <xsl:if test="$custom-logger-class = 'java.util.logging.Logger'"> 
    875            <xsl:value-of select="$constant"/>.getSymbol() + "|" + </xsl:if> 
    876            logEvent.getTrackingNumber() + "|" + logEvent.getMessage(), 
    877            (Object) logEvent); 
    878       } 
    879  
    880883        </xsl:if> 
    881884 
     
    952955       * @return the given initialized &lt;tt>loggable&lt;/tt>. 
    953956       */ 
    954       public static Loggable addParameters (Loggable loggable<xsl:if 
    955          test="normalize-space($tokens)">,</xsl:if> <xsl:call-template 
    956                   name="inner-clazz-log-parameter-list"> 
    957                   <xsl:with-param name="tokens" select="$tokens"/> 
     957      public static Loggable addParameters (Loggable loggable<xsl:call-template 
     958                  name="inner-clazz-log-parameter-list-sub"> 
     959                  <xsl:with-param name="tokens" select="$tokens"/> 
     960                  <xsl:with-param name="isFirst" select="false()"/> 
    958961               </xsl:call-template>) 
    959962      {<xsl:call-template 
     
    10221025   <xsl:param name="tokens" select="''"/> 
    10231026   <xsl:param name="isAudit" select="false()"/> 
     1027   <xsl:param name="isFirst" select="true()"/> 
     1028 
     1029   <xsl:if test="$isAudit"><xsl:if test="not($isFirst)">, </xsl:if> 
     1030      AuditPrincipal auditPrincipal</xsl:if> 
     1031    <xsl:call-template name="inner-clazz-log-parameter-list-sub"> 
     1032       <xsl:with-param name="tokens" select="$tokens"/> 
     1033       <xsl:with-param name="isFirst" select="not($isAudit) and $isFirst"/> 
     1034    </xsl:call-template> 
     1035</xsl:template> 
     1036<xsl:template name="inner-clazz-log-parameter-list-sub"> 
     1037   <xsl:param name="tokens" select="''"/> 
     1038   <xsl:param name="isFirst"/> 
    10241039   <xsl:variable name="type-token"> 
    10251040      <xsl:call-template name="string-set-next-token"> 
     
    10341049   </xsl:variable> 
    10351050   <xsl:variable name="type" select="substring-before($type-token, ':')"/> 
    1036    <xsl:if test="$isAudit"> 
    1037       AuditPrincipal auditPrincipal</xsl:if> 
    1038    <xsl:if test="normalize-space($token)"> 
    1039          <xsl:if test="$isAudit"><xsl:text>,</xsl:text></xsl:if> <!-- comma for AuditPrincipal --> 
    1040             <xsl:value-of select="$type"/><xsl:text> </xsl:text><xsl:value-of select="$display_token"/><xsl:if 
    1041                test="contains($tokens, $DEFAULT_STRING_SEPARATOR)"> 
    1042          <xsl:text>,</xsl:text> 
    1043       </xsl:if> 
    1044       <xsl:call-template name="inner-clazz-log-parameter-list"> 
    1045          <xsl:with-param name="tokens" 
    1046             select="substring-after($tokens, $DEFAULT_STRING_SEPARATOR)"/> 
    1047       </xsl:call-template> 
    1048    </xsl:if> 
     1051   <xsl:choose> 
     1052     <xsl:when test="normalize-space($token) and normalize-space($type)"> 
     1053           <xsl:if test="not($isFirst)"><xsl:text>, </xsl:text></xsl:if> 
     1054              <xsl:value-of select="$type"/><xsl:text> </xsl:text><xsl:value-of select="$display_token"/> 
     1055        <xsl:call-template name="inner-clazz-log-parameter-list-sub"> 
     1056           <xsl:with-param name="tokens" 
     1057              select="substring-after($tokens, $DEFAULT_STRING_SEPARATOR)"/> 
     1058           <xsl:with-param name="isFirst" select="false()"/> 
     1059        </xsl:call-template> 
     1060     </xsl:when> 
     1061     <xsl:otherwise> 
     1062       <xsl:if test="normalize-space($tokens)"> 
     1063          <xsl:call-template name="inner-clazz-log-parameter-list-sub"> 
     1064             <xsl:with-param name="tokens" 
     1065                select="substring-after($tokens, $DEFAULT_STRING_SEPARATOR)"/> 
     1066             <xsl:with-param name="isFirst" select="$isFirst"/> 
     1067          </xsl:call-template> 
     1068       </xsl:if> 
     1069     </xsl:otherwise> 
     1070   </xsl:choose> 
     1071</xsl:template> 
     1072 
     1073<xsl:template name="has-expicit-parameters"> 
     1074   <xsl:param name="tokens" select="''"/> 
     1075   <xsl:variable name="type-token"> 
     1076      <xsl:call-template name="string-set-next-token"> 
     1077         <xsl:with-param name="s" select="$tokens"/> 
     1078      </xsl:call-template> 
     1079   </xsl:variable> 
     1080   <xsl:variable name="token" select="substring-after($type-token, ':')"/> 
     1081   <xsl:variable name="type" select="substring-before($type-token, ':')"/> 
     1082   <xsl:choose> 
     1083     <xsl:when test="normalize-space($token) and normalize-space($type)">true</xsl:when> 
     1084     <xsl:when test="normalize-space($tokens)"> 
     1085          <xsl:call-template name="has-expicit-parameters"> 
     1086             <xsl:with-param name="tokens" 
     1087                select="substring-after($tokens, $DEFAULT_STRING_SEPARATOR)"/> 
     1088          </xsl:call-template> 
     1089     </xsl:when> 
     1090     <xsl:otherwise>false</xsl:otherwise> 
     1091   </xsl:choose> 
    10491092</xsl:template> 
    10501093 
     
    10641107   </xsl:variable> 
    10651108   <xsl:variable name="type" select="substring-before($type-token, ':')"/> 
    1066    <xsl:if test="normalize-space($token)"> 
     1109   <xsl:if test="normalize-space($token) and normalize-space($type)"> 
    10671110   private final <xsl:value-of select="$type"/><xsl:text> </xsl:text><xsl:value-of select="$display_token"/>; 
    10681111      <xsl:call-template name="exception-clazz-member-list"> 
     
    10941137   </xsl:variable> 
    10951138   <xsl:variable name="type" select="substring-before($type-token, ':')"/> 
    1096    <xsl:if test="normalize-space($token)"> 
     1139   <xsl:if test="normalize-space($token) and normalize-space($type)"> 
    10971140   <xsl:value-of select="$member_token"/> = <xsl:choose><xsl:when 
    10981141      test="$with = 'param'"><xsl:value-of select="$display_token"/></xsl:when> 
     
    11311174   </xsl:variable> 
    11321175   <xsl:variable name="type" select="substring-before($type-token, ':')"/> 
    1133    <xsl:if test="normalize-space($token)"> 
     1176   <xsl:if test="normalize-space($token) and normalize-space($type)"> 
    11341177   /** 
    11351178    * Returns the value of the parameter &lt;tt><xsl:value-of select="$display_token"/>&lt;/tt>. 
     
    11581201   </xsl:variable> 
    11591202   <xsl:variable name="token" select="substring-after($type-token, ':')"/> 
     1203   <xsl:variable name="type" select="substring-before($type-token, ':')"/> 
    11601204   <xsl:variable name="display_token"> 
    11611205      <xsl:call-template name="asJavaParameter"> 
     
    11721216       *      log event. 
    11731217   </xsl:if> 
    1174    <xsl:if test="normalize-space($token)"> 
     1218   <xsl:if test="normalize-space($token) and normalize-space($type)"> 
    11751219       * @param <xsl:value-of select="$display_token"/> The <xsl:value-of 
    11761220               select="$display_text"/> used in the message.<xsl:call-template 
     
    11851229<xsl:template name="inner-clazz-log-parameter-call"> 
    11861230   <xsl:param name="tokens" select="''"/> 
     1231   <xsl:param name="isFirst" select="true()"/> 
    11871232   <xsl:variable name="type-token"> 
    11881233      <xsl:call-template name="string-set-next-token"> 
     
    11911236   </xsl:variable> 
    11921237   <xsl:variable name="token" select="substring-after($type-token, ':')"/> 
     1238   <xsl:variable name="type" select="substring-before($type-token, ':')"/> 
    11931239   <xsl:variable name="display_token"> 
    11941240      <xsl:call-template name="asJavaParameter"> 
     
    11961242      </xsl:call-template> 
    11971243   </xsl:variable> 
    1198    <xsl:if test="normalize-space($token)"> 
    1199              <xsl:value-of select="$display_token"/><xsl:if 
    1200                test="contains($tokens, $DEFAULT_STRING_SEPARATOR)"> 
    1201          <xsl:text>, </xsl:text> 
    1202       </xsl:if> 
    1203       <xsl:call-template name="inner-clazz-log-parameter-call"> 
    1204          <xsl:with-param name="tokens" 
    1205             select="substring-after($tokens, $DEFAULT_STRING_SEPARATOR)"/> 
    1206       </xsl:call-template> 
    1207    </xsl:if> 
     1244   <xsl:choose> 
     1245     <xsl:when test="normalize-space($token) and normalize-space($type)"> 
     1246       <xsl:if test="not($isFirst)"><xsl:text>, </xsl:text> 
     1247       </xsl:if><xsl:value-of select="$display_token"/> 
     1248       <xsl:call-template name="inner-clazz-log-parameter-call"> 
     1249           <xsl:with-param name="tokens" 
     1250              select="substring-after($tokens, $DEFAULT_STRING_SEPARATOR)"/> 
     1251           <xsl:with-param name="isFirst" select="false()"/> 
     1252        </xsl:call-template> 
     1253     </xsl:when> 
     1254     <xsl:otherwise> 
     1255       <xsl:if test="$tokens"> 
     1256         <xsl:call-template name="inner-clazz-log-parameter-call"> 
     1257             <xsl:with-param name="tokens" 
     1258                select="substring-after($tokens, $DEFAULT_STRING_SEPARATOR)"/> 
     1259             <xsl:with-param name="isFirst" select="$isFirst"/> 
     1260          </xsl:call-template> 
     1261       </xsl:if> 
     1262     </xsl:otherwise> 
     1263   </xsl:choose> 
    12081264</xsl:template> 
    12091265 
     
    12161272   </xsl:variable> 
    12171273   <xsl:variable name="token" select="substring-after($type-token, ':')"/> 
    1218    <xsl:if test="normalize-space($token)"> 
     1274   <xsl:variable name="type" select="substring-before($type-token, ':')"/> 
     1275   <xsl:if test="normalize-space($token) and normalize-space($type)"> 
    12191276     <xsl:variable name="display_token"> 
    12201277        <xsl:call-template name="asJavaParameter">