Package org.apache.manifoldcf.core.common

Examples of org.apache.manifoldcf.core.common.XMLDoc


        if (Logging.connectors.isDebugEnabled())
        {
          Logging.connectors.debug("SharePoint: list xml: '" + list[0].toString() + "'");
        }

        XMLDoc doc = new XMLDoc( list[0].toString() );

        doc.processPath(nodeList, "*", null);
        if (nodeList.size() != 1)
        {
          throw new ManifoldCFException("Bad xml - missing outer 'ns1:dsQueryResponse' node - there are "+Integer.toString(nodeList.size())+" nodes");
        }

        Object parent = nodeList.get(0);
        //System.out.println( "Outer NodeName = " + doc.getNodeName(parent) );
        if (!doc.getNodeName(parent).equals("ns1:dsQueryResponse"))
          throw new ManifoldCFException("Bad xml - outer node is not 'ns1:dsQueryResponse'");

        nodeList.clear();
        doc.processPath(nodeList, "*", parent);

        if ( nodeList.size() != 2 )
        {
          throw new ManifoldCFException( " No results found." );
        }

        // Now, extract the files from the response document
        XMLDoc docs = doc;
        ArrayList nodeDocs = new ArrayList();

        docs.processPath( nodeDocs, "*", null );
        parent = nodeDocs.get(0);                // ns1:dsQueryResponse
        nodeDocs.clear();
        docs.processPath(nodeDocs, "*", parent);
        Object documents = nodeDocs.get(1);
        nodeDocs.clear();
        docs.processPath(nodeDocs, "*", documents);

        StringBuilder sb = new StringBuilder();
        for( int j =0; j < nodeDocs.size(); j++)
        {
          Object node = nodeDocs.get(j);
          Logging.connectors.debug( node.toString() );
          String relPath = docs.getData( docs.getElement( node, "FileRef" ) );
          fileStream.addFile( relPath, null );
        }
      }
      else
      {
View Full Code Here


      ListsSoap listsCall = listsService.getListsSoapHandler( );

      GetListCollectionResponseGetListCollectionResult listResp = listsCall.getListCollection();
      org.apache.axis.message.MessageElement[] lists = listResp.get_any();

      XMLDoc doc = new XMLDoc( lists[0].toString() );
      ArrayList nodeList = new ArrayList();

      doc.processPath(nodeList, "*", null);
      if (nodeList.size() != 1)
      {
        throw new ManifoldCFException("Bad xml - missing outer 'ns1:Lists' node - there are "+Integer.toString(nodeList.size())+" nodes");
      }
      Object parent = nodeList.get(0);
      if (!doc.getNodeName(parent).equals("ns1:Lists"))
        throw new ManifoldCFException("Bad xml - outer node is not 'ns1:Lists'");

      nodeList.clear();
      doc.processPath(nodeList, "*", parent)// <ns1:Lists>

      String prefixPath = decodedServerLocation + parentSiteDecoded + "/";

      int i = 0;
      while (i < nodeList.size())
      {
        Object o = nodeList.get( i++ );

        String baseType = doc.getValue( o, "BaseType");
        if ( baseType.equals("1") )
        {
          // We think it's a library

          // This is how we display it, so this has the right path extension
          String urlPath = doc.getValue( o, "DefaultViewUrl" );

          // If it has no view url, we don't have any idea what to do with it
          if (urlPath != null && urlPath.length() > 0)
          {
            // Normalize conditionally
            if (!urlPath.startsWith("/"))
              urlPath = prefixPath + urlPath;
            // Get rid of what we don't want, unconditionally
            if (urlPath.startsWith(prefixPath))
            {
              urlPath = urlPath.substring(prefixPath.length());
              // We're at the library name.  Figure out where the end of it is.
              int index = urlPath.indexOf("/");
              if (index == -1)
                throw new ManifoldCFException("Bad library view url without site: '"+urlPath+"'");
              String pathpart = urlPath.substring(0,index);

              if ( pathpart.equals(docLibrary) )
              {
                // We found it!
                // Return its ID
                return doc.getValue( o, "ID" );
              }
            }
            else
            {
              Logging.connectors.warn("SharePoint: Library view url is not in the expected form: '"+urlPath+"'; it should start with '"+prefixPath+"'; skipping");
View Full Code Here

      ListsSoap listsCall = listsService.getListsSoapHandler( );

      GetListCollectionResponseGetListCollectionResult listResp = listsCall.getListCollection();
      org.apache.axis.message.MessageElement[] lists = listResp.get_any();

      XMLDoc doc = new XMLDoc( lists[0].toString() );
      ArrayList nodeList = new ArrayList();

      doc.processPath(nodeList, "*", null);
      if (nodeList.size() != 1)
      {
        throw new ManifoldCFException("Bad xml - missing outer 'ns1:Lists' node - there are "+Integer.toString(nodeList.size())+" nodes");
      }
      Object parent = nodeList.get(0);
      if (!doc.getNodeName(parent).equals("ns1:Lists"))
        throw new ManifoldCFException("Bad xml - outer node is not 'ns1:Lists'");

      nodeList.clear();
      doc.processPath(nodeList, "*", parent)// <ns1:Lists>

      String prefixPath = decodedServerLocation + parentSiteDecoded + "/";

      int i = 0;
      while (i < nodeList.size())
      {
        Object o = nodeList.get( i++ );

        String baseType = doc.getValue( o, "BaseType");
        if ( baseType.equals("0") )
        {
          // We think it's a list

          // This is how we display it, so this has the right path extension
          String urlPath = doc.getValue( o, "DefaultViewUrl" );

          // If it has no view url, we don't have any idea what to do with it
          if (urlPath != null && urlPath.length() > 0)
          {
            // Normalize conditionally
            if (!urlPath.startsWith("/"))
              urlPath = prefixPath + urlPath;
            // Get rid of what we don't want, unconditionally
            if (urlPath.startsWith(prefixPath))
            {
              urlPath = urlPath.substring(prefixPath.length());
              // We're at the Lists/listname part of the name.  Figure out where the end of it is.
              int index = urlPath.indexOf("/");
              if (index == -1)
                throw new ManifoldCFException("Bad list view url without site: '"+urlPath+"'");
              String pathpart = urlPath.substring(0,index);
              if("Lists".equals(pathpart))
              {
                int k = urlPath.indexOf("/",index+1);
                if (k == -1)
                  throw new ManifoldCFException("Bad list view url without 'Lists': '"+urlPath+"'");
                pathpart = urlPath.substring(index+1,k);
              }

              if ( pathpart.equals(listName) )
              {
                // We found it!
                // Return its ID
                return doc.getValue( o, "ID" );
              }
            }
            else
            {
              Logging.connectors.warn("SharePoint: List view url is not in the expected form: '"+urlPath+"'; expected something beginning with '"+prefixPath+"'; skipping");
View Full Code Here

      GetVersionsResponseGetVersionsResult versionsResp = versionsCall.getVersions( docPath );
      org.apache.axis.message.MessageElement[] lists = versionsResp.get_any();

      //System.out.println( lists[0].toString() );
      XMLDoc doc = new XMLDoc( lists[0].toString() );
      ArrayList nodeList = new ArrayList();

      doc.processPath(nodeList, "*", null);

      if (nodeList.size() != 1)
      {
        throw new ManifoldCFException("Bad xml - missing outer 'results' node - there are "+Integer.toString(nodeList.size())+" nodes");
      }

      Object parent = nodeList.get(0);
      if (!doc.getNodeName(parent).equals("results"))
        throw new ManifoldCFException("Bad xml - outer node is not 'results'");

      return doc;
    }
    catch (java.net.MalformedURLException e)
View Full Code Here

      GetAttachmentCollectionResponseGetAttachmentCollectionResult listResponse =
        listCall.getAttachmentCollection( listName, itemID );
      org.apache.axis.message.MessageElement[] List = listResponse.get_any();

      XMLDoc doc = new XMLDoc( List[0].toString() );
      ArrayList nodeList = new ArrayList();

      doc.processPath(nodeList, "*", null);
      if (nodeList.size() != 1)
      {
        throw new ManifoldCFException("Bad xml - missing outer node - there are "+Integer.toString(nodeList.size())+" nodes");
      }

      Object attachments = nodeList.get(0);
      if ( !doc.getNodeName(attachments).equals("ns1:Attachments") )
        throw new ManifoldCFException( "Bad xml - outer node '" + doc.getNodeName(attachments) + "' is not 'ns1:Attachments'");

      nodeList.clear();
      doc.processPath(nodeList, "*", attachments);

      int i = 0;
      while (i < nodeList.size())
      {
        Object o = nodeList.get( i++ );
        if ( !doc.getNodeName(o).equals("ns1:Attachment") )
          throw new ManifoldCFException( "Bad xml - inner node '" + doc.getNodeName(o) + "' is not 'ns1:Attachment'");
        String attachmentURL = doc.getData( o );
        if (attachmentURL != null)
        {
          int index = attachmentURL.lastIndexOf("/");
          if (index == -1)
            throw new ManifoldCFException("Unexpected attachment URL form: '"+attachmentURL+"'");
View Full Code Here

      ListsSoap listCall = listService.getListsSoapHandler();

      GetListResponseGetListResult listResponse = listCall.getList( listName );
      org.apache.axis.message.MessageElement[] List = listResponse.get_any();

      XMLDoc doc = new XMLDoc( List[0].toString() );
      ArrayList nodeList = new ArrayList();

      doc.processPath(nodeList, "*", null);
      if (nodeList.size() != 1)
      {
        throw new ManifoldCFException("Bad xml - missing outer node - there are "+Integer.toString(nodeList.size())+" nodes");
      }

      Object parent = nodeList.get(0);
      if (!doc.getNodeName(parent).equals("ns1:List"))
        throw new ManifoldCFException("Bad xml - outer node is '" + doc.getNodeName(parent) + "' not 'ns1:List'");

      nodeList.clear();
      doc.processPath(nodeList, "*", parent)// <ns1:Fields>

      Object fields = nodeList.get(0);
      if ( !doc.getNodeName(fields).equals("ns1:Fields") )
        throw new ManifoldCFException( "Bad xml - child node 0 '" + doc.getNodeName(fields) + "' is not 'ns1:Fields'");

      nodeList.clear();
      doc.processPath(nodeList, "*", fields);

      int i = 0;
      while (i < nodeList.size())
      {
        Object o = nodeList.get( i++ );
        // Logging.connectors.debug( i + ": " + o );
        String name = doc.getValue( o, "DisplayName" );
        String fieldName = doc.getValue( o, "Name" );
        String hidden = doc.getValue( o, "Hidden" );
        // System.out.println( "Hidden :" + hidden );
        if ( name.length() != 0 && fieldName.length() != 0 && ( !hidden.equalsIgnoreCase( "true") ) )
        {
          // make sure we don't include the same field more than once.
          // This may happen if the Library has more than one view.
View Full Code Here

        if (Logging.connectors.isDebugEnabled())
        {
          Logging.connectors.debug("SharePoint: list xml: '" + list[0].toString() + "'");
        }

        XMLDoc doc = new XMLDoc( list[0].toString() );
        ArrayList nodeList = new ArrayList();

        doc.processPath(nodeList, "*", null);
        if (nodeList.size() != 1)
        {
          throw new ManifoldCFException("Bad xml - missing outer 'ns1:dsQueryResponse' node - there are "+Integer.toString(nodeList.size())+" nodes");
        }

        Object parent = nodeList.get(0);
        //System.out.println( "Outer NodeName = " + doc.getNodeName(parent) );
        if (!doc.getNodeName(parent).equals("ns1:dsQueryResponse"))
          throw new ManifoldCFException("Bad xml - outer node is not 'ns1:dsQueryResponse'");

        nodeList.clear();
        doc.processPath(nodeList, "*", parent);

        parent = nodeList.get( 0 ); // <Shared_X0020_Documents />

        nodeList.clear();
        doc.processPath(nodeList, "*", parent);

        // Process each result (Should only be one )
        // Get each childs Value and add to return array
        for ( int i= 0; i < nodeList.size(); i++ )
        {
          Object documentNode = nodeList.get( i );
          ArrayList fieldList = new ArrayList();

          doc.processPath( fieldList, "*", documentNode );
          for ( int j =0; j < fieldList.size(); j++)
          {
            Object field = fieldList.get( j );
            String fieldData = doc.getData(field);
            String fieldName = doc.getNodeName(field);
            // Right now this really only works right for single-valued fields.  For multi-valued
            // fields, we'd need to know in advance that they were multivalued
            // so that we could interpret commas as value separators.
            result.put(fieldName,fieldData);
          }
        }
      }
      else
      {
        // SharePoint 2010: Get field values some other way
        // Sharepoint 2010; use Lists service instead
        ListsWS lservice = new ListsWS(baseUrl + site, userName, password, configuration, httpClient );
        ListsSoapStub stub1 = (ListsSoapStub)lservice.getListsSoapHandler();
       
        String sitePlusDocId = serverLocation + site + docId;
        if (sitePlusDocId.startsWith("/"))
          sitePlusDocId = sitePlusDocId.substring(1);
       
        GetListItemsQuery q = buildMatchQuery("FileRef","Text",sitePlusDocId);
        GetListItemsViewFields viewFields = buildViewFields(fieldNames);

        GetListItemsResponseGetListItemsResult items =  stub1.getListItems(docLibrary, "", q, viewFields, "1", buildNonPagingQueryOptions(), null);
        if (items == null)
          return result;

        MessageElement[] list = items.get_any();

        if (Logging.connectors.isDebugEnabled()){
          Logging.connectors.debug("SharePoint: getListItems for '"+docId+"' using FileRef value '"+sitePlusDocId+"' xml response: '" + list[0].toString() + "'");
        }

        ArrayList nodeList = new ArrayList();
        XMLDoc doc = new XMLDoc(list[0].toString());

        doc.processPath(nodeList, "*", null);
        if (nodeList.size() != 1)
          throw new ManifoldCFException("Bad xml - expecting one outer 'ns1:listitems' node - there are " + Integer.toString(nodeList.size()) + " nodes");

        Object parent = nodeList.get(0);
        if (!"ns1:listitems".equals(doc.getNodeName(parent)))
          throw new ManifoldCFException("Bad xml - outer node is not 'ns1:listitems'");

        nodeList.clear();
        doc.processPath(nodeList, "*", parent);

        if (nodeList.size() != 1)
          throw new ManifoldCFException("Expected rsdata result but no results found.");

        Object rsData = nodeList.get(0);

        int itemCount = Integer.parseInt(doc.getValue(rsData, "ItemCount"));
        if (itemCount == 0)
          return result;
         
        // Now, extract the files from the response document
        ArrayList nodeDocs = new ArrayList();

        doc.processPath(nodeDocs, "*", rsData);

        if (nodeDocs.size() != itemCount)
          throw new ManifoldCFException("itemCount does not match with nodeDocs.size()");

        if (itemCount != 1)
          throw new ManifoldCFException("Expecting only one item, instead saw '"+itemCount+"'");
       
        Object o = nodeDocs.get(0);
       
        // Look for all the specified attributes in the record
        for (Object attrName : fieldNames)
        {
          String attrValue = doc.getValue(o,"ows_"+(String)attrName);
          if (attrValue != null)
          {
            result.put(attrName.toString(),valueMunge(attrValue));
          }
        }
View Full Code Here

      // But we can't hand the binary to the XML parser and still be able to get at the raw data.  So we
      // read the data into memory first (as binary), and then make a decision based on parseability as to whether
      // we attempt to decode it.
      byte[] responseContent = readInputStream(in);
     
      XMLDoc doc = null;
      String rawString = null;
      try
      {
        doc = new XMLDoc(new ByteArrayInputStream(responseContent));
      }
      catch (ManifoldCFException e)
      {
        // Syntax errors should be eaten; we'll just return a null doc in that case.
        // But we do try to convert the raw data to string form.
View Full Code Here

    public void parseIngestionResponse()
      throws ManifoldCFException
    {
      // Look at response XML
      String statusValue = "unknown";
      XMLDoc doc = getReturnDoc();
      if (doc != null)
      {
        if (Logging.ingest.isDebugEnabled())
          Logging.ingest.debug("SOLR: Saw ingestion response document '"+doc.getXML()+"'");
        //Object root = doc.getRoot();
        ArrayList list = doc.processPath("*",null);
        int k = 0;
        while (k < list.size())
        {
          Object listNode = list.get(k++);
          if (doc.getNodeName(listNode).equals("response"))
          {
            ArrayList list2 = doc.processPath("*",listNode);
            int q = 0;
            while (q < list2.size())
            {
              Object respNode = list2.get(q++);
              if (doc.getNodeName(respNode).equals("lst"))
              {
                String lstName = doc.getValue(respNode,"name");
                if (lstName.equals("responseHeader"))
                {
                  ArrayList list3 = doc.processPath("*",respNode);
                  int z = 0;
                  while (z < list3.size())
                  {
                    Object headerNode = list3.get(z++);
                    if (doc.getNodeName(headerNode).equals("int"))
                    {
                      String value = doc.getValue(headerNode,"name");
                      if (value.equals("status"))
                      {
                        statusValue = doc.getData(headerNode).trim();
                      }
                    }
                  }
                }
              }
View Full Code Here

    public void parseStatusResponse()
      throws ManifoldCFException
    {
      // Look at response XML
      String statusValue = "unknown";
      XMLDoc doc = getReturnDoc();
      if (doc != null)
      {
        if (Logging.ingest.isDebugEnabled())
          Logging.ingest.debug("SOLR: Saw status response document '"+doc.getXML()+"'");
        //Object root = doc.getRoot();
        ArrayList list = doc.processPath("*",null);
        int k = 0;
        while (k < list.size())
        {
          Object listNode = list.get(k++);
          if (doc.getNodeName(listNode).equals("response"))
          {
            ArrayList list2 = doc.processPath("*",listNode);
            int q = 0;
            while (q < list2.size())
            {
              Object respNode = list2.get(q++);
              if (doc.getNodeName(respNode).equals("str"))
              {
                String value = doc.getValue(respNode,"name");
                if (value.equals("status"))
                {
                  statusValue = doc.getData(respNode).trim();
                }
              }
            }
          }
        }
View Full Code Here

TOP

Related Classes of org.apache.manifoldcf.core.common.XMLDoc

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.