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

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


        }
      }

      sendClientError(bus, message, errorMessage, e);

      if (e != null) throw new MessageDeliveryFailure(e);
    }
    finally {
      if (disconnect) disconnectRemoteBus(bus, message);
    }
  }
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(genericSvc, 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

   *
   * @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

  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 RPC endpoint " + method, e.getCause(), true);
    }
    catch (Exception e) {
      throw new MessageDeliveryFailure("error invoking endpoint", e);
    }
    finally {
      RpcContext.remove();
    }
  }
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

  @SuppressWarnings("unchecked")
  public void callback(final 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 + ")");
    }
    else if (parms != null) {
      for (int i = 0; i < parms.size(); i++) {
        final Object p = parms.get(i);

        if (p != null && !targetTypes[i].isAssignableFrom(p.getClass())) {
          if (DataConversion.canConvert(targetTypes[i], p.getClass())) {
            parms.set(i, DataConversion.convert(p, 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

      if (method == null) {
        if (defaultAction) {
          defaultCallback.callback(message);
        }
        else {
          throw new MessageDeliveryFailure(String.format("Unrecognized command, %s, in service %s",
                  message.getCommandType(), message.getSubject()));
        }
      }
      else {
        method.dispatch(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

  @SuppressWarnings({"unchecked"})
  public void callback(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 + ")");
    }
    for (int i = 0; i < parms.size(); i++) {
       Object p = parms.get(i);

      if (p != null && !targetTypes[i].isAssignableFrom(p.getClass())) {
        if (canConvert(targetTypes[i], p.getClass())) {
          p = convert(p, targetTypes[i]);
        }
        else if (targetTypes[i].isArray()) {
          if (p instanceof Collection) {
            final Collection c = (Collection) p;
            p = c.toArray((Object[]) Array.newInstance(targetTypes[i].getComponentType(), c.size()));
          }
          else if (p.getClass().isArray()) {
            final int length = Array.getLength(p);
            final Class toComponentType = p.getClass().getComponentType();
            final Object parmValue = p;
            final 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));
            }

            p = newArray;
          }
        }
        else {
          throw new MessageDeliveryFailure("type mismatch in method parameters " +
                  " (got types: "
                  + Arrays.toString(getTypesFrom(parms))
                  + "; but expected: "
                  + Arrays.toString(targetTypes)
                  + ")");
        }
      }
    }

    try {
      RpcContext.set(message);
      final Object methReply = method.invoke(serviceProvider.get(message), parms.toArray(new Object[parms.size()]));

      if (method.getReturnType().equals(void.class)) {
        createConversation(message)
                .subjectProvided()
                .noErrorHandling().sendNowWith(bus);
      }
      else {
        createConversation(message)
                .subjectProvided()
                .with("MethodReply", methReply)
                .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);
    }
    finally {
      RpcContext.remove();
    }
  }
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

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.