Search in sources :

Example 1 with AsyncClient

use of com.dexels.navajo.client.async.AsyncClient in project navajo by Dexels.

the class NavajoMap method setDoSend.

/**
 * Use this method to call another Navajo webservice. If server is not specified, the Navajo server that is used to handle this request is also used to
 * handle the new request.
 *
 * @param method
 * @throws UserException
 */
public void setDoSend(String method, Navajo od) throws UserException, ConditionErrorException, SystemException {
    if (serviceCalled) {
        logger.warn("DO NOT USE A NAVAJOMAP TO CALL A SECOND WEBSERVICE, USE NEW NAVAJOMAP INSTEAD");
    }
    // Reset current msgPointer when performing new doSend.
    msgPointer = null;
    setMethod(method);
    this.outDoc = od;
    this.username = (username == null) ? this.access.rpcUser : username;
    this.password = (password == null) ? this.access.rpcPwd : password;
    this.method = method;
    if (password == null)
        password = "";
    try {
        if (this.resource != null) {
            serviceCalled = true;
            AsyncClient ac = NavajoClientResourceManager.getInstance().getAsyncClient(this.resource);
            if (ac == null) {
                throw new UserException(-1, "No external resource found for: " + this.resource);
            }
            ac.callService(outDoc, method, this);
        } else if (server != null) {
            // External request.
            try {
                ManualAsyncClient ac = AsyncClientFactory.getManualInstance();
                if (ac == null) {
                    logger.warn("unable to find async client - cannot perform navajomap call!");
                    throw new UserException(-1, "AsyncClient null");
                }
                String server = this.server.startsWith("http") ? this.server : "http://" + this.server;
                Integer timeout = null;
                if (serverTimeout > -1) {
                    timeout = serverTimeout;
                }
                ac.callService(server, username, password, outDoc, method, this, timeout);
            } catch (Exception e) {
                throw new UserException(-1, e.getMessage(), e);
            }
            serviceCalled = true;
        } else // Internal request.
        {
            inDoc = null;
            serviceFinished = false;
            if (block) {
                this.run();
            } else {
                SchedulerRegistry.submit(this, lowPriority);
            }
            serviceCalled = true;
            if (getException() != null) {
                if (getException() instanceof ConditionErrorException) {
                    throw (ConditionErrorException) getException();
                } else if (getException() instanceof UserException) {
                    throw (UserException) getException();
                } else if (getException() instanceof SystemException) {
                    throw (SystemException) getException();
                } else {
                    throw new SystemException(-1, "", getException());
                }
            }
        }
    } catch (NavajoException | IOException e) {
        throw new SystemException("Error connecting to remote server", e);
    }
}
Also used : ConditionErrorException(com.dexels.navajo.server.ConditionErrorException) ManualAsyncClient(com.dexels.navajo.client.async.ManualAsyncClient) SystemException(com.dexels.navajo.script.api.SystemException) NavajoException(com.dexels.navajo.document.NavajoException) UserException(com.dexels.navajo.script.api.UserException) IOException(java.io.IOException) AsyncClient(com.dexels.navajo.client.async.AsyncClient) ManualAsyncClient(com.dexels.navajo.client.async.ManualAsyncClient) NavajoException(com.dexels.navajo.document.NavajoException) AuthorizationException(com.dexels.navajo.script.api.AuthorizationException) UserException(com.dexels.navajo.script.api.UserException) MappableException(com.dexels.navajo.script.api.MappableException) IOException(java.io.IOException) SystemException(com.dexels.navajo.script.api.SystemException) ConditionErrorException(com.dexels.navajo.server.ConditionErrorException)

Aggregations

AsyncClient (com.dexels.navajo.client.async.AsyncClient)1 ManualAsyncClient (com.dexels.navajo.client.async.ManualAsyncClient)1 NavajoException (com.dexels.navajo.document.NavajoException)1 AuthorizationException (com.dexels.navajo.script.api.AuthorizationException)1 MappableException (com.dexels.navajo.script.api.MappableException)1 SystemException (com.dexels.navajo.script.api.SystemException)1 UserException (com.dexels.navajo.script.api.UserException)1 ConditionErrorException (com.dexels.navajo.server.ConditionErrorException)1 IOException (java.io.IOException)1