Buix-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- 1440 discussions
r1015 - in lutinjaxx/trunk: jaxx-core jaxx-core/src/main/java/jaxx/compiler jaxx-core/src/main/java/jaxx/tags/swing jaxx-core/src/test/java/jaxx/junit maven-jaxx-plugin maven-jaxx-plugin/src/main/java/org/codelutin/jaxx maven-jaxx-plugin/src/test/java/org/codelutin/jaxx maven-jaxx-plugin/src/test/resources/testcases
by tchemit@users.labs.libre-entreprise.org 04 Nov '08
by tchemit@users.labs.libre-entreprise.org 04 Nov '08
04 Nov '08
Author: tchemit
Date: 2008-11-04 09:10:04 +0000 (Tue, 04 Nov 2008)
New Revision: 1015
Added:
lutinjaxx/trunk/maven-jaxx-plugin/src/test/resources/testcases/ErrorJaxxContextImplementorClass.xml
Modified:
lutinjaxx/trunk/jaxx-core/changelog
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/compiler/CompilerOptions.java
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/compiler/JAXXObjectGenerator.java
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/tags/swing/SwingInitializer.java
lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/TagManagerTest.java
lutinjaxx/trunk/maven-jaxx-plugin/changelog
lutinjaxx/trunk/maven-jaxx-plugin/src/main/java/org/codelutin/jaxx/JaxxGeneratorMojo.java
lutinjaxx/trunk/maven-jaxx-plugin/src/test/java/org/codelutin/jaxx/CompilerTest.java
lutinjaxx/trunk/maven-jaxx-plugin/src/test/java/org/codelutin/jaxx/JaxxBaseTest.java
Log:
can add extra beanInfoSearchPath in SwingInitializer and Mojo
add jaxxContextImplementorClass in option to make possible use of other JAXXContext implementor.
Modified: lutinjaxx/trunk/jaxx-core/changelog
===================================================================
--- lutinjaxx/trunk/jaxx-core/changelog 2008-11-03 00:55:20 UTC (rev 1014)
+++ lutinjaxx/trunk/jaxx-core/changelog 2008-11-04 09:10:04 UTC (rev 1015)
@@ -1,4 +1,6 @@
- ver-0-6 chemit 200811??
+ 0.6 chemit 200811??
+ * 20081104 [chemit] can add extra beanInfoSearchPath in SwingInitializer
+ * 20081104 [chemit] add jaxxContextImplementorClass in option to make possible use of other JAXXContext implementor.
* 20081102 [chemit] improve JAXXContext :
- introduce a JAXXContextEntryDef to qualify an entry of a JAXXContext
- do javadoc in JAXXContext
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/compiler/CompilerOptions.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/compiler/CompilerOptions.java 2008-11-03 00:55:20 UTC (rev 1014)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/compiler/CompilerOptions.java 2008-11-04 09:10:04 UTC (rev 1015)
@@ -20,6 +20,9 @@
/** a flag to add or not logger on generated jaxx files */
private boolean addLogger;
+ /** the name of implementation of {@link jaxx.runtime.JAXXContext} to be used on {@link jaxx.runtime.JAXXObject}. */
+ protected String jaxxContextImplementorClass;
+
/**
* Returns the target directory, generally specified with the "-d" option on the command line.
*
@@ -170,6 +173,14 @@
this.addLogger = addLogger;
}
+ public String getJaxxContextImplementorClass() {
+ return jaxxContextImplementorClass;
+ }
+
+ public void setJaxxContextImplementorClass(String jaxxContextImplementorClass) {
+ this.jaxxContextImplementorClass = jaxxContextImplementorClass;
+ }
+
@Override
public String toString() {
StringBuilder sb = new StringBuilder(super.toString());
@@ -181,6 +192,7 @@
sb.append("\noptiomize : ").append(getOptimize());
sb.append("\ni18nable : ").append(isI18nable());
sb.append("\naddLogger : ").append(isAddLogger());
+ sb.append("\njaxxContextImplementorClass : ").append(getJaxxContextImplementorClass());
return sb.toString();
}
}
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/compiler/JAXXObjectGenerator.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/compiler/JAXXObjectGenerator.java 2008-11-03 00:55:20 UTC (rev 1014)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/compiler/JAXXObjectGenerator.java 2008-11-04 09:10:04 UTC (rev 1015)
@@ -192,7 +192,7 @@
/*
* Gestion du context
*/
- javaFile.addField(createContextField());
+ javaFile.addField(createContextField(compiler.getOptions().getJaxxContextImplementorClass()));
javaFile.addMethod(createSetContextValueMethod());
javaFile.addMethod(createSetContextValueNameMethod());
javaFile.addMethod(createGetContextValueMethod());
@@ -249,8 +249,9 @@
return new JavaField(Modifier.PROTECTED, "Map<String,Object>", "$objectMap", "new HashMap<String,Object>()");
}
- private JavaField createContextField() {
- return new JavaField(Modifier.PROTECTED, "jaxx.runtime.JAXXContext", "delegateContext", "new jaxx.runtime.DefaultJAXXContext(this);");
+ private JavaField createContextField(String jaxxContextImplementorClass) {
+ return new JavaField(Modifier.PROTECTED, "jaxx.runtime.JAXXContext", "delegateContext", "new "+jaxxContextImplementorClass+"(this);");
+ //return new JavaField(Modifier.PROTECTED, "jaxx.runtime.JAXXContext", "delegateContext", "new jaxx.runtime.DefaultJAXXContext(this);");
}
private JavaField createLoggerField(String className) {
@@ -311,32 +312,38 @@
private JavaMethod createSetContextValueMethod() {
return new JavaMethod(Modifier.PUBLIC, "void", "setContextValue",
- new JavaArgument[]{new JavaArgument("Object", "clazz")}, null, getSetContextValueMethodCode());
+ new JavaArgument[]{new JavaArgument("Object", "clazz")}, null,
+ "delegateContext.setContextValue(clazz, null);");
}
private JavaMethod createSetContextValueNameMethod() {
return new JavaMethod(Modifier.PUBLIC, "void", "setContextValue",
- new JavaArgument[]{new JavaArgument("Object", "clazz"), new JavaArgument("String", "name")}, null, getSetContextValueNameMethodCode());
+ new JavaArgument[]{new JavaArgument("Object", "clazz"), new JavaArgument("String", "name")}, null,
+ "delegateContext.setContextValue(clazz, name);");
}
private JavaMethod createGetContextValueMethod() {
return new JavaMethod(Modifier.PUBLIC, "<T> T", "getContextValue",
- new JavaArgument[]{new JavaArgument("Class<T>", "clazz")}, null, getGetContextValueMethodCode());
+ new JavaArgument[]{new JavaArgument("Class<T>", "clazz")}, null,
+ "return delegateContext.getContextValue(clazz, null);");
}
private JavaMethod createGetContextValueNameMethod() {
return new JavaMethod(Modifier.PUBLIC, "<T> T", "getContextValue",
- new JavaArgument[]{new JavaArgument("Class<T>", "clazz"), new JavaArgument("String", "name")}, null, getGetContextValueNameMethodCode());
+ new JavaArgument[]{new JavaArgument("Class<T>", "clazz"), new JavaArgument("String", "name")}, null,
+ "return delegateContext.getContextValue(clazz, name);");
}
private JavaMethod createGetParentContainer() {
return new JavaMethod(Modifier.PUBLIC, "<O extends Container> O", "getParentContainer",
- new JavaArgument[]{new JavaArgument("Class<O>", "clazz")}, null, getGetParentContenerMethodCode());
+ new JavaArgument[]{new JavaArgument("Class<O>", "clazz")}, null,
+ "return delegateContext.getParentContainer(clazz);");
}
private JavaMethod createGetParentContainerMore() {
return new JavaMethod(Modifier.PUBLIC, "<O extends Container> O", "getParentContainer",
- new JavaArgument[]{new JavaArgument("Object", "source"), new JavaArgument("Class<O>", "clazz")}, null, getGetParentContenerMethodMoreCode());
+ new JavaArgument[]{new JavaArgument("Object", "source"), new JavaArgument("Class<O>", "clazz")}, null,
+ "return delegateContext.getParentContainer(source, clazz);");
}
@@ -492,6 +499,7 @@
code.append("validatorIds.add(").append(id).append(");");
code.append(JAXXCompiler.getLineSeparator());
code.append("getValidator(").append(id).append(").installUIs();");
+ code.append(JAXXCompiler.getLineSeparator());
code.append("getValidator(").append(id).append(").validate();");
code.append(JAXXCompiler.getLineSeparator());
}
@@ -542,30 +550,7 @@
/*---------------------------------------------------------------------------------*/
/*-- Create methods code ----------------------------------------------------------*/
/*---------------------------------------------------------------------------------*/
- private String getSetContextValueMethodCode() {
- return "delegateContext.setContextValue(clazz, null);";
- }
-
- private String getSetContextValueNameMethodCode() {
- return "delegateContext.setContextValue(clazz, name);";
- }
-
- private String getGetContextValueMethodCode() {
- return "return delegateContext.getContextValue(clazz, null);";
- }
-
- private String getGetContextValueNameMethodCode() {
- return "return delegateContext.getContextValue(clazz, name);";
- }
-
- private String getGetParentContenerMethodCode() {
- return "return delegateContext.getParentContainer(clazz);";
- }
-
- private String getGetParentContenerMethodMoreCode() {
- return "return delegateContext.getParentContainer(source, clazz);";
- }
-
+
protected String getCreationCode(CompiledObject object) throws CompilerException {
if (object instanceof ScriptInitializer) {
return object.getInitializationCode(compiler);
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/tags/swing/SwingInitializer.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/tags/swing/SwingInitializer.java 2008-11-03 00:55:20 UTC (rev 1014)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/tags/swing/SwingInitializer.java 2008-11-04 09:10:04 UTC (rev 1015)
@@ -15,7 +15,6 @@
import jaxx.runtime.swing.Table;
import jaxx.runtime.validator.BeanValidator;
import jaxx.spi.Initializer;
-import jaxx.tags.DefaultComponentHandler;
import jaxx.tags.DefaultObjectHandler;
import jaxx.tags.TagManager;
import jaxx.tags.validator.BeanValidatorHandler;
@@ -29,11 +28,25 @@
public class SwingInitializer implements Initializer {
+ protected static String[] extraBeanInfoSearchPath;
+
+ public static String[] getExtraBeanInfoSearchPath() {
+ return extraBeanInfoSearchPath;
+ }
+
+ public static void setExtraBeanInfoSearchPath(String[] extraBeanInfoSearchPath) {
+ SwingInitializer.extraBeanInfoSearchPath = extraBeanInfoSearchPath;
+ }
+
public void initialize() {
String[] searchPath = Introspector.getBeanInfoSearchPath();
- String[] newSearchPath = new String[searchPath.length + 1];
+ String[] newSearchPath = new String[searchPath.length + 1 + (extraBeanInfoSearchPath == null ? 0 : extraBeanInfoSearchPath.length)];
System.arraycopy(searchPath, 0, newSearchPath, 0, searchPath.length);
- newSearchPath[newSearchPath.length - 1] = "jaxx.beaninfos";
+
+ newSearchPath[searchPath.length] = "jaxx.beaninfos";
+ if (extraBeanInfoSearchPath != null && extraBeanInfoSearchPath.length > 0) {
+ System.arraycopy(extraBeanInfoSearchPath, 0, newSearchPath, searchPath.length + 1, extraBeanInfoSearchPath.length);
+ }
Introspector.setBeanInfoSearchPath(newSearchPath);
TagManager.registerTag("java.awt.*", "ButtonGroup", new DefaultObjectHandler(ClassDescriptorLoader.getClassDescriptor(JAXXButtonGroup.class)));
Modified: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/TagManagerTest.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/TagManagerTest.java 2008-11-03 00:55:20 UTC (rev 1014)
+++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/TagManagerTest.java 2008-11-04 09:10:04 UTC (rev 1015)
@@ -7,6 +7,7 @@
import jaxx.tags.DefaultObjectHandler;
import jaxx.tags.TagHandler;
import jaxx.tags.TagManager;
+import jaxx.tags.swing.SwingInitializer;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
@@ -18,6 +19,7 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
+import java.beans.Introspector;
public class TagManagerTest {
@@ -133,4 +135,24 @@
Assert.assertEquals("JComboBox is not aliased to jaxx.runtime.swing.JAXXComboBox", "jaxx.runtime.swing.JAXXComboBox", TagManager.resolveClassName("JComboBox", compiler));
Assert.assertEquals("javax.swing.JComboBox is not aliased to jaxx.runtime.swing.JAXXComboBox", "jaxx.runtime.swing.JAXXComboBox", TagManager.resolveClassName("javax.swing.JComboBox", compiler));
}
+
+ @Test
+ public void testExtraBeanInfoPath() {
+ String[] searchPath0 = Introspector.getBeanInfoSearchPath();
+
+ new SwingInitializer().initialize();
+ String[] searchPath = Introspector.getBeanInfoSearchPath();
+ Assert.assertEquals(searchPath0.length+1,searchPath.length);
+ Introspector.setBeanInfoSearchPath(searchPath0);
+
+ String packageName = getClass().getPackage().getName();
+ SwingInitializer.setExtraBeanInfoSearchPath(new String[]{packageName});
+
+ new SwingInitializer().initialize();
+ searchPath = Introspector.getBeanInfoSearchPath();
+ Assert.assertEquals(searchPath0.length+2,searchPath.length);
+ Assert.assertEquals(packageName, searchPath[searchPath.length-1]);
+
+ Introspector.setBeanInfoSearchPath(searchPath0);
+ }
}
\ No newline at end of file
Modified: lutinjaxx/trunk/maven-jaxx-plugin/changelog
===================================================================
--- lutinjaxx/trunk/maven-jaxx-plugin/changelog 2008-11-03 00:55:20 UTC (rev 1014)
+++ lutinjaxx/trunk/maven-jaxx-plugin/changelog 2008-11-04 09:10:04 UTC (rev 1015)
@@ -1,3 +1,6 @@
+0.6 chemit 200811??
+ * 20081104 [chemit] can add extra beanInfoSearchPath in JaxxGeneratorMojo
+
ver-0-5 chemit 20081002
* 20081013 [chemit] can generate logger on jaxx files
* 20081011 [chemit] improve site
Modified: lutinjaxx/trunk/maven-jaxx-plugin/src/main/java/org/codelutin/jaxx/JaxxGeneratorMojo.java
===================================================================
--- lutinjaxx/trunk/maven-jaxx-plugin/src/main/java/org/codelutin/jaxx/JaxxGeneratorMojo.java 2008-11-03 00:55:20 UTC (rev 1014)
+++ lutinjaxx/trunk/maven-jaxx-plugin/src/main/java/org/codelutin/jaxx/JaxxGeneratorMojo.java 2008-11-04 09:10:04 UTC (rev 1015)
@@ -21,7 +21,9 @@
import jaxx.compiler.CompilerOptions;
import jaxx.compiler.JAXXCompiler;
+import jaxx.runtime.JAXXContext;
import jaxx.tags.TagManager;
+import jaxx.tags.swing.SwingInitializer;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
@@ -34,6 +36,7 @@
import java.io.File;
import java.io.IOException;
+import java.lang.reflect.Modifier;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
@@ -150,6 +153,31 @@
*/
protected boolean addLogger;
+ /**
+ * the name of implementation of {@link jaxx.runtime.JAXXContext}
+ * to be used on {@link jaxx.runtime.JAXXObject}.
+ * <p/>
+ * Must not be abstract.
+ *
+ * @parameter expression="${jaxx.jaxxContextImplementorClass}" default-value="jaxx.runtime.DefaultJAXXContext"
+ * @required
+ */
+ protected String jaxxContextImplementorClass;
+
+ /**
+ * extra path to be added in {@link java.beans.Introspector#setBeanInfoSearchPath(String[])}.
+ * <p/>
+ * add beanInfoSearchPath to be registred by {@link SwingInitializer#setExtraBeanInfoSearchPath(String[])}
+ * <p/>
+ * and then will be use by {@link jaxx.tags.swing.SwingInitializer#initialize()}.
+ * <p/>
+ * <p/>
+ * This permit to use real beanInfo of imported graphic libraries.
+ *
+ * @parameter expression="${jaxx.beanInfoSearchPath}"
+ */
+ protected String[] beanInfoSearchPath;
+
protected String[] files;
private static final String[] INCLUDES = {"**\\/*.jaxx"};
@@ -162,15 +190,21 @@
protected void init() {
- if (project!=null && ("pom".equals(project.getPackaging()) || "site".equals(project.getPackaging()))) {
+ if (project != null && ("pom".equals(project.getPackaging()) || "site".equals(project.getPackaging()))) {
// nothing to be done for this type of packaging
skip = true;
getLog().info("skip generate goal for packaging " + project.getPackaging());
return;
}
- skip=false;
+ skip = false;
+ checkJaxxContextImplementorClass();
+
+ if (beanInfoSearchPath != null && beanInfoSearchPath.length > 0) {
+ // regisre extra path
+ SwingInitializer.setExtraBeanInfoSearchPath(beanInfoSearchPath);
+ }
if (!outResource.exists()) {
outResource.mkdirs();
}
@@ -187,10 +221,10 @@
boolean noIncludes = includes == null || includes.length == 0;
ds.setIncludes(noIncludes ? INCLUDES : includes);
- if (excludes!=null && excludes.length>0) {
+ if (excludes != null && excludes.length > 0) {
ds.setExcludes(excludes);
}
-
+
ds.scan();
String[] files = ds.getIncludedFiles();
if (verbose) {
@@ -243,6 +277,7 @@
result.setVerbose(verbose);
result.setI18nable(i18nable);
result.setAddLogger(addLogger);
+ result.setJaxxContextImplementorClass(jaxxContextImplementorClass);
return result;
}
@@ -256,7 +291,7 @@
}
return;
}
-
+
if (files.length == 0) {
getLog().info("jaxx - no jaxx file to treate. ");
return;
@@ -370,6 +405,24 @@
}
}
+ protected void checkJaxxContextImplementorClass() {
+ if (jaxxContextImplementorClass == null) {
+ throw new IllegalArgumentException("jaxxContextImplementor can not be null");
+ }
+ try {
+ Class jaxxContextImplementor = Class.forName(jaxxContextImplementorClass);
+ if (!JAXXContext.class.isAssignableFrom(jaxxContextImplementor)) {
+ throw new IllegalArgumentException("jaxxContextImplementor '" + jaxxContextImplementor + "' does not implements " + JAXXContext.class);
+ }
+ if (Modifier.isAbstract(jaxxContextImplementor.getModifiers())) {
+ throw new IllegalArgumentException("jaxxContextImplementor '" + jaxxContextImplementor + "' can not be abstract.");
+
+ }
+ } catch (ClassNotFoundException e) {
+ throw new IllegalArgumentException("could not find jaxxContextImplementor class : " + jaxxContextImplementorClass);
+ }
+ }
+
public File getOutJava() {
return outJava;
}
@@ -461,4 +514,20 @@
public MirroredFileUpdater getUpdater() {
return updater;
}
+
+ public String getJaxxContextImplementorClass() {
+ return jaxxContextImplementorClass;
+ }
+
+ public void setJaxxContextImplementorClass(String jaxxContextImplementorClass) {
+ this.jaxxContextImplementorClass = jaxxContextImplementorClass;
+ }
+
+ public String[] getBeanInfoSearchPath() {
+ return beanInfoSearchPath;
+ }
+
+ public void setBeanInfoSearchPath(String[] beanInfoSearchPath) {
+ this.beanInfoSearchPath = beanInfoSearchPath;
+ }
}
\ No newline at end of file
Modified: lutinjaxx/trunk/maven-jaxx-plugin/src/test/java/org/codelutin/jaxx/CompilerTest.java
===================================================================
--- lutinjaxx/trunk/maven-jaxx-plugin/src/test/java/org/codelutin/jaxx/CompilerTest.java 2008-11-03 00:55:20 UTC (rev 1014)
+++ lutinjaxx/trunk/maven-jaxx-plugin/src/test/java/org/codelutin/jaxx/CompilerTest.java 2008-11-04 09:10:04 UTC (rev 1015)
@@ -2,8 +2,11 @@
import jaxx.compiler.JAXXCompiler;
import jaxx.compiler.JAXXCompilerHelper;
+import jaxx.runtime.JAXXContext;
+import jaxx.runtime.DefaultJAXXContext;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.logging.SystemStreamLog;
+import org.junit.Assert;
import java.io.File;
import java.lang.reflect.Field;
@@ -116,6 +119,37 @@
assertEquals(1, mojo.getFiles().length);
}
+ public void testErrorJaxxContextImplementorClass() throws Exception {
+ mojo.setJaxxContextImplementorClass(null);
+ try {
+ mojo.init();
+ fail();
+ } catch (IllegalArgumentException e) {
+ Assert.assertTrue(true);
+ }
+
+ mojo.setJaxxContextImplementorClass(String.class.getName());
+ try {
+ mojo.init();
+ fail();
+ } catch (IllegalArgumentException e) {
+ Assert.assertTrue(true);
+ }
+
+ mojo.setJaxxContextImplementorClass(JAXXContext.class.getName());
+ try {
+ mojo.init();
+ fail();
+ } catch (IllegalArgumentException e) {
+ Assert.assertTrue(true);
+ }
+
+ mojo.setJaxxContextImplementorClass(DefaultJAXXContext.class.getName());
+ mojo.init();
+ Assert.assertTrue(true);
+
+ }
+
public void testScript() throws Exception {
mojo.execute();
assertEquals(1, mojo.getFiles().length);
Modified: lutinjaxx/trunk/maven-jaxx-plugin/src/test/java/org/codelutin/jaxx/JaxxBaseTest.java
===================================================================
--- lutinjaxx/trunk/maven-jaxx-plugin/src/test/java/org/codelutin/jaxx/JaxxBaseTest.java 2008-11-03 00:55:20 UTC (rev 1014)
+++ lutinjaxx/trunk/maven-jaxx-plugin/src/test/java/org/codelutin/jaxx/JaxxBaseTest.java 2008-11-04 09:10:04 UTC (rev 1015)
@@ -8,6 +8,8 @@
import java.io.File;
import java.io.IOException;
+import jaxx.runtime.DefaultJAXXContext;
+
/** @author chemit */
public abstract class JaxxBaseTest extends AbstractMojoTestCase {
@@ -30,6 +32,7 @@
getLog().info(getName());
pomFile = getPomFile();
mojo = (JaxxGeneratorMojo) lookupMojo("generate", pomFile);
+ mojo.setJaxxContextImplementorClass(DefaultJAXXContext.class.getName());
assertNotNull(mojo);
}
Copied: lutinjaxx/trunk/maven-jaxx-plugin/src/test/resources/testcases/ErrorJaxxContextImplementorClass.xml (from rev 1003, lutinjaxx/trunk/maven-jaxx-plugin/src/test/resources/testcases/Errors.xml)
===================================================================
--- lutinjaxx/trunk/maven-jaxx-plugin/src/test/resources/testcases/ErrorJaxxContextImplementorClass.xml (rev 0)
+++ lutinjaxx/trunk/maven-jaxx-plugin/src/test/resources/testcases/ErrorJaxxContextImplementorClass.xml 2008-11-04 09:10:04 UTC (rev 1015)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codelutin</groupId>
+ <artifactId>maven-jaxx-plugin</artifactId>
+ <configuration>
+ <src>${basedir}/src/test/resources</src>
+ <outJava>${basedir}/target/it-generated-source/java</outJava>
+ <outResource>${basedir}/target/it-generated-source/resources</outResource>
+ <jaxxContextImplementorClass>java.lang.String</jaxxContextImplementorClass>
+ <force>true</force>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Property changes on: lutinjaxx/trunk/maven-jaxx-plugin/src/test/resources/testcases/ErrorJaxxContextImplementorClass.xml
___________________________________________________________________
Name: svn:mergeinfo
+
1
0
r1014 - in lutinjaxx/trunk/jaxx-core/src: main/java/jaxx/runtime test/java/jaxx/runtime
by tchemit@users.labs.libre-entreprise.org 03 Nov '08
by tchemit@users.labs.libre-entreprise.org 03 Nov '08
03 Nov '08
Author: tchemit
Date: 2008-11-03 00:55:20 +0000 (Mon, 03 Nov 2008)
New Revision: 1014
Modified:
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/DefaultJAXXContext.java
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXContextEntryDef.java
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXInitialContext.java
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/Util.java
lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java
Log:
use DefaultJAXXContext as super class ofJAXXInitialContext to avoid duplicated code
add usefull method to check if entry is in context
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/DefaultJAXXContext.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/DefaultJAXXContext.java 2008-11-03 00:53:56 UTC (rev 1013)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/DefaultJAXXContext.java 2008-11-03 00:55:20 UTC (rev 1014)
@@ -54,8 +54,11 @@
@SuppressWarnings({"unchecked"})
public <T> T getContextValue(Class<T> clazz, String name) {
for (Map.Entry<Object, String> entry : data.entrySet()) {
- if (clazz.isAssignableFrom(entry.getKey().getClass()) && (name == null || name.equals(entry.getValue()))) {
- return (T) entry.getKey();
+ if (clazz.isAssignableFrom(entry.getKey().getClass())) {
+ if ((name == null && entry.getValue() == null) ||
+ (name != null && name.equals(entry.getValue()))) {
+ return (T) entry.getKey();
+ }
}
}
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXContextEntryDef.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXContextEntryDef.java 2008-11-03 00:53:56 UTC (rev 1013)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXContextEntryDef.java 2008-11-03 00:55:20 UTC (rev 1014)
@@ -49,6 +49,11 @@
return context.getContextValue(klass, name);
}
+ @Override
+ public String toString() {
+ return super.toString() + "<" + klass + ":" + name + ">";
+ }
+
protected JAXXContextEntryDef(Class<O> klass) {
this(null, klass);
}
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXInitialContext.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXInitialContext.java 2008-11-03 00:53:56 UTC (rev 1013)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXInitialContext.java 2008-11-03 00:55:20 UTC (rev 1014)
@@ -1,9 +1,7 @@
package jaxx.runtime;
import java.awt.Container;
-import java.util.LinkedHashSet;
import java.util.Map.Entry;
-import java.util.Set;
/**
* An initial context to be inject in a {@link JAXXObject}.
@@ -12,7 +10,7 @@
* <p/>
* The method {@link #add(String, Object)} register a named value.
* <p/>
- * The method {@link #to(JAXXObject)} inject in the {@link JAXXObject} the values registred in the initial context.
+ * The method {@link #to(JAXXContext)} inject in the {@link JAXXObject} the values registred in the initial context.
* <p/>
* The initial context is also a "limited" {@link JAXXContext}, since we can only use the two methods
* <p/>
@@ -20,39 +18,10 @@
*
* @see JAXXContext
*/
-public class JAXXInitialContext implements JAXXContext {
+public class JAXXInitialContext extends DefaultJAXXContext {
- /** This class define a simple entry of a {@link JAXXContext}. */
- public static class JAXXInitialContextEntry implements Entry<String, Object> {
-
- protected String key;
- protected Object value;
-
- public JAXXInitialContextEntry(String key, Object value) {
- this.key = key;
- this.value = value;
- }
-
- public String getKey() {
- return key;
- }
-
- public Object getValue() {
- return value;
- }
-
- public Object setValue(Object value) {
- Object oldValue = this.value;
- this.value = value;
- return oldValue;
- }
-
- }
-
- protected Set<Entry<String, Object>> entries;
-
public JAXXInitialContext() {
- entries = new LinkedHashSet<Entry<String, Object>>();
+ super();
}
/**
@@ -73,7 +42,7 @@
* @return the instance of the context
*/
public JAXXInitialContext add(String name, Object value) {
- entries.add(new JAXXInitialContextEntry(name, value));
+ super.setContextValue(value, name);
return this;
}
@@ -82,51 +51,28 @@
*
* @param dst the object to fill.
*/
- public void to(JAXXObject dst) {
- for (Entry<String, Object> entry : entries) {
- if (entry.getKey() == null) {
- dst.setContextValue(entry.getValue());
- } else {
- dst.setContextValue(entry.getValue(), entry.getKey());
- }
+ public void to(JAXXContext dst) {
+ for (Entry<Object, String> entry : data.entrySet()) {
+ dst.setContextValue(entry.getKey(), entry.getValue());
}
}
- @SuppressWarnings({"unchecked"})
- public <T> T getContextValue(Class<T> clazz) {
- T result = null;
- for (Entry<String, Object> entry : entries) {
- if (clazz.isAssignableFrom(entry.getValue().getClass())) {
- result = (T) entry.getValue();
- break;
- }
- }
- return result;
- }
-
- @SuppressWarnings({"unchecked"})
- public <T> T getContextValue(Class<T> clazz, String name) {
- T result = null;
- for (Entry<String, Object> entry : entries) {
- if (name.equals(entry.getKey()) && clazz.isAssignableFrom(entry.getValue().getClass())) {
- result = (T) entry.getValue();
- }
- }
- return result;
- }
-
+ @Override
public void setContextValue(Object o) {
throw new RuntimeException("not implemented");
}
+ @Override
public void setContextValue(Object o, String name) {
throw new RuntimeException("not implemented");
}
+ @Override
public <O extends Container> O getParentContainer(Class<O> clazz) {
throw new RuntimeException("not implemented");
}
+ @Override
public <O extends Container> O getParentContainer(Object top, Class<O> clazz) {
throw new RuntimeException("not implemented");
}
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/Util.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/Util.java 2008-11-03 00:53:56 UTC (rev 1013)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/Util.java 2008-11-03 00:55:20 UTC (rev 1014)
@@ -407,4 +407,27 @@
result = value == null ? "" : value.toString();
return result;
}
+
+ /**
+ * Test if a type of entry exists in a given context and throw an IllegalArgumentException if not found.
+ * <p/>
+ * If entry is found, return his value in context.
+ *
+ * @param context the context to test
+ * @param def the definition of the entry to seek in context
+ * @return the value from the context
+ * @throws IllegalArgumentException if the entry is not found in context.
+ */
+ public static <T> T checkJAXXContextEntry(JAXXContext context, JAXXContextEntryDef<T> def) throws IllegalArgumentException {
+
+ T value = def.getContextValue(context);
+
+ if (value == null) {
+ throw new IllegalArgumentException("the context entry [" + def + "] ] was not found in context " + context);
+ }
+
+ return value;
+
+ }
+
}
Modified: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java 2008-11-03 00:53:56 UTC (rev 1013)
+++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java 2008-11-03 00:55:20 UTC (rev 1014)
@@ -132,6 +132,30 @@
}
@Test
+ public void testSetGetContextValue2() throws Exception {
+
+ // attach parent context
+ JAXXContext parentContext = new DefaultJAXXContext();
+ ctxt.setContextValue(parentContext);
+
+ String expected;
+ String result;
+
+ result = ctxt.getContextValue(String.class);
+ Assert.assertNull(result);
+ result = ctxt.getContextValue(String.class, "yo");
+ Assert.assertNull(result);
+
+ expected = "yo";
+ ctxt.setContextValue(expected, "yo");
+
+ result = ctxt.getContextValue(String.class);
+ Assert.assertNull(result);
+ result = ctxt.getContextValue(String.class, "yo");
+ Assert.assertEquals(expected, result);
+ }
+
+ @Test
public void testSetGetContextValueInParentParentContext() throws Exception {
// attach parent parent context
1
0
r1013 - lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/tags/validator
by tchemit@users.labs.libre-entreprise.org 03 Nov '08
by tchemit@users.labs.libre-entreprise.org 03 Nov '08
03 Nov '08
Author: tchemit
Date: 2008-11-03 00:53:56 +0000 (Mon, 03 Nov 2008)
New Revision: 1013
Modified:
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/tags/validator/BeanValidatorHandler.java
Log:
if beanInfo found in BeanValidatorHandler return
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/tags/validator/BeanValidatorHandler.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/tags/validator/BeanValidatorHandler.java 2008-11-02 18:24:43 UTC (rev 1012)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/tags/validator/BeanValidatorHandler.java 2008-11-03 00:53:56 UTC (rev 1013)
@@ -357,6 +357,10 @@
// add generic type to validator
JAXXBeanInfo beanInfo = getBeanDescriptor(compiler);
+ if (beanInfo==null) {
+ return true;
+ }
+
setGenericTypes(new String[]{beanInfo.getJAXXBeanDescriptor().getClassDescriptor().getName()});
if (getAutoField()) {
1
0
r1012 - lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime
by tchemit@users.labs.libre-entreprise.org 02 Nov '08
by tchemit@users.labs.libre-entreprise.org 02 Nov '08
02 Nov '08
Author: tchemit
Date: 2008-11-02 18:24:43 +0000 (Sun, 02 Nov 2008)
New Revision: 1012
Modified:
lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java
Log:
test new logic in DefaultJAXXContext : seek in parent context if entry not found
Modified: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java 2008-11-02 18:12:23 UTC (rev 1011)
+++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java 2008-11-02 18:24:43 UTC (rev 1012)
@@ -70,7 +70,6 @@
expected = parentContext;
result = ctxt.getContextValue(JAXXContext.class);
Assert.assertEquals(expected, result);
-
}
@Test
@@ -97,6 +96,78 @@
Assert.assertEquals(expected, result);
}
+ @Test
+ public void testSetGetContextValueInParentContext() throws Exception {
+
+ // attach parent context
+ JAXXContext parentContext = new DefaultJAXXContext();
+ ctxt.setContextValue(parentContext);
+
+ String expected;
+ String result;
+
+ result = ctxt.getContextValue(String.class);
+ Assert.assertNull(result);
+
+ expected = "yo";
+ result = ctxt.getContextValue(String.class);
+ Assert.assertNull(result);
+ parentContext.setContextValue(expected);
+ result = ctxt.getContextValue(String.class);
+ Assert.assertEquals(expected, result);
+
+ expected = "ya";
+ result = ctxt.getContextValue(String.class, "second");
+ Assert.assertNull(result);
+ parentContext.setContextValue(expected, "second");
+ result = ctxt.getContextValue(String.class, "second");
+ Assert.assertEquals(expected, result);
+
+ expected = "yi";
+ result = ctxt.getContextValue(String.class, "second");
+ parentContext.setContextValue(expected, "second");
+ Assert.assertEquals("ya", result);
+ result = ctxt.getContextValue(String.class, "second");
+ Assert.assertEquals(expected, result);
+ }
+
+ @Test
+ public void testSetGetContextValueInParentParentContext() throws Exception {
+
+ // attach parent parent context
+ JAXXContext parentParentContext = new DefaultJAXXContext();
+ JAXXContext parentContext = new DefaultJAXXContext();
+ parentContext.setContextValue(parentParentContext);
+ ctxt.setContextValue(parentContext);
+
+ String expected;
+ String result;
+
+ result = ctxt.getContextValue(String.class);
+ Assert.assertNull(result);
+
+ expected = "yo";
+ result = ctxt.getContextValue(String.class);
+ Assert.assertNull(result);
+ parentParentContext.setContextValue(expected);
+ result = ctxt.getContextValue(String.class);
+ Assert.assertEquals(expected, result);
+
+ expected = "ya";
+ result = ctxt.getContextValue(String.class, "second");
+ Assert.assertNull(result);
+ parentParentContext.setContextValue(expected, "second");
+ result = ctxt.getContextValue(String.class, "second");
+ Assert.assertEquals(expected, result);
+
+ expected = "yi";
+ result = ctxt.getContextValue(String.class, "second");
+ parentParentContext.setContextValue(expected, "second");
+ Assert.assertEquals("ya", result);
+ result = ctxt.getContextValue(String.class, "second");
+ Assert.assertEquals(expected, result);
+ }
+
private static class MyJAXXObject extends DefaultJAXXContext implements JAXXObject {
public Object getObjectById(String id) {
1
0
r1011 - in lutinjaxx/trunk/jaxx-core: . src/main/java/jaxx/runtime src/test/java/jaxx/junit src/test/java/jaxx/runtime src/test/resources
by tchemit@users.labs.libre-entreprise.org 02 Nov '08
by tchemit@users.labs.libre-entreprise.org 02 Nov '08
02 Nov '08
Author: tchemit
Date: 2008-11-02 18:12:23 +0000 (Sun, 02 Nov 2008)
New Revision: 1011
Added:
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXContextEntryDef.java
Modified:
lutinjaxx/trunk/jaxx-core/changelog
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/DefaultJAXXContext.java
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXContext.java
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXInitialContext.java
lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ClassDescriptorTest.java
lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ColorConverterTest.java
lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/InsetsConverterTest.java
lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/JavaFileParserTest.java
lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/PrimitiveConverterTest.java
lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/TagManagerTest.java
lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ValidatorBean.java
lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ValidatorTest.java
lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java
lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/UtilTest.java
lutinjaxx/trunk/jaxx-core/src/test/resources/log4j.properties
Log:
improve JAXXContext :
- introduce a JAXXContextEntryDef to qualify an entry of a JAXXContext
- do javadoc in JAXXContext
- add logic in DefaultJAXXContext : seek in parent context if entry not found
import tests :
- fix the last failing test :)
- dumps test to JUnit4 :)
Modified: lutinjaxx/trunk/jaxx-core/changelog
===================================================================
--- lutinjaxx/trunk/jaxx-core/changelog 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/changelog 2008-11-02 18:12:23 UTC (rev 1011)
@@ -1,6 +1,13 @@
ver-0-6 chemit 200811??
+ * 20081102 [chemit] improve JAXXContext :
+ - introduce a JAXXContextEntryDef to qualify an entry of a JAXXContext
+ - do javadoc in JAXXContext
+ - add logic in DefaultJAXXContext : seek in parent context if entry not found
+ * 20081102 [chemit] improve tests :
+ - fix the last failed test from Jaxx original version :)
+ - dumps tests to JUnit4 :)
* 20081030 [chemit] improve BeanValidator :
- - add full PropertyChangeEvent java-bean support and a property valid
+ - add full PropertyChangeEvent java-bean support and a property valid
- when remove bean from validator, must remove errors from model
- make possible to have a dynamic errorListModel in jaxx files
* 20081030 [chemit] improve JAXXContext :
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/DefaultJAXXContext.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/DefaultJAXXContext.java 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/DefaultJAXXContext.java 2008-11-02 18:12:23 UTC (rev 1011)
@@ -58,8 +58,21 @@
return (T) entry.getKey();
}
}
- //todo pas trouve dans ce context, on devrait rechercher dans les parents de l'ui ?
- return null;
+
+ // no value found in this context, will try in the parent context
+
+ if (JAXXContext.class == clazz) {
+ // no seek in the parent context, since we are already looking for it
+ return null;
+ }
+
+ JAXXContext parentContext = getContextValue(JAXXContext.class);
+ if (parentContext == null) {
+ // no parent context, so no value find
+ return null;
+ }
+ // seek in parent context
+ return parentContext.getContextValue(clazz, name);
}
@@ -72,11 +85,11 @@
if (ui == null) {
throw new IllegalStateException("no ui attached to this context");
}
- if (top==null) {
+ if (top == null) {
throw new IllegalArgumentException("top parameter can not be null");
}
if (!Container.class.isAssignableFrom(top.getClass())) {
- throw new IllegalArgumentException("top parameter "+top + " is not a " + Container.class);
+ throw new IllegalArgumentException("top parameter " + top + " is not a " + Container.class);
}
Container parent = ((Container) top).getParent();
if (parent != null && !clazz.isAssignableFrom(parent.getClass())) {
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXContext.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXContext.java 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXContext.java 2008-11-02 18:12:23 UTC (rev 1011)
@@ -3,63 +3,81 @@
import java.awt.Container;
/**
- * todo (make javadoc :) )
- *
+ * The {@link jaxx.runtime.JAXXContext} contract defines a generic context.
+ * <p/>
+ * A context contains two king of entries :
+ * <p/>
+ * <h2>Unamed entry</h2>
+ * a such entry maps filter only on the clas of the object of the entry.
+ * <p/>
+ * To add a <b>unamed</b> entry, use {@link #setContextValue(Object)} and {@link #getContextValue(Class)} to reteave a
+ * such entry.
+ * <p/>
+ * <h2>named entry</h2>
+ * a such entry filter on class of the object and on the name of the entry.
+ * <p/>
+ * To add a <b>named</b> entry, use {@link #setContextValue(Object,String)} and {@link #getContextValue(Class,String)}
+ * to reteave a such entry.
+ *
* @author letellier
+ * @author chemit
*/
public interface JAXXContext {
/**
- * Map actions objects used by JAXX interface.
- *
- * @param o todo
+ * Push in the context a new unamed entry.
+ * <p/>
+ * If a previous entry exists in context (unamed and same class), it will be removed.
+ *
+ * @param o the value to push in context
*/
- public void setContextValue(Object o);
+ public void setContextValue(Object o);
- /**
- * Map actions objects used by JAXX interface and their names.
+ /**
+ * * Push in the context a new amed entry.
+ * <p/>
+ * If a previous entry exists in context (same name and class), it will be removed.
*
- * @param o todo
- * @param name todo
+ * @param o the value to push in context
+ * @param name the name of the new entry
*/
- public void setContextValue(Object o, String name);
-
+ public void setContextValue(Object o, String name);
+
/**
- * Return action object used by JAXX interface.
+ * Seek for a unamed entry in the context
+ * <p/>
* This is an exemple to call a method in JAXX :
- *
- * <code>
- * <JButton onActionPerformed='{getContextValue(Action.class).method(args[])}'/>
- * </code>
+ * <p/>
+ * <code><JButton onActionPerformed='{getContextValue(Action.class).method(args[])}'/></code>
*
- * @param clazz todo
- * @return todo
+ * @param clazz the class of unamed entry to seek in context
+ * @return the value of the unamed entry for the given class, or <code>null</code> if no such entry.
*/
- public <T> T getContextValue(Class<T> clazz);
-
+ public <T> T getContextValue(Class<T> clazz);
+
/**
- * Return action object used by JAXX interface.
+ * Seek for a named entry in the context
*
- * @param clazz todo
- * @param name todo
- * @return todo
+ * @param clazz the class of named entry to seek in context
+ * @param name the name of the entry to seek in context
+ * @return the value of the named entry for the given class, or <code>null</code> if no such entry.
*/
- public <T> T getContextValue(Class<T> clazz, String name);
-
+ public <T> T getContextValue(Class<T> clazz, String name);
+
/**
* Return parent's container corresponding to the Class clazz
*
* @param clazz clazz desired
* @return parent's container
*/
- public <O extends Container> O getParentContainer(Class<O> clazz);
-
- /**
+ public <O extends Container> O getParentContainer(Class<O> clazz);
+
+ /**
* Return parent's container corresponding to the Class clazz
*
- * @param top todo
+ * @param top the top container
* @param clazz desired
* @return parent's container
*/
- public <O extends Container> O getParentContainer(Object top, Class<O> clazz);
+ public <O extends Container> O getParentContainer(Object top, Class<O> clazz);
}
Added: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXContextEntryDef.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXContextEntryDef.java (rev 0)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXContextEntryDef.java 2008-11-02 18:12:23 UTC (rev 1011)
@@ -0,0 +1,69 @@
+package jaxx.runtime;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * To qualify an entry in a {@link JAXXContext}.
+ * <p/>
+ * Use the factory methods <code>newDef</code> and <code>newListDef</code< to obtain new instances.
+ *
+ * @author chemit
+ */
+public class JAXXContextEntryDef<O> implements java.io.Serializable {
+
+ /** name of the entry, can be nuill for a unamed entry. */
+ protected String name;
+
+ /** class of the entry, can not be null */
+ protected Class<O> klass;
+
+ private static final long serialVersionUID = 1L;
+
+ public static <O> JAXXContextEntryDef<O> newDef(Class<O> klass) {
+ return newDef(null, klass);
+ }
+
+ public static <O> JAXXContextEntryDef<O> newDef(String name, Class<O> klass) {
+ return new JAXXContextEntryDef<O>(name, klass);
+ }
+
+ public static <O> JAXXContextEntryDef<List<O>> newListDef() {
+ return newListDef(null);
+ }
+
+ public static <O> JAXXContextEntryDef<List<O>> newListDef(String name) {
+ return new JAXXContextEntryDef<List<O>>(name, JAXXContextEntryDef.<O>castList());
+ }
+
+
+ public String getName() {
+ return name;
+ }
+
+ public Class<O> getKlass() {
+ return klass;
+ }
+
+ public O getContextValue(JAXXContext context) {
+ return context.getContextValue(klass, name);
+ }
+
+ protected JAXXContextEntryDef(Class<O> klass) {
+ this(null, klass);
+ }
+
+ protected JAXXContextEntryDef(String name, Class<O> klass) {
+ if (klass == null) {
+ throw new IllegalArgumentException("class can not be null");
+ }
+ this.name = name;
+ this.klass = klass;
+ }
+
+ @SuppressWarnings({"unchecked"})
+ protected static <O> Class<List<O>> castList() {
+ return (Class<List<O>>) Collections.emptyList().getClass();
+ }
+
+}
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXInitialContext.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXInitialContext.java 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXInitialContext.java 2008-11-02 18:12:23 UTC (rev 1011)
@@ -22,6 +22,7 @@
*/
public class JAXXInitialContext implements JAXXContext {
+ /** This class define a simple entry of a {@link JAXXContext}. */
public static class JAXXInitialContextEntry implements Entry<String, Object> {
protected String key;
Modified: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ClassDescriptorTest.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ClassDescriptorTest.java 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ClassDescriptorTest.java 2008-11-02 18:12:23 UTC (rev 1011)
@@ -1,50 +1,57 @@
package jaxx.junit;
-import java.awt.*;
-import junit.framework.TestCase;
+import jaxx.reflect.ClassDescriptor;
+import jaxx.reflect.ClassDescriptorLoader;
+import jaxx.reflect.MethodDescriptor;
+import org.junit.Assert;
+import org.junit.Test;
-import jaxx.reflect.*;
-
-public class ClassDescriptorTest extends TestCase {
+public class ClassDescriptorTest {
+
+ @Test
public void testBuiltInClassName() throws ClassNotFoundException, NoSuchMethodException {
ClassDescriptor object = ClassDescriptorLoader.getClassDescriptor("java.lang.Object");
MethodDescriptor toString = object.getMethodDescriptor("toString", new ClassDescriptor[0]);
- assertEquals(toString.getName(), "toString");
- assertEquals(toString.getParameterTypes().length, 0);
+ Assert.assertEquals(toString.getName(), "toString");
+ Assert.assertEquals(toString.getParameterTypes().length, 0);
- MethodDescriptor equals = object.getMethodDescriptor("equals", new ClassDescriptor[] { object });
- assertEquals(equals.getName(), "equals");
- assertEquals(equals.getParameterTypes().length, 1);
- assertEquals(equals.getParameterTypes()[0], object);
+ MethodDescriptor equals = object.getMethodDescriptor("equals", new ClassDescriptor[]{object});
+ Assert.assertEquals(equals.getName(), "equals");
+ Assert.assertEquals(equals.getParameterTypes().length, 1);
+ Assert.assertEquals(equals.getParameterTypes()[0], object);
}
-
+ @Test
public void testBuiltInClass() throws ClassNotFoundException, NoSuchMethodException {
ClassDescriptor object1 = ClassDescriptorLoader.getClassDescriptor("java.lang.Object");
ClassDescriptor object2 = ClassDescriptorLoader.getClassDescriptor(Object.class);
- assertEquals(object1, object2);
+ Assert.assertEquals(object1, object2);
}
-
-
+
+ @Test
public void testUserClassName() throws ClassNotFoundException, NoSuchMethodException {
ClassDescriptor me = ClassDescriptorLoader.getClassDescriptor("jaxx.junit.ClassDescriptorTest", getClass().getClassLoader());
MethodDescriptor testUserClassName = me.getMethodDescriptor("testUserClassName", new ClassDescriptor[0]);
- assertEquals(testUserClassName.getName(), "testUserClassName");
- assertEquals(testUserClassName.getParameterTypes().length, 0);
+ Assert.assertEquals(testUserClassName.getName(), "testUserClassName");
+ Assert.assertEquals(testUserClassName.getParameterTypes().length, 0);
}
-
-
- public void testWrongCase() {
- try {
- ClassDescriptor object = ClassDescriptorLoader.getClassDescriptor("jaxx.junit.classdescriptortest", getClass().getClassLoader());
- fail("Found descriptor using wrong case: " + object);
- }
- catch (ClassNotFoundException e) { }
+
+ @Test(expected = ClassNotFoundException.class)
+ public void testWrongCase() throws ClassNotFoundException {
+ //try {
+ //ClassDescriptor object =
+ ClassDescriptorLoader.getClassDescriptor("jaxx.junit.classdescriptortest", getClass().getClassLoader());
+ // fail("Found descriptor using wrong case: " + object);
+ //}
+ //catch (ClassNotFoundException e) {
+ //}
}
-
-
+
+ @Test
public void testArrays() throws ClassNotFoundException {
ClassDescriptor intArray = ClassDescriptorLoader.getClassDescriptor(int[].class);
+ Assert.assertNotNull(intArray);
ClassDescriptor objectArray = ClassDescriptorLoader.getClassDescriptor(Object[].class);
+ Assert.assertNotNull(objectArray);
}
}
\ No newline at end of file
Modified: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ColorConverterTest.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ColorConverterTest.java 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ColorConverterTest.java 2008-11-02 18:12:23 UTC (rev 1011)
@@ -1,59 +1,51 @@
package jaxx.junit;
-import java.awt.*;
-import junit.framework.TestCase;
+import jaxx.types.ColorConverter;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
-import jaxx.types.*;
-
-public class ColorConverterTest extends TestCase {
- private ColorConverter converter;
+import java.awt.Color;
+public class ColorConverterTest {
+
+ ColorConverter converter;
+
+ @Before
public void setUp() {
converter = new ColorConverter();
}
-
-
+
+ @Test
public void testHexValue() {
Color value = (Color) converter.convertFromString("#3000FF", Color.class);
- assertEquals(value, new Color(48, 0, 255));
+ Assert.assertEquals(value, new Color(48, 0, 255));
}
-
-
+
+ @Test
public void testUpperCaseConstant() {
Color value = (Color) converter.convertFromString("RED", Color.class);
- assertEquals(value, Color.RED);
+ Assert.assertEquals(value, Color.RED);
}
-
-
+
+ @Test
public void testLowerCaseConstant() {
Color value = (Color) converter.convertFromString("blue", Color.class);
- assertEquals(value, Color.blue);
+ Assert.assertEquals(value, Color.blue);
}
-
+ @Test(expected = IllegalArgumentException.class)
public void testMissingHash() {
- try {
- Color value = (Color) converter.convertFromString("ABCDEF", Color.class);
- fail("Expected IllegalArgumentException");
- }
- catch (IllegalArgumentException e) { }
+ converter.convertFromString("ABCDEF", Color.class);
}
-
+ @Test(expected = IllegalArgumentException.class)
public void testInvalidNumber() {
- try {
- Color value = (Color) converter.convertFromString("#ABCDEG", Color.class);
- fail("Expected IllegalArgumentException");
- }
- catch (IllegalArgumentException e) { }
+ converter.convertFromString("#ABCDEG", Color.class);
}
-
+ @Test(expected = IllegalArgumentException.class)
public void testInvalidConstant() {
- try {
- Color value = (Color) converter.convertFromString("rEd", Color.class);
- fail("Expected IllegalArgumentException");
- }
- catch (IllegalArgumentException e) { }
+ converter.convertFromString("rEd", Color.class);
}
}
\ No newline at end of file
Modified: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/InsetsConverterTest.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/InsetsConverterTest.java 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/InsetsConverterTest.java 2008-11-02 18:12:23 UTC (rev 1011)
@@ -1,62 +1,50 @@
package jaxx.junit;
-import java.awt.*;
-import junit.framework.TestCase;
+import jaxx.types.InsetsConverter;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
-import jaxx.types.*;
-
-public class InsetsConverterTest extends TestCase {
- private InsetsConverter converter;
+import java.awt.Insets;
+public class InsetsConverterTest {
+
+ InsetsConverter converter;
+
+ @Before
public void setUp() {
converter = new InsetsConverter();
}
-
-
+
+ @Test
public void testSingleValue() {
Insets value = (Insets) converter.convertFromString("3", Insets.class);
- assertEquals(value, new Insets(3, 3, 3, 3));
+ Assert.assertEquals(value, new Insets(3, 3, 3, 3));
}
-
-
+
+ @Test
public void testFourValues() {
Insets value = (Insets) converter.convertFromString("3, 0, 12, 1000000", Insets.class);
- assertEquals(value, new Insets(3, 0, 12, 1000000));
+ Assert.assertEquals(value, new Insets(3, 0, 12, 1000000));
}
-
-
+
+ @Test(expected = IllegalArgumentException.class)
public void testTwoValues() {
- try {
- Insets value = (Insets) converter.convertFromString("0, 4", Insets.class);
- fail("Expected IllegalArgumentException");
- }
- catch (IllegalArgumentException e) { }
+ converter.convertFromString("0, 4", Insets.class);
}
-
+ @Test(expected = IllegalArgumentException.class)
public void testThreeValues() {
- try {
- Insets value = (Insets) converter.convertFromString("0, 4, 9", Insets.class);
- fail("Expected IllegalArgumentException");
- }
- catch (IllegalArgumentException e) { }
+ converter.convertFromString("0, 4, 9", Insets.class);
}
-
-
+
+ @Test(expected = IllegalArgumentException.class)
public void testInvalidNumber() {
- try {
- Insets value = (Insets) converter.convertFromString("0, 4, 9, A", Insets.class);
- fail("Expected IllegalArgumentException");
- }
- catch (IllegalArgumentException e) { }
+ converter.convertFromString("0, 4, 9, A", Insets.class);
}
-
-
+
+ @Test(expected = IllegalArgumentException.class)
public void testBadFormatting() {
- try {
- Insets value = (Insets) converter.convertFromString("0 - 1 - 2 - 3", Insets.class);
- fail("Expected IllegalArgumentException");
- }
- catch (IllegalArgumentException e) { }
+ converter.convertFromString("0 - 1 - 2 - 3", Insets.class);
}
}
\ No newline at end of file
Modified: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/JavaFileParserTest.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/JavaFileParserTest.java 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/JavaFileParserTest.java 2008-11-02 18:12:23 UTC (rev 1011)
@@ -3,47 +3,51 @@
import jaxx.CompilerException;
import jaxx.reflect.ClassDescriptor;
import jaxx.reflect.JavaFileParser;
-import junit.framework.TestCase;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+public class JavaFileParserTest {
-public class JavaFileParserTest extends TestCase {
-
/** log */
protected static final Log log = LogFactory.getLog(JavaFileParserTest.class);
-
- protected File getBaseDir() {
+
+ static File basedir;
+
+ @BeforeClass
+ public static void initBaseDir() {
// get maven env basedir
String basedir = System.getenv("basedir");
if (basedir == null) {
basedir = new File("").getAbsolutePath();
}
- return new File(basedir);
+ JavaFileParserTest.basedir = new File(basedir);
}
+ @Test
public void testParseJavaSourceFile() throws Exception {
+ File testSourceRoot = new File(basedir, "src" + File.separator + "test" + File.separator + "java");
+ Assert.assertTrue(testSourceRoot.exists());
- File testSourceRoot = new File(getBaseDir(), "src" + File.separator + "test" + File.separator + "java");
- assertTrue(testSourceRoot.exists());
-
File src = new File(testSourceRoot, getClass().getName().replaceAll("\\.", File.separator) + ".java");
- assertTrue(src.exists());
+ Assert.assertTrue(src.exists());
log.info("trying parsing file " + src);
Reader reader = new FileReader(src);
try {
ClassDescriptor result = JavaFileParser.parseJavaFile("TestParserJava", reader, getClass().getClassLoader());
- assertNotNull(result);
-
+ Assert.assertNotNull(result);
+
} catch (CompilerException e) {
- log.error("could not parse file "+src+" for reason "+e.getMessage(),e);
- fail(e.getMessage());
+ log.error("could not parse file " + src + " for reason " + e.getMessage(), e);
+ Assert.fail(e.getMessage());
}
finally {
reader.close();
Modified: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/PrimitiveConverterTest.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/PrimitiveConverterTest.java 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/PrimitiveConverterTest.java 2008-11-02 18:12:23 UTC (rev 1011)
@@ -1,106 +1,113 @@
package jaxx.junit;
-import junit.framework.TestCase;
+import jaxx.types.PrimitiveConverter;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
-import jaxx.types.*;
-
-public class PrimitiveConverterTest extends TestCase {
- private PrimitiveConverter converter;
+public class PrimitiveConverterTest {
+ PrimitiveConverter converter;
+
+
+ @Before
public void setUp() {
converter = new PrimitiveConverter();
}
-
-
+
+ @Test
public void testBoolean() {
Boolean value = (Boolean) converter.convertFromString("true", Boolean.class);
- assertTrue(value.booleanValue());
+ Assert.assertTrue(value);
value = (Boolean) converter.convertFromString("false", Boolean.class);
- assertFalse(value.booleanValue());
+ Assert.assertFalse(value);
- try {
- value = (Boolean) converter.convertFromString("yes", Boolean.class);
- fail("Expected IllegalArgumentException");
- }
- catch (IllegalArgumentException e) { }
}
+ @Test(expected = IllegalArgumentException.class)
+ public void testBoolean2() {
+ converter.convertFromString("yes", Boolean.class);
+ }
+ @Test
public void testByte() {
Byte value = (Byte) converter.convertFromString(String.valueOf(Byte.MAX_VALUE), Byte.class);
- assertEquals(value.byteValue(), Byte.MAX_VALUE);
+ Assert.assertEquals(value.byteValue(), Byte.MAX_VALUE);
- try {
- value = (Byte) converter.convertFromString(String.valueOf(1 + Byte.MAX_VALUE), Byte.class);
- fail("Expected NumberFormatException");
- }
- catch (NumberFormatException e) { }
}
+ @Test(expected = IllegalArgumentException.class)
+ public void testByte2() {
+ converter.convertFromString(String.valueOf(1 + Byte.MAX_VALUE), Byte.class);
+ }
+
+ @Test
public void testShort() {
Short value = (Short) converter.convertFromString(String.valueOf(Short.MAX_VALUE), Short.class);
- assertEquals(value.shortValue(), Short.MAX_VALUE);
+ Assert.assertEquals(value.shortValue(), Short.MAX_VALUE);
- try {
- value = (Short) converter.convertFromString(String.valueOf(1 + Short.MAX_VALUE), Short.class);
- fail("Expected NumberFormatException");
- }
- catch (NumberFormatException e) { }
+
}
+ @Test(expected = IllegalArgumentException.class)
+ public void testShort2() {
+ converter.convertFromString(String.valueOf(1 + Short.MAX_VALUE), Short.class);
+ }
+
+ @Test
public void testInteger() {
Integer value = (Integer) converter.convertFromString(String.valueOf(Integer.MAX_VALUE), Integer.class);
- assertEquals(value.intValue(), Integer.MAX_VALUE);
+ Assert.assertEquals(value.intValue(), Integer.MAX_VALUE);
+ }
- try {
- value = (Integer) converter.convertFromString(String.valueOf(1L + Integer.MAX_VALUE), Integer.class);
- fail("Expected NumberFormatException");
- }
- catch (NumberFormatException e) { }
+ @Test(expected = IllegalArgumentException.class)
+ public void testInteger2() {
+
+ converter.convertFromString(String.valueOf(1L + Integer.MAX_VALUE), Integer.class);
}
-
+ @Test
public void testLong() {
Long value = (Long) converter.convertFromString(String.valueOf(Long.MAX_VALUE), Long.class);
- assertEquals(value.longValue(), Long.MAX_VALUE);
+ Assert.assertEquals(value.longValue(), Long.MAX_VALUE);
}
-
+ @Test
public void testFloat() {
Float value = (Float) converter.convertFromString("3.1415", Float.class);
- assertTrue(value.floatValue() == 3.1415f);
+ Assert.assertTrue(value == 3.1415f);
}
-
+ @Test
public void testDouble() {
Double value = (Double) converter.convertFromString("3.1415", Double.class);
- assertTrue(value.doubleValue() == 3.1415);
+ Assert.assertTrue(value == 3.1415);
}
-
-
+
+ @Test
public void testCharacter() {
Character value = (Character) converter.convertFromString("A", Character.class);
- assertEquals(value.charValue(), 'A');
+ Assert.assertEquals(value.charValue(), 'A');
+ }
- try {
- value = (Character) converter.convertFromString("12", Character.class);
- fail("Expected IllegalArgumentException");
- }
- catch (IllegalArgumentException e) { }
+ @Test(expected = IllegalArgumentException.class)
+ public void testCharacter2() {
- try {
- value = (Character) converter.convertFromString("", Character.class);
- fail("Expected IllegalArgumentException");
- }
- catch (IllegalArgumentException e) { }
+ converter.convertFromString("12", Character.class);
+
}
-
-
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testCharacter3() {
+ converter.convertFromString("", Character.class);
+ }
+
+ @Test
public void testString() {
String value = (String) converter.convertFromString("Test", String.class);
- assertEquals(value, "Test");
+ Assert.assertEquals(value, "Test");
}
}
\ No newline at end of file
Modified: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/TagManagerTest.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/TagManagerTest.java 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/TagManagerTest.java 2008-11-02 18:12:23 UTC (rev 1011)
@@ -7,7 +7,10 @@
import jaxx.tags.DefaultObjectHandler;
import jaxx.tags.TagHandler;
import jaxx.tags.TagManager;
-import junit.framework.TestCase;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
import javax.swing.JPopupMenu;
import java.io.ByteArrayOutputStream;
@@ -15,12 +18,10 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
-import java.io.IOException;
-public class TagManagerTest extends TestCase {
- private JAXXCompiler compiler = JAXXCompiler.createDummyCompiler();
+public class TagManagerTest {
- protected static boolean init=false;
+ JAXXCompiler compiler = JAXXCompiler.createDummyCompiler();
public static class TestHandler extends DefaultObjectHandler {
public TestHandler(ClassDescriptor beanClass) {
@@ -28,105 +29,108 @@
}
}
+ @BeforeClass
+ public static void initTagManaer() throws Exception {
- public void setUp() throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException {
+ TagManager.reset(true);
+
+ }
+
+ @Before
+ public void setUp() {
compiler.addImport("javax.swing.*");
- if (!init) {
- TagManager.reset(true);
- init=true;
- }
+
}
-
+ @Test
public void testRegisterBean() {
TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(InputStream.class), TestHandler.class);
- assertTrue(TagManager.getTagHandler(ClassDescriptorLoader.getClassDescriptor(InputStream.class)) instanceof TestHandler);
- assertTrue(TagManager.getTagHandler(ClassDescriptorLoader.getClassDescriptor(FileInputStream.class)) instanceof TestHandler);
+ Assert.assertTrue(TagManager.getTagHandler(ClassDescriptorLoader.getClassDescriptor(InputStream.class)) instanceof TestHandler);
+ Assert.assertTrue(TagManager.getTagHandler(ClassDescriptorLoader.getClassDescriptor(FileInputStream.class)) instanceof TestHandler);
}
-
+ @Test
public void testRegisterDefaultNamespace() {
TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(OutputStream.class), TestHandler.class);
TagManager.registerDefaultNamespace("OutputStream", "java.io.*");
- assertTrue("Could not find handler for OutputStream despite default namespace", TagManager.getTagHandler(null, "OutputStream", compiler) instanceof TestHandler);
+ Assert.assertTrue("Could not find handler for OutputStream despite default namespace", TagManager.getTagHandler(null, "OutputStream", compiler) instanceof TestHandler);
PrintStream oldErr = System.err;
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
System.setErr(new PrintStream(buffer));
TagManager.registerDefaultNamespace("OutputStream", "java.dummy.*");
- assertNull("Found handler for OutputStream despite ambiguous default namespace", TagManager.getTagHandler(null, "OutputStream", compiler));
+ Assert.assertNull("Found handler for OutputStream despite ambiguous default namespace", TagManager.getTagHandler(null, "OutputStream", compiler));
System.setErr(oldErr);
- assertTrue("No errors were produced with an ambiguous default namespace", buffer.size() > 0);
- assertTrue(buffer.size() > 0);
+ Assert.assertTrue("No errors were produced with an ambiguous default namespace", buffer.size() > 0);
+ Assert.assertTrue(buffer.size() > 0);
}
-
+ @Test
public void testResolveClassName() {
- assertEquals("Could not resolve class name 'Object'", TagManager.resolveClassName("Object", compiler), "java.lang.Object");
- assertEquals("Could not resolve class name 'java.lang.Object'", TagManager.resolveClassName("java.lang.Object", compiler), "java.lang.Object");
- assertNull("Unexpectedly resolved class name 'java.awt.Object'", TagManager.resolveClassName("java.awt.Object", compiler));
+ Assert.assertEquals("Could not resolve class name 'Object'", TagManager.resolveClassName("Object", compiler), "java.lang.Object");
+ Assert.assertEquals("Could not resolve class name 'java.lang.Object'", TagManager.resolveClassName("java.lang.Object", compiler), "java.lang.Object");
+ Assert.assertNull("Unexpectedly resolved class name 'java.awt.Object'", TagManager.resolveClassName("java.awt.Object", compiler));
}
-
+ @Test
public void testPackages() {
- assertNull("Unexpectedly found handler for java.awt.JButton", TagManager.getTagHandler(null, "java.awt.JButton", compiler));
- assertNotNull("Did not find handler for JButton with default namespace of java.awt.*", TagManager.getTagHandler("java.awt.*", "JButton", compiler));
- assertNull("Unexpectedly found handler for java.awt.*:JButton", TagManager.getTagHandler("java.awt.*", "JButton", true, compiler));
- assertNotNull("Did not find handler for javax.swing.JButton", TagManager.getTagHandler(null, "javax.swing.JButton", compiler));
- assertNotNull("Did not find handler for JButton with default namespace of java.swing.*", TagManager.getTagHandler("java.swing.*", "JButton", compiler));
- assertNotNull("Did not find handler for javax.swing.*:JButton", TagManager.getTagHandler("javax.swing.*", "JButton", true, compiler));
+ Assert.assertNull("Unexpectedly found handler for java.awt.JButton", TagManager.getTagHandler(null, "java.awt.JButton", compiler));
+ Assert.assertNotNull("Did not find handler for JButton with default namespace of java.awt.*", TagManager.getTagHandler("java.awt.*", "JButton", compiler));
+ Assert.assertNull("Unexpectedly found handler for java.awt.*:JButton", TagManager.getTagHandler("java.awt.*", "JButton", true, compiler));
+ Assert.assertNotNull("Did not find handler for javax.swing.JButton", TagManager.getTagHandler(null, "javax.swing.JButton", compiler));
+ Assert.assertNotNull("Did not find handler for JButton with default namespace of java.swing.*", TagManager.getTagHandler("java.swing.*", "JButton", compiler));
+ Assert.assertNotNull("Did not find handler for javax.swing.*:JButton", TagManager.getTagHandler("javax.swing.*", "JButton", true, compiler));
}
-
+ @Test
public void testImport() throws Exception {
- assertNull("Found handler for ActionListener despite no java.awt.event.* import", TagManager.getTagHandler(null, "ActionListener", compiler));
+ Assert.assertNull("Found handler for ActionListener despite no java.awt.event.* import", TagManager.getTagHandler(null, "ActionListener", compiler));
compiler.addImport("java.awt.event.*");
- //fixme makethis test works again
- // assertNotNull("Did not find ActionListener with java.awt.event.* import", TagManager.getTagHandler(null, "ActionListener", compiler));
+ Assert.assertNotNull("Did not find ActionListener with java.awt.event.* import", TagManager.getTagHandler(null, "ActionListener", compiler));
}
-
+ @Test
public void testAmbiguousImport() throws Exception {
compiler.addImport("java.sql.*");
- assertNotNull("Did not find java.sql.Date with only java.sql.* imported", TagManager.getTagHandler(null, "Date", compiler));
+ Assert.assertNotNull("Did not find java.sql.Date with only java.sql.* imported", TagManager.getTagHandler(null, "Date", compiler));
PrintStream oldErr = System.err;
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
System.setErr(new PrintStream(buffer));
compiler.addImport("java.util.*");
TagManager.reset(true);
- assertNull("Still found a handler for Date with an ambiguous import", TagManager.getTagHandler(null, "Date", compiler));
+ Assert.assertNull("Still found a handler for Date with an ambiguous import", TagManager.getTagHandler(null, "Date", compiler));
System.setErr(oldErr);
- assertTrue("No errors were produced with an ambiguous import", buffer.size() > 0);
+ Assert.assertTrue("No errors were produced with an ambiguous import", buffer.size() > 0);
compiler.addImport("java.util.Date");
- assertNotNull("Did not find java.util.Date with a disambiguating import", TagManager.getTagHandler(null, "Date", compiler));
+ Assert.assertNotNull("Did not find java.util.Date with a disambiguating import", TagManager.getTagHandler(null, "Date", compiler));
}
-
+ @Test
public void testInnerClass() {
TagHandler handler = TagManager.getTagHandler(null, "JPopupMenu.Separator", compiler);
- assertTrue("Unable to resolve tag <JPopupMenu.Separator>", handler instanceof DefaultComponentHandler);
- assertTrue(((DefaultComponentHandler) handler).getBeanClass().getName().equals(JPopupMenu.Separator.class.getName()));
+ Assert.assertTrue("Unable to resolve tag <JPopupMenu.Separator>", handler instanceof DefaultComponentHandler);
+ Assert.assertTrue(((DefaultComponentHandler) handler).getBeanClass().getName().equals(JPopupMenu.Separator.class.getName()));
handler = TagManager.getTagHandler(null, "javax.swing.JPopupMenu.Separator", compiler);
- assertTrue("Unable to resolve tag <javax.swing.JPopupMenu.Separator>", handler instanceof DefaultComponentHandler);
- assertTrue(((DefaultComponentHandler) handler).getBeanClass().getName().equals(JPopupMenu.Separator.class.getName()));
+ Assert.assertTrue("Unable to resolve tag <javax.swing.JPopupMenu.Separator>", handler instanceof DefaultComponentHandler);
+ Assert.assertTrue(((DefaultComponentHandler) handler).getBeanClass().getName().equals(JPopupMenu.Separator.class.getName()));
}
-
+ @Test
public void testWrongCase() {
- assertNull("Unexpectedly found handler for 'object'", TagManager.getTagHandler(null, "object", compiler));
- assertNull("Unexpectedly found handler for 'tagmanagertest'", TagManager.getTagHandler(null, "tagmanagertest", compiler));
+ Assert.assertNull("Unexpectedly found handler for 'object'", TagManager.getTagHandler(null, "object", compiler));
+ Assert.assertNull("Unexpectedly found handler for 'tagmanagertest'", TagManager.getTagHandler(null, "tagmanagertest", compiler));
}
-
+ @Test
public void testAliasing() {
- assertEquals("JComboBox is not aliased to jaxx.runtime.swing.JAXXComboBox", "jaxx.runtime.swing.JAXXComboBox", TagManager.resolveClassName("JComboBox", compiler));
- assertEquals("javax.swing.JComboBox is not aliased to jaxx.runtime.swing.JAXXComboBox", "jaxx.runtime.swing.JAXXComboBox", TagManager.resolveClassName("javax.swing.JComboBox", compiler));
+ Assert.assertEquals("JComboBox is not aliased to jaxx.runtime.swing.JAXXComboBox", "jaxx.runtime.swing.JAXXComboBox", TagManager.resolveClassName("JComboBox", compiler));
+ Assert.assertEquals("javax.swing.JComboBox is not aliased to jaxx.runtime.swing.JAXXComboBox", "jaxx.runtime.swing.JAXXComboBox", TagManager.resolveClassName("javax.swing.JComboBox", compiler));
}
}
\ No newline at end of file
Modified: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ValidatorBean.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ValidatorBean.java 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ValidatorBean.java 2008-11-02 18:12:23 UTC (rev 1011)
@@ -10,9 +10,8 @@
protected File notExistingFile;
protected File existingDirectory;
- protected File notExistingDirectory;
+ protected File notExistingDirectory;
-
PropertyChangeSupport p;
public ValidatorBean() {
@@ -61,7 +60,7 @@
public void setNotExistingFile(File notExistingFile) {
File old = this.notExistingFile;
this.notExistingFile = notExistingFile;
- p.firePropertyChange("notExistingFile", old, notExistingFile);
+ p.firePropertyChange("notExistingFile", old, notExistingFile);
}
public void setExistingDirectory(File existingDirectory) {
Modified: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ValidatorTest.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ValidatorTest.java 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/junit/ValidatorTest.java 2008-11-02 18:12:23 UTC (rev 1011)
@@ -3,50 +3,51 @@
import jaxx.runtime.validator.BeanValidator;
import jaxx.runtime.validator.BeanValidatorError;
import jaxx.runtime.validator.BeanValidatorErrorListModel;
-import junit.framework.TestCase;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
import javax.swing.JLabel;
import java.io.File;
import java.util.Enumeration;
/** @author chemit */
-public class ValidatorTest extends TestCase {
+public class ValidatorTest {
ValidatorBean bean;
- static protected Boolean init = null;
-
-
static protected BeanValidator<ValidatorBean> validator;
-
static protected BeanValidatorErrorListModel errors;
-
static protected File basedir;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- if (init == null) {
- String b = System.getenv("basedir");
- if (b == null) {
- b = new File("").getAbsolutePath();
- }
- basedir = new File(b);
- validator = new BeanValidator<ValidatorBean>();
- validator.setErrorListModel(errors = new BeanValidatorErrorListModel());
- JLabel label = new JLabel();
- validator.setFieldRepresentation("existingFile", label);
- validator.setFieldRepresentation("existingDirectory", label);
- validator.setFieldRepresentation("notExistingFile", label);
- validator.setFieldRepresentation("notExistingDirectory", label);
- init = true;
+ @BeforeClass
+ public static void initValidator() throws Exception {
+
+ String b = System.getenv("basedir");
+ if (b == null) {
+ b = new File("").getAbsolutePath();
}
+ basedir = new File(b);
+ validator = new BeanValidator<ValidatorBean>();
+ validator.setErrorListModel(errors = new BeanValidatorErrorListModel());
+ JLabel label = new JLabel();
+ validator.setFieldRepresentation("existingFile", label);
+ validator.setFieldRepresentation("existingDirectory", label);
+ validator.setFieldRepresentation("notExistingFile", label);
+ validator.setFieldRepresentation("notExistingDirectory", label);
+
+ }
+
+ @Before
+ public void setUp() throws Exception {
validator.setBean(bean = new ValidatorBean());
}
+ @Test
public void testRequiredFileFieldValidator() throws Exception {
- assertNull(bean.getExistingFile());
+ Assert.assertNull(bean.getExistingFile());
assertFieldInError("existingFile", "existingFile.required", true);
bean.setExistingFile(new File(""));
@@ -63,9 +64,10 @@
}
+ @Test
public void testExistingFileFieldValidator() throws Exception {
- assertNull(bean.getExistingFile());
+ Assert.assertNull(bean.getExistingFile());
assertFieldInError("existingFile", "existingFile.required", true);
bean.setExistingFile(new File(""));
@@ -83,9 +85,10 @@
}
+ @Test
public void testNotExistingFileFieldValidator() throws Exception {
- assertNull(bean.getNotExistingFile());
+ Assert.assertNull(bean.getNotExistingFile());
assertFieldInError("notExistingFile", "notExistingFile.required", true);
bean.setNotExistingFile(new File(""));
@@ -109,9 +112,10 @@
}
+ @Test
public void testExistingDirectoryFieldValidator() throws Exception {
- assertNull(bean.getExistingDirectory());
+ Assert.assertNull(bean.getExistingDirectory());
assertFieldInError("existingDirectory", "existingDirectory.required", true);
bean.setExistingDirectory(new File(""));
@@ -129,8 +133,9 @@
}
+ @Test
public void testNotExistingDirectoryFieldValidator() throws Exception {
- assertNull(bean.getNotExistingDirectory());
+ Assert.assertNull(bean.getNotExistingDirectory());
assertFieldInError("notExistingDirectory", "notExistingDirectory.required", true);
bean.setNotExistingDirectory(new File(""));
@@ -152,16 +157,17 @@
assertFieldInError("notExistingDirectory", "notExistingDirectory.exist", false);
}
+
protected void assertFieldInError(String s, String error, boolean required) {
Enumeration<?> myErrors = errors.elements();
while (myErrors.hasMoreElements()) {
BeanValidatorError o = (BeanValidatorError) myErrors.nextElement();
if (o.getFieldName().equals(s) && o.getError().equals(error)) {
- assertTrue(required);
+ Assert.assertTrue(required);
return;
}
}
// error was not found
- assertFalse(required);
+ Assert.assertFalse(required);
}
}
Modified: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java 2008-11-02 18:12:23 UTC (rev 1011)
@@ -1,89 +1,103 @@
package jaxx.runtime;
import jaxx.runtime.validator.BeanValidator;
-import junit.framework.TestCase;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
import java.awt.Container;
import java.util.List;
import java.util.Map;
/** @author chemit */
-public class DefaultJAXXContextTest extends TestCase {
+public class DefaultJAXXContextTest {
JAXXContext ctxt;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void initContext() throws Exception {
+
// instanciate a new empty context
ctxt = new DefaultJAXXContext();
}
- public void testParentContainer() throws Exception {
- try {
- ctxt.getParentContainer(Container.class);
- fail();
- } catch (IllegalStateException e) {
- assertTrue(true);
- }
- try {
- ctxt.getParentContainer("null", Container.class);
- fail();
- } catch (IllegalStateException e) {
- assertTrue(true);
- }
+ @Test(expected = IllegalStateException.class)
+ public void testParentContainerFail_IllegalStateException() throws Exception {
+ ctxt.getParentContainer(Container.class);
+ }
+ @Test(expected = IllegalStateException.class)
+ public void testParentContainerFail_IllegalStateException2() throws Exception {
+ ctxt.getParentContainer("null", Container.class);
+ }
+
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testParentContainerFail_IllegalArgumentException() throws Exception {
+
// attach a fake ui (which is NOT a Container)
((DefaultJAXXContext) ctxt).setUi(new MyJAXXObject());
- try {
- ctxt.getParentContainer(Container.class);
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ ctxt.getParentContainer(Container.class);
+ }
- try {
- ctxt.getParentContainer(null, Container.class);
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ @Test(expected = IllegalArgumentException.class)
+ public void testParentContainerFail_IllegalArgumentException2() throws Exception {
- try {
- ctxt.getParentContainer("null", Container.class);
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ // attach a fake ui (which is NOT a Container)
+ ((DefaultJAXXContext) ctxt).setUi(new MyJAXXObject());
+ ctxt.getParentContainer(null, Container.class);
+ }
- //todo finish test with a real JAXXObject
+ @Test(expected = IllegalArgumentException.class)
+ public void testParentContainerFail_IllegalArgumentException3() throws Exception {
+ // attach a fake ui (which is NOT a Container)
+ ((DefaultJAXXContext) ctxt).setUi(new MyJAXXObject());
+ ctxt.getParentContainer("null", Container.class);
}
+ @Test
+ public void testGetParentContext() throws Exception {
+ JAXXContext expected, result;
+ expected = null;
+ result = ctxt.getContextValue(JAXXContext.class);
+ Assert.assertEquals(expected, result);
+
+ DefaultJAXXContext parentContext = new DefaultJAXXContext();
+
+ ctxt.setContextValue(parentContext);
+
+ expected = parentContext;
+ result = ctxt.getContextValue(JAXXContext.class);
+ Assert.assertEquals(expected, result);
+
+ }
+
+ @Test
public void testSetGetContextValue() throws Exception {
String expected;
String result;
result = ctxt.getContextValue(String.class);
- assertNull(result);
+ Assert.assertNull(result);
expected = "yo";
ctxt.setContextValue(expected);
result = ctxt.getContextValue(String.class);
- assertEquals(expected, result);
+ Assert.assertEquals(expected, result);
expected = "ya";
ctxt.setContextValue(expected, "second");
result = ctxt.getContextValue(String.class, "second");
- assertEquals(expected, result);
+ Assert.assertEquals(expected, result);
expected = "yi";
ctxt.setContextValue(expected, "second");
result = ctxt.getContextValue(String.class, "second");
- assertEquals(expected, result);
+ Assert.assertEquals(expected, result);
}
- private static class MyJAXXObject implements JAXXObject {
+ private static class MyJAXXObject extends DefaultJAXXContext implements JAXXObject {
public Object getObjectById(String id) {
return null;
@@ -105,28 +119,6 @@
public void firePropertyChange(String name, Object oldValue, Object newValue) {
}
- public void setContextValue(Object o) {
- }
-
- public void setContextValue(Object o, String name) {
- }
-
- public <T> T getContextValue(Class<T> clazz) {
- return null;
- }
-
- public <T> T getContextValue(Class<T> clazz, String name) {
- return null;
- }
-
- public <O extends Container> O getParentContainer(Class<O> clazz) {
- return null;
- }
-
- public <O extends Container> O getParentContainer(Object top, Class<O> clazz) {
- return null;
- }
-
public BeanValidator<?> getValidator(String validatorId) {
return null;
}
Modified: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/UtilTest.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/UtilTest.java 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/UtilTest.java 2008-11-02 18:12:23 UTC (rev 1011)
@@ -1,20 +1,24 @@
package jaxx.runtime;
+import org.junit.Assert;
+import org.junit.Test;
+
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
-public class UtilTest extends junit.framework.TestCase {
- private int count;
+public class UtilTest {
+ int count;
+ @Test
public void testGetEventListener() {
count = 0;
DocumentListener listener = (DocumentListener) jaxx.runtime.Util.getEventListener(javax.swing.event.DocumentListener.class, this, "incCount");
listener.insertUpdate(null);
- assertEquals(count, 1);
+ Assert.assertEquals(count, 1);
DocumentListener listener2 = (DocumentListener) jaxx.runtime.Util.getEventListener(javax.swing.event.DocumentListener.class, this, "incCount");
listener2.removeUpdate(null);
- assertEquals(count, 2);
+ Assert.assertEquals(count, 2);
//assertTrue("Received two different event listeners despite using identical parameters", listener == listener2);
}
Modified: lutinjaxx/trunk/jaxx-core/src/test/resources/log4j.properties
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/resources/log4j.properties 2008-10-30 22:05:12 UTC (rev 1010)
+++ lutinjaxx/trunk/jaxx-core/src/test/resources/log4j.properties 2008-11-02 18:12:23 UTC (rev 1011)
@@ -5,5 +5,4 @@
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n
-#log4j.logger.org.codelutin.jaxx=DEBUG
-#log4j.logger.jaxx=DEBUG
+log4j.logger.jaxx=DEBUG
1
0
r1010 - in lutinjaxx/trunk/jaxx-core: . src/main/java/jaxx/runtime/validator
by tchemit@users.labs.libre-entreprise.org 30 Oct '08
by tchemit@users.labs.libre-entreprise.org 30 Oct '08
30 Oct '08
Author: tchemit
Date: 2008-10-30 22:05:12 +0000 (Thu, 30 Oct 2008)
New Revision: 1010
Modified:
lutinjaxx/trunk/jaxx-core/changelog
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/BeanValidator.java
Log:
add full PropertyChangeEvent java-bean support and a property valid : in that way Jaxx can bind on the validator changes.
Modified: lutinjaxx/trunk/jaxx-core/changelog
===================================================================
--- lutinjaxx/trunk/jaxx-core/changelog 2008-10-30 19:52:45 UTC (rev 1009)
+++ lutinjaxx/trunk/jaxx-core/changelog 2008-10-30 22:05:12 UTC (rev 1010)
@@ -1,5 +1,6 @@
ver-0-6 chemit 200811??
* 20081030 [chemit] improve BeanValidator :
+ - add full PropertyChangeEvent java-bean support and a property valid
- when remove bean from validator, must remove errors from model
- make possible to have a dynamic errorListModel in jaxx files
* 20081030 [chemit] improve JAXXContext :
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/BeanValidator.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/BeanValidator.java 2008-10-30 19:52:45 UTC (rev 1009)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/BeanValidator.java 2008-10-30 22:05:12 UTC (rev 1010)
@@ -127,13 +127,16 @@
* </pre>
*
* @author poussin
- * @version $Revision$
+ * @author chemit
+ * @version 1.0
* <p/>
* Last update: $Date$
- * by : $Author$
+ * by : chemit
*/
public class BeanValidator<T> {
+ static public final String VALID_PROERTY = "valid";
+
/** to use log facility, just put in your code: log.info(\"...\"); */
static private final Log log = LogFactory.getLog(BeanValidator.class);
@@ -167,8 +170,12 @@
/** validator context */
protected ActionContext context;
+ /** map of conversion errors detected by this validator */
protected Map<String, String> conversionErrors;
+ /** state of the validator */
+ protected boolean valid;
+
public BeanValidator() {
pcs = new PropertyChangeSupport(this);
validationSupport = new ValidationAwareSupport();
@@ -265,6 +272,7 @@
validationSupport.clearErrorsAndMessages();
errorListModel.addErrors(this);
}
+ setValid(!hasErrors());
pcs.firePropertyChange("bean", oldBean, bean);
}
@@ -480,7 +488,26 @@
validationContext.setFieldErrors(map);
}
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ pcs.addPropertyChangeListener(listener);
+ }
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ pcs.removePropertyChangeListener(listener);
+ }
+
+ public boolean isValid() {
+ return valid;
+ }
+
+ public void setValid(boolean valid) {
+ boolean oldValid = this.valid;
+ this.valid = valid;
+ if (oldValid != valid) {
+ pcs.firePropertyChange(VALID_PROERTY, oldValid, valid);
+ }
+ }
+
protected class Listener implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent evt) {
@@ -497,6 +524,7 @@
log.debug("launch validation from event [name:" + evt.getPropertyName() + " <old:" + oldValue + ", new:" + newValue + ">]");
}
validate();
+ setValid(!hasErrors());
setChanged(true);
}
}
1
0
r1009 - lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime
by tchemit@users.labs.libre-entreprise.org 30 Oct '08
by tchemit@users.labs.libre-entreprise.org 30 Oct '08
30 Oct '08
Author: tchemit
Date: 2008-10-30 19:52:45 +0000 (Thu, 30 Oct 2008)
New Revision: 1009
Modified:
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXAction.java
Log:
can add extra unamed objects in context
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXAction.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXAction.java 2008-10-30 14:58:57 UTC (rev 1008)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXAction.java 2008-10-30 19:52:45 UTC (rev 1009)
@@ -11,8 +11,9 @@
* Prepare the initial context of the ui.
*
* @param parentContent the context of the parent of the ui (can be null if no parent is required)
+ * @param datas other datas to inject in initial context
* @return the {@link jaxx.runtime.JAXXInitialContext} to be injected in the ui via the constructor of the {@link jaxx.runtime.JAXXObject}
*/
- JAXXInitialContext init(JAXXContext parentContent);
+ JAXXInitialContext init(JAXXContext parentContent, Object... datas);
}
1
0
r1008 - in lutinjaxx/trunk/jaxx-core: . src/main/java/jaxx/runtime/validator src/main/java/jaxx/tags/validator
by tchemit@users.labs.libre-entreprise.org 30 Oct '08
by tchemit@users.labs.libre-entreprise.org 30 Oct '08
30 Oct '08
Author: tchemit
Date: 2008-10-30 14:58:57 +0000 (Thu, 30 Oct 2008)
New Revision: 1008
Modified:
lutinjaxx/trunk/jaxx-core/changelog
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/BeanValidator.java
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/tags/validator/BeanValidatorHandler.java
Log:
improve BeanValidator :
- when remove bean from validator, must remove errors from model
- make possible to have a dynamic errorListModel in jaxx
Modified: lutinjaxx/trunk/jaxx-core/changelog
===================================================================
--- lutinjaxx/trunk/jaxx-core/changelog 2008-10-30 12:36:43 UTC (rev 1007)
+++ lutinjaxx/trunk/jaxx-core/changelog 2008-10-30 14:58:57 UTC (rev 1008)
@@ -1,4 +1,7 @@
ver-0-6 chemit 200811??
+ * 20081030 [chemit] improve BeanValidator :
+ - when remove bean from validator, must remove errors from model
+ - make possible to have a dynamic errorListModel in jaxx files
* 20081030 [chemit] improve JAXXContext :
- fix setContextValue bug when setting twice a same type for a same key
- implements a DefaultJAXXContext
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/BeanValidator.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/BeanValidator.java 2008-10-30 12:36:43 UTC (rev 1007)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/BeanValidator.java 2008-10-30 14:58:57 UTC (rev 1008)
@@ -259,8 +259,12 @@
} catch (Exception eee) {
log.info("Can't register as listener", eee);
}
+ validate();
+ } else {
+ // must remove all errors from this validator on errorListModel
+ validationSupport.clearErrorsAndMessages();
+ errorListModel.addErrors(this);
}
- validate();
pcs.firePropertyChange("bean", oldBean, bean);
}
@@ -360,7 +364,7 @@
return result;
}
-
+
/**
* il faut eviter le code re-intrant (durant une validation, une autre est
* demandee). Pour cela on fait la validation dans un thread, et tant
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/tags/validator/BeanValidatorHandler.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/tags/validator/BeanValidatorHandler.java 2008-10-30 12:36:43 UTC (rev 1007)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/tags/validator/BeanValidatorHandler.java 2008-10-30 14:58:57 UTC (rev 1008)
@@ -288,7 +288,11 @@
}
errorListModel = ERROR_LIST_MODEL_DEFAULT;
} else {
- if (!compiler.checkReference(tag, errorListModel, true, ERROR_LIST_MODEL_ATTRIBUTE)) {
+ if (errorListModel.startsWith("{") && errorListModel.endsWith("}")) {
+ // this is a script, no check here
+ errorListModel = errorListModel.substring(1,errorListModel.length()-1).trim();
+ } else if (!compiler.checkReference(tag, errorListModel, true, ERROR_LIST_MODEL_ATTRIBUTE)) {
+ // errorListModel is not defined
return true;
}
}
1
0
r1007 - in lutinjaxx/trunk/jaxx-core: . src/main/java/jaxx/compiler src/main/java/jaxx/runtime src/test/java/jaxx/runtime
by tchemit@users.labs.libre-entreprise.org 30 Oct '08
by tchemit@users.labs.libre-entreprise.org 30 Oct '08
30 Oct '08
Author: tchemit
Date: 2008-10-30 12:36:43 +0000 (Thu, 30 Oct 2008)
New Revision: 1007
Added:
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/DefaultJAXXContext.java
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXAction.java
lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java
Modified:
lutinjaxx/trunk/jaxx-core/changelog
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/compiler/JAXXObjectGenerator.java
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/Util.java
Log:
improve JAXXContext :
- fix setContextValue bug when setting twice a same type for a same key
- implements a DefaultJAXXContext
- use this default implementation with delegate pattern in JAXXObject
Modified: lutinjaxx/trunk/jaxx-core/changelog
===================================================================
--- lutinjaxx/trunk/jaxx-core/changelog 2008-10-27 20:33:29 UTC (rev 1006)
+++ lutinjaxx/trunk/jaxx-core/changelog 2008-10-30 12:36:43 UTC (rev 1007)
@@ -1,4 +1,9 @@
ver-0-6 chemit 200811??
+ * 20081030 [chemit] improve JAXXContext :
+ - fix setContextValue bug when setting twice a same type for a same key
+ - implements a DefaultJAXXContext
+ - use this default implementation with delegate pattern in JAXXObject
+ * 20081030 [chemit] add JAXXAction contract to simplify init of ui with JAXXInitialContext
* 20081027 [chemit] fix bug 1722
* 20081027 [chemit] add conversion support in validator
* 20081025 [chemit] improve BeanValidator tag :
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/compiler/JAXXObjectGenerator.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/compiler/JAXXObjectGenerator.java 2008-10-27 20:33:29 UTC (rev 1006)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/compiler/JAXXObjectGenerator.java 2008-10-30 12:36:43 UTC (rev 1007)
@@ -142,7 +142,7 @@
javaFile.addImport("jaxx.runtime.validator.BeanValidator");
javaFile.addImport("jaxx.runtime.JAXXInitialContext");
-
+
if (compiler.getStylesheet() != null) {
javaFile.addField(new JavaField(0, "java.util.Map", "$previousValues", "new java.util.HashMap()"));
}
@@ -182,24 +182,25 @@
javaFile.addMethod(createProcessDataBindingMethod());
+ javaFile.addField(createJAXXObjectDescriptorField());
+ javaFile.addMethod(createGetJAXXObjectDescriptorMethod());
+
if (!superclassIsJAXXObject) {
javaFile.addField(createObjectMap());
javaFile.addMethod(createGetObjectByIdMethod());
+
+ /*
+ * Gestion du context
+ */
+ javaFile.addField(createContextField());
+ javaFile.addMethod(createSetContextValueMethod());
+ javaFile.addMethod(createSetContextValueNameMethod());
+ javaFile.addMethod(createGetContextValueMethod());
+ javaFile.addMethod(createGetContextValueNameMethod());
+ javaFile.addMethod(createGetParentContainer());
+ javaFile.addMethod(createGetParentContainerMore());
}
- javaFile.addField(createJAXXObjectDescriptorField());
- javaFile.addMethod(createGetJAXXObjectDescriptorMethod());
-
- /*
- * Gestion du context
- */
- javaFile.addField(createContextField());
- javaFile.addMethod(createSetContextValueMethod());
- javaFile.addMethod(createSetContextValueNameMethod());
- javaFile.addMethod(createGetContextValueMethod());
- javaFile.addMethod(createGetContextValueNameMethod());
- javaFile.addMethod(createGetParentContainer());
- javaFile.addMethod(createGetParentContainerMore());
ClassDescriptor currentClass = root.getObjectClass();
MethodDescriptor firePropertyChange = null;
while (firePropertyChange == null && currentClass != null) {
@@ -249,7 +250,7 @@
}
private JavaField createContextField() {
- return new JavaField(Modifier.PROTECTED, "Map<Object,String>", "$contextMap", "new HashMap<Object,String>()");
+ return new JavaField(Modifier.PROTECTED, "jaxx.runtime.JAXXContext", "delegateContext", "new jaxx.runtime.DefaultJAXXContext(this);");
}
private JavaField createLoggerField(String className) {
@@ -413,7 +414,7 @@
code.append(JAXXCompiler.getLineSeparator());
code.append("$initialize();");
code.append(JAXXCompiler.getLineSeparator());
- JavaArgument arg = new JavaArgument("jaxx.runtime.JAXXInitialContext","initialContext");
+ JavaArgument arg = new JavaArgument("jaxx.runtime.JAXXInitialContext", "initialContext");
return new JavaMethod(Modifier.PUBLIC, null, className, new JavaArgument[]{arg}, null, code.toString());
}
@@ -542,44 +543,27 @@
/*-- Create methods code ----------------------------------------------------------*/
/*---------------------------------------------------------------------------------*/
private String getSetContextValueMethodCode() {
- return "this.setContextValue(clazz, null);";
+ return "delegateContext.setContextValue(clazz, null);";
}
private String getSetContextValueNameMethodCode() {
- StringBuffer result = new StringBuffer();
- result.append("$contextMap.put(clazz, name);");
- return result.toString();
+ return "delegateContext.setContextValue(clazz, name);";
}
private String getGetContextValueMethodCode() {
- return "return this.getContextValue(clazz, null);";
+ return "return delegateContext.getContextValue(clazz, null);";
}
private String getGetContextValueNameMethodCode() {
- StringBuffer result = new StringBuffer();
- result.append("for (Map.Entry<Object,String> entry : $contextMap.entrySet()) {");
- result.append("if (clazz.isAssignableFrom(entry.getKey().getClass()) && (name == null || name == entry.getValue())) {");
- result.append("return (T) entry.getKey();}}");
- result.append("return null;");
- return result.toString();
+ return "return delegateContext.getContextValue(clazz, name);";
}
private String getGetParentContenerMethodCode() {
- StringBuffer result = new StringBuffer();
- result.append("return this.getParentContainer(this, clazz);");
- return result.toString();
+ return "return delegateContext.getParentContainer(clazz);";
}
private String getGetParentContenerMethodMoreCode() {
- StringBuffer result = new StringBuffer();
- result.append("if (!Container.class.isAssignableFrom(source.getClass())) {return null;}");
- result.append(JAXXCompiler.getLineSeparator());
- result.append("Container parent = ((Container)source).getParent();");
- result.append(JAXXCompiler.getLineSeparator());
- result.append("if (parent != null && !clazz.isAssignableFrom(parent.getClass())){parent = getParentContainer(parent, clazz);}");
- result.append(JAXXCompiler.getLineSeparator());
- result.append("return (O)parent;");
- return result.toString();
+ return "return delegateContext.getParentContainer(source, clazz);";
}
protected String getCreationCode(CompiledObject object) throws CompilerException {
Added: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/DefaultJAXXContext.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/DefaultJAXXContext.java (rev 0)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/DefaultJAXXContext.java 2008-10-30 12:36:43 UTC (rev 1007)
@@ -0,0 +1,95 @@
+package jaxx.runtime;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.Container;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * The default {@link JAXXContext} to beused in a {@link JAXXObject} by delegation.
+ *
+ * @author chemit
+ */
+public class DefaultJAXXContext implements JAXXContext {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private final Log log = LogFactory.getLog(DefaultJAXXContext.class);
+
+ /** l'ui auquel est rattache le context */
+ protected JAXXObject ui;
+
+ /** les données contenues dans le context */
+ protected final Map<Object, String> data;
+
+ public DefaultJAXXContext() {
+ data = new HashMap<Object, String>();
+ }
+
+ public DefaultJAXXContext(JAXXObject ui) {
+ this();
+ this.ui = ui;
+ }
+
+ public void setContextValue(Object o) {
+ setContextValue(o, null);
+ }
+
+ public void setContextValue(Object o, String name) {
+ // first remove
+ Object toRemove = getContextValue(o.getClass(), name);
+ if (toRemove != null) {
+ log.info("remove previously value " + toRemove);
+ data.remove(toRemove);
+ }
+ // then can put safely
+ data.put(o, name);
+ }
+
+ public <T> T getContextValue(Class<T> clazz) {
+ return getContextValue(clazz, null);
+ }
+
+ @SuppressWarnings({"unchecked"})
+ public <T> T getContextValue(Class<T> clazz, String name) {
+ for (Map.Entry<Object, String> entry : data.entrySet()) {
+ if (clazz.isAssignableFrom(entry.getKey().getClass()) && (name == null || name.equals(entry.getValue()))) {
+ return (T) entry.getKey();
+ }
+ }
+ //todo pas trouve dans ce context, on devrait rechercher dans les parents de l'ui ?
+ return null;
+ }
+
+
+ public <O extends Container> O getParentContainer(Class<O> clazz) {
+ return this.getParentContainer(ui, clazz);
+ }
+
+ @SuppressWarnings({"unchecked"})
+ public <O extends Container> O getParentContainer(Object top, Class<O> clazz) {
+ if (ui == null) {
+ throw new IllegalStateException("no ui attached to this context");
+ }
+ if (top==null) {
+ throw new IllegalArgumentException("top parameter can not be null");
+ }
+ if (!Container.class.isAssignableFrom(top.getClass())) {
+ throw new IllegalArgumentException("top parameter "+top + " is not a " + Container.class);
+ }
+ Container parent = ((Container) top).getParent();
+ if (parent != null && !clazz.isAssignableFrom(parent.getClass())) {
+ parent = getParentContainer(parent, clazz);
+ }
+ return (O) parent;
+ }
+
+ protected JAXXObject getUi() {
+ return ui;
+ }
+
+ protected void setUi(JAXXObject ui) {
+ this.ui = ui;
+ }
+}
Added: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXAction.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXAction.java (rev 0)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JAXXAction.java 2008-10-30 12:36:43 UTC (rev 1007)
@@ -0,0 +1,18 @@
+package jaxx.runtime;
+
+/**
+ * This is the contract to be realized by any class to be used as Action class for an ui.
+ *
+ * @author chemit
+ */
+public interface JAXXAction {
+
+ /**
+ * Prepare the initial context of the ui.
+ *
+ * @param parentContent the context of the parent of the ui (can be null if no parent is required)
+ * @return the {@link jaxx.runtime.JAXXInitialContext} to be injected in the ui via the constructor of the {@link jaxx.runtime.JAXXObject}
+ */
+ JAXXInitialContext init(JAXXContext parentContent);
+
+}
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/Util.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/Util.java 2008-10-27 20:33:29 UTC (rev 1006)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/Util.java 2008-10-30 12:36:43 UTC (rev 1007)
@@ -38,7 +38,7 @@
public class Util {
/** to use log facility, just put in your code: log.info(\"...\"); */
- static private Log log = LogFactory.getLog(Util.class);
+ static private final Log log = LogFactory.getLog(Util.class);
// Maps root objects to lists of event listeners
Added: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java (rev 0)
+++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java 2008-10-30 12:36:43 UTC (rev 1007)
@@ -0,0 +1,138 @@
+package jaxx.runtime;
+
+import jaxx.runtime.validator.BeanValidator;
+import junit.framework.TestCase;
+
+import java.awt.Container;
+import java.util.List;
+import java.util.Map;
+
+/** @author chemit */
+public class DefaultJAXXContextTest extends TestCase {
+
+ JAXXContext ctxt;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ // instanciate a new empty context
+ ctxt = new DefaultJAXXContext();
+ }
+
+ public void testParentContainer() throws Exception {
+ try {
+ ctxt.getParentContainer(Container.class);
+ fail();
+ } catch (IllegalStateException e) {
+ assertTrue(true);
+ }
+ try {
+ ctxt.getParentContainer("null", Container.class);
+ fail();
+ } catch (IllegalStateException e) {
+ assertTrue(true);
+ }
+
+ // attach a fake ui (which is NOT a Container)
+ ((DefaultJAXXContext) ctxt).setUi(new MyJAXXObject());
+ try {
+ ctxt.getParentContainer(Container.class);
+ fail();
+ } catch (IllegalArgumentException e) {
+ assertTrue(true);
+ }
+
+ try {
+ ctxt.getParentContainer(null, Container.class);
+ fail();
+ } catch (IllegalArgumentException e) {
+ assertTrue(true);
+ }
+
+ try {
+ ctxt.getParentContainer("null", Container.class);
+ fail();
+ } catch (IllegalArgumentException e) {
+ assertTrue(true);
+ }
+
+ //todo finish test with a real JAXXObject
+
+ }
+
+ public void testSetGetContextValue() throws Exception {
+ String expected;
+ String result;
+
+ result = ctxt.getContextValue(String.class);
+ assertNull(result);
+
+ expected = "yo";
+ ctxt.setContextValue(expected);
+ result = ctxt.getContextValue(String.class);
+ assertEquals(expected, result);
+
+ expected = "ya";
+ ctxt.setContextValue(expected, "second");
+ result = ctxt.getContextValue(String.class, "second");
+ assertEquals(expected, result);
+
+ expected = "yi";
+ ctxt.setContextValue(expected, "second");
+ result = ctxt.getContextValue(String.class, "second");
+ assertEquals(expected, result);
+ }
+
+ private static class MyJAXXObject implements JAXXObject {
+
+ public Object getObjectById(String id) {
+ return null;
+ }
+
+ public Map<String, Object> get$objectMap() {
+ return null;
+ }
+
+ public void applyDataBinding(String id) {
+ }
+
+ public void removeDataBinding(String id) {
+ }
+
+ public void processDataBinding(String dest) {
+ }
+
+ public void firePropertyChange(String name, Object oldValue, Object newValue) {
+ }
+
+ public void setContextValue(Object o) {
+ }
+
+ public void setContextValue(Object o, String name) {
+ }
+
+ public <T> T getContextValue(Class<T> clazz) {
+ return null;
+ }
+
+ public <T> T getContextValue(Class<T> clazz, String name) {
+ return null;
+ }
+
+ public <O extends Container> O getParentContainer(Class<O> clazz) {
+ return null;
+ }
+
+ public <O extends Container> O getParentContainer(Object top, Class<O> clazz) {
+ return null;
+ }
+
+ public BeanValidator<?> getValidator(String validatorId) {
+ return null;
+ }
+
+ public List<String> getValidatorIds() {
+ return null;
+ }
+ }
+}
1
0
r1006 - lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime
by tchemit@users.labs.libre-entreprise.org 27 Oct '08
by tchemit@users.labs.libre-entreprise.org 27 Oct '08
27 Oct '08
Author: tchemit
Date: 2008-10-27 20:33:29 +0000 (Mon, 27 Oct 2008)
New Revision: 1006
Modified:
lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/Util.java
Log:
add a getStringValue util value to have the string representation of an object or an empty string if object is null.
Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/Util.java
===================================================================
--- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/Util.java 2008-10-27 18:27:59 UTC (rev 1005)
+++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/Util.java 2008-10-27 20:33:29 UTC (rev 1006)
@@ -393,4 +393,18 @@
}
list.addMouseListener(new ErrorListMouseListener());
}
+
+ /**
+ * Compute the string representation of an object.
+ * <p/>
+ * Return empty string if given object is null
+ *
+ * @param value the value to write
+ * @return the string representation of the given object or an empty string if object is null.
+ */
+ public static String getStringValue(Object value) {
+ String result;
+ result = value == null ? "" : value.toString();
+ return result;
+ }
}
1
0