Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Groovy AST Demyistified - 33degree

1.586 Aufrufe

Veröffentlicht am

Groovy AST Demyistified - 33degree

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

Groovy AST Demyistified - 33degree

  1. 1. Andres  Almiray   @aalmiray  Groovy ASTDemystified
  2. 2. ABOUT THE SPEAKERJava developer since the beginningTrue believer in Open SourceGroovy committer since 2007Project lead of the Griffon frameworkCurrently working for
  3. 3. AGENDAAST, How did we get here?AST TransformationsBuilding your own AST
  4. 4. AST,HOW DIDWE GETHERE?
  5. 5. ASTTRANSFORMATIONS
  6. 6. G E E V N I I L U S
  7. 7. STANDARD GROOVYDISTRO INCLUDES:*  @EqualsAndHashCode *  @AutoClone*  @ToString *  @AutoExternalize*  @TupleConstructor *  @Synchronized*  @Canonical *  @Field*  @InheritConstructors *  @Grab*  @IndexedProperty *  @GrabResolver*  @Lazy *  @CompileStatic*  @PackageScope *  @TypeChecked*  @NotYetImplemented
  8. 8. STANDARD GROOVYDISTRO INCLUDES:*  @Bindable *  @Log*  @Vetoable *  @Slf4j*  @ListenerList *  @Log4j*  @ConditionalInterrupt *  @Commons*  @ThreadInterrupt *  @Singleton*  @TimedInterrupt *  @Immutable*  @WithReadLock *  @Delegate*  @WithWriteLock *  @Category*  @Newify *  @Mixin
  9. 9. GROOVY ECOSYSTEMBRINGS:*  @ByteCode *  Griffon*  @Scalify *  @EventPublisher *  @Threading*  GContracts *  @PropertyListener *  @Invariant *  @MVCAware *  @Requires *  @MessageSourceAware *  @Ensures *  @ResourceResolverAware*  Grails *  @ResourcesAware *  @Entity *  @ThreadingAware *  @TestFor
  10. 10. GLOBAL ASTTRANSFORMATIONSGroovy – GrabGrails – GORM APIGriffon – Threading injectionSpock – the whole shebang
  11. 11. BUILDINGYOUR OWNAST
  12. 12. LOCAL ASTTRANSFORMATION1.  Define an @interface •  Easy peasy … right?2.  Define AST implementation •  huh ……3.  Profit!
  13. 13. GLOBAL ASTTRANSFORMATION1.  Add AST implementation entry to •  META-INF/services/ org.codehaus.groovy.transform.ASTTransformation2.  Define AST implementation •  ??? !!! ??? !!!3.  Profit!
  14. 14. ADDITIONAL TOOLSAST browserAST Builder
  15. 15. Thank You! @aalmirayandres.almiray@canoo.com

×