r1877 - trunk/jaxx-runtime/src/main/java/jaxx/runtime/validator/swing
Author: tchemit Date: 2010-05-05 13:11:43 +0200 (Wed, 05 May 2010) New Revision: 1877 Url: http://nuiton.org/repositories/revision/jaxx/1877 Log: fix NPE when changing contextName before having init UI Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/validator/swing/SwingValidator.java Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/validator/swing/SwingValidator.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/validator/swing/SwingValidator.java 2010-05-05 11:11:18 UTC (rev 1876) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/validator/swing/SwingValidator.java 2010-05-05 11:11:43 UTC (rev 1877) @@ -33,8 +33,9 @@ import org.apache.commons.logging.LogFactory; import org.jdesktop.jxlayer.JXLayer; -import javax.swing.*; -import java.awt.*; +import javax.swing.JComponent; +import javax.swing.SwingUtilities; +import java.awt.Container; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; @@ -145,8 +146,6 @@ /** ui renderer class */ protected Class<? extends AbstractBeanValidatorUI> uiClass; - - public SwingValidator(Class<B> beanClass, String contextName, BeanValidatorScope... filterScopes) { @@ -204,31 +203,14 @@ @Override public void setContextName(String contextName) { - /*Map<ValidatorField<B>, List<ValidatorErrorListener>> oldListeners = new HashMap<ValidatorField<B>, List<ValidatorErrorListener>>(); - for (ValidatorField<B> field : fields) { - ValidatorErrorListener[] listeners = field.getValidatorErrorListeners(); - List<ValidatorErrorListener> toReinject = new ArrayList<ValidatorErrorListener>(); - for (ValidatorErrorListener listener : listeners) { - if (listener instanceof AbstractBeanValidatorUI) { - // this listener will be reinject via installUIs method - continue; - } - toReinject.add(listener); - } - oldListeners.put(field, toReinject); - }*/ super.setContextName(contextName); // must reinstall ui - installUIs(); - // reinject none ui listeners - /*for (Entry<ValidatorField<B>, List<ValidatorErrorListener>> entry : oldListeners.entrySet()) { - ValidatorField<B> field = getField(entry.getKey().getName()); - for (ValidatorErrorListener listener : entry.getValue()) { - field.addValidatorErrorListener(listener); + if (fieldRepresentation != null) { + + // can not install uis while field are not still init... + installUIs(); } - } - oldListeners.clear();*/ } /** @@ -246,6 +228,11 @@ "' is not defined in validator (no rules on it)"); return; } + if (log.isDebugEnabled()) { + log.debug("register field [" + fieldname + "] with component : " + + c.getName() + ); + } fieldRepresentation.put(fieldname, c); } @@ -267,6 +254,11 @@ /** install ui on required components */ public void installUIs() { + if (fieldRepresentation == null) { + throw new NullPointerException( + "fieldRepresentation is null, must init before " + + "invoking installUIs method..."); + } SwingUtilities.invokeLater(new Runnable() { @Override @@ -298,9 +290,9 @@ JComponent c, Class<? extends AbstractBeanValidatorUI> uiClass) throws InvocationTargetException, - IllegalAccessException, - InstantiationException, - NoSuchMethodException { + IllegalAccessException, + InstantiationException, + NoSuchMethodException { if (old == c) { // same component, nothing to do return;
participants (1)
-
tchemit@users.nuiton.org