Пример #1
0
  @Test
  public void test() throws Exception {
    final JCodeModel cm = new JCodeModel();

    final JPackage aPkg1 = cm._package("id.myapp");
    final JDefinedClass aClass_R = aPkg1._class("R");
    final JDefinedClass aClass_id = aClass_R._class(JMod.PUBLIC | JMod.STATIC, "id");
    final JFieldVar aFieldItem =
        aClass_id.field(JMod.PUBLIC | JMod.STATIC | JMod.FINAL, cm.INT, "myItem", JExpr.lit(1));
    final JDefinedClass aClass_menu = aClass_R._class(JMod.PUBLIC | JMod.STATIC, "menu");
    final JFieldVar aFieldMenu =
        aClass_menu.field(JMod.PUBLIC | JMod.STATIC | JMod.FINAL, cm.INT, "myMenu", JExpr.lit(2));

    final JPackage aPkg2 = cm._package("demo");
    final JDefinedClass aClassAct = aPkg2._class("HelloAndroidActivity_");
    final JMethod aMethodCreate = aClassAct.method(JMod.PUBLIC, cm.BOOLEAN, "onCreateOptionsMenu");
    aMethodCreate
        .body()
        .add(JExpr.ref("menuInflater").invoke("inflate").arg(aFieldMenu.fieldRef()));
    final JMethod aMethodSelected =
        aClassAct.method(JMod.PUBLIC, cm.BOOLEAN, "onOptionsItemSelected");
    aMethodSelected.body()._if(JExpr.ref("itemId_").eq(aFieldItem.fieldRef()));

    // Multiple packages - print only
    CodeModelTestsHelper.printCodeModel(cm);
  }
Пример #2
0
  public void createFactoryMethod(boolean hasSingletonScope) {

    AbstractJClass narrowedGeneratedClass =
        codeModelHelper.narrowGeneratedClass(generatedClass, annotatedElement.asType());

    JMethod factoryMethod =
        generatedClass.method(PUBLIC | STATIC, narrowedGeneratedClass, GET_INSTANCE_METHOD_NAME);

    codeModelHelper.generify(factoryMethod, annotatedElement);

    JVar factoryMethodContextParam = factoryMethod.param(getClasses().CONTEXT, "context");

    JBlock factoryMethodBody = factoryMethod.body();

    /*
     * Singletons are bound to the application context
     */
    if (hasSingletonScope) {

      JFieldVar instanceField =
          generatedClass.field(PRIVATE | STATIC, generatedClass, "instance" + generationSuffix());

      JBlock creationBlock =
          factoryMethodBody //
              ._if(instanceField.eq(_null())) //
              ._then();
      JVar previousNotifier = viewNotifierHelper.replacePreviousNotifierWithNull(creationBlock);
      creationBlock.assign(
          instanceField,
          _new(narrowedGeneratedClass)
              .arg(factoryMethodContextParam.invoke("getApplicationContext")));
      creationBlock.invoke(instanceField, getInit());
      viewNotifierHelper.resetPreviousNotifier(creationBlock, previousNotifier);

      factoryMethodBody._return(instanceField);
    } else {
      factoryMethodBody._return(_new(narrowedGeneratedClass).arg(factoryMethodContextParam));
    }
  }