Package org.apache.xalan.transformer

Examples of org.apache.xalan.transformer.TransformerImpl


                                          methodArgs,
                                          convertedArgs,
                                          exprContext);
        putToCache(methodKey, null, methodArgs, c);
        if (TransformerImpl.S_DEBUG) {
            TransformerImpl trans = (TransformerImpl)exprContext.getXPathContext().getOwnerObject();
            trans.getTraceManager().fireExtensionEvent(new ExtensionEvent(trans, c, convertedArgs[0]));
            Object result;
            try {           
                result = c.newInstance(convertedArgs[0]);
            } catch (Exception e) {
                throw e;
            } finally {
                trans.getTraceManager().fireExtensionEndEvent(new ExtensionEvent(trans, c, convertedArgs[0]));
            }
            return result;
        } else
            return c.newInstance(convertedArgs[0]);
      }

      else
      {

        int resolveType;
        Object targetObject = null;
        methodArgs = new Object[args.size()];
        convertedArgs = new Object[1][];
        for (int i = 0; i < methodArgs.length; i++)
        {
          methodArgs[i] = args.elementAt(i);
        }
        Method m = (Method) getFromCache(methodKey, null, methodArgs);
        if (m != null && !TransformerImpl.S_DEBUG)
        {
          try
          {
            paramTypes = m.getParameterTypes();
            MethodResolver.convertParams(methodArgs, convertedArgs, paramTypes, exprContext);
            if (Modifier.isStatic(m.getModifiers()))
              return m.invoke(null, convertedArgs[0]);
            else
            {
              // This is tricky.  We get the actual number of target arguments (excluding any
              //   ExpressionContext).  If we passed in the same number, we need the implied object.
              int nTargetArgs = convertedArgs[0].length;
              if (ExpressionContext.class.isAssignableFrom(paramTypes[0]))
                nTargetArgs--;
              if (methodArgs.length <= nTargetArgs)
                return m.invoke(m_defaultInstance, convertedArgs[0]);
              else 
              {
                targetObject = methodArgs[0];
               
                if (targetObject instanceof XObject)
                  targetObject = ((XObject) targetObject).object();
                 
                return m.invoke(targetObject, convertedArgs[0]);
              }
            }
          }
          catch (InvocationTargetException ite)
          {
            throw ite;
          }
          catch(Exception e)
          {
            // Must not have been the right one
          }
        }

        if (args.size() > 0)
        {
          targetObject = methodArgs[0];

          if (targetObject instanceof XObject)
            targetObject = ((XObject) targetObject).object();

          if (m_classObj.isAssignableFrom(targetObject.getClass()))
            resolveType = MethodResolver.DYNAMIC;
          else
            resolveType = MethodResolver.STATIC_AND_INSTANCE;
        }
        else
        {
          targetObject = null;
          resolveType = MethodResolver.STATIC_AND_INSTANCE;
        }

        m = MethodResolver.getMethod(m_classObj,
                                     funcName,
                                     methodArgs,
                                     convertedArgs,
                                     exprContext,
                                     resolveType);
        putToCache(methodKey, null, methodArgs, m);

        if (MethodResolver.DYNAMIC == resolveType) {         // First argument was object type
          if (TransformerImpl.S_DEBUG) {
            TransformerImpl trans = (TransformerImpl)exprContext.getXPathContext().getOwnerObject();
            trans.getTraceManager().fireExtensionEvent(m, targetObject, convertedArgs[0]);
            Object result;
            try {
                result = m.invoke(targetObject, convertedArgs[0]);
            } catch (Exception e) {
                throw e;
            } finally {
                trans.getTraceManager().fireExtensionEndEvent(m, targetObject, convertedArgs[0]);
            }
            return result;
          } else                 
            return m.invoke(targetObject, convertedArgs[0]);
        }
        else                                  // First arg was not object.  See if we need the implied object.
        {
          if (Modifier.isStatic(m.getModifiers())) {
            if (TransformerImpl.S_DEBUG) {
              TransformerImpl trans = (TransformerImpl)exprContext.getXPathContext().getOwnerObject();
              trans.getTraceManager().fireExtensionEvent(m, null, convertedArgs[0]);
              Object result;
              try {
                  result = m.invoke(null, convertedArgs[0]);
              } catch (Exception e) {
                throw e;
              } finally {
                trans.getTraceManager().fireExtensionEndEvent(m, null, convertedArgs[0]);
              }
              return result;
            } else                 
              return m.invoke(null, convertedArgs[0]);
          }
          else
          {
            if (null == m_defaultInstance)
            {
              if (TransformerImpl.S_DEBUG) {
                TransformerImpl trans = (TransformerImpl)exprContext.getXPathContext().getOwnerObject();
                trans.getTraceManager().fireExtensionEvent(new ExtensionEvent(trans, m_classObj));
                try {
                    m_defaultInstance = m_classObj.newInstance();
                } catch (Exception e) {
                    throw e;
                } finally {
                    trans.getTraceManager().fireExtensionEndEvent(new ExtensionEvent(trans, m_classObj));
                }
              }    else
                  m_defaultInstance = m_classObj.newInstance();
            }
            if (TransformerImpl.S_DEBUG) {
              TransformerImpl trans = (TransformerImpl)exprContext.getXPathContext().getOwnerObject();
              trans.getTraceManager().fireExtensionEvent(m, m_defaultInstance, convertedArgs[0]);
              Object result;
              try {
                result = m.invoke(m_defaultInstance, convertedArgs[0]);
              } catch (Exception e) {
                throw e;
              } finally {
                trans.getTraceManager().fireExtensionEndEvent(m, m_defaultInstance, convertedArgs[0]);
              }
              return result;
            } else                 
              return m.invoke(m_defaultInstance, convertedArgs[0]);
         
View Full Code Here


     
      ElemExsltFunction elemFunc = getFunction(extFunction.getFunctionName());
     
      if (null != elemFunc) {
        XPathContext context = exprContext.getXPathContext();
        TransformerImpl transformer = (TransformerImpl)context.getOwnerObject();
     
        // Reset the frame bottom before calling the EXSLT function.
        if (callerTemplate != null)
          elemFunc.setCallerFrameSize(callerTemplate.m_frameSize);
        else
View Full Code Here

        ComponentSupport component = getComponent(context, element);
        if (component == null) {
            throw new MessagingException("Could not find a component on which to perform the service invocation!");
        }

        TransformerImpl transformer = context.getTransformer();
        PrefixResolver namespaceContext = transformer.getXPathContext().getNamespaceContext();

        QName service = getQNameAttribute(namespaceContext, element, "service");
        QName interfaceName = getQNameAttribute(namespaceContext, element, "interface");
        QName operation = getQNameAttribute(namespaceContext, element, "operation");
View Full Code Here

        ComponentSupport component = getComponent(context, element);
        if (component == null) {
            throw new MessagingException("Could not find a component on which to perform the service invocation!");
        }

        TransformerImpl transformer = context.getTransformer();
        PrefixResolver namespaceContext = transformer.getXPathContext().getNamespaceContext();

        QName service = getQNameAttribute(namespaceContext, element, "service");
        QName interfaceName = getQNameAttribute(namespaceContext, element, "interface");
        QName operation = getQNameAttribute(namespaceContext, element, "operation");

        InOnly outExchange = component.createInOnlyExchange(service, interfaceName, operation);
        NormalizedMessage out = outExchange.createMessage();
        outExchange.setInMessage(out);

        transformer.setParameter("out", out);

        // lets copy the content into the body
        Document document = getTransformer().createDocument();
        DOMBuilder builder = new DOMBuilder(document);
        transformer.executeChildTemplates(element, context.getContextNode(), context.getMode(), builder);
       
        out.setContent(new DOMSource(document));

        // now lets perform the invocation
        component.send(outExchange);
View Full Code Here

        ComponentSupport component = getComponent(context, element);
        if (component == null) {
            throw new MessagingException("Could not find a component on which to perform the service invocation!");
        }

        TransformerImpl transformer = context.getTransformer();
        PrefixResolver namespaceContext = transformer.getXPathContext().getNamespaceContext();

        QName service = getQNameAttribute(namespaceContext, element, "service");
        QName interfaceName = getQNameAttribute(namespaceContext, element, "interface");
        QName operation = getQNameAttribute(namespaceContext, element, "operation");

        InOut outExchange = component.createInOutExchange(service, interfaceName, operation);
        NormalizedMessage out = outExchange.createMessage();
        outExchange.setInMessage(out);


        // lets copy the content into the body
        Document document = getTransformer().createDocument();
        DOMBuilder builder = new DOMBuilder(document);
        transformer.executeChildTemplates(element, context.getContextNode(), context.getMode(), builder);

        out.setContent(new DOMSource(document));

        // now lets perform the invocation
        if (component.getDeliveryChannel().sendSync(outExchange)) {
            NormalizedMessage result = outExchange.getOutMessage();
            String outVarName = getAttribute(element, "outVar", "out");
            transformer.setParameter(outVarName, result);
        }
        else {
            Exception error = outExchange.getError();
            if (error != null) {
                transformer.setParameter("error", error);
            }
            Fault fault = outExchange.getFault();
            if (fault != null) {
                transformer.setParameter("fault", fault);
            }
        }

    }
View Full Code Here

    {
      inTable = true;
      formatter = (ContentHandler)flObject;
    }
   
    TransformerImpl transf = context.getTransformer();
   
    transf.executeChildTemplates(elem,
                                 context.getContextNode(),
                                 context.getMode(), formatter);
   
    if(!inTable)
    {
View Full Code Here

    java.io.FileNotFoundException,
    java.io.IOException,
    javax.xml.transform.TransformerException
  {
    File file = new File(fileName);
    TransformerImpl transformer = context.getTransformer();
    String base;          // Base URI to use for relative paths

    if(!file.isAbsolute())
    {
      // This code is attributed to Jon Grov <jon@linpro.no>.  A relative file name
      // is relative to the Result used to kick off the transform.  If no such
      // Result was supplied, the filename is relative to the source document.
      // When transforming with a SAXResult or DOMResult, call
      // TransformerImpl.setOutputTarget() to set the desired Result base.
//      String base = urlToFileName(elem.getStylesheet().getSystemId());

      Result outputTarget = transformer.getOutputTarget();
      if ( (null != outputTarget) && ((base = outputTarget.getSystemId()) != null) ) {
        base = urlToFileName(base);
      }
      else
      {
        base = urlToFileName(transformer.getBaseURLOfSource());
      }

      if(null != base)
      {
        File baseFile = new File(base);
        file = new File(baseFile.getParent(), fileName);
      }
    }

    if(mkdirs)
    {
      String dirStr = file.getParent();
      if((null != dirStr) && (dirStr.length() > 0))
      {
        File dir = new File(dirStr);
        dir.mkdirs();
      }
    }

    // This should be worked on so that the output format can be
    // defined by a first child of the redirect element.
    OutputProperties format = transformer.getOutputFormat();

    FileOutputStream ostream = new FileOutputStream(file);
   
    try
    {
      ContentHandler flistener
        = transformer.createResultContentHandler(new StreamResult(ostream), format);
      try
      {
        flistener.startDocument();
      }
      catch(org.xml.sax.SAXException se)
View Full Code Here

   *
   * @return A Transformer instance, never null.
   */
  public Transformer newTransformer()
  {
    return new TransformerImpl(this);
  }
View Full Code Here

   */
  public TransformerHandler newTransformerHandler(Templates templates)
          throws TransformerConfigurationException
  {
    try {
      TransformerImpl transformer =
        (TransformerImpl) templates.newTransformer();
      TransformerHandler th =
        (TransformerHandler) transformer.getInputContentHandler(true);

      return th;
    } catch( TransformerConfigurationException ex ) {
      if( m_errorListener != null ) {
        try {
View Full Code Here

                                          outputType);
          }

          if (transformer instanceof TransformerImpl)
          {
            TransformerImpl impl = ((TransformerImpl) transformer);
            TraceManager tm = impl.getTraceManager();

            if (null != tracer)
              tm.addTraceListener(tracer);

            impl.setQuietConflictWarnings(quietConflictWarnings);

            // sc 28-Feb-01 if we re-implement this, please uncomment helpmsg in printArgOptions
            // impl.setDiagnosticsOutput( setQuietMode ? null : diagnosticsWriter );
          }
View Full Code Here

TOP

Related Classes of org.apache.xalan.transformer.TransformerImpl

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.