public boolean elementIsPartOfGwtSource(Element element) { PackageElement packageElement = utils.getElements().getPackageOf(element); String packageName = packageElement.getQualifiedName() + "."; for (String sourcePackage : getSourcePackages()) { if (packageName.startsWith(sourcePackage + ".")) { return true; } } return false; }
private int indexInParent() { TypeElement parentTypeElement = asType(element.getEnclosingElement()); List<ExecutableElement> methods = methodsIn(utils.getElements().getAllMembers(parentTypeElement)); return methods.indexOf(element); }
@Override public List<ProxyEventMethod> getProxyEventMethods() { if (proxyEventMethods == null) { TypeElement presenterElement = asTypeElement(getPresenterMirror()); List<ExecutableElement> methods = methodsIn(utils.getElements().getAllMembers(presenterElement)); proxyEventMethods = FluentIterable.from(methods) .filter(method -> method.getAnnotation(ProxyEvent.class) != null) .transform(element1 -> new ProxyEventMethod(logger, utils, element1)) .toList(); ensureNoHandlerMethodClashes(); } return proxyEventMethods; }
private DeclaredType getHandlerTypeMirror() { if (handlerTypeMirror == null) { Optional<DeclaredType> optionalSuperType = nonObjectSuperclass(utils.getTypes(), utils.getElements(), getEventTypeMirror()); while (optionalSuperType.isPresent()) { DeclaredType superType = optionalSuperType.get(); if (isTypeOf(Event.class, superType)) { handlerTypeMirror = extractHandlerTypeFromEvent(superType); break; } else { optionalSuperType = nonObjectSuperclass(utils.getTypes(), utils.getElements(), superType); } } } return handlerTypeMirror; }
private boolean verifyIsGatekeeperWithParams() { TypeMirror gatekeeperMirror = extractGatekeeperMirror(); TypeMirror expectedParentMirror = utils.getElements() .getTypeElement(GatekeeperWithParams.class.getCanonicalName()) .asType(); if (gatekeeperMirror == null || !utils.getTypes().isSubtype(gatekeeperMirror, expectedParentMirror)) { logger.mandatoryWarning() .context(element) .log("Proxy annotated with @GatekeeperParams with missing or invalid gatekeeper argument. " + "A gatekeeper that implements GatekeeperWithParams must be provided to @UseGatekeeper."); return false; } return true; }
public String getTypeAccessor() { if (typeAccessor == null) { TypeElement eventTypeElement = asTypeElement(getEventTypeMirror()); List<? extends Element> members = utils.getElements().getAllMembers(eventTypeElement); Optional<ExecutableElement> methodAccessor = extractEventTypeMethodAccessor(members); Optional<VariableElement> fieldAccessor = extractEventTypeFieldAccessor(members); // TODO: We could explicitly check that in Event<H1> and Type<H2>, H1 === H2. // For now, we will get compile time error. if (methodAccessor.isPresent()) { typeAccessor = methodAccessor.get().getSimpleName().toString() + "()"; } else if (fieldAccessor.isPresent()) { typeAccessor = fieldAccessor.get().getSimpleName().toString(); } else { logger.error().context(eventTypeElement) .log("Event used with a @ProxyEvent, but it does not contain a static field `TYPE` or a static " + "method `getType()` returning a valid `Event.Type<>` instance."); throw new UnableToProcessException(); } } return typeAccessor; }