[Buix-commits] r1540 - in trunk/guix-compiler-gwt/src: main/java/org/nuiton/guix/generator test/java/org/nuiton/guix/generator
Author: kmorin Date: 2009-07-30 16:59:00 +0200 (Thu, 30 Jul 2009) New Revision: 1540 Modified: trunk/guix-compiler-gwt/src/main/java/org/nuiton/guix/generator/GwtAbstractClassGenerator.java trunk/guix-compiler-gwt/src/main/java/org/nuiton/guix/generator/GwtGenerator.java trunk/guix-compiler-gwt/src/test/java/org/nuiton/guix/generator/GwtGeneratorTest.java Log: Add the acceptation for tags that represents classes defined in the src directory Modified: trunk/guix-compiler-gwt/src/main/java/org/nuiton/guix/generator/GwtAbstractClassGenerator.java =================================================================== --- trunk/guix-compiler-gwt/src/main/java/org/nuiton/guix/generator/GwtAbstractClassGenerator.java 2009-07-30 14:58:40 UTC (rev 1539) +++ trunk/guix-compiler-gwt/src/main/java/org/nuiton/guix/generator/GwtAbstractClassGenerator.java 2009-07-30 14:59:00 UTC (rev 1540) @@ -22,6 +22,13 @@ import com.google.gwt.user.client.ui.MenuBar; import com.google.gwt.user.client.ui.TabPanel; import java.beans.IntrospectionException; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; import org.nuiton.guix.model.GuixModelObject; import java.lang.reflect.Modifier; @@ -59,6 +66,8 @@ /** Bindings to generate */ Map<String,Map<String, String>> bindings2Generate = new HashMap<String,Map<String, String>>(); + GwtGenerator gwtGenerator; + /** * Constructor * @@ -77,6 +86,10 @@ script = sh.decomposeScript(gmo.getClassDescriptor().getScript()); } + public void setGwtGenerator(GwtGenerator gwtGenerator) { + this.gwtGenerator = gwtGenerator; + } + @Override public JavaFile generate() { super.addImports(gmo); @@ -348,70 +361,106 @@ } } } + //if the class hasn't been found if (clazz == null) { - throw new ClassNotFoundException(); - } + File f = new File(gwtGenerator.getSrcDir(), gmo.getClassDescriptor().toString().replace('.', File.separatorChar) + ".java"); + try { + FileInputStream fis = new FileInputStream(f); + Reader isr = new InputStreamReader(fis); + JavaFile jFile = JavaFileParser.parseJavaFile(gmo.getClassDescriptor().toString(), isr); + fis.close(); +// fis = new FileInputStream(f); +// File dirDest = new File(gwtGenerator.getDestDir(), gmo.getClassDescriptor().getPackageName().replace('.', File.separatorChar)); +// if(!dirDest.exists()) { +// dirDest.mkdirs(); +// } +// File fDest = new File(dirDest, gmo.getClassDescriptor().getName() + ".java"); +// //fDest.createNewFile(); +// FileOutputStream fos = new FileOutputStream(fDest); +// // segment size : 0.5Mo +// byte buffer[] = new byte[512*1024]; +// int read; +// while((read = fis.read(buffer)) != -1) { +// fos.write(buffer, 0, read); +// } +// fis.close(); +// fos.close(); - //if gmo has a TagHandler, add a field to the JavaFile with this TagHandler (used for the databinding generation) - if (gmo.getClassDescriptor().getPackageName() == null - && TagManager.getGuixClassHandler(gmo.getClassDescriptor().getName()) != null) { - jf.addField(new JavaField(Modifier.FINAL | Modifier.PRIVATE, - clazz.getName(), gmo.getId(), - " new " + clazz.getSimpleName() + "(" + - ((gmo.getConstructor() != null) ? gmo.getConstructor() : "") + ")", gmo.getJavadoc(), th), - false); + jf.addField(new JavaField(Modifier.PRIVATE, gmo.getClassDescriptor().toString(), gmo.getId(), gmo.getJavadoc()), true); + StringBuffer creationMethod = new StringBuffer(); + String capitalizedId = (gmo.getId().length() > 0) ? Character.toUpperCase(gmo.getId().charAt(0)) + gmo.getId().substring(1) : gmo.getId(); + creationMethod.append(gmo.getId()).append(" = new ").append(gmo.getClassDescriptor().toString()).append("(").append(gmo.getConstructor() != null ? gmo.getConstructor() : "").append(");\n"); + componentsCreation.append("create").append(capitalizedId).append("();\n"); + processAttributes(jFile, gmo, creationMethod); + } + catch(IOException eee) { + log.error(eee); + throw new ClassNotFoundException(); + } } - //if gmo is the root ModelObject, it equals "this" - else if(gmo.getParent() == null) { - jf.addField(new JavaField(Modifier.FINAL | Modifier.PRIVATE, - (classes != null && classes.contains(gmo.getClassDescriptor().toString())) ? gmo.getClassDescriptor().getPackageName() + ".client." + gmo.getClassDescriptor().getName() + "Abstract" : gmo.getClassDescriptor().getPackageName() + "." + gmo.getClassDescriptor().getName(), - gmo.getClassDescriptor().getName().toLowerCase(), "this", gmo.getJavadoc(), th), - false); - } else { - jf.addField(new JavaField(Modifier.FINAL | Modifier.PRIVATE, - (classes != null && classes.contains(gmo.getClassDescriptor().toString())) ? gmo.getClassDescriptor().getPackageName() + ".client." + gmo.getClassDescriptor().getName() + "Abstract" : gmo.getClassDescriptor().getPackageName() + "." + gmo.getClassDescriptor().getName(), - gmo.getId(), "new " + ((classes != null && classes.contains(gmo.getClassDescriptor().toString())) ? gmo.getClassDescriptor().getName() + "Impl" : gmo.getClassDescriptor().getName()) + "(" + - ((gmo.getConstructor() != null) ? gmo.getConstructor() : "") + ")", gmo.getJavadoc(), th), - false); - } - //if gmo is not the root ModelObject - if (gmo.getParent() != null) { - String capitalizedId = (gmo.getId().length() > 0) ? Character.toUpperCase(gmo.getId().charAt(0)) + gmo.getId().substring(1) : gmo.getId(); - StringBuffer creationMethod = new StringBuffer(); - componentsCreation.append("create").append(capitalizedId).append("();\n"); - //if gmo is the child of a cell - if (gmo.getParent().getClassDescriptor().getPackageName() != null || !gmo.getParent().getClassDescriptor().getName().equalsIgnoreCase("Cell")) { - //if gmo herits from widget - if(com.google.gwt.user.client.ui.Widget.class.isAssignableFrom(clazz)) { - componentsTree.append(gmo.getParent().getId() == null ? "this" : gmo.getParent().getId()).append(".add(").append(gmo.getId()); - if(tabName != null) { - componentsTree.append(",").append(tabName); + //if gmo has a TagHandler, add a field to the JavaFile with this TagHandler (used for the databinding generation) + if (gmo.getClassDescriptor().getPackageName() == null + && TagManager.getGuixClassHandler(gmo.getClassDescriptor().getName()) != null) { + jf.addField(new JavaField(Modifier.FINAL | Modifier.PRIVATE, + clazz.getName(), gmo.getId(), + " new " + clazz.getSimpleName() + "(" + + ((gmo.getConstructor() != null) ? gmo.getConstructor() : "") + ")", gmo.getJavadoc(), th), + false); + } + //if gmo is the root ModelObject, it equals "this" + else if(gmo.getParent() == null) { + jf.addField(new JavaField(Modifier.FINAL | Modifier.PRIVATE, + (classes != null && classes.contains(gmo.getClassDescriptor().toString())) ? gmo.getClassDescriptor().getPackageName() + ".client." + gmo.getClassDescriptor().getName() + "Abstract" : gmo.getClassDescriptor().getPackageName() + "." + gmo.getClassDescriptor().getName(), + gmo.getClassDescriptor().getName().toLowerCase(), "this", gmo.getJavadoc(), th), + false); + } + else { + jf.addField(new JavaField(Modifier.FINAL | Modifier.PRIVATE, + (classes != null && classes.contains(gmo.getClassDescriptor().toString())) ? gmo.getClassDescriptor().getPackageName() + ".client." + gmo.getClassDescriptor().getName() + "Abstract" : gmo.getClassDescriptor().getPackageName() + "." + gmo.getClassDescriptor().getName(), + gmo.getId(), "new " + ((classes != null && classes.contains(gmo.getClassDescriptor().toString())) ? gmo.getClassDescriptor().getName() + "Impl" : gmo.getClassDescriptor().getName()) + "(" + + ((gmo.getConstructor() != null) ? gmo.getConstructor() : "") + ")", gmo.getJavadoc(), th), + false); + } + //if gmo is not the root ModelObject + if (gmo.getParent() != null) { + String capitalizedId = (gmo.getId().length() > 0) ? Character.toUpperCase(gmo.getId().charAt(0)) + gmo.getId().substring(1) : gmo.getId(); + StringBuffer creationMethod = new StringBuffer(); + + componentsCreation.append("create").append(capitalizedId).append("();\n"); + //if gmo is the child of a cell + if (gmo.getParent().getClassDescriptor().getPackageName() != null || !gmo.getParent().getClassDescriptor().getName().equalsIgnoreCase("Cell")) { + //if gmo herits from widget + if(com.google.gwt.user.client.ui.Widget.class.isAssignableFrom(clazz)) { + componentsTree.append(gmo.getParent().getId() == null ? "this" : gmo.getParent().getId()).append(".add(").append(gmo.getId()); + if(tabName != null) { + componentsTree.append(",").append(tabName); + } + componentsTree.append(");\n"); } - componentsTree.append(");\n"); } - } - processAttributes(clazz, gmo, creationMethod, null, geh, th); + processAttributes(clazz, gmo, creationMethod, null, geh, th); - } - else { - processAttributes(clazz, gmo, null, componentsTree, geh, th); - //set superclass and interface - if(th != null) { - jf.setSuperClass(th.getClassToGenerate().getName()); } else { - jf.setSuperClass(gmo.getClassDescriptor().getSuperClass().getPackageName() + "." + gmo.getClassDescriptor().getSuperClass().getName()); + processAttributes(clazz, gmo, null, componentsTree, geh, th); + //set superclass and interface + if(th != null) { + jf.setSuperClass(th.getClassToGenerate().getName()); + } + else { + jf.setSuperClass(gmo.getClassDescriptor().getSuperClass().getPackageName() + "." + gmo.getClassDescriptor().getSuperClass().getName()); + } + jf.addInterface(gmo.getClassDescriptor().getName()); } - jf.addInterface(gmo.getClassDescriptor().getName()); + for (GuixModelObject child : gmo.getChildren()) { + Map<Method, String> methodBodies = browseModelObjects(child); + componentsCreation.append(methodBodies.get(Method.COMPONENTS_CREATION)); + componentsTree.append(methodBodies.get(Method.COMPONENTS_TREE)); + bindings.append(methodBodies.get(Method.DATABINDING_INIT)); + } } - for (GuixModelObject child : gmo.getChildren()) { - Map<Method, String> methodBodies = browseModelObjects(child); - componentsCreation.append(methodBodies.get(Method.COMPONENTS_CREATION)); - componentsTree.append(methodBodies.get(Method.COMPONENTS_TREE)); - bindings.append(methodBodies.get(Method.DATABINDING_INIT)); - } } Map<Method, String> result = new HashMap<Method, String>(); result.put(Method.COMPONENTS_CREATION, componentsCreation.toString()); @@ -499,12 +548,62 @@ //generates the code for the events creationMethod.append(geh.generate(gmo.getId())); //add to the file the creation method for this object - jf.addMethod( - new JavaMethod(Modifier.PRIVATE, "void", "create" + capitalizedId, null, null, creationMethod.toString(), gmo.getId() + " creation")); + jf.addMethod(new JavaMethod(Modifier.PRIVATE, "void", "create" + capitalizedId, null, null, creationMethod.toString(), gmo.getId() + " creation")); } } /** + * + * @param jFile + * @param gmo + * @param creationMethod + */ + private void processAttributes(JavaFile jFile, GuixModelObject gmo, StringBuffer creationMethod) { + //processCSSAttributes(gmo, seh, clazz); + //browses the attributes + for (AttributeDescriptor attr : gmo.getAttributeDescriptors()) { + boolean addQuote = false; + //the attribute name with the first letter capitalized + String capitalizedAttribute = (attr.getName().length() > 0) ? Character.toUpperCase(attr.getName().charAt(0)) + attr.getName().substring(1) : attr.getName(); + + JavaMethod method = null; + for(JavaMethod m : jFile.getMethods()) { + if(m.getName().equals("set" + capitalizedAttribute)) { + method = m; + break; + } + } + + if(method != null) { + String binding = BindingUtils.processDataBindings(attr.getValue()); + if(binding != null) { + if(!bindings2Generate.containsKey(gmo.getId())) { + bindings2Generate.put(gmo.getId(), new HashMap<String, String>()); + } + bindings2Generate.get(gmo.getId()).put(attr.getName(), binding); + } + else { + //checks if the parameter of the setter is a String + addQuote = method.getArguments()[0].getType().equals(String.class.getName()); + //generates the code to set the attribute to object + creationMethod.append(gmo.getId()).append(".set").append(capitalizedAttribute).append("(").append(addQuote ? "\"" : "").append(attr.getValue()).append(addQuote ? "\"" : "").append(");\n"); + } + } + else if(log.isErrorEnabled()) { + log.error(attr.getName() + " cannot be set."); + } + } + //if gmo does not represents the first tag + if(gmo.getId() != null && creationMethod != null) { + //id with the first letter capitalized + String capitalizedId = (gmo.getId().length() > 0) ? Character.toUpperCase(gmo.getId().charAt(0)) + gmo.getId().substring(1) : gmo.getId(); + + //add to the file the creation method for this object + jf.addMethod(new JavaMethod(Modifier.PRIVATE, "void", "create" + capitalizedId, null, null, creationMethod.toString(), gmo.getId() + " creation")); + } + } + + /** * Browse the MenuBar children and generate the code * @param gmo the GuixModelObject representing the MenuBar * @return A map containing the creation, initialization and bindings methods Modified: trunk/guix-compiler-gwt/src/main/java/org/nuiton/guix/generator/GwtGenerator.java =================================================================== --- trunk/guix-compiler-gwt/src/main/java/org/nuiton/guix/generator/GwtGenerator.java 2009-07-30 14:58:40 UTC (rev 1539) +++ trunk/guix-compiler-gwt/src/main/java/org/nuiton/guix/generator/GwtGenerator.java 2009-07-30 14:59:00 UTC (rev 1540) @@ -47,17 +47,23 @@ /** Maps the different generators with the file to save the generated JavaFile */ Map<GwtJavaFileGenerator, File> generators = new HashMap<GwtJavaFileGenerator, File>(); + List<String> modules = new ArrayList<String>(); + @Override public JavaFile generate() { try { String gmoClassName = gmo.getClassDescriptor().getName(); - File outDir = new File(destDir, "client"); + File outDir = new File(destDir, gmo.getClassDescriptor().getPackageName().replace('.', File.separatorChar)); if (!outDir.exists()) { - outDir.mkdir(); + outDir.mkdirs(); } - File out = new File(outDir, gmoClassName + ".java"); - File outAbstract = new File(outDir, gmoClassName + "Abstract.java"); - File outImpl = new File(outDir, gmoClassName + "Impl.java"); + File outDirClient = new File(outDir, "client"); + if (!outDirClient.exists()) { + outDirClient.mkdirs(); + } + File out = new File(outDirClient, gmoClassName + ".java"); + File outAbstract = new File(outDirClient, gmoClassName + "Abstract.java"); + File outImpl = new File(outDirClient, gmoClassName + "Impl.java"); if (lastModification > out.lastModified()) { try { @@ -76,16 +82,17 @@ } GwtInterfaceGenerator ging = new GwtInterfaceGenerator(gmo, classes); GwtAbstractClassGenerator gacg = new GwtAbstractClassGenerator(gmo, classes); + gacg.setGwtGenerator(this); GwtImplementationGenerator gimg = new GwtImplementationGenerator(gmo, classes); if (mainClass) { gimg.addMainMethod(); GwtConfigGenerator gcg = new GwtConfigGenerator(gmo, getCSSFiles()); GwtHtmlGenerator ghg = new GwtHtmlGenerator(gmo, launcherName); - File outConfigMain = new File(destDir, launcherName.substring(launcherName.lastIndexOf('.') + 1) + ".gwt.xml"); - File publicDir = new File(destDir, "public"); + File outConfigMain = new File(outDir, launcherName.substring(launcherName.lastIndexOf('.') + 1) + ".gwt.xml"); + File publicDir = new File(outDir, "public"); if (!publicDir.exists()) { - publicDir.mkdir(); + publicDir.mkdirs(); } File outHtmlMain = new File(publicDir, launcherName.substring(launcherName.lastIndexOf('.') + 1) + ".html"); gcg.generate(outConfigMain); @@ -166,7 +173,7 @@ String[] binding, int i, List<String> alreadyChecked, String methodToInvoke, Map<GuixGenerator, JavaFile> generatedFiles) { if(dbCreation == null || dbDeletion == null || binding == null || (jf == null && clazz ==null) || methodToInvoke == null || generatedFiles == null || i < 0) { - return null; + return new ArrayList(); } //does the attribute or method to bind exists ? @@ -311,86 +318,86 @@ } else { log.error("Impossible binding for the " + (realMethodName != null ? "method '" : "attribute '") + realAttributename + "' of the class '" + prevTh.getClassToGenerate().getName() + "'"); - return null; } + if(listener != null) { + //starts to generate the code + dbCreation.append("if("); + dbDeletion.append("if("); + if (alreadyChecked != null && !alreadyChecked.isEmpty()) { + //add not null parent condition + for (int j = 0; j < alreadyChecked.size(); j++) { + dbCreation.append(alreadyChecked.get(0)); + dbDeletion.append(alreadyChecked.get(0)); + for (int k = 1; k <= j; k++) { + dbCreation.append(".").append(alreadyChecked.get(k)); + dbDeletion.append(".").append(alreadyChecked.get(k)); + } + dbCreation.append(" != null && "); + dbDeletion.append(" != null && "); + } - //starts to generate the code - dbCreation.append("if("); - dbDeletion.append("if("); - if (alreadyChecked != null && !alreadyChecked.isEmpty()) { - //add not null parent condition - for (int j = 0; j < alreadyChecked.size(); j++) { - dbCreation.append(alreadyChecked.get(0)); - dbDeletion.append(alreadyChecked.get(0)); - for (int k = 1; k <= j; k++) { - dbCreation.append(".").append(alreadyChecked.get(k)); - dbDeletion.append(".").append(alreadyChecked.get(k)); + if (binding.length > alreadyChecked.size() + 1) { + for (int j = 0; j < alreadyChecked.size(); j++) { + dbCreation.append(alreadyChecked.get(j)).append("."); + dbDeletion.append(alreadyChecked.get(j)).append("."); + } + dbCreation.append(getter).append(" != null"); + dbDeletion.append(getter).append(" != null"); } - dbCreation.append(" != null && "); - dbDeletion.append(" != null && "); + else { + dbCreation.delete(dbCreation.length() - 4, dbCreation.length()); + dbDeletion.delete(dbDeletion.length() - 4, dbDeletion.length()); + } } + else { + dbCreation.append(getter).append(" != null"); + dbDeletion.append(getter).append(" != null"); + } + dbCreation.append(") {\n"); + dbDeletion.append(") {\n"); - if (binding.length > alreadyChecked.size() + 1) { + if (alreadyChecked != null) { for (int j = 0; j < alreadyChecked.size(); j++) { dbCreation.append(alreadyChecked.get(j)).append("."); dbDeletion.append(alreadyChecked.get(j)).append("."); } - dbCreation.append(getter).append(" != null"); - dbDeletion.append(getter).append(" != null"); } - else { - dbCreation.delete(dbCreation.length() - 4, dbCreation.length()); - dbDeletion.delete(dbDeletion.length() - 4, dbDeletion.length()); + if (model != null) { + dbCreation.append("get").append(Character.toUpperCase(model.charAt(0))).append(model.substring(1)).append("()").append("."); + dbDeletion.append("get").append(Character.toUpperCase(model.charAt(0))).append(model.substring(1)).append("()").append("."); } - } - else { - dbCreation.append(getter).append(" != null"); - dbDeletion.append(getter).append(" != null"); - } - dbCreation.append(") {\n"); - dbDeletion.append(") {\n"); - - if (alreadyChecked != null) { - for (int j = 0; j < alreadyChecked.size(); j++) { - dbCreation.append(alreadyChecked.get(j)).append("."); - dbDeletion.append(alreadyChecked.get(j)).append("."); + // dbCreation.append(addMethod).append("((").append(listener.getName()).append(") org.nuiton.guix.runtime.Util.getEventListener(").append(listener.getName()).append(".class,this,\"onChangeFrom").append(methodToInvoke).append("\"));\n}\n"); + // dbDeletion.append(removeMethod).append("((").append(listener.getName()).append(") org.nuiton.guix.runtime.Util.getEventListener(").append(listener.getName()).append(".class,this,\"onChangeFrom").append(methodToInvoke).append("\"));\n}\n"); + dbCreation.append(addMethod).append("(new ").append(listener.getName()).append("() {\n"); + dbDeletion.append(removeMethod).append("(new ").append(listener.getName()).append("() {\n"); + for(Method m : listener.getMethods()) { + StringBuffer sb = new StringBuffer(); + for(Annotation a : m.getDeclaredAnnotations()) { + dbCreation.append(a.toString()).append("\n"); + } + //add the method that handles the event + sb.append("public ") + .append(m.getReturnType().getCanonicalName()) + .append(" ") + .append(m.getName()) + .append("("); + for(int n = 0 ; n < m.getParameterTypes().length ; n++) { + sb.append(m.getParameterTypes()[n].getCanonicalName()) + .append(" arg") + .append(n) + .append(", "); + } + sb.delete(sb.length() - 2, sb.length()) + .append(")") + .append(" {\n") + .append("onChangeFrom").append(methodToInvoke) + .append("();\n}\n"); + dbCreation.append(sb); + dbDeletion.append(sb); } + dbCreation.append("});\n}\n"); + dbDeletion.append("});\n}\n"); } - if (model != null) { - dbCreation.append("get").append(Character.toUpperCase(model.charAt(0))).append(model.substring(1)).append("()").append("."); - dbDeletion.append("get").append(Character.toUpperCase(model.charAt(0))).append(model.substring(1)).append("()").append("."); - } -// dbCreation.append(addMethod).append("((").append(listener.getName()).append(") org.nuiton.guix.runtime.Util.getEventListener(").append(listener.getName()).append(".class,this,\"onChangeFrom").append(methodToInvoke).append("\"));\n}\n"); -// dbDeletion.append(removeMethod).append("((").append(listener.getName()).append(") org.nuiton.guix.runtime.Util.getEventListener(").append(listener.getName()).append(".class,this,\"onChangeFrom").append(methodToInvoke).append("\"));\n}\n"); - dbCreation.append(addMethod).append("(new ").append(listener.getName()).append("() {\n"); - dbDeletion.append(removeMethod).append("(new ").append(listener.getName()).append("() {\n"); - for(Method m : listener.getMethods()) { - StringBuffer sb = new StringBuffer(); - for(Annotation a : m.getDeclaredAnnotations()) { - dbCreation.append(a.toString()).append("\n"); - } - //add the method that handles the event - sb.append("public ") - .append(m.getReturnType().getCanonicalName()) - .append(" ") - .append(m.getName()) - .append("("); - for(int n = 0 ; n < m.getParameterTypes().length ; n++) { - sb.append(m.getParameterTypes()[n].getCanonicalName()) - .append(" arg") - .append(n) - .append(", "); - } - sb.delete(sb.length() - 2, sb.length()) - .append(")") - .append(" {\n") - .append("onChangeFrom").append(methodToInvoke) - .append("();\n}\n"); - dbCreation.append(sb); - dbDeletion.append(sb); - } - dbCreation.append("});\n}\n"); - dbDeletion.append("});\n}\n"); } try { Modified: trunk/guix-compiler-gwt/src/test/java/org/nuiton/guix/generator/GwtGeneratorTest.java =================================================================== --- trunk/guix-compiler-gwt/src/test/java/org/nuiton/guix/generator/GwtGeneratorTest.java 2009-07-30 14:58:40 UTC (rev 1539) +++ trunk/guix-compiler-gwt/src/test/java/org/nuiton/guix/generator/GwtGeneratorTest.java 2009-07-30 14:59:00 UTC (rev 1540) @@ -23,6 +23,7 @@ import com.google.gwt.user.client.ui.ToggleButton; import java.lang.reflect.Modifier; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.junit.Test; import org.nuiton.guix.generator.GwtGenerator; @@ -51,57 +52,81 @@ GwtGuixInitializer.initialize(); GwtGenerator gg = new GwtGenerator(); //tests the not null condition for the parameters that needs to be not null - Assert.assertNull(gg.generateBindings(null, new StringBuffer(), null, null, Class.class, new String[0], 0, null, "", new HashMap<GuixGenerator, JavaFile>())); - Assert.assertNull(gg.generateBindings(new StringBuffer(), null, null, null, Class.class, new String[0], 0, null, "", new HashMap<GuixGenerator, JavaFile>())); - Assert.assertNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, null, 0, null, "", new HashMap<GuixGenerator, JavaFile>())); - Assert.assertNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, new String[0], -1, null, "", new HashMap<GuixGenerator, JavaFile>())); - Assert.assertNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, new String[0], -1, null, "", new HashMap<GuixGenerator, JavaFile>())); - Assert.assertNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, new String[0], 0, null, null, new HashMap<GuixGenerator, JavaFile>())); - Assert.assertNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, new String[0], 0, null, "", null)); - Assert.assertNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, null, new String[0], 0, null, "", new HashMap<GuixGenerator, JavaFile>())); + List<Class> l = gg.generateBindings(null, new StringBuffer(), null, null, Class.class, new String[0], 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 0); + l = gg.generateBindings(new StringBuffer(), null, null, null, Class.class, new String[0], 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 0); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, null, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 0); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, new String[0], -1, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 0); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, new String[0], -1, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 0); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, new String[0], 0, null, null, new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 0); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, new String[0], 0, null, "", null); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 0); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, null, new String[0], 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 0); //tests with a class parameter not null //tests if a null listener as result returns null - Assert.assertNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, ToggleButton.class, new String[]{"isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>())); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, ToggleButton.class, new String[]{"isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNull(l); //tests a successful generation with a method as a binding - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>())); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).size(),1); - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).get(0)); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).get(0),ClickListener.class); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(),1); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0),ClickListener.class); //tests a successful generation with an attribute as a binding - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"down"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>())); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"down"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).size(),1); - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"down"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).get(0)); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"down"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).get(0),ClickListener.class); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"down"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(),1); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0),ClickListener.class); //tests a successful generation with a method with the generic name as a binding - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"isSelected()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>())); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"isSelected()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).size(),1); - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"isSelected()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).get(0)); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"isSelected()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).get(0),ClickListener.class); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"isSelected()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(),1); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0),ClickListener.class); //tests a successful generation with an attribute with the generic name as a binding - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"selected"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>())); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"selected"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).size(),1); - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"selected"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).get(0)); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"selected"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).get(0),ClickListener.class); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, ToggleButton.class, new String[]{"selected"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(),1); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0),ClickListener.class); //tests with a javafile parameter not null //tests if the result is null without the taghandler associated to the field JavaFile jf = new JavaFile(); jf.addField(new JavaField(Modifier.PRIVATE, "com.google.gwt.user.client.ui.ToggleButton", "button", null)); jf.addMethod(new JavaMethod(Modifier.PUBLIC, "com.google.gwt.user.client.ui.ToggleButton", "getButton", null, null, "", null)); - Assert.assertNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getButton()", "isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>())); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getButton()", "isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNull(l); //tests a successful generation with a method as a binding jf = new JavaFile(); jf.addField(new JavaField(Modifier.PRIVATE, "com.google.gwt.user.client.ui.ToggleButton", "button", null, new ToggleButtonHandler())); jf.addMethod(new JavaMethod(Modifier.PUBLIC, "com.google.gwt.user.client.ui.ToggleButton", "getButton", null, null, "", null)); - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getButton()", "isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>())); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getButton()", "isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).size(),1); - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getButton()", "isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).get(0)); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getButton()", "isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).get(0),ClickListener.class); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getButton()", "isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(),1); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0),ClickListener.class); //tests a successful generation with an attribute as a binding - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"button","down"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>())); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"button","down"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).size(),1); - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"button","down"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).get(0)); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"button","down"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()).get(0),ClickListener.class); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"button","down"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(),1); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0),ClickListener.class); //tests with a javafile parameter not null with an attribute whose type is another generated file //tests if the result is null without the taghandler associated to the field @@ -111,24 +136,30 @@ JavaFile jf2 = new JavaFile(Modifier.PUBLIC, JavaFile.CLASS, "test", "Test", null, null); jf2.addField(new JavaField(Modifier.PRIVATE, "com.google.gwt.user.client.ui.ToggleButton", "button", null)); jf2.addMethod(new JavaMethod(Modifier.PUBLIC, "com.google.gwt.user.client.ui.ToggleButton", "getButton", null, null, "", null)); - Assert.assertNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getTest()","getButton()","isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>())); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getTest()","getButton()","isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 0); //test without jf2 in the map of generators with JavaFile jf2 = new JavaFile(Modifier.PUBLIC, JavaFile.CLASS, "test", "Test", null, null); jf2.addField(new JavaField(Modifier.PRIVATE, "com.google.gwt.user.client.ui.ToggleButton", "button", null, new ToggleButtonHandler())); jf2.addMethod(new JavaMethod(Modifier.PUBLIC, "com.google.gwt.user.client.ui.ToggleButton", "getButton", null, null, "", null)); - Assert.assertNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getTest()","getButton()","isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>())); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getTest()","getButton()","isDown()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 0); Map<GuixGenerator,JavaFile> map = new HashMap<GuixGenerator, JavaFile>(); map.put(gg, jf2); //tests a successful generation with a method as a binding - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getTest()","getButton()", "isDown()"}, 0, null, "", map)); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getTest()","getButton()", "isDown()"}, 0, null, "", map).size(),1); - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getTest()","getButton()", "isDown()"}, 0, null, "", map).get(0)); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getTest()","getButton()", "isDown()"}, 0, null, "", map).get(0),ClickListener.class); + l =gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getTest()","getButton()", "isDown()"}, 0, null, "", map); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(),1); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0),ClickListener.class); //tests a successful generation with an attribute as a binding - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"test","button","down"}, 0, null, "", map)); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"test","button","down"}, 0, null, "", map).size(),1); - Assert.assertNotNull(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"test","button","down"}, 0, null, "", map).get(0)); - Assert.assertEquals(gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"test","button","down"}, 0, null, "", map).get(0),ClickListener.class); + l = gg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"test","button","down"}, 0, null, "", map); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(),1); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0),ClickListener.class); } }
participants (1)
-
kmorin@users.labs.libre-entreprise.org