/* * The Genesis Project * Copyright (C) 2008 Summa Technologies do Brasil Ltda. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package net.java.dev.genesis.tests.ui; import java.util.List; import java.util.Map; import net.java.dev.genesis.tests.TestCase; import net.java.dev.genesis.ui.controller.DefaultFormController; import net.java.dev.genesis.ui.controller.FormController; import net.java.dev.genesis.ui.controller.FormControllerListener; import net.java.dev.genesis.ui.metadata.DataProviderMetadata; import net.java.dev.genesis.ui.metadata.MethodMetadata; import org.apache.commons.beanutils.BeanUtils; public class TransactionalFormControllerTest extends TestCase { private FormController getController(Object form) throws Exception { final FormController formController = new DefaultFormController(); formController.setFormMetadata(getFormMetadata(form)); formController.setForm(form); formController.setup(); return formController; } private Map getSomeValues() throws Exception { final Map newValues = BeanUtils.describe(new FooForm()); final String fieldString = "aisfBCASADr"; newValues.put("fieldString", fieldString.toString()); return newValues; } public void testSimplePopulate() throws Exception { final FooForm form1 = new FooForm(); final FormController controller1 = getController(form1); final Map someValues1 = getSomeValues(); final FooForm form2 = new FooForm(); final FormController controller2 = getController(form2); controller1.addFormControllerListener(new FormControllerAdapter() { public void valuesChanged(Map updatedValues) throws Exception { controller2.populate(updatedValues, null); throw new Exception(); } }); try { controller1.populate(someValues1, null); } catch (Exception exception) { //Expected } final Map form1Data = BeanUtils.describe(form1); final Map form2Data = BeanUtils.describe(form2); assertDescribedMapEquals(form2Data, getSomeValues()); assertDescribedMapEquals(form1Data, form2Data); } /** * @Form */ public static class FooForm { private String fieldString; public String getFieldString() { return fieldString; } public void setFieldString(String fieldString) { this.fieldString = fieldString; } } /** * @Form */ public static class FooForm { private String fieldString; public String getFieldString() { return fieldString; } public void setFieldString(String fieldString) { this.fieldString = fieldString; } } class FormControllerAdapter implements FormControllerListener { public void enabledConditionsChanged(Map updatedEnabledConditions) { } public void visibleConditionsChanged(Map updatedVisibleConditions) { } public boolean beforeInvokingMethod(MethodMetadata methodMetadata) throws Exception { return true; } public void afterInvokingMethod(MethodMetadata methodMetadata) throws Exception { } public void dataProvidedListChanged(DataProviderMetadata metadata, List items) throws Exception { } public void dataProvidedIndexesChanged(DataProviderMetadata metadata, int[] selectedIndexes) { } public void valuesChanged(Map updatedValues) throws Exception { } } } ----- Classpath: --------------------------------------------- bootPath: /usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/resources.jar:/usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/rt.jar:/usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/jsse.jar:/usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/jce.jar:/usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/charsets.jar:/usr/lib/jvm/java-6-sun-1.6.0.07/jre/classes:/usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/ext/dnsns.jar:/usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/ext/localedata.jar:/usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/ext/sunjce_provider.jar classPath: /home/hmichel/projetos/javanetcvs/genesis/genesis/lib/thinlet/thinlet-20040817.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/backport175/backport175-1.1.RC1-snapshot.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/commons/commons-beanutils-1.7.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/commons/commons-jxpath-1.2.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/commons/commons-logging-1.1.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/commons/commons-validator-1.3.1.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/commons/reusable-components-20060810.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/hibernate/hibernate2.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/hibernate/junit-3.8.1.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/script/bsf-2.4.0.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/script/commons-jxpath-1.2.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/script/js-1.6R5.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/script/commons-el-1.0.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/script/jsp-api.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/script/jakarta-taglibs-standard-1.1.2.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/swt/Linux/swt.jar:/home/hmichel/projetos/javanetcvs/genesis/genesis/lib/j2ee/j2ee.jar sourcePath: /home/hmichel/projetos/javanetcvs/genesis/genesis/modules/annotation/src-jdk5:/home/hmichel/projetos/javanetcvs/genesis/genesis/modules/client/src:/home/hmichel/projetos/javanetcvs/genesis/genesis/modules/shared/src:/home/hmichel/projetos/javanetcvs/genesis/genesis/modules/container/src:/home/hmichel/projetos/javanetcvs/genesis/genesis/modules/server/src:/home/hmichel/projetos/javanetcvs/genesis/genesis/modules/client/test-src:/home/hmichel/projetos/javanetcvs/genesis/genesis/modules/tests/src ----- Original exception --------------------------------------------- java.lang.NullPointerException at com.sun.tools.javac.comp.Flow.visitMethodDef(Flow.java:674) at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:657) at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49) at com.sun.tools.javac.comp.Flow.visitClassDef(Flow.java:654) at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:588) at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49) at com.sun.tools.javac.comp.Flow.scanStat(Flow.java:499) at com.sun.tools.javac.comp.Flow.scanDef(Flow.java:485) at com.sun.tools.javac.comp.Flow.visitClassDef(Flow.java:593) at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:588) at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49) at com.sun.tools.javac.comp.Flow.analyzeTree(Flow.java:1300) at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1131) at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1094) at com.sun.tools.javac.api.JavacTaskImpl.analyze(JavacTaskImpl.java:445) at com.sun.tools.javac.api.JavacTaskImpl.analyze(JavacTaskImpl.java:425) at org.netbeans.api.java.source.JavaSource.moveToPhase(JavaSource.java:1338) at org.netbeans.api.java.source.JavaSource$CompilationJob.run(JavaSource.java:1680) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread.run(Thread.java:619)