javaClass.removeField(javaClass.getField("gid")); javaClass.removeField(javaClass.getField("token")); javaClass.removeField(javaClass.getField("title")); javaClass.removeField(javaClass.getField("titleJpn")); javaClass.removeField(javaClass.getField("thumb")); javaClass.removeField(javaClass.getField("category")); javaClass.removeField(javaClass.getField("posted")); javaClass.removeField(javaClass.getField("uploader")); javaClass.removeField(javaClass.getField("rating")); javaClass.removeField(javaClass.getField("simpleLanguage")); javaClass.getField("time").setPublic(); javaClass.addMethod("\t@Override\n" + "\tpublic int describeContents() {\n" + "\t\treturn 0;\n" + "\t}"); javaClass.addMethod("\t@Override\n" + "\tpublic void writeToParcel(Parcel dest, int flags) {\n" + "\t\tsuper.writeToParcel(dest, flags);\n" + "\t\tdest.writeLong(this.time);\n" + "\t}"); javaClass.addMethod("\tprotected LocalFavoriteInfo(Parcel in) {\n" + "\t\tsuper(in);\n" + "\t\tthis.time = in.readLong();\n" + "\t}").setConstructor(true); javaClass.addField("\tpublic static final Creator<LocalFavoriteInfo> CREATOR = new Creator<LocalFavoriteInfo>() {\n" + "\t\t@Override\n" + "\t\tpublic LocalFavoriteInfo createFromParcel(Parcel source) {\n" +
private static void adjustFilter() throws Exception { JavaClassSource javaClass = Roaster.parse(JavaClassSource.class, new File(FILTER_PATH)); // Set field public javaClass.getField("mode").setPublic(); javaClass.getField("text").setPublic(); javaClass.getField("enable").setPublic(); // Add hashCode method and equals method javaClass.addImport("com.hippo.util.HashCodeUtils"); javaClass.addMethod("\t@Override\n" + "\tpublic int hashCode() {\n" + "\t\treturn HashCodeUtils.hashCode(mode, text);\n" + "\t}"); javaClass.addImport("com.hippo.yorozuya.ObjectUtils"); javaClass.addMethod("\t@Override\n" + "\tpublic boolean equals(Object o) {\n" + "\t\tif (!(o instanceof Filter)) {\n" + "\t\t\treturn false;\n" + "\t\t}\n" + "\n" + "\t\tFilter filter = (Filter) o;\n" + "\t\treturn filter.mode == mode && ObjectUtils.equal(filter.text, text);\n" + "\t}"); FileWriter fileWriter = new FileWriter(FILTER_PATH); fileWriter.write(javaClass.toString()); fileWriter.close(); } }
private static void adjustQuickSearch() throws Exception { JavaClassSource javaClass = Roaster.parse(JavaClassSource.class, new File(QUICK_SEARCH_PATH)); // Set all field public javaClass.getField("id").setPublic(); javaClass.getField("name").setPublic(); javaClass.getField("mode").setPublic(); javaClass.getField("category").setPublic(); javaClass.getField("keyword").setPublic(); javaClass.getField("advanceSearch").setPublic(); javaClass.getField("minRating").setPublic(); javaClass.getField("time").setPublic(); javaClass.addMethod("\t@Override\n" + "\tpublic String toString() {\n" + "\t\treturn name;\n" + "\t}"); FileWriter fileWriter = new FileWriter(QUICK_SEARCH_PATH); fileWriter.write(javaClass.toString()); fileWriter.close(); }
JavaClassSource javaClass = Roaster.create(JavaClassSource.class); javaClass.setName(generateClassName); if (Strings.isNotBlank(generatePackageName)) { javaClass.setPackage(generatePackageName); generateClassName = generatePackageName + "." + generateClassName; javaClass.addImport("io.fabric8.arquillian.kubernetes.Session"); javaClass.addImport("io.fabric8.kubernetes.api.KubernetesClient"); javaClass.addImport("io.fabric8.kubernetes.api.model.Pod"); javaClass.addImport("org.assertj.core.api.Condition"); javaClass.addImport("org.jboss.arquillian.junit.Arquillian"); javaClass.addImport("org.jboss.arquillian.test.api.ArquillianResource"); javaClass.addImport("org.junit.Test"); javaClass.addImport("org.junit.runner.RunWith"); javaClass.addImport("io.fabric8.kubernetes.assertions.Assertions.assertThat").setStatic(true); javaClass.addAnnotation("RunWith").setLiteralValue("Arquillian.class"); javaClass.getJavaDoc().setText("Tests that the Kubernetes resources\n" + "* (Services, Replication Controllers and Pods)\n" + "* can be provisioned and start up correctly.\n" + javaClass.addField(). setProtected(). setType("KubernetesClient"). javaClass.addField(). setProtected(). setType("Session").
String builderClassName = javaClass.getName() + "Builder"; JavaClassSource builderClass = Roaster.create(JavaClassSource.class) .setName(builderClassName) .setPackage(javaClass.getPackage()); for (Import i : javaClass.getImports()) builderClass.addImport(i); builderClass.addField().setPrivate().setFinal(true).setType(javaClass).setName("obj") .setLiteralInitializer("new " + javaClass.getName() + "();"); builderClass.addMethod() .setPublic().setStatic(true).setName("create").setReturnType(builderClass) .setBody("return new " + builderClassName + "();"); builderClass.addMethod() .setConstructor(true).setPrivate().setBody(""); builderClass.addMethod() .setPublic().setReturnType(javaClass).setName("build").setBody("return obj;"); for (PropertySource<JavaClassSource> property : javaClass.getProperties()) MethodSource<JavaClassSource> method = builderClass.addMethod().setPublic().setReturnType(builderClass) .setName("with" + upperCasedName); method.addParameter(property.getType().getQualifiedName(), "param");
private void writeMapRemove(final JavaClassSource javaClass, final Property propDef) { final String name = "remove" + propDef.getPropertyName(); if (!javaClass.hasMethodSignature(name)) { final StringBuilder javadoc = new StringBuilder(); javadoc .append("@return the pSourcePath\n"); String body = ""; javaClass.addImport("javafx.collections.FXCollections"); body = Templates.use(TemplateName.PropertyRemoveMap, propDef); final MethodSource<?> method = javaClass.addMethod() .setName(name) .setPublic() .setBody(body.toString()) .setReturnType(javaClass.getTypeVariables().isEmpty() ? javaClass.getName() : javaClass.getTypeVariables().get(0).getName()); method.getJavaDoc().setFullText(javadoc.toString()); } else { // javaClass.getMethod(propDef.getName()).setBody(javaClass.getMethod(propDef.getName()).getBody() // + body.toString()); } }
private void addExecuteMethod(JavaClassSource command) { command.addMethod() .setPublic() .setName("execute") .setReturnType(Result.class) .setParameters("UIExecutionContext context") .setBody( "return Results.success(\"Command '" + commandName.getValue() + "' successfully executed!\");") .addThrows(Exception.class) .addAnnotation(Override.class); }
private JavaClassSource getOrCreateSubresourceClass(ClassPlan plan, JavaClassSource javaClass) { JavaClassSource subresourceClass = plan.getSubresourceClass(); if (subresourceClass != null) { return subresourceClass; } subresourceClass = Roaster.parse( JavaClassSource.class, "class " + javaClass.getName() + "Resources" + " {}" ); subresourceClass.setPackage(plan.getPackageName()); subresourceClass.getJavaDoc().setText("Child mutators for " + javaClass.getName()); subresourceClass.setPublic(); subresourceClass.setStatic(true); javaClass.addField() .setPrivate() .setType(subresourceClass.getName()) .setName("subresources") .setLiteralInitializer("new " + subresourceClass.getName() + "();"); final MethodSource<JavaClassSource> subresourcesMethod = javaClass.addMethod() .setName("subresources") .setPublic(); subresourcesMethod.setReturnType(subresourceClass.getName()); subresourcesMethod.setBody("return this.subresources;"); javaClass.addImport("java.util.List"); javaClass.addImport(Subresource.class); plan.setSubresourceClass(subresourceClass); return subresourceClass; }
JavaClassSource javaClass = Roaster.create(JavaClassSource.class).setName(named.getValue()) .setPackage(packageName.getValue()); javaClass.addImport("org.jboss.arquillian.container.test.api.Deployment"); javaClass.addImport("org.jboss.arquillian.junit.Arquillian"); javaClass.addImport("org.jboss.forge.arquillian.AddonDependency"); javaClass.addImport("org.jboss.forge.arquillian.AddonDependencies"); javaClass.addImport("org.jboss.forge.arquillian.archive.AddonArchive"); javaClass.addImport("org.jboss.shrinkwrap.api.ShrinkWrap"); javaClass.addImport("org.junit.runner.RunWith"); javaClass.addImport("org.junit.Assert"); javaClass.addImport("org.junit.Test"); javaClass.addAnnotation("RunWith").setLiteralValue("Arquillian.class"); MethodSource<JavaClassSource> getDeployment = javaClass.addMethod().setName("getDeployment").setPublic() .setStatic(true) .setBody("return ShrinkWrap.create(AddonArchive.class).addBeansXML();").setReturnType("AddonArchive"); getDeployment.addAnnotation("Deployment"); AnnotationSource<JavaClassSource> addonDependenciesAnn = getDeployment.addAnnotation("AddonDependencies"); javaClass.addMethod().setName("testAddon").setPublic().setReturnTypeVoid() .setBody("Assert.fail(\"Not yet implemented\");").addAnnotation("Test"); JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class); JavaResource javaResource = facet.saveTestJavaSource(javaClass); uiContext.setSelection(javaResource); return Results.success("Test class " + javaClass.getQualifiedName() + " created");
JavaClassSource javaVerticleTestClass = Roaster.create(JavaClassSource.class) .setPackage(topLevelPackage) .setAbstract(false) .setName(testClassName); testImports.forEach(javaVerticleTestClass::addImport); .addAnnotation() .setName("RunWith") .setLiteralValue("VertxUnitRunner.class"); .addField() .setName("vertx") .setType("Vertx") .addMethod() .setName("setup") .setBody( "vertx = Vertx.vertx();\nvertx.deployVerticle("+className+".class.getName(), context.asyncAssertSuccess());") .setPublic() .addMethod() .addImport("junit.framework.TestCase.fail") .setStatic(true); .addMethod() source.saveTestJavaSource(javaVerticleTestClass.getEnclosingType());
JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class); facet.saveJavaSource(createGreetingClass(source)); facet.saveJavaSource(createGreetingPropertiesClass(source)); if (wrapped.getPath().hasValue()) { final String value = wrapped.getPath().getValue(); properties.put("server.contextPath", (value.startsWith("/") ? value : "/" + value)); source.addImport(AtomicLong.class); source.addAnnotation(RestController.class); source.addField().setPrivate().setFinal(false).setType("GreetingProperties").setName("properties").addAnnotation(Autowired.class); source.addField().setPrivate().setFinal(true).setType("AtomicLong").setName("counter").setLiteralInitializer("new AtomicLong()"); MethodSource<?> greeting = source.addMethod() .setPublic() .setName(restMethod.getMethodName()) .setReturnType("Greeting"); break; case POST: source.addImport(UriBuilder.class);
private String addJavaVerticle(Project project, String packageName, String className, boolean isMain) { JavaSourceFacet source = project.getFacet(JavaSourceFacet.class); String topLevelPackage; if (packageName == null) { topLevelPackage = source.getBasePackage(); } else { topLevelPackage = packageName; } if (className.endsWith(".java")) { className = className.substring(0, className.length() - ".java".length()); } JavaClassSource mainVerticle = Roaster.create(JavaClassSource.class) .setPackage(topLevelPackage) .setAbstract(false) .setName(className) .setSuperType("io.vertx.core.AbstractVerticle"); mainVerticle .addImport("io.vertx.core.*"); mainVerticle.addMethod().setName("start").setBody( "vertx.createHttpServer().requestHandler(req -> req.response().end(\"Hello World!\")).listen(8080);") .setPublic() .addAnnotation(Override.class); JavaResource resource = source.saveJavaSource(mainVerticle.getEnclosingType()); if (isMain) { ForgeUtils.addPropertyToProject(project, "vertx.verticle", topLevelPackage + "." + className); } addJavaVerticleTest(project,packageName,className); return resource.toString(); }
WildFlySwarmFacet wildFlySwarm = project.getFacet(WildFlySwarmFacet.class); List<FractionDescriptor> installedFractions = wildFlySwarm.getInstalledFractions(); if (enableJAXRS(installedFractions)) JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class); JavaClassSource restEndpoint = Roaster.create(JavaClassSource.class) .setPackage(facet.getBasePackage() + ".rest") .setName("HelloWorldEndpoint"); if (hasCDI(installedFractions)) restEndpoint.addAnnotation(ApplicationScoped.class); restEndpoint.addAnnotation(Path.class).setStringValue("/hello"); MethodSource<JavaClassSource> method = restEndpoint.addMethod().setPublic().setReturnType(Response.class) .setName("doGet") .setBody("return Response.ok(\"Hello from WildFly Swarm!\").build();"); method.addAnnotation(GET.class); method.addAnnotation(javax.ws.rs.Produces.class).setStringArrayValue(new String[] { MediaType.TEXT_PLAIN }); facet.saveJavaSource(restEndpoint);
commandName.setValue(calculateCommandName(command.getName())); command.setSuperType(AbstractUICommand.class); command.addImport(UIBuilder.class); command.addImport(UIContext.class); command.addImport(UIExecutionContext.class); command.addImport(UICommandMetadata.class); command.addImport(Metadata.class); command.addImport(Categories.class); command.addImport(Result.class); command.addImport(Results.class); MethodSource<JavaClassSource> getMetadataMethod = command.addMethod() .setPublic() .setName("getMetadata") .setReturnType(UICommandMetadata.class) .setParameters("UIContext context"); getMetadataMethod.addAnnotation(Override.class); String getMetadataMethodBody = "return Metadata.forCommand(" + command.getName() + ".class" + ")\n" + "\t.name(\"" + commandName.getValue() + "\")"; Iterator<String> iterator = categories.getValue().iterator(); if (iterator.hasNext()) command.addMethod() .setPublic() .setName("initializeUI") command.addMethod()
protected void addConstructor(JavaClassSource type, ClassPlan plan) { //type.extendSuperType(HashMap.class); // resource name type.addField() .setName("key") .setPrivate() .setType(String.class); // constructors boolean isSingleton = plan.isSingleton(); if (isSingleton) { type.addMethod() .setConstructor(true) .setPublic() .setBody("super();\nthis.key = \"" + plan.getSingletonName() + "\";\n" + "this.pcs = new PropertyChangeSupport(this);"); } else { // regular resources need to provide a key type.addMethod() .setConstructor(true) .setPublic() .setBody("super();\nthis.key = key;") .addParameter(String.class, "key"); } type.addMethod() .setName("getKey") .setPublic() .setReturnType(String.class) .setBody("return this.key;"); }
final String pkg = moduleName.substring(0, moduleName.lastIndexOf('.')); final JavaClassSource javaClass = Roaster.create(JavaClassSource.class); javaClass.setPackage(pkg).setName(starterName); javaClass.extendSuperType(AbstractModuleStarter.class); if (!javaClass.hasMethodSignature("start")) { final MethodSource<?> method = javaClass.addMethod() .setName("start") .setPublic() .setBody(body.toString()) .setReturnTypeVoid(); method.getJavaDoc().setFullText("{@inheritDoc}"); javaClass.getMethod("start").setBody(javaClass.getMethod("start").getBody() + body.toString());
@Override public Result execute(UIExecutionContext context) throws Exception { Map<Object, Object> attributeMap = context.getUIContext().getAttributeMap(); Project project = (Project) attributeMap.get(Project.class); if (project.hasFacet(JavaSourceFacet.class)) { JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class); MetadataFacet metadata = project.getFacet(MetadataFacet.class); if (createMain.getValue()) { JavaClassSource javaClass = Roaster .create(JavaClassSource.class) .setPackage(facet.getBasePackage()) .setName("Main") .addMethod("public static void main(String[] args) {}") .setBody("System.out.println(\"Hi there! I was forged as part of the project you call " + metadata.getProjectName() + ".\");") .getOrigin(); facet.saveJavaSource(javaClass); } } return null; } }
protected void createInitializers(final JavaClassSource entity) throws FacetNotFoundException, FileNotFoundException for (FieldSource<JavaClassSource> field : entity.getFields()) if (!entity.hasMethodSignature(methodName)) entity.addMethod().setName(methodName).setReturnTypeVoid().setPublic() .setBody("this." + field.getName() + " = new " + field.getType().getName() + "();"); dirtyBit = true; for (MethodSource<JavaClassSource> method : entity.getMethods()) if (method.hasAnnotation(OneToOne.class)) String fieldName = StringUtils.camelCase(method.getName().substring(3)); String methodName = "new" + StringUtils.capitalize(fieldName); if (!entity.hasMethodSignature(methodName)) entity.addMethod().setName(methodName).setReturnTypeVoid().setPublic() .setBody("this." + fieldName + " = new " + method.getReturnType().getName() + "();"); dirtyBit = true; this.project.getFacet(JavaSourceFacet.class).saveJavaSource(entity);
protected void addPropertyChangeSupport(JavaClassSource type, ClassPlan plan) { // property change listeners type.addField() .setName("pcs") .setType(PropertyChangeSupport.class) .setPrivate(); final MethodSource<JavaClassSource> listenerAdd = type.addMethod(); listenerAdd.getJavaDoc().setText("Adds a property change listener"); listenerAdd.setPublic() .setName("addPropertyChangeListener") .addParameter(PropertyChangeListener.class, "listener"); listenerAdd.setBody("if(null==this.pcs) this.pcs = new PropertyChangeSupport(this);\n" + "this.pcs.addPropertyChangeListener(listener);"); final MethodSource<JavaClassSource> listenerRemove = type.addMethod(); listenerRemove.getJavaDoc().setText("Removes a property change listener"); listenerRemove.setPublic() .setName("removePropertyChangeListener") .addParameter(PropertyChangeListener.class, "listener"); listenerRemove.setBody("if(this.pcs!=null) this.pcs.removePropertyChangeListener(listener);"); }