Search in sources :

Example 21 with ManifoldCFException

use of org.apache.manifoldcf.core.interfaces.ManifoldCFException in project manifoldcf by apache.

the class AmazonS3Authority method check.

/**
 * Test the connection. Returns a string describing the connection
 * integrity.
 *
 * @return the connection's status as a displayable string.
 */
@Override
public String check() throws ManifoldCFException {
    // connect with amazons3 client
    Logging.authorityConnectors.info("Checking connection");
    try {
        // invokes the check thread
        CheckThread checkThread = new CheckThread(getClient());
        checkThread.start();
        checkThread.join();
        if (checkThread.getException() != null) {
            Throwable thr = checkThread.getException();
            return "Check exception: " + thr.getMessage();
        }
        return checkThread.getResult();
    } catch (InterruptedException ex) {
        Logging.authorityConnectors.error("Error while checking connection", ex);
        throw new ManifoldCFException(ex.getMessage(), ex, ManifoldCFException.INTERRUPTED);
    }
}
Also used : ManifoldCFException(org.apache.manifoldcf.core.interfaces.ManifoldCFException)

Example 22 with ManifoldCFException

use of org.apache.manifoldcf.core.interfaces.ManifoldCFException in project manifoldcf by apache.

the class AmazonS3Authority method checkUserExists.

private HashMap<String, Set<Grant>> checkUserExists(String userName) throws ManifoldCFException {
    GrantsThread t = new GrantsThread(getClient());
    try {
        t.start();
        t.finishUp();
        return t.getResult();
    } catch (InterruptedException e) {
        t.interrupt();
        throw new ManifoldCFException("Interrupted: " + e.getMessage(), e, ManifoldCFException.INTERRUPTED);
    } catch (java.net.SocketTimeoutException e) {
        handleIOException(e);
    } catch (InterruptedIOException e) {
        t.interrupt();
        handleIOException(e);
    } catch (IOException e) {
        handleIOException(e);
    } catch (ResponseException e) {
        handleResponseException(e);
    }
    return null;
}
Also used : InterruptedIOException(java.io.InterruptedIOException) ManifoldCFException(org.apache.manifoldcf.core.interfaces.ManifoldCFException) InterruptedIOException(java.io.InterruptedIOException) IOException(java.io.IOException)

Example 23 with ManifoldCFException

use of org.apache.manifoldcf.core.interfaces.ManifoldCFException in project manifoldcf by apache.

the class SPSProxyHelper method getFieldValues.

/**
 * Gets a list of field values of the given document
 * @param fieldNames
 * @param site
 * @param docId
 * @return set of the field values
 */
