Author: sletellier Date: 2011-03-30 18:47:45 +0200 (Wed, 30 Mar 2011) New Revision: 2237 Url: http://nuiton.org/repositories/revision/topia/2237 Log: - Use clone of property to initialize context - Add svn:ignore Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContextFactory.java trunk/topia-service-security/ trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContextFactory.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContextFactory.java 2011-03-25 17:45:33 UTC (rev 2236) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContextFactory.java 2011-03-30 16:47:45 UTC (rev 2237) @@ -137,17 +137,18 @@ // Resolve problem with hibernate which used iterator to get properties // and so only values from the current properties object and not all // hierarchy + Properties cloned = new Properties(); for (String key : config.stringPropertyNames()) { - config.setProperty(key, config.getProperty(key)); + cloned.setProperty(key, config.getProperty(key)); } - TopiaContext result = contextCache.get(config); + TopiaContext result = contextCache.get(cloned); // useless test, context is automatically removed from Factory when closed if (result == null/* || result.isClosed()*/) { - result = new TopiaContextImpl(config); + result = new TopiaContextImpl(cloned); if (log.isDebugEnabled()) { log.debug("instantiate new topiaContext : " + result); } - contextCache.put((Properties) config.clone(), result); + contextCache.put(cloned, result); } else if (log.isDebugEnabled()) { log.debug("topiaContext found : " + result); } Property changes on: trunk/topia-service-security ___________________________________________________________________ Modified: svn:ignore - *.ipr .classpath *.iws .project *.iml .settings target + *.ipr *.iws .classpath .project target .settings Modified: trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java =================================================================== --- trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java 2011-03-25 17:45:33 UTC (rev 2236) +++ trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java 2011-03-30 16:47:45 UTC (rev 2237) @@ -38,8 +38,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.i18n.I18n; -import org.nuiton.i18n.init.ClassPathI18nInitializer; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaContextFactory; import org.nuiton.topia.TopiaException; @@ -57,16 +55,24 @@ import org.nuiton.topia.taas.entities.TaasUserImpl; import org.nuiton.topia.taas.event.TaasAccessEntity; import org.nuiton.topia.taas.event.TaasEntityVetoable; -import org.nuiton.topia.taas.jaas.*; +import org.nuiton.topia.taas.jaas.TaasConfiguration; +import org.nuiton.topia.taas.jaas.TaasLoginModule; +import org.nuiton.topia.taas.jaas.TaasPermission; +import org.nuiton.topia.taas.jaas.TaasPolicy; +import org.nuiton.topia.taas.jaas.TaasPrincipalWrapper; +import org.nuiton.topia.taas.jaas.TaasSubjectFinder; +import org.nuiton.topia.taas.jaas.TaasSubjectFinderImpl; import javax.security.auth.Subject; import javax.security.auth.login.Configuration; import java.lang.reflect.Constructor; -import java.net.URL; -import java.net.URLClassLoader; import java.security.AccessController; import java.security.Permission; -import java.util.*; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Properties; +import java.util.Set; import static org.nuiton.topia.taas.TaasUtil.getPrincipalNames; @@ -105,15 +111,10 @@ private TaasSubjectFinder subjectFinder; - /** Contructeur par d�faut */ + /** Contructeur par defaut */ public TaasService() { } - /* - * (non-Javadoc) - * @see org.nuiton.topia.framework.TopiaService#getPersistenceClasses() - */ - @Override public Class<?>[] getPersistenceClasses() { return new Class<?>[]{ @@ -123,31 +124,21 @@ }; } - /* - * (non-Javadoc) - * @see org.nuiton.topia.framework.TopiaService#getServiceName() - */ - @Override public String getServiceName() { return SERVICE_NAME; } - /* - * (non-Javadoc) - * @see org.nuiton.topia.framework.TopiaService#preInit(org.nuiton.topia.framework.TopiaContextImplementor) - */ - @Override public boolean preInit(TopiaContextImplementor context) { rootContext = context; try { - org.hibernate.cfg.Configuration configuration = - rootContext.getHibernateConfiguration(); + Properties config = + (Properties)rootContext.getConfig().clone(); // Recuperation du parametre pour l'evenemnt - String eventString = configuration.getProperty(SERVICE_EVENT); + String eventString = config.getProperty(SERVICE_EVENT); if (eventString != null && !"".equals(eventString)) { Class<?> eventClass = Class.forName(eventString); Constructor<?> eventConstructor = eventClass.getConstructor(TaasService.class); @@ -157,7 +148,7 @@ } // Recuperation du parametre pour le subject - String subjectString = configuration.getProperty(SERVICE_SUBJECT); + String subjectString = config.getProperty(SERVICE_SUBJECT); if (subjectString != null && !"".equals(subjectString)) { Class<?> subjectClass = Class.forName(subjectString); subjectFinder = (TaasSubjectFinder) subjectClass.newInstance(); @@ -165,10 +156,12 @@ subjectFinder = new TaasSubjectFinderImpl(); } - // Recupere un context root sans securite - Properties config = rootContext.getConfig(); +// // Recupere un context root sans securite +// Properties config = rootContext.getConfig(); + // Hack to not reload this service config.remove("topia.service.taas"); + String persistences = config.getProperty("topia.persistence.classes"); for (Class<?> klass : getPersistenceClasses()) { persistences += "," + klass.getName(); @@ -215,16 +208,11 @@ context.addTopiaTransactionVetoable(this); } - /* - * (non-Javadoc) - * @see org.nuiton.topia.framework.TopiaService#postInit(org.nuiton.topia.framework.TopiaContextImplementor) - */ - @Override public boolean postInit(TopiaContextImplementor context) { policy.installPolicy(); - // Si pas de configuration autre que celle par d�faut + // Si pas de configuration autre que celle par defaut if (Configuration.getConfiguration() == null) { Configuration.setConfiguration( new TaasConfiguration(SERVICE_NAME, this));