Examples of XQPreparedExpression


Examples of javax.xml.xquery.XQPreparedExpression

            // Prepare expression, for starters
            String xquery = oxquery10.xquery.replaceFirst(
                    Constants.XQUERY_FUNCTION_HANDLER_COMPILER,
                    Constants.XQUERY_FUNCTION_HANDLER_RUNTIME);
            XQPreparedExpression exp = xqconn.prepareExpression(xquery);

            JaxpFunctionResolver funcResolver = new JaxpFunctionResolver(ctx,
                    oxquery10);
            JaxpVariableResolver variableResolver = new JaxpVariableResolver(ctx,
                    oxquery10, configuration);
            // Bind external variables to runtime values
            for (QName variable : exp.getAllUnboundExternalVariables()) {
              // Evaluate referenced variable
                Object value = variableResolver.resolveVariable(variable);
               
                 if (value instanceof Value) {
                     SaxonXQConnection saxonConn = (SaxonXQConnection) xqconn;
                     try {
                         Item item = ((Value) value).asItem();
                         if (item == null) {
                             exp.bindSequence(variable, xqconn.createSequence(Collections.EMPTY_LIST.iterator()));
                         } else {
                             XQItem item2 = new SaxonXQItem(item, saxonConn);
                             exp.bindItem(variable, item2);
                         }
                     } catch (XPathException e) {
                         __log.warn("", e);
                     }
                 } else {
                    
                     if (value instanceof Date) {
                         Date d = (Date) value;
                         value = org.apache.ode.utils.ISO8601DateParser.format(d);
                     }
                     // Figure out type of variable
                     XQSequenceType xqType = getItemType(xqconn, value);
                     // Saxon doesn't like binding sequences to variables
                     if (value instanceof Node) {
                         // a node is a node-list, but the inverse isn't true.
                         // so, if the value is truly a node, leave it alone.
                     } else if (value instanceof NodeList) {
                         // So extract the first item from the node list
                         NodeList nodeList = (NodeList) value;
                         ArrayList nodeArray = new ArrayList();
                         for (int i = 0; i < nodeList.getLength(); i++) {
                             nodeArray.add(nodeList.item(i));
                         }
                         value = xqconn.createSequence(nodeArray.iterator());
                     }
                     // Bind value with external variable
                     if (value != null && xqType != null) {
                         if (value instanceof XQSequence) {
                             exp.bindSequence(variable, (XQSequence) value);
                         } else {
                             if (xqType instanceof XQItemType) {
                                 exp.bindObject(variable, value, (XQItemType) xqType);
                             }
                         }
                     }
                  }
            }

            // Set context node
            Node contextNode = (ctx.getRootNode() == null)
              ? DOMUtils.newDocument() : ctx.getRootNode();
            contextNode.setUserData(XQuery10BpelFunctions.USER_DATA_KEY_FUNCTION_RESOLVER,
                funcResolver, null);
            exp.bindItem(XQConstants.CONTEXT_ITEM,
                xqconn.createItemFromNode(contextNode, xqconn.createNodeType()));

            // Execute query
            XQResultSequence result = exp.executeQuery();

            // Cast Saxon result to Java result
            Object evalResult = getResultValue(type, result);

            if ((evalResult != null) && __log.isDebugEnabled()) {
View Full Code Here

Examples of javax.xml.xquery.XQPreparedExpression

                XQConnection xqconn = xqds.getConnection();

                net.sf.saxon.Configuration configuration = ((SaxonXQConnection) xqconn).getConfiguration();
                configuration.setHostLanguage(net.sf.saxon.Configuration.XQUERY);
//                XQStaticContext staticEnv = xqconn.getStaticContext();
                XQPreparedExpression exp = xqconn.prepareExpression(xquery);
                Node requestNode = DOMUtils.parse(request.newXMLStreamReader());
                if (__log.isDebugEnabled()) {
                    __log.debug("request " + request.toString());
                }
                exp.bindItem(XQConstants.CONTEXT_ITEM, xqconn.createItemFromNode(requestNode, xqconn.createNodeType()));
                XQResultSequence result = exp.executeQuery();
                MockQueryResponseDocument response = MockQueryResponseDocument.Factory.parse(result.getSequenceAsStream());
                {
                    XmlOptions opts = new XmlOptions();
                    List<Object> errors = new ArrayList<Object>();
                    opts.setErrorListener(errors);
View Full Code Here

Examples of javax.xml.xquery.XQPreparedExpression

      for (String query : queryStrings) {
        RelationshipDelta result;
        String complete = localStr + query;
        StringReader reader = new StringReader(complete);
       
        XQPreparedExpression exp = conn.prepareExpression(reader);
        String filename = file.getAbsolutePath().replace('\\', '/');
        exp.bindString(new QName(DOC), filename, null);
       
        XQResultSequence queryResult = exp.executeQuery();
        result = processRelationshipResults(queryResult, types);
        deltas.add(result);
      }
     
    } catch (XQException e) {
View Full Code Here

Examples of javax.xml.xquery.XQPreparedExpression

      config.registerExtensionFunction(new TypeComparisonDefinition(types));

      String complete = localStr + topStr;
      StringReader reader = new StringReader(complete);
       
      XQPreparedExpression exp = conn.prepareExpression(reader);
      exp.bindString(new QName(DOC), file.getAbsolutePath().replace('\\', '/'), null);
       
      XQResultSequence queryResult = exp.executeQuery();
      return processBindingResults(queryResult);
    } catch (XQException e) {
      throw new FusionTypeCheckException(e);
    } catch (XPathException e) {
      throw new FusionTypeCheckException(e);
View Full Code Here

Examples of javax.xml.xquery.XQPreparedExpression

      xQuery = XQueryUtils.readXQueryFromResource(xQueryFileResource);
    }

    try {
      XQConnection conn = getConnection();
      XQPreparedExpression expression = conn.prepareExpression(xQuery);
      QName[] extParameters = expression.getAllExternalVariables();
      if(extParameters != null && extParameters.length > 0) {
        xQueryParameters = new ArrayList<String>();
        for(QName qName:extParameters) {
          xQueryParameters.add(qName.getLocalPart());
        }
      }
      expression.close();
      conn.close();
    } catch (XQException e) {
      throw new MessagingException("Caught Exception while opening a connection to the datasource", e);
    }
View Full Code Here

Examples of javax.xml.xquery.XQPreparedExpression

    if(node == null) {
      return null;
    }

    XQConnection connection = null;
    XQPreparedExpression expression = null;
    try {
      connection = getConnection();
      expression = connection.prepareExpression(xQuery);
      expression.bindNode(XQConstants.CONTEXT_ITEM, node, null);

      //bind the parameter values
      if(xQueryParameters != null && xQueryParameters.size() > 0) {
        //bind them one by one
        for(String parameter:xQueryParameters) {
          XQueryParameter xQueryParam = xQueryParameterMap.get(parameter);
          //TODO: Check what possible values can be supported to be set here
          //Accordingly do we need to set the third parameter for XQItemType
          expression.bindObject(new QName(xQueryParam.getParameterName()),
                          xQueryParam.evaluate(message), null);
        }
      }

      XQResultSequence result = expression.executeQuery();
      return mapper.mapResults(result);

    } catch (XQException e) {
      throw new MessagingException("Caught Exception while opening a connection to the datasource", e);
    } finally {
      try {
        if(expression != null) {
          expression.close();
        }
        if(connection != null) {
          connection.close();
        }
      } catch (XQException e) {
View Full Code Here

Examples of javax.xml.xquery.XQPreparedExpression

            // Add implicit declarations as prolog to the user-defined XQuery
            out.xquery = declarations.toString() + xqueryStr;

            // Check the XQuery for compilation errors
            xqconn.setStaticContext(staticContext);           
            XQPreparedExpression exp = xqconn.prepareExpression(out.xquery);
           
            // Pre-evaluate variables and functions by executing query 
            node.setUserData(XQuery10BpelFunctions.USER_DATA_KEY_FUNCTION_RESOLVER,
                funcResolver, null);
            exp.bindItem(XQConstants.CONTEXT_ITEM,
                    xqconn.createItemFromNode(node, xqconn.createNodeType()));
            // Bind external variables to dummy runtime values
            for (QName variable : exp.getAllUnboundExternalVariables()) {
              QName typeQName = variableTypes.get(variable);
                Object value = variableResolver.resolveVariable(variable);
              if (typeQName != null) {
                if (value.getClass().getName().startsWith("java.lang")) {
                      exp.bindAtomicValue(variable, value.toString(),
                          xqconn.createAtomicType(XQItemType.XQBASETYPE_ANYATOMICTYPE));
                } else if (value instanceof Node) {
                      exp.bindNode(variable, (Node) value, xqconn.createNodeType());
                } else if (value instanceof NodeList) {
                  NodeList nodeList = (NodeList) value;
                  ArrayList nodeArray = new ArrayList();
                  for (int i = 0; i < nodeList.getLength(); i++) {
                    nodeArray.add(nodeList.item(i));
                  }
                  XQSequence sequence = xqconn.createSequence(nodeArray.iterator());
                  exp.bindSequence(variable, sequence);
                }
              }
            }
            // evaluate the expression so as to initialize the variables
            try {
                exp.executeQuery();
            } catch (XQException xpee) {
              // swallow errors caused by uninitialized variables
            } finally {
              // reset the expression's user data, in order to avoid
              // serializing the function resolver in the compiled bpel file.
View Full Code Here

Examples of javax.xml.xquery.XQPreparedExpression

            // Prepare expression, for starters
            String xquery = oxquery10.xquery.replaceFirst(
                    Constants.XQUERY_FUNCTION_HANDLER_COMPILER,
                    Constants.XQUERY_FUNCTION_HANDLER_RUNTIME);
            XQPreparedExpression exp = xqconn.prepareExpression(xquery);

            JaxpFunctionResolver funcResolver = new JaxpFunctionResolver(ctx,
                    oxquery10);
            JaxpVariableResolver variableResolver = new JaxpVariableResolver(ctx,
                    oxquery10, configuration);
            // Bind external variables to runtime values
            for (QName variable : exp.getAllUnboundExternalVariables()) {
              // Evaluate referenced variable
                Object value = variableResolver.resolveVariable(variable);
               
                // Figure out type of variable
                XQSequenceType xqType = getItemType(xqconn, value);
               
                // Saxon doesn't like binding sequences to variables
                if (value instanceof Node) {
                  // a node is a node-list, but the inverse isn't true.
                  // so, if the value is truly a node, leave it alone.
                } else if (value instanceof NodeList) {
                    // So extract the first item from the node list
                  NodeList nodeList = (NodeList) value;
                  ArrayList nodeArray = new ArrayList();
                  for (int i = 0; i < nodeList.getLength(); i++) {
                    nodeArray.add(nodeList.item(i));
                  }
                  value = xqconn.createSequence(nodeArray.iterator());
                }
               
               
                // Bind value with external variable
                if (value != null && xqType != null) {
                  if (value instanceof XQSequence) {
                    exp.bindSequence(variable, (XQSequence) value);
                  } else {
                    if (xqType instanceof XQItemType) {
                      exp.bindObject(variable, value, (XQItemType) xqType);
                    }
                  }
                }
            }

            // Set context node
            Node contextNode = (ctx.getRootNode() == null)
              ? DOMUtils.newDocument() : ctx.getRootNode();
            contextNode.setUserData(XQuery10BpelFunctions.USER_DATA_KEY_FUNCTION_RESOLVER,
                funcResolver, null);
            exp.bindItem(XQConstants.CONTEXT_ITEM,
                xqconn.createItemFromNode(contextNode, xqconn.createNodeType()));

            // Execute query
            XQResultSequence result = exp.executeQuery();

            // Cast Saxon result to Java result
            Object evalResult = getResultValue(type, result);

            if ((evalResult != null) && __log.isDebugEnabled()) {
View Full Code Here

Examples of javax.xml.xquery.XQPreparedExpression

            // Prepare expression, for starters
            String xquery = oxquery10.xquery.replaceFirst(
                    Constants.XQUERY_FUNCTION_HANDLER_COMPILER,
                    Constants.XQUERY_FUNCTION_HANDLER_RUNTIME);
            XQPreparedExpression exp = xqconn.prepareExpression(xquery);

            JaxpFunctionResolver funcResolver = new JaxpFunctionResolver(ctx,
                    oxquery10);
            JaxpVariableResolver variableResolver = new JaxpVariableResolver(ctx,
                    oxquery10, configuration);
            // Bind external variables to runtime values
            for (QName variable : exp.getAllUnboundExternalVariables()) {
              // Evaluate referenced variable
                Object value = variableResolver.resolveVariable(variable);
               
                // Figure out type of variable
                XQSequenceType xqType = getItemType(xqconn, value);
               
                // Saxon doesn't like binding sequences to variables
                if (value instanceof Node) {
                  // a node is a node-list, but the inverse isn't true.
                  // so, if the value is truly a node, leave it alone.
                } else if (value instanceof NodeList) {
                    // So extract the first item from the node list
                  NodeList nodeList = (NodeList) value;
                  ArrayList nodeArray = new ArrayList();
                  for (int i = 0; i < nodeList.getLength(); i++) {
                    nodeArray.add(nodeList.item(i));
                  }
                  value = xqconn.createSequence(nodeArray.iterator());
                }
               
               
                // Bind value with external variable
                if (value != null && xqType != null) {
                  if (value instanceof XQSequence) {
                    exp.bindSequence(variable, (XQSequence) value);
                  } else {
                    if (xqType instanceof XQItemType) {
                      exp.bindObject(variable, value, (XQItemType) xqType);
                    }
                  }
                }
            }

            // Set context node
            Node contextNode = (ctx.getRootNode() == null)
              ? DOMUtils.newDocument() : ctx.getRootNode();
            contextNode.setUserData(XQuery10BpelFunctions.USER_DATA_KEY_FUNCTION_RESOLVER,
                funcResolver, null);
            exp.bindItem(XQConstants.CONTEXT_ITEM,
                xqconn.createItemFromNode(contextNode, xqconn.createNodeType()));

            // Execute query
            XQResultSequence result = exp.executeQuery();

            // Cast Saxon result to Java result
            Object evalResult = getResultValue(type, result);

            if ((evalResult != null) && __log.isDebugEnabled()) {
View Full Code Here

Examples of net.sf.saxon.javax.xml.xquery.XQPreparedExpression

    @Override
    public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException
    {
        try
        {
            XQPreparedExpression transformer = null;
            try
            {
                transformer = (XQPreparedExpression) transformerPool.borrowObject();

                bindParameters(transformer, message);

                bindDocument(message.getPayload(), transformer);

                XQResultSequence result = transformer.executeQuery();
                //No support for return Arrays yet
                List results = new ArrayList();
                while (result.next())
                {
                    XQItem item = result.getItem();

                    Class type = returnType.getType();
                    if (Node.class.isAssignableFrom(type) || Node[].class.isAssignableFrom(type))
                    {
                        results.add(item.getNode());
                    }
                    else if (String.class.isAssignableFrom(type) || String[].class.isAssignableFrom(type))
                    {
                        results.add(item.getItemAsString());
                    }
                    else if (XMLStreamReader.class.isAssignableFrom(type) || XMLStreamReader[].class.isAssignableFrom(type))
                    {
                        try
                        {
                            results.add(item.getItemAsStream());
                        }
                        catch (XQException e)
                        {
                            throw new TransformerException(XmlMessages.streamNotAvailble(getName()));
                        }
                    }
                    else
                    {
                        //This can be a JAXB bound  object instance depending on whether the CommonHandler has been set
                        try
                        {
                            results.add(item.getObject());
                        }
                        catch (XQException e)
                        {
                            throw new TransformerException(XmlMessages.objectNotAvailble(getName()));

                        }
                    }
                    if (!type.isArray())
                    {
                        break;
                    }
                }
                if (returnType.getType().isArray())
                {
                    return results.toArray();
                }
                if (results.size() == 1)
                {
                    return results.get(0);
                }
                else if (results.size() == 0)
                {
                    return null;
                }
                else
                {
                    return results.toArray();
                }

            }
            finally
            {
                if (transformer != null)
                {
                    if (transformer.getWarnings() != null)
                    {
                        logger.warn(transformer.getWarnings().getMessage(), transformer.getWarnings().fillInStackTrace());
                    }
                    // clear transformation parameters before returning transformer to the
                    // pool
                    //TODO find out what the scope is for bound variables, there doesn't seem to be a way to unbind them
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.