@Override public @Nullable Invokable invoke(Invokation invokation, Object... parameters) { EncodedElement el = (EncodedElement) parameters[0]; @Nullable Map<Binding, String> overrideBindings = null; if (el.params().size() == 1 && parameters.length > 1) { overrideBindings = ImmutableMap.of( Binding.newTop(el.firstParam().name()), parameters[1].toString()); } Map<Binding, String> contextBindings = el.inBuilder() ? builderBindings : bindings; Code.Interpolator interpolator = new Code.Interpolator(rawName(), contextBindings, overrideBindings); if (isInlined(el)) { printWithIndentation(invokation, interpolator.apply(el.oneLiner())); } else { invokation.out(contextBindings.get(el.asBinding())).out("("); boolean notFirst = false; for (Param p : el.params()) { if (notFirst) { invokation.out(", "); } notFirst = true; Binding binding = Code.Binding.newTop(p.name()); invokation.out(interpolator.dereference(binding)); } invokation.out(")"); } return null; } };
@Override public Invokable invoke(Invokation invokation, Object... parameters) { String packageName = parameters[0].toString(); String simpleName = parameters[1].toString(); Element originatingElement = (Element) parameters[2]; Invokable body = (Invokable) parameters[3]; ResourceKey key = new ResourceKey(packageName, simpleName, Delegates.unwrap(originatingElement)); SourceFile javaFile = getFiles().sourceFiles.get(key); body.invoke(new Invokation(javaFile.consumer)); javaFile.complete(); return null; } };
void _t1__generateMirror(org.immutables.generator.Templates.Invokation __) { __.dl();final org.immutables.mirror.processor.Mirrors.MirrorModel m = $cast(__.param(0)); __.ln(); __.out("package "); $(__, m.$$package); __.out(";").ln(); __.ln(); __.out("import javax.lang.model.element.*;").ln(); __.out("import javax.lang.model.type.*;").ln(); __.out("import javax.lang.model.util.*;").ln(); __.out("import "); {__.out("co"); $(__, "m.google.com"); __.out("mon"); __.out(".base.Verify;").ln(); __.out("import "); {__.out("co"); $(__, "m.google.com"); __.out("mon"); __.out(".base.Preconditions;").ln(); __.out("import "); {__.out("co"); $(__, "m.google.com"); __.out("mon"); __.out(".base.Optional;").ln(); __.out("import "); {__.out("co");
void _t2__attributeExtractor(org.immutables.generator.Templates.Invokation __) { __.dl();final org.immutables.mirror.processor.Mirrors.MirrorModel.AttributeModel a = $cast(__.param(0)); __.ln(); final org.immutables.generator.Templates.Invokable brackets = new org.immutables.generator.Templates.Fragment(0) { @Override public void run(org.immutables.generator.Templates.Invokation __) { $(__, "[]"); __.dl(); }};__.dl();__.ln(); final org.immutables.generator.Templates.Invokable targetType = new org.immutables.generator.Templates.Fragment(0) { @Override public void run(org.immutables.generator.Templates.Invokation __) { $(__, targetAttributeType, a); __.dl(); }};__.dl();__.ln(); __.ln(); __.out("private static class "); $(__, toUpper, a.name); __.out("Extractor extends SimpleAnnotationValueVisitor7<Void, Void> {").ln(); __.dl(); if ($if(a.isArray)) { __.dl();__.ln(); __.out(" "); $(__, targetType); $(__, brackets); __.out(" values;").ln(); __.out(" int position;").ln(); __.ln(); __.out(" @Override").ln(); __.out(" ");
void _t5__equalsAttribute(org.immutables.generator.Templates.Invokation __) { __.dl();final org.immutables.mirror.processor.Mirrors.MirrorModel.AttributeModel a = $cast(__.param(0)); $(__, output.trim, new org.immutables.generator.Templates.Fragment(0) { @Override public void run(org.immutables.generator.Templates.Invokation __) { __.dl(); }}); __.dl(); };
@Override public void run(org.immutables.generator.Templates.Invokation __) { __.dl();__.ln(); final org.immutables.generator.Templates.Invokable getOther = new org.immutables.generator.Templates.Fragment(0) { @Override public void run(org.immutables.generator.Templates.Invokation __) { }};__.dl();__.ln(); final org.immutables.generator.Templates.Invokable getThis = new org.immutables.generator.Templates.Fragment(0) { @Override public void run(org.immutables.generator.Templates.Invokation __) { }};__.dl();__.ln(); __.dl(); if ($if(a.isArray)) { __.dl();__.ln(); __.out(" java.util.Arrays.equals("); $(__, getThis); __.out(", "); $(__, getOther); __.out(")").ln(); } else if ($if(a.isFloat())) { __.dl();__.ln(); __.out(" Float.floatToIntBits("); $(__, getThis); __.out(") == Float.floatToIntBits("); $(__, getOther); __.out(")").ln(); } else if ($if(a.isDouble())) { __.dl();__.ln(); __.out(" Double.doubleToLongBits("); $(__, getThis); __.out(") == Double.doubleToLongBits(");
void _t4__targetAttributeType(org.immutables.generator.Templates.Invokation __) { __.dl();final org.immutables.mirror.processor.Mirrors.MirrorModel.AttributeModel a = $cast(__.param(0)); $(__, output.trim, new org.immutables.generator.Templates.Fragment(0) { @Override public void run(org.immutables.generator.Templates.Invokation __) { __.dl();__.ln(); __.out(" "); __.dl(); if ($if(a.kind.isType())) { __.dl();__.ln(); __.out(" TypeMirror").ln(); __.out(" "); } else if ($if(a.kind.isAnnotation())) { __.dl();__.ln(); __.out(" AnnotationMirror").ln(); __.out(" "); } else { __.dl();__.ln(); __.out(" "); $(__, a.type); __.ln(); __.out(" "); } __.dl();__.ln(); __.dl(); }}); __.dl(); };
@Override public void run(org.immutables.generator.Templates.Invokation __) { __.dl();__.ln(); __.out(" "); __.dl(); if ($if(a.kind.isType())) { __.dl();__.ln(); __.out(" TypeMirror").ln(); __.out(" "); } else if ($if(a.kind.isAnnotation())) { __.dl();__.ln(); __.out(" AnnotationMirror").ln(); __.out(" "); } else { __.dl();__.ln(); __.out(" "); $(__, a.type); __.ln(); __.out(" "); } __.dl();__.ln(); __.dl(); }}); __.dl();
void _t0__generate(org.immutables.generator.Templates.Invokation __) { __.dl();__.ln(); __.out(" "); {final org.immutables.generator.Templates.Iteration _it1 = new org.immutables.generator.Templates.Iteration(); for (final org.immutables.mirror.processor.Mirrors.MirrorModel model : $in(allMirrors())) { __.dl();__.ln(); $(__, output.java, model.$$package, $(model.name, "Mirror"), model.element, new org.immutables.generator.Templates.Fragment(0) { @Override public void run(org.immutables.generator.Templates.Invokation __) { __.dl();__.ln(); $(__, generateMirror, model); __.ln(); __.dl(); }}); __.ln(); __.out(" "); __.dl();_it1.index++; _it1.first = false; }} __.dl();__.ln(); __.dl(); };
@Override public void run(org.immutables.generator.Templates.Invokation __) { __.dl();final org.immutables.generator.Templates.Invokable brackets = this; $(__, "[]"); __.dl(); }};__.dl();__.ln(); final org.immutables.generator.Templates.Invokable targetType = new org.immutables.generator.Templates.Fragment(0) {
public static void $(Invokation invokation, Object object) { invokation.out(object); }
@Override void apply(Invokation invokation, CharSequence content, @Nullable Templates.Invokable original) { String collapsed = CharMatcher.whitespace().trimAndCollapseFrom(content, ' '); int estimatedLimitOnThisLine = LIMIT - invokation.consumer.getCurrentIndentation().length(); if (collapsed.length() < estimatedLimitOnThisLine) { invokation.out(collapsed); } else { if (original != null) { original.invoke(invokation); } else { invokation.out(content); } } } };
public static void $(Invokation invokation, String string) { invokation.out(string); }
public static <F> void $(Invokation invokation, Predicate<? super F> predicate, F value) { invokation.out($(predicate, value)); }
static Invokation initial() { return new Invokation(new CharConsumer(), ""); }