public Map<String, String> getFieldValues(String[] fieldNames, String site, String docLibrary, String docId, boolean dspStsWorks) throws ManifoldCFException, ServiceInterruption {
    if (Logging.connectors.isDebugEnabled())
        Logging.connectors.debug("SharePoint: In getFieldValues; fieldNames=" + fieldNames + ", site='" + site + "', docLibrary='" + docLibrary + "', docId='" + docId + "', dspStsWorks=" + dspStsWorks);
    long currentTime;
    try {
        HashMap<String, String> result = new HashMap<String, String>();
        // root case
        if (site.compareTo("/") == 0)
            site = "";
        if (dspStsWorks) {
            StsAdapterWS listService = new StsAdapterWS(baseUrl + site, userName, password, configuration, httpClient);
            StsAdapterSoapStub stub = (StsAdapterSoapStub) listService.getStsAdapterSoapHandler();
            String[] vArray = new String[1];
            vArray[0] = "1.0";
            VersionsHeader myVersion = new VersionsHeader();
            myVersion.setVersion(vArray);
            stub.setHeader("http://schemas.microsoft.com/sharepoint/dsp", "versions", myVersion);
            RequestHeader reqHeader = new RequestHeader();
            reqHeader.setDocument(DocumentType.content);
            reqHeader.setMethod(MethodType.query);
            stub.setHeader("http://schemas.microsoft.com/sharepoint/dsp", "request", reqHeader);
            QueryRequest myRequest = new QueryRequest();
            DSQuery sQuery = new DSQuery();
            sQuery.setSelect("/list[@id='" + docLibrary + "']");
            sQuery.setResultContent(ResultContentType.dataOnly);
            myRequest.setDsQuery(sQuery);
            DspQuery spQuery = new DspQuery();
            spQuery.setRowLimit(1);
            // For the Requested Fields
            if (fieldNames.length > 0) {
                Fields spFields = new Fields();
                Field[] fieldArray = new Field[0];
                ArrayList fields = new ArrayList();
                Field spField = new Field();
                for (String fieldName : fieldNames) {
                    spField = new Field();
                    spField.setName(fieldName);
                    spField.setAlias(fieldName);
                    fields.add(spField);
                }
                spFields.setField((Field[]) fields.toArray(fieldArray));
                spQuery.setFields(spFields);
            }
            // Of this document
            DspQueryWhere spWhere = new DspQueryWhere();
            org.apache.axis.message.MessageElement criterion = new org.apache.axis.message.MessageElement((String) null, "Contains");
            SOAPElement seFieldRef = criterion.addChildElement("FieldRef");
            seFieldRef.addAttribute(SOAPFactory.newInstance().createName("Name"), "FileRef");
            SOAPElement seValue = criterion.addChildElement("Value");
            seValue.addAttribute(SOAPFactory.newInstance().createName("Type"), "String");
            seValue.setValue(docId);
            org.apache.axis.message.MessageElement[] criteria = { criterion };
            spWhere.set_any(criteria);
            spQuery.setWhere((DspQueryWhere) spWhere);
            // Set Criteria
            myRequest.getDsQuery().setQuery(spQuery);
            StsAdapterSoap call = stub;
            // Make Request
            QueryResponse resp = call.query(myRequest);
            org.apache.axis.message.MessageElement[] list = resp.get_any();
            final String xmlResponse = list[0].toString();
            if (Logging.connectors.isDebugEnabled()) {
                Logging.connectors.debug("SharePoint: getFieldValues xml response: '" + xmlResponse + "'");
            }
            final XMLDoc doc;
            try {
                doc = new XMLDoc(xmlResponse);
            } catch (ManifoldCFException e) {
                return null;
            }
            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);
            // <Shared_X0020_Documents />
            parent = nodeList.get(0);
            nodeList.clear();
            doc.processPath(nodeList, "*", parent);
            // 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();
            final String xmlResponse = list[0].toString();
            if (Logging.connectors.isDebugEnabled()) {
                Logging.connectors.debug("SharePoint: getListItems FileRef value '" + sitePlusDocId + "', xml response: '" + xmlResponse + "'");
            }
            ArrayList nodeList = new ArrayList();
            final XMLDoc doc;
            try {
                doc = new XMLDoc(xmlResponse);
            } catch (ManifoldCFException e) {
                return null;
            }
            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));
                }
            }
        }
        return result;
    } catch (javax.xml.soap.SOAPException e) {
        throw new ManifoldCFException("Soap exception: " + e.getMessage(), e);
    } catch (java.net.MalformedURLException e) {
        throw new ManifoldCFException("Bad SharePoint url: " + e.getMessage(), e);
    } catch (javax.xml.rpc.ServiceException e) {
        if (Logging.connectors.isDebugEnabled())
            Logging.connectors.debug("SharePoint: Got a service exception getting field values for site " + site + " library " + docLibrary + " document '" + docId + "' - retrying", e);
        currentTime = System.currentTimeMillis();
        throw new ServiceInterruption("Service exception: " + e.getMessage(), e, currentTime + 300000L, currentTime + 12 * 60 * 60000L, -1, true);
    } catch (org.apache.axis.AxisFault e) {
        // Bad XML can come from Microsoft.
        if (e.getCause() != null && (e.getCause() instanceof org.xml.sax.SAXParseException)) {
            return null;
        }
        if (e.getFaultCode().equals(new javax.xml.namespace.QName("http://xml.apache.org/axis/", "HTTP"))) {
            org.w3c.dom.Element elem = e.lookupFaultDetail(new javax.xml.namespace.QName("http://xml.apache.org/axis/", "HttpErrorCode"));
            if (elem != null) {
                elem.normalize();
                String httpErrorCode = elem.getFirstChild().getNodeValue().trim();
                // 302 is what SharePoint returns for external sites
                if (httpErrorCode.equals("404") || httpErrorCode.equals("302"))
                    return null;
                else if (httpErrorCode.equals("403"))
                    throw new ManifoldCFException("Remote procedure exception: " + e.getMessage(), e);
                else if (httpErrorCode.equals("401")) {
                    if (Logging.connectors.isDebugEnabled())
                        Logging.connectors.debug("SharePoint: Crawl user does not have sufficient privileges to get field values for site " + site + " library " + docLibrary + " - skipping", e);
                    return null;
                }
                throw new ManifoldCFException("Unexpected http error code " + httpErrorCode + " accessing SharePoint at " + baseUrl + site + ": " + e.getMessage(), e);
            }
            throw new ManifoldCFException("Unknown http error occurred: " + e.getMessage(), e);
        }
        if (e.getFaultCode().equals(new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/envelope/", "Server.userException"))) {
            String exceptionName = e.getFaultString();
            if (exceptionName.equals("java.lang.InterruptedException"))
                throw new ManifoldCFException("Interrupted", ManifoldCFException.INTERRUPTED);
        }
        // I don't know if this is what you get when the library is missing, but here's hoping.
        if (e.getMessage().indexOf("List does not exist") != -1)
            return null;
        if (Logging.connectors.isDebugEnabled())
            Logging.connectors.debug("SharePoint: Got a remote exception getting field values for site " + site + " library " + docLibrary + " document [" + docId + "] - retrying", e);
        currentTime = System.currentTimeMillis();
        throw new ServiceInterruption("Remote procedure exception: " + e.getMessage(), e, currentTime + 300000L, currentTime + 3 * 60 * 60000L, -1, false);
    } catch (java.rmi.RemoteException e) {
        throw new ManifoldCFException("Unexpected remote exception occurred: " + e.getMessage(), e);
    }
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) MessageElement(org.apache.axis.message.MessageElement) MessageElement(org.apache.axis.message.MessageElement) javax.xml.soap(javax.xml.soap) com.microsoft.schemas.sharepoint.soap(com.microsoft.schemas.sharepoint.soap) MessageElement(org.apache.axis.message.MessageElement) XMLDoc(org.apache.manifoldcf.core.common.XMLDoc) ServiceInterruption(org.apache.manifoldcf.agents.interfaces.ServiceInterruption) QName(javax.xml.namespace.QName) ManifoldCFException(org.apache.manifoldcf.core.interfaces.ManifoldCFException)

