Package org.exist.xquery

Examples of org.exist.xquery.XQuery


        BrokerPool pool = null;
        DBBroker broker = null;
        try {
            pool = BrokerPool.getInstance();
            broker = pool.get(pool.getSecurityManager().getSystemSubject());
            final XQuery xquery = broker.getXQueryService();
            final Sequence pkgs = xquery.execute("repo:list()", null, AccessContext.INITIALIZE);
            for (final SequenceIterator i = pkgs.iterate(); i.hasNext(); ) {
                final ExistRepository.Notification notification = new ExistRepository.Notification(ExistRepository.Action.INSTALL, i.nextItem().getStringValue());
                update(pool.getExpathRepo(), notification);
                utilityPanel.update(pool.getExpathRepo(), notification);
            }
View Full Code Here


        Sequence result= null;
        try {
            broker = brokerPool.get(user);
           
            CompiledXQuery compiled =null;
            final XQuery xquery = broker.getXQueryService();
            final XQueryContext context = xquery.newContext(AccessContext.INTERNAL_PREFIX_LOOKUP);
           
            if(collection!=null){
                context.declareVariable(COLLECTION, collection);
            }
           
            if(namespace!=null){
                context.declareVariable(TARGETNAMESPACE, namespace);
            }
           
            if(publicId!=null){
                context.declareVariable(PUBLICID, publicId);
            }
           
            if(catalogPath!=null){
                context.declareVariable(CATALOG, catalogPath);
            }
           
            compiled = xquery.compile(context, new ClassLoaderSource(queryPath) );
           
            result = xquery.execute(compiled, null);
           
        } catch (final Exception ex) {
            logger.error("Problem executing xquery", ex);
            result= null;
           
View Full Code Here

    } else if (allowQueryPost) {
      final Collection collection = broker.getCollection(XmldbURI.create(request.getPath()));
      if (collection == null)
        {throw new BadRequestException("Collection " + request.getPath() + " does not exist.");}

      final XQuery xquery = broker.getXQueryService();

      final XQueryContext context = xquery.newContext(AccessContext.REST);
      context.setModuleLoadPath(getContext().getModuleLoadPath());

      String contentType = request.getHeader("Content-Type");
      String charset = getContext().getDefaultCharset();

      MimeType mime = MimeType.XML_TYPE;
      if (contentType != null) {
        final int semicolon = contentType.indexOf(';');
        if (semicolon > 0) {
          contentType = contentType.substring(0, semicolon).trim();
        }
        mime = MimeTable.getInstance().getContentType(contentType);
        final int equals = contentType.indexOf('=', semicolon);
        if (equals > 0) {
          final String param = contentType.substring(semicolon + 1, equals).trim();
          if (param.compareToIgnoreCase("charset=") == 0) {
            charset = param.substring(equals + 1).trim();
          }
        }
      }

      if (!mime.isXMLType() && !mime.equals(xqueryMimeType)) {
        throw new BadRequestException(
            "The xquery mime type is not an XML mime type nor application/xquery");
      }

      CompiledXQuery compiledQuery = null;
      try {
        final StringBuilder builder = new StringBuilder();
        final Reader r = new InputStreamReader(request.getInputStream(), charset);
        final char[] buffer = new char[4096];
        int len;
        long count = 0;
        final long contentLength = request.getContentLength();
        while ((len = r.read(buffer)) >= 0 && count < contentLength) {
          count += len;
          builder.append(buffer, 0, len);
        }
        compiledQuery = xquery.compile(context, new StringSource(builder.toString()));
     
      } catch (final XPathException ex) {
        throw new EXistException("Cannot compile xquery.", ex);
      } catch (final IOException ex) {
        throw new EXistException(
            "I/O exception while compiling xquery.", ex);
      }

      context.setStaticallyKnownDocuments(
        new XmldbURI[] {
          XmldbURI.create(request.getPath()).append(AtomProtocol.FEED_DOCUMENT_NAME)
        }
      );

      try {
        final Sequence resultSequence = xquery.execute(compiledQuery, null);
        if (resultSequence.isEmpty()) {
          throw new BadRequestException("No topic was found.");
        }
        response.setStatusCode(200);
        response.setContentType(Atom.MIME_TYPE + "; charset=" + charset);
View Full Code Here

    final Collection collection = broker.getCollection(XmldbURI.create(request.getPath()));
   
    if (collection == null)
      {throw new BadRequestException("Collection " + request.getPath() + " does not exist.");}

    final XQuery xquery = broker.getXQueryService();
    CompiledXQuery feedQuery = xquery.getXQueryPool().borrowCompiledXQuery(broker, config.querySource);

    XQueryContext context;
    if (feedQuery == null) {
      context = xquery.newContext(AccessContext.REST);
      context.setModuleLoadPath(getContext().getModuleLoadPath());
      try {
        feedQuery = xquery.compile(context, config.querySource);
      } catch (final XPathException ex) {
        throw new EXistException("Cannot compile xquery "
            + config.querySource.getURL(), ex);
      } catch (final IOException ex) {
        throw new EXistException(
            "I/O exception while compiling xquery "
                + config.querySource.getURL(), ex);
      }
    } else {
      context = feedQuery.getContext();
      context.setModuleLoadPath(getContext().getModuleLoadPath());
    }

    context.setStaticallyKnownDocuments(new XmldbURI[] { XmldbURI.create(
        request.getPath()).append(AtomProtocol.FEED_DOCUMENT_NAME) });

    try {
      declareVariables(context, request.getRequest(), response.getResponse());

      final Sequence resultSequence = xquery.execute(feedQuery, null);
      if (resultSequence.isEmpty())
        {throw new BadRequestException("No topic was found.");}

      final String charset = getContext().getDefaultCharset();
      response.setStatusCode(200);
      response.setContentType(config.contentType + "; charset=" + charset);
      final Serializer serializer = broker.getSerializer();
      serializer.reset();
      try {
        final Writer w = new OutputStreamWriter(response.getOutputStream(), charset);
        final SAXSerializer sax = (SAXSerializer) SerializerPool.getInstance().borrowObject(SAXSerializer.class);
       
        final Properties outputProperties = new Properties();
        sax.setOutput(w, outputProperties);
        serializer.setProperties(outputProperties);
        serializer.setSAXHandlers(sax, sax);

        serializer.toSAX(resultSequence, 1, 1, false, false);

        SerializerPool.getInstance().returnObject(sax);
        w.flush();
        w.close();
      } catch (final IOException ex) {
        LOG.fatal("Cannot read resource " + request.getPath(), ex);
        throw new EXistException("I/O error on read of resource "
            + request.getPath(), ex);
      } catch (final SAXException saxe) {
        LOG.warn(saxe);
        throw new BadRequestException("Error while serializing XML: "
            + saxe.getMessage());
      }
      resultSequence.itemAt(0);
    } catch (final XPathException ex) {
      throw new EXistException("Cannot execute xquery "
          + config.querySource.getURL(), ex);
    } finally {
      xquery.getXQueryPool().returnCompiledXQuery(config.querySource,
          feedQuery);
    }
  }
View Full Code Here

            if (lockedDocuments != null)
                {context.setProtectedDocs(lockedDocuments);}
            setupContext(null, context);
//        checkPragmas(context);
           
        final XQuery xquery = broker.getXQueryService();
        result = xquery.execute(expr, contextSet, properties);
      } catch (final EXistException e) {
            throw new XMLDBException(ErrorCodes.VENDOR_ERROR, e.getMessage(), e);
      } catch (final XPathException e) {
            throw new XMLDBException(ErrorCodes.VENDOR_ERROR, e.getMessage(), e);
      } catch (final Exception e) {
View Full Code Here

      try {
        broker = brokerPool.get(user);
//        DocumentSet docs = collection.getCollection().allDocs(broker, new DocumentSet(), true, true);
        final XmldbURI[] docs = new XmldbURI[] { XmldbURI.create(collection.getName()) };

        final XQuery xquery = broker.getXQueryService();
        final XQueryPool pool = xquery.getXQueryPool();
        XQueryContext context;
        CompiledXQuery compiled = pool.borrowCompiledXQuery(broker, source);
        if(compiled == null)
            {context = xquery.newContext(accessCtx);}
        else
            {context = compiled.getContext();}
        //context.setBackwardsCompatibility(xpathCompatible);
        context.setStaticallyKnownDocuments(docs);

        if (variableDecls.containsKey(Debuggee.PREFIX+":session")) {
          context.declareVariable(Debuggee.SESSION, variableDecls.get(Debuggee.PREFIX+":session"));
          variableDecls.remove(Debuggee.PREFIX+":session");
        }

        setupContext(source, context);
       
        if(compiled == null)
            {compiled = xquery.compile(context, source);}
        try {
            result = xquery.execute(compiled, null, properties);
        } finally {
            pool.returnCompiledXQuery(source, compiled);
        }
      } catch (final EXistException e) {
        throw new XMLDBException(ErrorCodes.VENDOR_ERROR, e.getMessage(), e);
View Full Code Here

      final Subject preserveSubject = brokerPool.getSubject();
        DBBroker broker = null;
        try {
            final long start = System.currentTimeMillis();
            broker = brokerPool.get(user);
            final XQuery xquery = broker.getXQueryService();
            final XQueryContext context = xquery.newContext(accessCtx);
            setupContext(null, context);
            final CompiledXQuery expr = xquery.compile(context, query);
//            checkPragmas(context);
            LOG.debug("compilation took "  (System.currentTimeMillis() - start));
            return expr;
        } catch (final EXistException e) {
            throw new XMLDBException(ErrorCodes.VENDOR_ERROR, e.getMessage(), e);
View Full Code Here

TOP

Related Classes of org.exist.xquery.XQuery

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.