/** * Generates a {@link DestructionCallback} for the {@link Templated} component. * * @return statement representing the template destruction logic. */ private List<Statement> generateTemplateDestruction(final Decorable decorable) { final List<Statement> destructionStatements = new ArrayList<>(); final Map<String, Statement> dataFields = DataFieldCodeDecorator.aggregateDataFieldMap(decorable, decorable.getDecorableDeclaringType()); final Map<String, MetaClass> dataFieldTypes = DataFieldCodeDecorator.aggregateDataFieldTypeMap(decorable, decorable.getDecorableDeclaringType()); for (final String fieldName : dataFields.keySet()) { final Statement field = dataFields.get(fieldName); final MetaClass fieldType = dataFieldTypes.get(fieldName); if (fieldType.isAssignableTo(Element.class)) { destructionStatements.add(Stmt.invokeStatic(ElementWrapperWidget.class, "removeWidget", field)); } } if (decorable.getDecorableDeclaringType().isAssignableTo(Composite.class)) { destructionStatements.add(Stmt.invokeStatic(TemplateUtil.class, "cleanupWidget", decorable.getAccessStatement())); } else { destructionStatements.add(Stmt.invokeStatic(TemplateUtil.class, "cleanupTemplated", decorable.getAccessStatement())); } return destructionStatements; }
/** * Generates a {@link DestructionCallback} for the {@link Templated} component. * * @return statement representing the template destruction logic. */ private List<Statement> generateTemplateDestruction(final Decorable decorable) { final List<Statement> destructionStatements = new ArrayList<>(); final Map<String, Statement> dataFields = DataFieldCodeDecorator.aggregateDataFieldMap(decorable, decorable.getDecorableDeclaringType()); final Map<String, MetaClass> dataFieldTypes = DataFieldCodeDecorator.aggregateDataFieldTypeMap(decorable, decorable.getDecorableDeclaringType()); for (final String fieldName : dataFields.keySet()) { final Statement field = dataFields.get(fieldName); final MetaClass fieldType = dataFieldTypes.get(fieldName); if (fieldType.isAssignableTo(Element.class)) { destructionStatements.add(Stmt.invokeStatic(ElementWrapperWidget.class, "removeWidget", field)); } } if (decorable.getDecorableDeclaringType().isAssignableTo(Composite.class)) { destructionStatements.add(Stmt.invokeStatic(TemplateUtil.class, "cleanupWidget", decorable.getAccessStatement())); } else { destructionStatements.add(Stmt.invokeStatic(TemplateUtil.class, "cleanupTemplated", decorable.getAccessStatement())); } return destructionStatements; }
@Override public void generateDecorator(final Decorable decorable, final FactoryController controller) { final Statement callbackStmt = Stmt.newObject(Runnable.class).extend() .publicOverridesMethod("run") .append(decorable.getAccessStatement()) .finish() .finish(); controller.addInitializationStatements(Collections.<Statement>singletonList(Stmt.invokeStatic(InitVotes.class, "registerOneTimeInitCallback", callbackStmt))); } }
.invoke("subscribeLocal", svcName, decorable.getAccessStatement()); .invoke("subscribe", svcName, decorable.getAccessStatement());
.invoke("subscribeLocal", svcName, decorable.getAccessStatement()); .invoke("subscribe", svcName, decorable.getAccessStatement());
/** * Generates an anonymous {@link DataSyncCallback} that will invoke the decorated sync method. */ private Statement createSyncCallback(Decorable decorable) { return Stmt.newObject(DataSyncCallback.class) .extend() .publicOverridesMethod("onSync", Parameter.of(SyncResponses.class, "responses", true)) .append(decorable.getAccessStatement(Stmt.loadVariable("responses"))) .finish() .finish(); }
= decorable.getAccessStatement();
final MetaParameter[] parameters = method.getParameters(); if (!method.getReturnType().isVoid() && parameters.length == 0) { valueAccessor = decorable.getAccessStatement(); valueAccessor = decorable.getAccessStatement(); break;
final MetaParameter[] parameters = method.getParameters(); if (!method.getReturnType().isVoid() && parameters.length == 0) { valueAccessor = decorable.getAccessStatement(); valueAccessor = decorable.getAccessStatement(); break;
bindExecStmts.add(decorable.getAccessStatement(elementAccessor));
bindExecStmts.add(decorable.getAccessStatement(elementAccessor));
Statement component = decorable.getAccessStatement(); controller.ensureMemberExposed(decorable.get());
Statement component = decorable.getAccessStatement(); controller.ensureMemberExposed(decorable.get());
@Override public void generateDecorator(final Decorable decorable, final FactoryController controller) { controller.ensureMemberExposed(decorable.get()); Statement instance = decorable.getAccessStatement(); final String name = getTemplateDataFieldName((DataField) decorable.getAnnotation(), decorable.getName()); final boolean isWidget = decorable.getType().isAssignableTo(Widget.class);
@Override public void generateDecorator(final Decorable decorable, final FactoryController controller) { controller.ensureMemberExposed(decorable.get()); Statement instance = decorable.getAccessStatement(); final String name = getTemplateDataFieldName((DataField) decorable.getAnnotation(), decorable.getName()); final boolean isWidget = decorable.getType().isAssignableTo(Widget.class);