Ejemplo n.º 1
0
  public Set<Element> process(
      SetMultimap<Class<? extends Annotation>, Element> elementsByAnnotation) {
    for (Element element : elementsByAnnotation.get(Event.class)) {
      String eventBusName = Utils.findEnclosingTypeElement(element).getQualifiedName().toString();

      // check if an event with the same name already exits!
      Set<String> eventBusNames = processorContext.getEventContextMap().keySet();
      for (String ebName : eventBusNames) {
        Set<String> eventNames = processorContext.getEventContextMap().get(ebName).keySet();
        for (String eName : eventNames) {
          if (element.getSimpleName().toString().equals(eName)) {
            messager.printMessage(
                Diagnostic.Kind.ERROR,
                String.format(
                    "Event-name: %s is already used. Please choose another name. (It is not possible to work with same event-name and different signatures.",
                    element.getSimpleName().toString()));
            return ImmutableSet.of();
          }
        }
      }

      // create context
      EventContext eventContext = EventContext.create(messager, types, elements, element);
      // save eventContext
      this.processorContext.put(eventBusName, element.getSimpleName().toString(), eventContext);
      System.out.println("Processing Mvp4gInternalEvent: " + element.getSimpleName());
      if (eventContext == null) {
        return ImmutableSet.of(); // error message already emitted
      }
      try {
        EventWriter writer =
            EventWriter.builder()
                .messenger(super.messager)
                .context(super.processorContext)
                .elements(super.elements)
                .filer(super.filer)
                .types(super.types)
                .eventContext(eventContext)
                .build();
        writer.write();
      } catch (IOException ioe) {
        createErrorMessage(
            "Error generating source file for type " + eventContext.getEventClassName(), ioe);
      }
    }
    return ImmutableSet.of();
  }