return generatedCache = prettyPrintJava(builder.finish().toJavaString());
return generatedCache = prettyPrintJava(builder.finish().toJavaString());
@Override public String getCanonicalString(final Context context) { final BlockBuilder<AnonymousClassStructureBuilder> initBlock = ObjectBuilder.newInstanceOf(HashMap.class, context).extend().initialize(); for (final Map.Entry<Object, Object> v : getValue().entrySet()) { initBlock.append(Stmt.loadVariable("this").invoke("put", LiteralFactory.getLiteral(v.getKey()), LiteralFactory.getLiteral(v.getValue()))); } return initBlock.finish().finish().toJavaString(); } }
@Override public String getCanonicalString(final Context context) { final BlockBuilder<AnonymousClassStructureBuilder> initBlock = ObjectBuilder.newInstanceOf(HashMap.class, context).extend().initialize(); for (final Map.Entry<Object, Object> v : getValue().entrySet()) { initBlock.append(Stmt.loadVariable("this").invoke("put", LiteralFactory.getLiteral(v.getKey()), LiteralFactory.getLiteral(v.getValue()))); } return initBlock.finish().finish().toJavaString(); } }
@Test public void testObjectCreationOfUninstantiableType() { try { Stmt.newObject(List.class).toJavaString(); fail("Expected InvalidTypeExcpetion"); } catch (InvalidTypeException e) { // Expected, List is not instantiable } }
@Test public void testObjectCreationWithParameterizedType() { final String s = StatementBuilder.create().newObject(new TypeLiteral<ArrayList<String>>() { }).toJavaString(); assertEquals("failed to generate new object with parameterized type", "new java.util.ArrayList<String>()", s); }
@Override public String getCanonicalString(final Context context) { final BlockBuilder<AnonymousClassStructureBuilder> initBlock = ObjectBuilder.newInstanceOf(ArrayList.class, context).extend().initialize(); for (final Object v : getValue()) { initBlock.append(Stmt.loadVariable("this").invoke("add", LiteralFactory.getLiteral(context, v))); } return initBlock.finish().finish().toJavaString(); } }
generatedCache = prettyPrintJava(builder.finish().toJavaString()); } catch (final NotLiteralizableException e) { final MetaMethod m = methodReturnVals.get(e.getNonLiteralizableObject());
@Override public String getCanonicalString(final Context context) { final BlockBuilder<AnonymousClassStructureBuilder> initBlock = ObjectBuilder.newInstanceOf(ArrayList.class, context).extend().initialize(); for (final Object v : getValue()) { initBlock.append(Stmt.loadVariable("this").invoke("add", LiteralFactory.getLiteral(context, v))); } return initBlock.finish().finish().toJavaString(); } }
@Override public String getCanonicalString(final Context context) { final BlockBuilder<AnonymousClassStructureBuilder> initBlock = ObjectBuilder.newInstanceOf(HashSet.class, context).extend().initialize(); for (final Object v : getValue()) { initBlock.append(Stmt.loadVariable("this").invoke("add", LiteralFactory.getLiteral(v))); } return initBlock.finish().finish().toJavaString(); } }
@Override public String getCanonicalString(final Context context) { final BlockBuilder<AnonymousClassStructureBuilder> initBlock = ObjectBuilder.newInstanceOf(HashSet.class, context).extend().initialize(); for (final Object v : getValue()) { initBlock.append(Stmt.loadVariable("this").invoke("add", LiteralFactory.getLiteral(v))); } return initBlock.finish().finish().toJavaString(); } }
@Test public void testObjectCreationWithAutoImportedParameterizedType() { final Context c = Context.create().autoImport(); final String s = StatementBuilder.create(c).newObject(new TypeLiteral<ArrayList<Date>>() { }).toJavaString(); assertEquals("failed to generate new object with parameterized type", "new ArrayList<Date>()", s); }
@Test public void testObjectCreationWithFullyQualifiedParameterizedTypeAndClassImport() { final Context c = Context.create().addImport(MetaClassFactory.get(ArrayList.class)); final String s = StatementBuilder.create(c).newObject(new TypeLiteral<ArrayList<Date>>() { }).toJavaString(); assertEquals("failed to generate new object with parameterized type", "new ArrayList<java.util.Date>()", s); }
@Test public void testObjectCreationWithParameterizedTypeAndClassImport() { final Context c = Context.create().addImport(MetaClassFactory.get(ArrayList.class)); final String s = StatementBuilder.create(c).newObject(new TypeLiteral<ArrayList<String>>() { }).toJavaString(); assertEquals("failed to generate new object with parameterized type", "new ArrayList<String>()", s); }
@Test public void testObjectCreationWithNestedParameterizedTypeAndClassImports() { final Context c = Context.create() .addImport(MetaClassFactory.get(ArrayList.class)) .addImport(MetaClassFactory.get(HashMap.class)); final String s = StatementBuilder.create(c) .newObject(new TypeLiteral<ArrayList<ArrayList<HashMap<String, Integer>>>>() { }).toJavaString(); assertEquals("failed to generate new object with parameterized type", "new ArrayList<ArrayList<HashMap<String, Integer>>>()", s); }
@Test public void testParameterizedImplementation() throws Exception { final MetaClass mrshlrClass = parameterizedAs(Mrshlr.class, typeParametersOf(Bar.class)); final ObjectBuilder builder = Stmt.newObject(mrshlrClass).extend() .publicOverridesMethod("get") .finish() .finish(); final String javaString = builder.toJavaString(); assertEquals("new org.jboss.errai.codegen.test.model.Mrshlr<org.jboss.errai.codegen.test.model.Bar>() {\n" + " public Class<org.jboss.errai.codegen.test.model.Bar> get() {\n" + "\n" + " }\n" + "}", javaString); } }
@Test public void testAnonymousAnnotation() { String src = ObjectBuilder.newInstanceOf(Retention.class) .extend() .publicOverridesMethod("annotationType") .append(Stmt.load(Retention.class).returnValue()) .finish() .finish() .toJavaString(); assertEquals("failed to generate anonymous annotation with overloaded method", "new java.lang.annotation.Retention() {\n" + "public Class annotationType() {\n" + "return java.lang.annotation.Retention.class;\n" + "}\n" + "}", src); }
@Test public void testAnonymousClass() { String src = ObjectBuilder.newInstanceOf(Bar.class, Context.create().autoImport()) .extend() .publicOverridesMethod("setName", Parameter.of(String.class, "name")) .append(Stmt.loadClassMember("name").assignValue(Variable.get("name"))) .finish() .finish() .toJavaString(); assertEquals("failed to generate anonymous class with overloaded construct", "new Bar() {\n" + "public void setName(String name) {\n" + "this.name = name;\n" + "}\n" + "}", src); }
@Test public void testAnonymousClassWithConstructor() { String src = ObjectBuilder.newInstanceOf(Bar.class, Context.create().autoImport()) .extend("test") .publicOverridesMethod("setName", Parameter.of(String.class, "name")) .append(Stmt.loadClassMember("name").assignValue(Variable.get("name"))) .finish() .finish() .toJavaString(); assertEquals("failed to generate anonymous class with overloaded construct", "new Bar(\"test\") {\n" + "public void setName(String name) {\n" + "this.name = name;\n" + "}\n" + "}", src); }
@Test public void testAnonymousClassWithInitializationBlock() { String src = ObjectBuilder.newInstanceOf(Bar.class, Context.create().autoImport()) .extend() .initialize() .append(Stmt.loadClassMember("name").assignValue("init")) .finish() .publicOverridesMethod("setName", Parameter.of(String.class, "name")) .append(Stmt.loadClassMember("name").assignValue(Variable.get("name"))) .finish() .finish() .toJavaString(); assertEquals("failed to generate anonymous class with overloaded construct", "new Bar() {\n" + "{\n" + "name = \"init\";" + "\n}\n" + "public void setName(String name) {\n" + "this.name = name;\n" + "}\n" + "}", src); }