Example 24 with ManifoldCFException

use of org.apache.manifoldcf.core.interfaces.ManifoldCFException in project manifoldcf by apache.

the class SPSProxyHelper method getLists.

/**
 * Gets a list of lists given a parent site
 * @param parentSite the site to search for lists, empty string for root
 * @return lists of NameValue objects, representing lists
 */
public List<NameValue> getLists(String parentSite, String parentSiteDecoded) throws ManifoldCFException, ServiceInterruption {
    if (Logging.connectors.isDebugEnabled())
        Logging.connectors.debug("SharePoint: In getLists; parentSite='" + parentSite + "', parentSiteDecoded='" + parentSiteDecoded + "'");
    long currentTime;
    try {
        ArrayList<NameValue> result = new ArrayList<NameValue>();
        String parentSiteRequest = parentSite;
        if (parentSiteRequest.equals("/")) {
            // root case
            parentSiteRequest = "";
            parentSiteDecoded = "";
        }
        ListsWS listsService = new ListsWS(baseUrl + parentSiteRequest, userName, password, configuration, httpClient);
        ListsSoap listsCall = listsService.getListsSoapHandler();
        GetListCollectionResponseGetListCollectionResult listResp = listsCall.getListCollection();
        org.apache.axis.message.MessageElement[] lists = listResp.get_any();
        final String xmlResponse = lists[0].toString();
        if (Logging.connectors.isDebugEnabled())
            Logging.connectors.debug("SharePoint: getLists xml response: " + xmlResponse);
        final XMLDoc doc;
        try {
            doc = new XMLDoc(xmlResponse);
        } catch (ManifoldCFException e) {
            return null;
        }
        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();
        // <ns1:Lists>
        doc.processPath(nodeList, "*", parent);
        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");
                // This is the pretty name
                String title = doc.getValue(o, "Title");
                // Leave this in for the moment
                if (Logging.connectors.isDebugEnabled())
                    Logging.connectors.debug("SharePoint: List: '" + urlPath + "', '" + title + "'");
                // 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)
                            continue;
                        // 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)
                                continue;
                            // throw new ManifoldCFException("Bad list view url without 'Lists': '"+urlPath+"'");
                            pathpart = urlPath.substring(index + 1, k);
                        }
                        if (pathpart.length() != 0 && !pathpart.equals("_catalogs")) {
                            if (title == null || title.length() == 0)
                                title = pathpart;
                            result.add(new NameValue(pathpart, title));
                        }
                    } else {
                        Logging.connectors.warn("SharePoint: List view url is not in the expected form: '" + urlPath + "'; expected something beginning with '" + prefixPath + "'; skipping");
                    }
                }
            }
        }
        return result;
    } catch (java.net.MalformedURLException e) {
        throw new ManifoldCFException("Bad SharePoint url: " + e.getMessage(), e);
    } catch (javax.xml.rpc.ServiceException e) {
        if (Logging.connectors.isDebugEnabled())
            Logging.connectors.debug("SharePoint: Got a service exception getting lists for site " + parentSite + " - retrying", e);
        currentTime = System.currentTimeMillis();
        throw new ServiceInterruption("Service exception: " + e.getMessage(), e, currentTime + 300000L, currentTime + 12 * 60 * 60000L, -1, true);
    } catch (org.apache.axis.AxisFault e) {
        // Bad XML can come from Microsoft.
        if (e.getCause() != null && (e.getCause() instanceof org.xml.sax.SAXParseException)) {
            return null;
        }
        if (e.getFaultCode().equals(new javax.xml.namespace.QName("http://xml.apache.org/axis/", "HTTP"))) {
            org.w3c.dom.Element elem = e.lookupFaultDetail(new javax.xml.namespace.QName("http://xml.apache.org/axis/", "HttpErrorCode"));
            if (elem != null) {
                elem.normalize();
                String httpErrorCode = elem.getFirstChild().getNodeValue().trim();
                // 302 is what SharePoint returns for external sites
                if (httpErrorCode.equals("404") || httpErrorCode.equals("302"))
                    return null;
                else if (httpErrorCode.equals("403"))
                    throw new ManifoldCFException("Remote procedure exception: " + e.getMessage(), e);
                else if (httpErrorCode.equals("401")) {
                    if (Logging.connectors.isDebugEnabled())
                        Logging.connectors.debug("SharePoint: Crawl user does not have sufficient privileges to read lists for site " + parentSite + " - skipping", e);
                    return null;
                }
                throw new ManifoldCFException("Unexpected http error code " + httpErrorCode + " accessing SharePoint at " + baseUrl + parentSite + ": " + e.getMessage(), e);
            }
            throw new ManifoldCFException("Unknown http error occurred: " + e.getMessage(), e);
        }
        if (e.getFaultCode().equals(new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/envelope/", "Server.userException"))) {
            String exceptionName = e.getFaultString();
            if (exceptionName.equals("java.lang.InterruptedException"))
                throw new ManifoldCFException("Interrupted", ManifoldCFException.INTERRUPTED);
        }
        if (Logging.connectors.isDebugEnabled())
            Logging.connectors.debug("SharePoint: Got a remote exception reading lists for site " + parentSite + " - retrying", e);
        currentTime = System.currentTimeMillis();
        throw new ServiceInterruption("Remote procedure exception: " + e.getMessage(), e, currentTime + 300000L, currentTime + 3 * 60 * 60000L, -1, false);
    } catch (java.rmi.RemoteException e) {
        throw new ManifoldCFException("Unexpected remote exception occurred: " + e.getMessage(), e);
    }
}
Also used : MessageElement(org.apache.axis.message.MessageElement) ArrayList(java.util.ArrayList) XMLDoc(org.apache.manifoldcf.core.common.XMLDoc) ServiceInterruption(org.apache.manifoldcf.agents.interfaces.ServiceInterruption) QName(javax.xml.namespace.QName) MessageElement(org.apache.axis.message.MessageElement) ManifoldCFException(org.apache.manifoldcf.core.interfaces.ManifoldCFException)

