Package org.jboss.errai.bus.client.api.base

Examples of org.jboss.errai.bus.client.api.base.MessageDeliveryFailure


  public Object invokeMethodFromMessage(Message message) {
    final List<Object> parms = message.get(List.class, "MethodParms");

    if ((parms == null && targetTypes.length != 0) || (parms.size() != targetTypes.length)) {
      throw new MessageDeliveryFailure(
          "wrong number of arguments sent to endpoint. (received: "
              + (parms == null ? 0 : parms.size())
              + "; required: " + targetTypes.length + ")");
    }

    try {
      RpcContext.set(message);
      return method.invoke(serviceProvider.get(message), parms.toArray(new Object[parms.size()]));
    }
    catch (QueueUnavailableException e) {
      throw e;
    }
    catch (MessageDeliveryFailure e) {
      throw e;
    }
    catch (InvocationTargetException e) {
      log.debug("RPC endpoint threw exception:", e.getCause());
      throw new MessageDeliveryFailure("error invoking endpoint", e.getCause(), true);
    }
    catch (Exception e) {
      throw new MessageDeliveryFailure("error invoking endpoint", e);
    }
    finally {
      RpcContext.remove();
    }
  }
View Full Code Here


  public void sendNowWith(RequestDispatcher viaThis) {
    try {
      viaThis.dispatch(this);
    }
    catch (Exception e) {
      throw new MessageDeliveryFailure("unable to deliver message: " + e.getMessage(), e);
    }
  }
View Full Code Here

      }
    }
  }

  private void sendDeliveryFailure(Message m) {
    MessageDeliveryFailure mdf
        = new MessageDeliveryFailure("could not deliver message because the outgoing queue is full");

    if (m.getErrorCallback() == null || m.getErrorCallback().error(m, mdf)) {
      ErrorHelper.sendClientError(svc.getBus(), m, mdf.getMessage(), mdf);
      throw mdf;
    }
  }
View Full Code Here

  public void callback(Message message) {
    try {
      method.invoke(instance, message);
    }
    catch (Exception e) {
      throw new MessageDeliveryFailure(e);
    }
  }
View Full Code Here

   */
  public void callback(Message message) {
    Object[] parms = message.get(Object[].class, "MethodParms");

    if ((parms == null && targetTypes.length != 0) || (parms.length != targetTypes.length)) {
      throw new MessageDeliveryFailure("wrong number of arguments sent to endpoint. (received: "
          + (parms == null ? 0 : parms.length) + "; required: " + targetTypes.length + ")");
    }
    for (int i = 0; i < parms.length; i++) {
      if (parms[i] != null && !targetTypes[i].isAssignableFrom(parms[i].getClass())) {
        if (DataConversion.canConvert(targetTypes[i], parms[i].getClass())) {
          parms[i] = DataConversion.convert(parms[i], targetTypes[i]);
        }
        else {
          throw new MessageDeliveryFailure("type mismatch in method parameters");
        }
      }
    }

    try {
      method.invoke(genericSvc, parms);
    }
    catch (Exception e) {
      throw new MessageDeliveryFailure("error invoking endpoint", e);
    }
  }
View Full Code Here

    else {
      try {
        method.dispatch(message);
      }
      catch (Exception e) {
        throw new MessageDeliveryFailure(e);
      }
    }
  }
View Full Code Here

  @SuppressWarnings({"unchecked"})
  public void callback(Message message) {
    Object[] parms = message.get(Object[].class, "MethodParms");

    if ((parms == null && targetTypes.length != 0) || (parms.length != targetTypes.length)) {
      throw new MessageDeliveryFailure("wrong number of arguments sent to endpoint. (received: "
              + (parms == null ? 0 : parms.length) + "; required: " + targetTypes.length + ")");
    }
    for (int i = 0; i < parms.length; i++) {
      if (parms[i] != null && !targetTypes[i].isAssignableFrom(parms[i].getClass())) {
        if (canConvert(targetTypes[i], parms[i].getClass())) {
          parms[i] = convert(parms[i], targetTypes[i]);
        }
        else if (targetTypes[i].isArray()) {
          if (parms[i] instanceof Collection) {
            Collection c = (Collection) parms[i];
            parms[i] = c.toArray((Object[]) Array.newInstance(targetTypes[i].getComponentType(), c.size()));

          }
          else if (parms[i].getClass().isArray()) {

            int length = Array.getLength(parms[i]);
            Class toComponentType = parms[i].getClass().getComponentType();
            Object parmValue = parms[i];
            Object newArray = Array.newInstance(targetTypes[i].getComponentType(), length);

            for (int x = 0; x < length; x++) {
              Array.set(newArray, x, convert(Array.get(parmValue, x), toComponentType));
            }

            parms[i] = newArray;
          }

        }
        else {
          throw new MessageDeliveryFailure("type mismatch in method parameters");
        }
      }
    }

    try {
      createConversation(message)
              .subjectProvided()
              .with("MethodReply", method.invoke(serviceProvider.get(), parms))
              .noErrorHandling().sendNowWith(bus);

    }
    catch (MessageDeliveryFailure e) {
      throw e;
    }
    catch (InvocationTargetException e) {
      throw new MessageDeliveryFailure("error invoking endpoint", e.getCause());
    }
    catch (Exception e) {
      throw new MessageDeliveryFailure("error invoking endpoint", e);
    }
  }
View Full Code Here

      }

      method.invoke(instance, parmValues);
    }
    catch (Exception e) {
      throw new MessageDeliveryFailure(e);
    }
  }
View Full Code Here

   *
   * @param message - the message in question
   */
  public void callback(Message message) {
    if (!endpoints.containsKey(message.getCommandType())) {
      throw new MessageDeliveryFailure("no such endpoint '" + message.getCommandType() + "' in service: " + message.getSubject());
    }
    endpoints.get(message.getCommandType()).callback(message);
  }
View Full Code Here

        }
      }

      sendClientError(bus, message, errorMessage, e);

      if (e != null) throw new MessageDeliveryFailure(e);
    }
    finally {
      if (disconnect) disconnectRemoteBus(bus, message);
    }
  }
View Full Code Here

TOP

Related Classes of org.jboss.errai.bus.client.api.base.MessageDeliveryFailure

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.