curcuru     01/10/18 19:15:54

  Added:       test/tests/extensions/java javaElem01.xsl javaElem01.xml
                        javaElem01.java
  Log:
  Simple Java extension element test
  
  Revision  Changes    Path
  1.1                  xml-xalan/test/tests/extensions/java/javaElem01.xsl
  
  Index: javaElem01.xsl
  ===================================================================
  <?xml version="1.0"?> 
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
      version="1.0"
      xmlns:lxslt="http://xml.apache.org/xslt";
      xmlns:javaElem="javaElem01"
      extension-element-prefixes="javaElem">
  
    <lxslt:component prefix="javaElem" 
          elements="putString putBoolean putDouble putNode" 
functions="getCounter">
      <lxslt:script lang="javaclass" src="javaElem01"/>
    </lxslt:component>  
  
  <xsl:output method="xml" indent="yes"/>
                  
    <xsl:template match="doc">
      <out>
        <extension-string>
          <javaElem:putString attr="attr-String"/>
        </extension-string> 
        <extension-ctr><xsl:value-of 
select="javaElem:getCounter()"/></extension-ctr> 
        <extension-boolean>
          <javaElem:putBoolean attr="attr-Boolean"/>
        </extension-boolean> 
        <extension-ctr><xsl:value-of 
select="javaElem:getCounter()"/></extension-ctr> 
        <extension-double>
          <javaElem:putDouble attr="attr-Double"/>
        </extension-double> 
        <extension-ctr><xsl:value-of 
select="javaElem:getCounter()"/></extension-ctr> 
        <extension-node>
          <javaElem:putNode attr="attr-Node"/>
        </extension-node> 
        <extension-ctr><xsl:value-of 
select="javaElem:getCounter()"/></extension-ctr> 
      </out>
    </xsl:template>
   
  </xsl:stylesheet>
  
  
  
  1.1                  xml-xalan/test/tests/extensions/java/javaElem01.xml
  
  Index: javaElem01.xml
  ===================================================================
  <?xml version="1.0"?> 
  <doc>
    <singleton>There should have been only one</singleton>
  </doc>
  
  
  1.1                  xml-xalan/test/tests/extensions/java/javaElem01.java
  
  Index: javaElem01.java
  ===================================================================
  /*
   * Covered by The Apache Software License, Version 1.1
   * See xml-xalan/java/License
   */
  
  // explicitly packageless
  
  import org.apache.qetest.CheckService;
  import org.apache.qetest.Logger;
  import org.apache.qetest.xsl.StylesheetDatalet;
  import org.apache.qetest.xsl.TestableExtension;
  import org.apache.qetest.xsl.XHTFileCheckService;
  
  import java.io.File;
  import java.util.Calendar;
  import java.util.Date;
  import java.util.Hashtable;
  
  import javax.xml.parsers.DocumentBuilder;
  import javax.xml.parsers.DocumentBuilderFactory;
  
  import org.w3c.dom.Document;
  import org.w3c.dom.DocumentFragment;
  import org.w3c.dom.Element;
  import org.w3c.dom.Node;
  
  import org.apache.xalan.extensions.XSLProcessorContext;
  import org.apache.xalan.templates.ElemExtensionCall;
  
  /**
   * Extension for testing xml-xalan/samples/extensions.
   * Various tests of extension elements.  
   */
  public class javaElem01 extends TestableExtension
  {
  
      /** Extension method - element called from stylesheet.  */
      public static String putString(XSLProcessorContext context,
                                     ElemExtensionCall extensionElement)
      {
          counter++;
          String attrVal = extensionElement.getAttribute("attr");
          if (null != attrVal)
              return attrVal;
          else
              return "javaElem01.putString";
      }
  
      /** Extension method - element called from stylesheet.  */
      public static Boolean putBoolean(XSLProcessorContext context,
                                     ElemExtensionCall extensionElement)
      {
          counter++;
          return new Boolean(true);
      }
  
      /** Extension method - element called from stylesheet.  */
      public static Double putDouble(XSLProcessorContext context,
                                     ElemExtensionCall extensionElement)
      {
          counter++;
          return new Double(1.1);
      }
  
      /** Extension method - element called from stylesheet.  */
      public static Node putNode(XSLProcessorContext context,
                                     ElemExtensionCall extensionElement)
      {
          counter++;
          String attrVal = extensionElement.getAttribute("attr");
          
          Node n = null;
          try
          {
              DocumentBuilderFactory dfactory = 
DocumentBuilderFactory.newInstance();
              dfactory.setNamespaceAware(true);
              DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
              Document doc = docBuilder.newDocument();
              if (null != attrVal)
                  n = doc.createTextNode(attrVal);
              else
                  n = doc.createTextNode("This is a text node");
          }
          catch (Exception e)
          {
              // No-op: no easy way to report this
          }
          return n;
      }
  
      //// Implementations of TestableExtension
      /** Simple counter of number of times called.  */    
      private static int counter = 0;
      
      /**
       * Description of what this extension does.  
       * @return String description of extension
       */
      public static int getCounter()
      {
          return counter;
      }
  
      /** 
       * Perform and log any pre-transformation info.  
       * @return true if OK; false if any fatal error occoured
       * @param datalet Datalet of current stylesheet test
       */
      public static boolean preCheck(Logger logger, StylesheetDatalet datalet)
      {
          logger.logMsg(Logger.INFOMSG, "javaElem01.preCheck; counter=" + 
counter);
          return true;        
      }
      
  
      /** 
       * Perform and log any post-transformation info.  
       * 
       * The extension should validate that it's extension was 
       * properly called; we also validate output file.
       * 
       * @param logger Logger to dump any info to
       * @param datalet Datalet of current stylesheet test
       */
      public static void postCheck(Logger logger, StylesheetDatalet datalet)
      {
          // Verify that we've been called at least once
          if (counter > 0)
              logger.checkPass("javaElem01 has been called " + counter + " 
times");
          else
              logger.checkFail("javaElem01 has not been called");
  
          // We also validate the output file the normal way
          CheckService fileChecker = 
(CheckService)datalet.options.get("fileCheckerImpl");
          // Supply default value
          if (null == fileChecker)
              fileChecker = new XHTFileCheckService();
          fileChecker.check(logger,
                            new File(datalet.outputName), 
                            new File(datalet.goldName), 
                            "Extension test of " + datalet.getDescription());
      }
  
  
      /**
       * Description of what this extension does.  
       * @return String description of extension
       */
      public static String getDescription()
      {
          return "Basic extension element test";
      }
  }
  
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to