r2747 - in trunk: src/site/rst topia-persistence/src/main/java/org/nuiton/topia topia-persistence/src/main/java/org/nuiton/topia/framework topia-persistence/src/main/java/org/nuiton/topia/persistence topia-persistence/src/main/java/org/nuiton/topia/persistence/csv topia-persistence/src/test/java/org/nuiton/topia/persistence/util topia-service-security/src/test/java/org/nuiton/topia/security
Author: bleny Date: 2013-07-11 10:01:59 +0200 (Thu, 11 Jul 2013) New Revision: 2747 Url: http://nuiton.org/projects/topia/repository/revisions/2747 Log: fixes #2083 refactor topiaId generation, introduce TopiaIdFactory Added: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/DefaultTopiaIdFactory.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/LegacyTopiaIdFactory.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntities.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaIdFactory.java Modified: trunk/src/site/rst/migrate_to_3.0.rst trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContextFactory.java trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImplementor.java trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFilter.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOLegacy.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaId.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/csv/EntityCsvModel.java trunk/topia-persistence/src/test/java/org/nuiton/topia/persistence/util/TopiaEntityHelperTest.java trunk/topia-service-security/src/test/java/org/nuiton/topia/security/TopiaSecurityTest.java Modified: trunk/src/site/rst/migrate_to_3.0.rst =================================================================== --- trunk/src/site/rst/migrate_to_3.0.rst 2013-07-10 08:54:40 UTC (rev 2746) +++ trunk/src/site/rst/migrate_to_3.0.rst 2013-07-11 08:01:59 UTC (rev 2747) @@ -33,4 +33,18 @@ ---------------------- * TopiaRuntimeException est dépréciée. Il faut désormais déclarer TopiaException dans la clause catch ; - * TopiaException devient Runtime. Il n'est plus nécessaire de la gérer. \ No newline at end of file + * TopiaException devient Runtime. Il n'est plus nécessaire de la gérer. + +Modularisation de la génération des TopiaID +------------------------------------------- + +La forme des topiaIds générés à changer. Si vous souhaitez conserver l'ancienne forme parce que vous +souhaitez conserver l'uniformité avec une base de données existante ou si vous utilise +topia-service-security, vous devez explicitement le spécifier à Topia 3.0 via la configuration : + + topia.persistence.topiaIdFactoryClassName=org.nuiton.topia.persistence.LegacyTopiaIdFactory + +Le classe TopiaID est dépréciée, elle sera déplacée dans topia-service-security. Utilisez plutôt une +référence vers une instance de TopiaIdFactory (disponible dans le TopiaContextImplementor et donc dans les DAOs). + + Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContextFactory.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContextFactory.java 2013-07-10 08:54:40 UTC (rev 2746) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContextFactory.java 2013-07-11 08:01:59 UTC (rev 2747) @@ -98,6 +98,17 @@ "topia.persistence.properties.file"; /** + * Configuration directive to change topia Ids generation strategy. + * + * Expected value is an fqn to a class which implements + * {@link org.nuiton.topia.persistence.TopiaIdFactory} + * + * @since 3.0 + */ + public final static String CONFIG_PERSISTENCE_TOPIA_ID_FACTORY_CLASS_NAME = + "topia.persistence.topiaIdFactoryClassName"; + + /** * Permet de connaitre la liste des contexts encore en memoire, utile pour * du debuggage. * Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2013-07-10 08:54:40 UTC (rev 2746) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2013-07-11 08:01:59 UTC (rev 2747) @@ -25,31 +25,6 @@ package org.nuiton.topia.framework; -import static org.nuiton.i18n.I18n._; - -import java.beans.PropertyChangeListener; -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; -import java.lang.reflect.Field; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Set; -import java.util.WeakHashMap; -import java.util.zip.GZIPInputStream; - import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -80,11 +55,37 @@ import org.nuiton.topia.event.TopiaEntityVetoable; import org.nuiton.topia.event.TopiaTransactionListener; import org.nuiton.topia.event.TopiaTransactionVetoable; +import org.nuiton.topia.persistence.DefaultTopiaIdFactory; import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.TopiaDAOImpl; import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.TopiaId; +import org.nuiton.topia.persistence.TopiaIdFactory; +import java.beans.PropertyChangeListener; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.lang.reflect.Field; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; +import java.util.WeakHashMap; +import java.util.zip.GZIPInputStream; + +import static org.nuiton.i18n.I18n._; + /** * Le TopiaContextImpl est le point d'entre pour acceder aux donnees. Il est * configurer par un fichier de propriete @@ -152,6 +153,13 @@ /** Propriete de configuration */ protected Properties config; + /** + * Used to affect a new topiaId when create is called. + * + * @since 3.0 + */ + protected TopiaIdFactory topiaIdFactory; + /** cache des DAO deja chargé pour ce context */ protected Map<Class<? extends TopiaEntity>, TopiaDAO<? extends TopiaEntity>> daoCache = @@ -183,6 +191,7 @@ /** Default constructor, useful for tests. */ protected TopiaContextImpl() { + } /** @@ -195,12 +204,39 @@ */ public TopiaContextImpl(Properties config) throws TopiaNotFoundException { this.config = config; + initTopiaIdFactory(); services = loadServices(config); preInitServices(services); getHibernateConfiguration(); // force mapping loading postInitServices(services); } + protected void initTopiaIdFactory() { + String configTopiaIdFactoryClassName = + getConfig().getProperty(TopiaContextFactory.CONFIG_PERSISTENCE_TOPIA_ID_FACTORY_CLASS_NAME, ""); + if (StringUtils.isEmpty(configTopiaIdFactoryClassName)) { + topiaIdFactory = new DefaultTopiaIdFactory(); + } else { + try { + Class configPersistenceTopiaIdFactoryClass = + Class.forName(configTopiaIdFactoryClassName); + if (TopiaIdFactory.class.isAssignableFrom(configPersistenceTopiaIdFactoryClass)) { + topiaIdFactory = (TopiaIdFactory) configPersistenceTopiaIdFactoryClass.newInstance(); + } else { + throw new IllegalArgumentException( + configTopiaIdFactoryClassName + " is not a valid class name. The class must implements " + + TopiaIdFactory.class.getSimpleName()); + } + } catch (ClassNotFoundException e) { + throw new TopiaException(e); + } catch (InstantiationException e) { + throw new TopiaException(e); + } catch (IllegalAccessException e) { + throw new TopiaException(e); + } + } + } + protected String getProperExceptionMessage(Throwable eee) { return eee.getClass().getSimpleName() + " : " + eee.getMessage(); @@ -408,6 +444,14 @@ return config; } + @Override + public TopiaIdFactory getTopiaIdFactory() { + if (topiaIdFactory == null) { + initTopiaIdFactory(); + } + return topiaIdFactory; + } + /** * Change the value of flag {@link #useFlushMode}. * @@ -880,7 +924,7 @@ checkClosed(_("topia.persistence.error.unsupported.operation.on.closed.context", "findById")); - Class<TopiaEntity> entityClass = TopiaId.getClassName(id); + Class<TopiaEntity> entityClass = getTopiaIdFactory().getClassName(id); TopiaDAO<TopiaEntity> dao = getDAO(entityClass); TopiaEntity result = dao.findByTopiaId(id); return result; @@ -1006,7 +1050,7 @@ "add")); String id = e.getTopiaId(); - Class<TopiaEntity> entityClass = TopiaId.getClassName(id); + Class<TopiaEntity> entityClass = getTopiaIdFactory().getClassName(id); TopiaDAO<TopiaEntity> dao = getDAO(entityClass); dao.update(e); } Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImplementor.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImplementor.java 2013-07-10 08:54:40 UTC (rev 2746) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImplementor.java 2013-07-11 08:01:59 UTC (rev 2747) @@ -33,8 +33,8 @@ import org.nuiton.topia.TopiaNotFoundException; import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.TopiaIdFactory; -import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Properties; @@ -67,6 +67,9 @@ /** @return Returns the config. */ Properties getConfig(); + // TODO brendan 05/07/13 expose it in TopiaContext ? + TopiaIdFactory getTopiaIdFactory(); + /** * @return Returns the hibernate. * @throws TopiaException si aucune transaction n'est ouverte Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFilter.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFilter.java 2013-07-10 08:54:40 UTC (rev 2746) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFilter.java 2013-07-11 08:01:59 UTC (rev 2747) @@ -41,6 +41,7 @@ * * @author fdesbois * @since 2.0 + * @deprecated since 3.0 */ public class TopiaFilter implements EntityFilter { Added: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/DefaultTopiaIdFactory.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/DefaultTopiaIdFactory.java (rev 0) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/DefaultTopiaIdFactory.java 2013-07-11 08:01:59 UTC (rev 2747) @@ -0,0 +1,35 @@ +package org.nuiton.topia.persistence; + +import com.google.common.base.Splitter; +import com.google.common.collect.Iterables; +import org.nuiton.topia.TopiaException; + +import java.util.UUID; + +/** + * Default implementation of {@link TopiaIdFactory}. Generates an FQN followed + * by an random UUID. + */ +public class DefaultTopiaIdFactory implements TopiaIdFactory { + + @Override + public <E extends TopiaEntity> String newTopiaId(Class<E> entityClass, TopiaEntity topiaEntity) { + if ( ! entityClass.isInterface()) { + throw new IllegalArgumentException( + "Only interface is permit to create id: " + entityClass); + } + return entityClass.getName() + '_' + UUID.randomUUID().toString(); + } + + @Override + public <E extends TopiaEntity> Class<E> getClassName(String topiaId) { + String className = Iterables.get(Splitter.on('_').split(topiaId), 0); + try { + Class<E> entityClass = (Class<E>) Class.forName(className); + return entityClass; + } catch (ClassNotFoundException e) { + throw new TopiaException("can't find class for topiaId = '" + topiaId + "'", e); + } + } + +} Added: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/LegacyTopiaIdFactory.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/LegacyTopiaIdFactory.java (rev 0) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/LegacyTopiaIdFactory.java 2013-07-11 08:01:59 UTC (rev 2747) @@ -0,0 +1,50 @@ +package org.nuiton.topia.persistence; + +import org.nuiton.topia.TopiaNotFoundException; + +/** + * Implements {@link TopiaIdFactory} with Topia 2.x and before ids. + * Suitable if you already have a database and your application need + * to generate ids like the old ones. + * + * @since 3.0 + */ +public class LegacyTopiaIdFactory implements TopiaIdFactory { + + @Override + public <E extends TopiaEntity> String newTopiaId(Class<E> entityClass, TopiaEntity topiaEntity) { + if (!entityClass.isInterface()) { + throw new IllegalArgumentException( + "Only interface is permit to create id: " + entityClass); + } + double random = Math.random(); + while (Double.toString(random).contains("E-")) { + random = Math.random(); + } + return entityClass.getName() + '#' + System.currentTimeMillis() + '#' + random; + } + + /** + * Extrait la classe du topiaId. + * + * @param topiaId + * @return class + * @throws org.nuiton.topia.TopiaNotFoundException + */ + @Override + public Class getClassName(String topiaId) throws TopiaNotFoundException { + String className = ""; + int i = topiaId.indexOf('#'); + if (i > 0) { + className = topiaId.substring(0, i); + } + try { + Class result = Class.forName(className); + return result; + } catch (ClassNotFoundException eee) { + throw new TopiaNotFoundException("Can't find class for " + topiaId, + eee); + } + } + +} Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java 2013-07-10 08:54:40 UTC (rev 2746) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java 2013-07-11 08:01:59 UTC (rev 2747) @@ -318,7 +318,8 @@ // TODO EC-20100322 this code may be merged with other create() methods try { // first set topiaId - String topiaId = TopiaId.create(entityClass); + + String topiaId = getContext().getTopiaIdFactory().newTopiaId(entityClass, entity); entity.setTopiaId(topiaId); if (entity instanceof TopiaEntityContextable) { @@ -368,20 +369,9 @@ */ @Override public E create(Map<String, Object> properties) throws TopiaException { + E result = newInstance(); - // TODO reflechir s'il ne faudrait pas creer l'id avant l'event precedent - // reflechir toujours dans un context on les E pourrait ne pas - // etre des TopiaEntity - if (result instanceof TopiaEntity) { - String topiaId = TopiaId.create(entityClass); - result.setTopiaId(topiaId); - - if (result instanceof TopiaEntityContextable) { - TopiaEntityContextable contextable = (TopiaEntityContextable)result; - contextable.setTopiaContext(getContext()); - } - } try { for (Map.Entry<String, Object> e : properties.entrySet()) { String propertyName = e.getKey(); @@ -399,6 +389,14 @@ "Can't put properties on new Object", eee); } + String newTopiaId = getContext().getTopiaIdFactory().newTopiaId(entityClass, result); + result.setTopiaId(newTopiaId); + + if (result instanceof TopiaEntityContextable) { + TopiaEntityContextable contextable = (TopiaEntityContextable)result; + contextable.setTopiaContext(getContext()); + } + // on fait un save maintenant, car puisqu'on a creer l'entity au // travers du DAO, on s'attend a l'avoir a disposition tout de // suite pour les requetes sans avoir a faire un update dessus @@ -788,10 +786,10 @@ int endIndex, Object... params) throws TopiaException { return findAllByQueryWithBound(getEntityClass(), - hql, - startIndex, - endIndex, - params); + hql, + startIndex, + endIndex, + params); } @Override @@ -821,9 +819,9 @@ Object... params) throws TopiaException { return findAllByQueryAndPager(getEntityClass(), - hql, - pager, - params); + hql, + pager, + params); } @Override Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOLegacy.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOLegacy.java 2013-07-10 08:54:40 UTC (rev 2746) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOLegacy.java 2013-07-11 08:01:59 UTC (rev 2747) @@ -434,20 +434,14 @@ */ @Override public E create(Map<String, Object> properties) throws TopiaException { + E result = instanciateNew(); - // TODO reflechir s'il ne faudrait pas creer l'id avant l'event precedent - // reflechir toujours dans un context on les E pourrait ne pas - // etre des TopiaEntity - if (result instanceof TopiaEntity) { - String topiaId = TopiaId.create(entityClass); - result.setTopiaId(topiaId); - - if (result instanceof TopiaEntityContextable) { - TopiaEntityContextable contextable = (TopiaEntityContextable)result; - contextable.setTopiaContext(getContext()); - } + if (result instanceof TopiaEntityContextable) { + TopiaEntityContextable contextable = (TopiaEntityContextable)result; + contextable.setTopiaContext(getContext()); } + try { for (Map.Entry<String, Object> e : properties.entrySet()) { String propertyName = e.getKey(); @@ -465,6 +459,9 @@ "Can't put properties on new Object", eee); } + String topiaId = getContext().getTopiaIdFactory().newTopiaId(entityClass, result); + result.setTopiaId(topiaId); + // on fait un save maintenant, car puisqu'on a creer l'entity au // travers du DAO, on s'attend a l'avoir a disposition tout de // suite pour les requetes sans avoir a faire un update dessus Added: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntities.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntities.java (rev 0) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntities.java 2013-07-11 08:01:59 UTC (rev 2747) @@ -0,0 +1,24 @@ +package org.nuiton.topia.persistence; + +import com.google.common.base.Function; + +public class TopiaEntities { + + protected static final Function<TopiaEntity, String> GET_TOPIA_ID = new Function<TopiaEntity, String>() { + + @Override + public String apply(TopiaEntity input) { + return input == null ? null : input.getTopiaId(); + } + }; + + /** + * Function to obtain {@link TopiaEntity#getTopiaId()} from any entity. + * + * @since 2.6.12 + */ + public static Function<TopiaEntity, String> getTopiaIdFunction() { + return GET_TOPIA_ID; + } + +} Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaId.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaId.java 2013-07-10 08:54:40 UTC (rev 2746) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaId.java 2013-07-11 08:01:59 UTC (rev 2747) @@ -57,7 +57,9 @@ * @author tchemit <tchemit@codelutin.com> * @author chatellier <chatellier@codelutin.com> * @version $Id$ + * @deprecated since 3.0 depends on implementation of TopiaIdFactory. WILL BE moved to topia-service-security */ +@Deprecated public class TopiaId implements Serializable { // TopiaId /** */ @@ -67,15 +69,11 @@ * Function to obtain {@link TopiaEntity#getTopiaId()} from any entity. * * @since 2.6.12 + * @deprecated since 3.0 use {@link org.nuiton.topia.persistence.TopiaEntities#getTopiaIdFunction()} */ - public static final Function<TopiaEntity, String> GET_TOPIA_ID = new Function<TopiaEntity, String>() { + @Deprecated + public static final Function<TopiaEntity, String> GET_TOPIA_ID = TopiaEntities.getTopiaIdFunction(); - @Override - public String apply(TopiaEntity input) { - return input == null ? null : input.getTopiaId(); - } - }; - public String topiaId; public TopiaId() { Added: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaIdFactory.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaIdFactory.java (rev 0) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaIdFactory.java 2013-07-11 08:01:59 UTC (rev 2747) @@ -0,0 +1,17 @@ +package org.nuiton.topia.persistence; + +/** + * Contract representing a strategy of id generation. + * + * @since 3.0 + * @author bleny + */ +public interface TopiaIdFactory { + + <E extends TopiaEntity> String newTopiaId(Class<E> entityClass, TopiaEntity topiaEntity); + + // TODO brendan 10/07/13 deprecated ? + @Deprecated + <E extends TopiaEntity> Class<E> getClassName(String topiaId); + +} Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/csv/EntityCsvModel.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/csv/EntityCsvModel.java 2013-07-10 08:54:40 UTC (rev 2746) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/csv/EntityCsvModel.java 2013-07-11 08:01:59 UTC (rev 2747) @@ -25,9 +25,9 @@ import com.google.common.base.Function; import com.google.common.collect.Maps; +import org.nuiton.topia.persistence.TopiaEntities; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaEntityEnum; -import org.nuiton.topia.persistence.TopiaId; import org.nuiton.topia.persistence.metadata.TableMeta; import org.nuiton.util.csv.ValueParserFormatter; import org.nuiton.util.csv.ext.AbstractImportExportModel; @@ -131,7 +131,7 @@ Collection<E> entities) { Map<String, E> universe = Maps.uniqueIndex(entities, - TopiaId.GET_TOPIA_ID); + TopiaEntities.getTopiaIdFunction()); newMandatoryColumn(propertyName, TopiaCsvCommons.newForeignKeyValue(entityType, Modified: trunk/topia-persistence/src/test/java/org/nuiton/topia/persistence/util/TopiaEntityHelperTest.java =================================================================== --- trunk/topia-persistence/src/test/java/org/nuiton/topia/persistence/util/TopiaEntityHelperTest.java 2013-07-10 08:54:40 UTC (rev 2746) +++ trunk/topia-persistence/src/test/java/org/nuiton/topia/persistence/util/TopiaEntityHelperTest.java 2013-07-11 08:01:59 UTC (rev 2747) @@ -31,9 +31,10 @@ import org.junit.Test; import org.nuiton.topia.TopiaException; import org.nuiton.topia.TopiaTestDAOHelper; +import org.nuiton.topia.persistence.DefaultTopiaIdFactory; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaEntityEnum; -import org.nuiton.topia.persistence.TopiaId; +import org.nuiton.topia.persistence.TopiaIdFactory; import org.nuiton.topiatest.Company; import org.nuiton.topiatest.CompanyImpl; import org.nuiton.topiatest.Department; @@ -57,10 +58,12 @@ /** @author tchemit <chemit@codelutin.com> */ public class TopiaEntityHelperTest { - static TopiaEntityEnum[] contracts; + protected static TopiaIdFactory topiaIdFactory = new DefaultTopiaIdFactory(); - final Set<Class<? extends TopiaEntity>> contractsClass; + protected static TopiaEntityEnum[] contracts; + protected final Set<Class<? extends TopiaEntity>> contractsClass; + public TopiaEntityHelperTest() { contractsClass = new HashSet<Class<? extends TopiaEntity>>(); contractsClass.add(Company.class); @@ -166,11 +169,11 @@ public void testDetector() throws Exception { Company company = new CompanyImpl(); - company.setTopiaId(TopiaId.create(Company.class)); + company.setTopiaId(topiaIdFactory.newTopiaId(Company.class, company)); Employe employe = new EmployeImpl(); - employe.setTopiaId(TopiaId.create(Employe.class)); + employe.setTopiaId(topiaIdFactory.newTopiaId(Employe.class, employe)); Department department = new DepartmentImpl(); - department.setTopiaId(TopiaId.create(Department.class)); + department.setTopiaId(topiaIdFactory.newTopiaId(Department.class, department)); detectEntities(new Class<?>[]{Company.class, Employe.class, Department.class}, new int[]{1, 1, 1}, company, employe, department); detectEntityIds(new Class<?>[]{Company.class, Employe.class, Department.class}, new int[]{1, 1, 1}, company, employe, department); Modified: trunk/topia-service-security/src/test/java/org/nuiton/topia/security/TopiaSecurityTest.java =================================================================== --- trunk/topia-service-security/src/test/java/org/nuiton/topia/security/TopiaSecurityTest.java 2013-07-10 08:54:40 UTC (rev 2746) +++ trunk/topia-service-security/src/test/java/org/nuiton/topia/security/TopiaSecurityTest.java 2013-07-11 08:01:59 UTC (rev 2747) @@ -33,9 +33,7 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.TestName; import org.nuiton.i18n.I18n; import org.nuiton.topia.TestHelper; import org.nuiton.topia.TopiaContext; @@ -43,6 +41,7 @@ import org.nuiton.topia.TopiaException; import org.nuiton.topia.TopiaSecurityDAOHelper; import org.nuiton.topia.TopiaTestDAOHelper; +import org.nuiton.topia.persistence.LegacyTopiaIdFactory; import org.nuiton.topia.security.entities.authorization.TopiaAssociationAuthorization; import org.nuiton.topia.security.entities.authorization.TopiaAssociationAuthorizationDAO; import org.nuiton.topia.security.entities.authorization.TopiaEntityAuthorization; @@ -139,6 +138,9 @@ // add this to use security service config.setProperty("topia.service.security", "org.nuiton.topia.security.TopiaSecurityServiceImpl"); + + config.setProperty(TopiaContextFactory.CONFIG_PERSISTENCE_TOPIA_ID_FACTORY_CLASS_NAME, LegacyTopiaIdFactory.class.getCanonicalName()); + return config; }
participants (1)
-
bleny@users.nuiton.org