Example 25 with ManifoldCFException

use of org.apache.manifoldcf.core.interfaces.ManifoldCFException in project manifoldcf by apache.

the class SPSProxyHelper method checkConnection.

/**
 * @return true if connection OK
 * @throws ManifoldCFException
 * @throws ServiceInterruption
 */
public boolean checkConnection(String site, boolean sps30) throws ManifoldCFException, ServiceInterruption {
    long currentTime;
    try {
        if (site.equals("/"))
            site = "";
        // Attempt a listservice call
        ListsWS listService = new ListsWS(baseUrl + site, userName, password, configuration, httpClient);
        ListsSoap listCall = listService.getListsSoapHandler();
        listCall.getListCollection();
        // If this is 3.0, we should also attempt to reach our custom webservice
        if (sps30) {
            // The web service allows us to get acls for a site, so that's what we will attempt
            MCPermissionsWS aclService = new MCPermissionsWS(baseUrl + site, userName, password, configuration, httpClient);
            com.microsoft.sharepoint.webpartpages.PermissionsSoap aclCall = aclService.getPermissionsSoapHandler();
            aclCall.getPermissionCollection("/", "Web");
        }
        return true;
    } catch (java.net.MalformedURLException e) {
        throw new ManifoldCFException("Bad SharePoint url: " + e.getMessage(), e);
    } catch (javax.xml.rpc.ServiceException e) {
        if (Logging.connectors.isDebugEnabled())
            Logging.connectors.debug("SharePoint: Got a service exception checking connection - retrying", e);
        currentTime = System.currentTimeMillis();
        throw new ServiceInterruption("Service exception: " + e.getMessage(), e, currentTime + 300000L, currentTime + 12 * 60 * 60000L, -1, true);
    } catch (org.apache.axis.AxisFault e) {
        if (e.getFaultCode().equals(new javax.xml.namespace.QName("http://xml.apache.org/axis/", "HTTP"))) {
            org.w3c.dom.Element elem = e.lookupFaultDetail(new javax.xml.namespace.QName("http://xml.apache.org/axis/", "HttpErrorCode"));
            if (elem != null) {
                elem.normalize();
                String httpErrorCode = elem.getFirstChild().getNodeValue().trim();
                // 302 is what SharePoint returns for external sites
                if (httpErrorCode.equals("404") || httpErrorCode.equals("302")) {
                    // Page did not exist
                    throw new ManifoldCFException("The site at " + baseUrl + site + " did not exist or was external; skipping");
                } else if (httpErrorCode.equals("401"))
                    throw new ManifoldCFException("Crawl user did not authenticate properly, or has insufficient permissions to access " + baseUrl + site + ": " + e.getMessage(), e);
                else if (httpErrorCode.equals("403"))
                    throw new ManifoldCFException("Http error " + httpErrorCode + " while reading from " + baseUrl + site + " - check IIS and SharePoint security settings! " + e.getMessage(), e);
                else if (httpErrorCode.equals("302"))
                    throw new ManifoldCFException("The correct version of ManifoldCF's MCPermissions web service may not be installed on the target SharePoint server.  MCPermissions service is needed for SharePoint repositories version 3.0 or higher, to allow access to security information for files and folders.  Consult your system administrator.");
                else
                    throw new ManifoldCFException("Unexpected http error code " + httpErrorCode + " accessing SharePoint at " + baseUrl + site + ": " + e.getMessage(), e);
            }
            throw new ManifoldCFException("Unknown http error occurred: " + e.getMessage(), e);
        } else if (e.getFaultCode().equals(new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/envelope/", "Server"))) {
            org.w3c.dom.Element elem = e.lookupFaultDetail(new javax.xml.namespace.QName("http://schemas.microsoft.com/sharepoint/soap/", "errorcode"));
            if (elem != null) {
                elem.normalize();
                String sharepointErrorCode = elem.getFirstChild().getNodeValue().trim();
                org.w3c.dom.Element elem2 = e.lookupFaultDetail(new javax.xml.namespace.QName("http://schemas.microsoft.com/sharepoint/soap/", "errorstring"));
                String errorString = "";
                if (elem != null)
                    errorString = elem2.getFirstChild().getNodeValue().trim();
                throw new ManifoldCFException("Accessing site " + site + " failed with unexpected SharePoint error code " + sharepointErrorCode + ": " + errorString, e);
            }
            throw new ManifoldCFException("Unknown SharePoint server error accessing site " + site + " - axis fault = " + e.getFaultCode().getLocalPart() + ", detail = " + e.getFaultString(), e);
        }
        if (e.getFaultCode().equals(new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/envelope/", "Server.userException"))) {
            String exceptionName = e.getFaultString();
            if (exceptionName.equals("java.lang.InterruptedException"))
                throw new ManifoldCFException("Interrupted", ManifoldCFException.INTERRUPTED);
        }
        throw new ManifoldCFException("Got an unknown remote exception accessing site " + site + " - axis fault = " + e.getFaultCode().getLocalPart() + ", detail = " + e.getFaultString(), e);
    } catch (java.rmi.RemoteException e) {
        // So, fail hard if we see it.
        throw new ManifoldCFException("Got an unexpected remote exception accessing site " + site + ": " + e.getMessage(), e);
    }
}
Also used : MessageElement(org.apache.axis.message.MessageElement) ServiceInterruption(org.apache.manifoldcf.agents.interfaces.ServiceInterruption) QName(javax.xml.namespace.QName) ManifoldCFException(org.apache.manifoldcf.core.interfaces.ManifoldCFException) QName(javax.xml.namespace.QName)

Aggregations

ManifoldCFException (org.apache.manifoldcf.core.interfaces.ManifoldCFException)174 IOException (java.io.IOException)81 InterruptedIOException (java.io.InterruptedIOException)71 ServiceInterruption (org.apache.manifoldcf.agents.interfaces.ServiceInterruption)32 ArrayList (java.util.ArrayList)27 MessageElement (org.apache.axis.message.MessageElement)23 RemoteException (java.rmi.RemoteException)22 InputStream (java.io.InputStream)18 SpecificationNode (org.apache.manifoldcf.core.interfaces.SpecificationNode)17 QName (javax.xml.namespace.QName)15 Date (java.util.Date)14 RepositoryDocument (org.apache.manifoldcf.agents.interfaces.RepositoryDocument)14 XMLDoc (org.apache.manifoldcf.core.common.XMLDoc)12 MalformedURLException (java.net.MalformedURLException)11 UnknownHostException (java.net.UnknownHostException)11 SmbFile (jcifs.smb.SmbFile)9 Iterator (java.util.Iterator)8 ConfigurationNode (org.apache.manifoldcf.core.interfaces.ConfigurationNode)8 HashMap (java.util.HashMap)7 CmisConnectionException (org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException)7