Author: chatellier Date: 2009-11-20 16:47:27 +0000 (Fri, 20 Nov 2009) New Revision: 2768 Added: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelperTest.java Modified: isis-fish/trunk/changelog.txt isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java Log: Debut de possibilit?\195?\169 de rechargement des facteurs Modified: isis-fish/trunk/changelog.txt =================================================================== --- isis-fish/trunk/changelog.txt 2009-11-20 15:20:15 UTC (rev 2767) +++ isis-fish/trunk/changelog.txt 2009-11-20 16:47:27 UTC (rev 2768) @@ -1,5 +1,6 @@ isis-fish (3.3.0.0) stable; urgency=low + * Editing sensitivity factors after simulation reload now works * Add confirmation message before launching groups creation wizard * Fix metierSeasonInfo deletion (#1914) * Remove some deprecated unused UI classes Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java 2009-11-20 15:20:15 UTC (rev 2767) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java 2009-11-20 16:47:27 UTC (rev 2768) @@ -199,8 +199,9 @@ /** * Set path. * - * @param path - * the path to set + * Warning, path need to be always a valid entity property reference. + * + * @param path the path to set */ public void setPath(String path) { this.path = path; Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java 2009-11-20 15:20:15 UTC (rev 2767) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java 2009-11-20 16:47:27 UTC (rev 2768) @@ -35,13 +35,17 @@ import jaxx.runtime.JAXXInitialContext; import jaxx.runtime.swing.editor.NumberEditor; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.math.matrix.MatrixND; import org.nuiton.math.matrix.gui.MatrixEditor; import org.nuiton.math.matrix.gui.MatrixPanelEditor; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaEntity; +import fr.ifremer.isisfish.entities.Equation; import fr.ifremer.isisfish.entities.Formule; import fr.ifremer.isisfish.entities.Selectivity; import fr.ifremer.isisfish.entities.TargetSpecies; @@ -627,7 +631,7 @@ * @param entity entity * @return continuous enabled */ - public static boolean canBeContinuous(JComponent component, + public static boolean canBeContinue(JComponent component, TopiaEntity entity) { String fieldName = (String) component.getClientProperty("method"); if (component instanceof JTextComponent) { @@ -656,17 +660,27 @@ * @return continuous enabled */ public static boolean canBeContinue(JComponent component, Object value) { + boolean result = false; + if (component instanceof JTextComponent) { if (value instanceof Double) { - return true; + result = true; } else if (value instanceof Long) { - return true; + result = true; } } else if (component instanceof InputOneEquationUI) { - return true; + result = true; } - return false; + else if (component instanceof MatrixPanelEditor) { + result = true; + } + + if (log.isDebugEnabled()) { + log.debug("Component " + component.getClass().getSimpleName() + + " with value " + value + "(" + value.getClass().getSimpleName() + ") can be continuous : " + result); + } + return result; } /** @@ -743,4 +757,88 @@ } return result; } + + /** + * Return the component to edit factor depending on factor path. + * (inspect the return type of entity denoted by path) + * + * Used to edit reloader factor from old simulation. + * + * @param factor factor + * @param context context + * @return component + */ + public static JComponent getEditorForFactor(Factor<?, ?> factor, TopiaContext context) { + JComponent result = null; + + // we can't do it only with path maybe ? + // need to check property type with introspection + String path = factor.getPath(); + + if (log.isDebugEnabled()) { + log.debug("Try to find component for path " + path); + } + + String topiaId = path.substring(0, path.lastIndexOf('#')); + String property = StringUtils.capitalize(path.substring(path.lastIndexOf('#') + 1)); + + Class<?> typeClazz = null; + try { + TopiaEntity entity = context.findByTopiaId(topiaId); + + if (log.isDebugEnabled()) { + log.debug("Factor " + factor.getName() + " denoted entity " + entity); + } + + Method method = entity.getClass().getMethod("get" + property); + typeClazz = method.getReturnType(); + + if (log.isDebugEnabled()) { + log.debug("Property " + property + " denoted type " + typeClazz.getSimpleName()); + } + + result = getEditorForType(typeClazz); + + } catch (TopiaException ex) { + if (log.isErrorEnabled()) { + log.error("Can't find entity for " + topiaId, ex); + } + } catch (SecurityException ex) { + if (log.isErrorEnabled()) { + log.error("Can't get type info for " + topiaId, ex); + } + } catch (NoSuchMethodException ex) { + if (log.isErrorEnabled()) { + log.error("Can't get type info for " + topiaId, ex); + } + } + + return result; + } + + /** + * Get editor for type. + * + * @param typeClazz type to get editor + * @return component + */ + protected static JComponent getEditorForType(Class<?> typeClazz) { + + JComponent result = null; + + if (Double.class.isAssignableFrom(typeClazz)) { + result = new JTextField(); + } + else if (double.class.isAssignableFrom(typeClazz)) { + result = new JTextField(); + } + else if (MatrixND.class.isAssignableFrom(typeClazz)) { + result = new MatrixPanelEditor(); + } + else if (Equation.class.isAssignableFrom(typeClazz)) { + result = new InputOneEquationUI(); + } + + return result; + } } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx 2009-11-20 15:20:15 UTC (rev 2767) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx 2009-11-20 16:47:27 UTC (rev 2768) @@ -34,6 +34,7 @@ import fr.ifremer.isisfish.simulator.sensitivity.Factor; import fr.ifremer.isisfish.simulator.sensitivity.Domain; import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; +import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain; import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain; protected JComponent cOrigine = null; @@ -106,12 +107,24 @@ setExistingValue(true); this.cOrigine = cOrigine; this.path = f.getPath(); - factorName.setText(f.getName()); comment.setText(f.getComment()); Domain domain = f.getDomain(); this.factor = f; if (domain instanceof ContinuousDomain) { + if (domain instanceof EquationContinuousDomain) { + EquationContinuousDomain equationDomain = (EquationContinuousDomain)domain; + String factorName2 = f.getName(); + String suffix = "." + equationDomain.getVariableName(); + if (factorName2.endsWith(suffix)) { + factorName2 = factorName2.substring(0, factorName2.length()-suffix.length()); + } + factorName.setText(factorName2); + } + else { + // for other ContinuousDomain name is the same + factorName.setText(f.getName()); + } ContinuousDomain cDomain = (ContinuousDomain) domain; continuousPanel = EditorHelper.getContinuousPanelWithValue(cOrigine, cDomain, f); @@ -121,6 +134,10 @@ setContinueSelected(true); setContinuePossible(true); } else { + + // discret fator, name is the same + factorName.setText(f.getName()); + DiscreteDomain dDomain = (DiscreteDomain)domain; int nb = dDomain.getValues().size(); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2009-11-20 15:20:15 UTC (rev 2767) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2009-11-20 16:47:27 UTC (rev 2768) @@ -102,13 +102,23 @@ wizard.setVisible(true); } else { - - // factor path are : - // fr.ifremer.isisfish.entities.Strategy#1190373398255#0.7889364141850967#proportionSetOfVessels - if (log.isInfoEnabled()) { - log.info("UI not found for factor " + selectedFactor.getName()); - log.info(" with path " + selectedFactor.getPath()); + + // method 2 + JComponent component2 = EditorHelper.getEditorForFactor(selectedFactor, getRegion().getTopiaContext()); + if (component2 != null) { + if (log.isDebugEnabled()) { + log.debug("Component found is " + component2); + } + + wizard.initExisting(component2, selectedFactor); + wizard.pack(); + wizard.setVisible(true); } + else { + if (log.isDebugEnabled()) { + log.debug("No component found, skip edition of factor " + selectedFactor.getName()); + } + } } } } @@ -170,7 +180,6 @@ FactorTreeModel model = new FactorTreeModel(factors); factorsTree.setModel(model); factorsTree.setRootVisible(true); - factorsTree.setCellRenderer(new FactorTreeCellRenderer()); getParentContainer(SensitivityUI.class).getSensitivityChooserUI().setFactorCardinalityTableModel(); } @@ -208,7 +217,7 @@ <JPanel id="factorPanel" name="factorPanel" layout='{new BorderLayout()}'> <JScrollPane constraints='BorderLayout.CENTER'> <JTree id="factorsTree" rootVisible="true" selectionRow='0' - model='{new DefaultTreeModel(null)}' /> + model='{new DefaultTreeModel(null)}' cellRenderer='{new FactorTreeCellRenderer()}'/> </JScrollPane> </JPanel> </JSplitPane> Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2009-11-20 15:20:15 UTC (rev 2767) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2009-11-20 16:47:27 UTC (rev 2768) @@ -73,7 +73,7 @@ <ParamsUI id='paramsUI' sensitivity='{true}' constructorParams='this'/> </tab> <tab title='isisfish.sensitivity.title'> - <SensitivityTabUI id="sensitivityTabUI" constructorParams='new JAXXInitialContext().add(new InputAction()).add(new InputSaveVerifier()).add(this)'/> + <SensitivityTabUI id="sensitivityTabUI" constructorParams='new JAXXInitialContext().add(new InputAction()).add(new SensitivityAction()).add(new InputSaveVerifier()).add(this)'/> </tab> <tab title='isisfish.sensitivityChooser.title'> <SensitivityChooserUI id="sensitivityChooserUI" constructorParams='this'/> Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java 2009-11-20 15:20:15 UTC (rev 2767) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java 2009-11-20 16:47:27 UTC (rev 2768) @@ -19,11 +19,9 @@ package fr.ifremer.isisfish.ui.sensitivity; -import java.io.InputStream; import java.io.IOException; +import java.io.InputStream; import java.util.Properties; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -94,29 +92,4 @@ } return sensitivityProperties; } - - /** - * Return factor name for topiaId composed path. - * - * For example : - * fr.ifremer.isisfish.entities.Strategy#1190373398255#0.7889364141850967#proportionSetOfVessels - * will return : - * Strategy.proportionSetOfVessels - * - * @param path factor path - * @return factor name - */ - public static String getFactorNameForPath(String path) { - - Pattern pattern = Pattern.compile("^([^#]*\\.)?(\\w+).*#(\\w+)$"); - Matcher matcher = pattern.matcher(path); - - String result = null; - - if (matcher.find()) { - result = matcher.group(2) + "." + matcher.group(3); - } - - return result; - } } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-11-20 15:20:15 UTC (rev 2767) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-11-20 16:47:27 UTC (rev 2768) @@ -827,19 +827,18 @@ } public void addFactor(Factor<?, ?> f, JComponent c) { + if (log.isDebugEnabled()) { + log.debug("Add factor (" + f.getName() + ") : " +f.getPath()); + } factors.put(f.getPath() + f.getName(), f); factorComponent.put(f.getPath() + f.getName(), c); designPlan.setFactors(getFactors()); } - public Factor getFactor(String name) { - return factors.get(name); - } - public void addContinuousFactor(String name, String comment, String path, Double min, Double max, JComponent c, boolean exist) { - Factor f = new Factor(name); - ContinuousDomain domain = new ContinuousDomain(); + Factor<Double, Double> f = new Factor<Double, Double>(name); + ContinuousDomain<Double, Double> domain = new ContinuousDomain<Double, Double>(); domain.setMinBound(min); domain.setMaxBound(max); f.setDomain(domain); @@ -853,8 +852,8 @@ public void addDiscreteFactor(String name, String comment, String path, List<Serializable> values, JComponent c, boolean exist) { - Factor f = new Factor(name); - DiscreteDomain domain = new DiscreteDomain(); + Factor<Serializable, Serializable> f = new Factor<Serializable, Serializable>(name); + DiscreteDomain<Serializable, Serializable> domain = new DiscreteDomain<Serializable, Serializable>(); int i = 0; for (Serializable value : values) { // FIXME test when integer @@ -875,10 +874,13 @@ public void addContinuousEquationFactor(String name, String comment, String path, EquationContinuousDomain domain, JComponent c, boolean exist) { - Factor f = new Factor(name); + // factor name need to be composed + Factor<Double, Double> f = new Factor<Double, Double>(name + "." + domain.getVariableName()); f.setDomain(domain); f.setComment(comment); - f.setPath(path + domain.getVariableName()); + // don't modify path, need to be valid identifier + //f.setPath(path + domain.getVariableName()); + f.setPath(path); if (exist) { removeFactor(f); } @@ -888,7 +890,7 @@ public void addContinuousMatrixFactor(String name, String comment, String path, Double coef, MatrixND matrix, String operateur, JComponent c, boolean exist) { - Factor f = new Factor(name); + Factor<MatrixND, Double> f = new Factor<MatrixND, Double>(name); MatrixContinuousDomain domain = new MatrixContinuousDomain(); domain.setMatrix(matrix); domain.setOperator(operateur); @@ -902,11 +904,11 @@ addFactor(f, c); } - public JComponent getFactorComponent(Factor f) { - return factorComponent.get(f.getPath() + f); + public JComponent getFactorComponent(Factor<?, ?> f) { + return factorComponent.get(f.getPath() + f.getName()); } - public void removeFactor(Factor f) { + public void removeFactor(Factor<?, ?> f) { factors.remove(f.getPath() + f.getName()); factorComponent.remove(f.getPath() + f.getName()); designPlan.setFactors(getFactors()); Added: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelperTest.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelperTest.java (rev 0) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelperTest.java 2009-11-20 16:47:27 UTC (rev 2768) @@ -0,0 +1,69 @@ +/* *##% + * Copyright (C) 2009 Code Lutin, Chatellier Eric + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.sensitivity; + +import javax.swing.JComponent; +import javax.swing.JTextField; + +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.math.matrix.MatrixND; +import org.nuiton.math.matrix.MatrixNDImpl; +import org.nuiton.math.matrix.gui.MatrixPanelEditor; + +import fr.ifremer.isisfish.AbstractIsisFishTest; +import fr.ifremer.isisfish.entities.Equation; +import fr.ifremer.isisfish.ui.input.InputOneEquationUI; + +/** + * Test for {@link EditorHelper} class. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class EditorHelperTest extends AbstractIsisFishTest { + + /** + * Test that editor for given type are those excepted. + */ + @Test + public void testGetEditorForType() { + + JComponent result = EditorHelper.getEditorForType(double.class); + Assert.assertTrue(result instanceof JTextField); + + result = EditorHelper.getEditorForType(Double.class); + Assert.assertTrue(result instanceof JTextField); + + result = EditorHelper.getEditorForType(MatrixND.class); + Assert.assertTrue(result instanceof MatrixPanelEditor); + + result = EditorHelper.getEditorForType(MatrixNDImpl.class); + Assert.assertTrue(result instanceof MatrixPanelEditor); + + result = EditorHelper.getEditorForType(Equation.class); + Assert.assertTrue(result instanceof InputOneEquationUI); + + //result = EditorHelper.getEditorForType(PopulationReproductionEquation.class); + //Assert.assertTrue(result instanceof InputOneEquationUI); + } +} Property changes on: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelperTest.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL" Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java 2009-11-20 15:20:15 UTC (rev 2767) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java 2009-11-20 16:47:27 UTC (rev 2768) @@ -25,18 +25,10 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.junit.Assert; import org.junit.Test; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaContextFactory; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.TopiaNotFoundException; -import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.TopiaEntity; import fr.ifremer.isisfish.AbstractIsisFishTest; -import fr.ifremer.isisfish.IsisFishDAOHelper; -import fr.ifremer.isisfish.datastore.IsisH2Config; /** * Test for {@link SensitivityUtils} class. @@ -54,76 +46,28 @@ .getLog(SensitivityUtilsTest.class); /** - * Return a basic valid topia context. - * - * @throws TopiaNotFoundException - */ - protected TopiaContext getTopiaContext() throws TopiaNotFoundException { - Properties config = new Properties(); - IsisH2Config.addMemDatabaseConfig(config, "test"); - IsisH2Config.addHibernateMapping(config); - TopiaContext context = TopiaContextFactory.getContext(config); - return context; - } - - /** - * Test return of getFactorNameForPath(). - */ - @Test - public void testGetFactorNameForPath() { - - String result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Strategy#1190373398255#0.7889364141850967#proportionSetOfVessels"); - Assert.assertEquals("Strategy.proportionSetOfVessels", result); - - result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Gear#1234#5678#name"); - Assert.assertEquals("Gear.name", result); - - result = SensitivityUtils.getFactorNameForPath("Gear#1234#5678#name"); - Assert.assertEquals("Gear.name", result); - - result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Gear#name"); - Assert.assertEquals("Gear.name", result); - - result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Gear"); - Assert.assertNull(result); - - result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Gear.name"); - Assert.assertNull(result); - } - - /** * Test (par introspection) que tous les facteurs existent. * + * @throws ClassNotFoundException + * @throws IllegalAccessException + * @throws InstantiationException * @throws NoSuchMethodException * @throws SecurityException - * @throws TopiaException * @throws InvocationTargetException - * @throws IllegalAccessException * @throws IllegalArgumentException */ @Test - public void testFactorExistence() throws SecurityException, - NoSuchMethodException, TopiaException, IllegalArgumentException, - IllegalAccessException, InvocationTargetException { + public void testFactorExistence() throws InstantiationException, IllegalAccessException, + ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, + InvocationTargetException { Properties factors = SensitivityUtils.getProperties(); - TopiaContext testTC = getTopiaContext(); - TopiaContext context = testTC.beginTransaction(); for (String factorName : factors.stringPropertyNames()) { String className = factorName.substring(0, factorName.indexOf(".")); String propertyName = StringUtils.capitalize(factorName.substring(factorName.indexOf(".") + 1)); + + TopiaEntity entity = (TopiaEntity)Class.forName("fr.ifremer.isisfish.entities." + className + "Impl").newInstance(); - // get proper DAO - if (log.isDebugEnabled()) { - log.debug("Call get" + className + "DAO() on " + IsisFishDAOHelper.class.getSimpleName()); - } - Method mStatic = IsisFishDAOHelper.class.getMethod("get" + className + "DAO", TopiaContext.class); - TopiaDAO<TopiaEntity> dao = (TopiaDAO<TopiaEntity>) mStatic.invoke(null, new Object[] { context }); - Assert.assertNotNull("No DOA found for factor " + factorName, dao); - - // create one instance - TopiaEntity entity = dao.create(); - // call proper property if (log.isDebugEnabled()) { log.debug(" and call get" + propertyName + "() on " + className); @@ -131,6 +75,5 @@ Method m = entity.getClass().getMethod("get" + propertyName); m.invoke(entity, (Object[]) null); } - context.closeContext(); } }