void onEvent(String data, Acknowledge acknowledge) {
   Iterator<EventCallback> iter = callbacks.iterator();
   while (iter.hasNext()) {
     EventCallback cb = iter.next();
     cb.onEvent(data, acknowledge);
     if (cb instanceof OnceCallback) iter.remove();
   }
 }
Exemple #2
0
  public Object onCall(UMOEventContext context) throws Exception {
    String contents = context.getTransformedMessageAsString();
    String msg =
        StringMessageUtils.getBoilerPlate(
            "Message Received in component: "
                + context.getComponentDescriptor().getName()
                + ". Content is: "
                + StringMessageUtils.truncate(contents, 100, true),
            '*',
            80);

    logger.info(msg);

    if (eventCallback != null) {
      eventCallback.eventReceived(context, this);
    }

    Object replyMessage;
    if (returnMessage != null) {
      replyMessage = returnMessage;
    } else {
      replyMessage =
          contents
              + " Received"
              + (appendComponentName ? " " + context.getComponentDescriptor().getName() : "");
    }

    MuleManager.getInstance()
        .fireNotification(
            new FunctionalTestNotification(
                context, replyMessage, FunctionalTestNotification.EVENT_RECEIVED));

    if (throwException) {
      throw new MuleException(Message.createStaticMessage("Functional Test Component Exception"));
    }

    return replyMessage;
  }
Exemple #3
0
  public Object onCall(UMOEventContext context) throws Exception {
    String contents = context.getMessageAsString();
    String msg = null;
    msg =
        StringMessageHelper.getBoilerPlate(
            "Message Received in component: "
                + context.getComponentDescriptor().getName()
                + ". Content is: "
                + StringMessageHelper.truncate(contents, 100, true),
            '*',
            80);
    logger.info(msg);

    if (eventCallback != null) {
      eventCallback.eventReceived(context, this);
    }
    if (returnMessage != null) {
      return returnMessage;
    } else {
      contents += " Received";
      return contents;
    }
  }
Exemple #4
0
  private Object fireValueEvents(
      final FieldBinding binding,
      final Object parent,
      final XmlRpcListener listener,
      EventCallback before,
      EventCallback after)
      throws XmlRpcException {
    final Class<?> parentCls = parent.getClass();
    try {
      final Field field = findField(binding, parentCls);

      field.setAccessible(true);

      Object value = field.get(parent);

      if (isSuppressedNull(field, parentCls, value)) {
        return null;
      }

      final ValueType type = typeOf(value, binding);

      if (before != null) {
        if (!before.call(value, type)) {
          return null;
        }
      }

      Converter converter = field.getAnnotation(Converter.class);
      if (converter == null) {
        Class<?> fieldType = field.getType();
        converter = fieldType.getAnnotation(Converter.class);
      }

      if (converter != null) {
        final ValueBinder vc = XBRBinderInstantiator.newValueUnbinder(converter);
        vc.generate(listener, value, recipesByClass);
      } else if (recipesByClass.containsKey(binding.getFieldType())) {
        if (type == ValueType.ARRAY) {
          value = fireArrayEvents(binding.getFieldType(), value, listener);
        } else if (type == ValueType.STRUCT) {
          value = fireStructEvents(binding.getFieldType(), value, listener);
        } else {
          throw new BindException(
              "Unknown recipe reference type: "
                  + binding.getFieldType()
                  + "\nField: "
                  + binding.getFieldName()
                  + "\nClass: "
                  + parentCls.getName());
        }

        listener.value(value, type);
      } else {
        final Contains contains = field.getAnnotation(Contains.class);
        if (Map.class.isAssignableFrom(binding.getFieldType())) {
          fireMapEvents(value, binding.getFieldName(), contains, listener);
        } else if (binding.getFieldType().isArray()
            || Collection.class.isAssignableFrom(binding.getFieldType())) {
          fireCollectionEvents(value, binding.getFieldName(), contains, listener);
        } else {
          ValueCoercion coercion = type.coercion();
          if (coercion == null) {
            throw new XmlRpcException(
                "Cannot render {} (type: {}) to string. It has no corresponding coercion, and isn't an @ArrayPart or a @StructPart!");
          }
          value = coercion.toString(value);
        }

        listener.value(value, type);
      }

      if (after != null) {
        if (!after.call(value, type)) {
          return null;
        }
      }

      return value;
    } catch (final IllegalAccessException e) {
      throw new BindException(
          "Cannot retrieve field: "
              + binding.getFieldName()
              + " in class: "
              + parentCls.getName()
              + "\nError: "
              + e.getMessage(),
          e);
    }
  }