Wikitty-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
- 1653 discussions
Author: bpoussin
Date: 2010-10-28 15:59:11 +0200 (Thu, 28 Oct 2010)
New Revision: 456
Url: http://nuiton.org/repositories/revision/wikitty/456
Log:
ajout de la notion d'AddOn
Modified:
trunk/src/site/rst/index.rst
Modified: trunk/src/site/rst/index.rst
===================================================================
--- trunk/src/site/rst/index.rst 2010-10-28 13:54:03 UTC (rev 455)
+++ trunk/src/site/rst/index.rst 2010-10-28 13:59:11 UTC (rev 456)
@@ -73,12 +73,16 @@
Les services additionnels existants:
-- notion de label (pour étiqueter des objets)
- sécurité: authentification et autorisation
- cache
- notification (synchronisation de deux serveurs, notification en
client/serveur, listener sur les modifications)
+
+Les addons complémentaires:
+
+- notion de label (pour étiqueter des objets)
- import/export
+- internationnalisation (i18n)
Concept technique
=================
@@ -103,6 +107,11 @@
Il est donc possible d'ajouter de nouveau service de haut niveau, ou
d'ajouter de nouvelle façon de stocker l'information.
+Pour certain besoin il n'y a pas besoin d'implanter une nouvelle
+chouche (WikittyService). On parle alors de AddOn. C'est addon travail
+directement grace à l'API WikittyService, c'est le cas par exemple de
+l'import/export.
+
La partie cliente des applications ne travail qu'avec le WikittyProxy qui
masque la notion d'objet Wikitty pour retourner des beans metiers facilement
manipulable par le développeur.
1
0
Author: bpoussin
Date: 2010-10-28 15:54:03 +0200 (Thu, 28 Oct 2010)
New Revision: 455
Url: http://nuiton.org/repositories/revision/wikitty/455
Log:
New WikittyConfig to centralise all configuration
http://www.nuiton.org/issues/show/997
New Class WikittyServiceFactory to create au WikittyService declared in configuration (use picocontainer)
Suppress hessian serveur module from build, application can directly use Factory to replace it
http://www.nuiton.org/issues/show/1001
Import/Export use configuration
http://www.nuiton.org/issues/show/822
Added:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceFactory.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyServiceHelperTest.java
Modified:
trunk/pom.xml
trunk/wikitty-api/pom.xml
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/JGroupsNotifierTransporter.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImportExportService.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceEvent.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceImpl.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyTransaction.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/XMPPNotifierTransporter.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyI18nTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/importexport/ImportExportCSVTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java
trunk/wikitty-api/src/test/resources/META-INF/spring/wikitty-test.xml
trunk/wikitty-api/src/test/resources/csv/importtree.csv
trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java
trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java
trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyServiceJDBC.java
trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java
trunk/wikitty-jdbc-impl/src/test/resources/META-INF/spring/wikitty-test.xml
trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java
trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/AbstractTestSolr.java
trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/WikittyServiceSolr.java
trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/LoginController.java
trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyZkService.java
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/pom.xml 2010-10-28 13:54:03 UTC (rev 455)
@@ -26,12 +26,18 @@
<module>wikitty-ui-zk</module>
<module>wikitty-hessian-client</module>
- <module>wikitty-hessian-server</module>
+<!-- REMOVE use WikittyServiceHelper.build now <module>wikitty-hessian-server</module> -->
</modules>
<dependencyManagement>
<dependencies>
+ <dependency>
+ <groupId>org.picocontainer</groupId>
+ <artifactId>picocontainer</artifactId>
+ <version>2.11.2</version>
+ <scope>compile</scope>
+ </dependency>
<!--dependency>
<groupId>junit</groupId>
Modified: trunk/wikitty-api/pom.xml
===================================================================
--- trunk/wikitty-api/pom.xml 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/pom.xml 2010-10-28 13:54:03 UTC (rev 455)
@@ -48,6 +48,12 @@
<!-- COMPILE -->
<dependency>
+ <groupId>org.picocontainer</groupId>
+ <artifactId>picocontainer</artifactId>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/JGroupsNotifierTransporter.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/JGroupsNotifierTransporter.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/JGroupsNotifierTransporter.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -24,7 +24,6 @@
*/
package org.nuiton.wikitty;
-import java.util.Properties;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
@@ -34,6 +33,7 @@
import org.jgroups.JChannel;
import org.jgroups.Message;
import org.jgroups.ReceiverAdapter;
+import org.nuiton.util.ApplicationConfig;
/**
* JGroups notifier.
@@ -50,16 +50,6 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(JGroupsNotifierTransporter.class);
- /**
- * Utilisation du canal de communication basé sur jgroups avec
- * comme identifiant d'application le nom de canal en option.
- *
- * Si ce nom est vide, jgroups n'est pas utilisé.
- * Si {@link #WIKITTY_EVENT_PROPAGATE_OPTION} est a true et que cette
- * options est vide, une exception est levée.
- */
- static public final String WIKITTY_EVENT_JGROUPCHANNELNAME_OPTION = "wikitty.service.event.jgroupschannelname";
-
/** Notifier service reference reference. */
protected WikittyServiceNotifier ws;
@@ -67,13 +57,13 @@
/** JGroup channel. */
protected JChannel channel;
- public JGroupsNotifierTransporter(WikittyServiceNotifier ws, Properties props) {
+ public JGroupsNotifierTransporter(ApplicationConfig config, WikittyServiceNotifier ws) {
this.ws = ws;
// can be null according to default constructor
- if (props != null) {
+ if (config != null) {
// add notifier as listener
- String jgroupChannel = props.getProperty(WIKITTY_EVENT_JGROUPCHANNELNAME_OPTION);
+ String jgroupChannel = config.getOption(WikittyConfig.Option.WIKITTY_EVENT_TRANSPORTER_JGROUP_CHANNELNAME.getKey());
if (!StringUtils.isBlank(jgroupChannel)) {
initChannel(jgroupChannel);
} else {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -32,6 +32,7 @@
import org.apache.commons.collections.map.ReferenceMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.ApplicationConfig;
/**
* Cette classe sert a introduire du cache dans wikitty. Elle sert a centraliser
@@ -52,9 +53,11 @@
protected Map<String, Wikitty> wikittyCache;
/**
+ *
+ * @param config not used currently but necessary in futur to configure the cache
* Create a soft cache.
*/
- public WikittyCache() {
+ public WikittyCache(ApplicationConfig config) {
this(true);
}
Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -0,0 +1,321 @@
+package org.nuiton.wikitty;
+
+import java.io.File;
+import java.util.Properties;
+import static org.nuiton.i18n.I18n._;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.ApplicationConfig;
+import org.nuiton.util.ArgumentsParserException;
+
+/**
+ * Configuration de tous les modules Wikitty. La configuration par defaut doit
+ * permettre un bon fonctionnement de wikitty pour quelqu'un souhaitant faire un
+ * essaie rapide. La configuration actuelle:
+ * <li> wikitty-config.properties comme fichier de configuration
+ * <li> WikittyServiceInMemory
+ * <li> pas de notification reseau
+ * <li> /tmp pour les exports
+ *
+ * Si on utilise WikittyServiceImpl au lieu de WikittyServiceInMemory par defaut
+ * <li> base h2 embarque
+ * <li> solr
+ *
+ * Si on utilise la notification des events
+ * <li> transporter XMPPNotifierTransporter
+ * <li> serveur im.codelutin.com
+ * <li> room test(a)conference.im.codelutin.com
+ *
+ * Des la creation de l'objet les fichiers de configuration sont recherches.
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class WikittyConfig extends ApplicationConfig {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(WikittyConfig.class);
+
+ /**
+ * Create WikittyConfig with default value and load wikitty-config.properties
+ */
+ public WikittyConfig() {
+ super();
+ init();
+ try {
+ parse(null);
+ } catch (ArgumentsParserException eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't load wikitty configuration", eee);
+ }
+ }
+ }
+
+ /**
+ * Create WikittyConfig and load particular configuration filename
+ * @param configFilename
+ */
+ public WikittyConfig(String configFilename) {
+ setDefaultOption(Option.WIKITTY_CONFIG_FILE.getKey(), configFilename);
+ }
+
+ /**
+ * Create WikittyConfig and use props as default value
+ * @param props
+ */
+ public WikittyConfig(Properties props) {
+ this();
+
+ // iterate with Properties method and not with Hashtable method to
+ // prevent missed value with chained Properties object
+ for (String key : props.stringPropertyNames()) {
+ setDefaultOption(key, props.getProperty(key));
+ }
+ }
+
+ protected void init() {
+ // init configuration with default options
+ for (Option o : Option.values()) {
+ if (o.defaultValue != null) {
+ setDefaultOption(o.key, o.defaultValue);
+ }
+ }
+
+ // init actions
+ for (Action a : Action.values()) {
+ for (String alias : a.aliases) {
+ addActionAlias(alias, a.action);
+ }
+ }
+ }
+
+ /**
+ * Configuration option for all modules
+ */
+ public static enum Option implements OptionDef {
+
+ WIKITTY_CONFIG_FILE(
+ CONFIG_FILE_NAME,
+ _("Main configuration wikitty file"),
+ "wikitty-config.properties", String.class, true, true),
+
+ WIKITTY_STORAGE_JDBC_QUERY_FILE(
+ "wikitty.storage.jdbc.queryfile",
+ _("JDBC query configuration file"),
+ "wikitty-jdbc-query.properties", String.class, false, false),
+
+ WIKITTY_STORAGE_JDBC_DRIVER(
+ "wikitty.storage.jdbc.driver",
+ _("JDBC driver name"),
+ "org.h2.Driver", String.class, false, false),
+ WIKITTY_STORAGE_JDBC_URL(
+ "wikitty.storage.jdbc.host",
+ _("JDBC url"),
+ "jdbc:h2:file:./target/data/data", String.class, false, false),
+ WIKITTY_STORAGE_JDBC_LOGIN(
+ "wikitty.storage.jdbc.login",
+ _("JDBC login name"),
+ "sa", String.class, false, false),
+ WIKITTY_STORAGE_JDBC_PASSWORD(
+ "wikitty.storage.jdbc.password",
+ _("JDBC password"),
+ "", String.class, false, false),
+ WIKITTY_STORAGE_JDBC_XADATASOURCE(
+ "wikitty.storage.jdbc.xadatasource",
+ _("JDBC xadatasource driver"),
+ "org.h2.jdbcx.JdbcDataSource", String.class, false, false),
+ WIKITTY_STORAGE_JDBC_XADATASOURCE_H2_URL(
+ "wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.URL",
+ _("JDBC xadatasource property h2 url"),
+ "jdbc:h2:file:./target/data/data", String.class, false, false),
+ WIKITTY_STORAGE_JDBC_XADATASOURCE_H2_USER(
+ "wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.user",
+ _("JDBC xadatasource property h2 username"),
+ "sa", String.class, false, false),
+ WIKITTY_STORAGE_JDBC_XADATASOURCE_H2_PASSWORD(
+ "wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.password",
+ _("JDBC xadatasource property h2 password"),
+ "", String.class, false, false),
+
+ WIKITTY_SEARCHENGINE_SOLR_DIRECTORY_DATA(
+ "wikitty.searchengine.solr.directory.data",
+ _("Solr data directory"),
+ "./target/data/solr", File.class, false, false),
+
+
+ WIKITTY_WIKITTYSERVICE_COMPONENTS(
+ "wikitty.WikittyService.components",
+ _("WikittyService to use (list must be in right order. "
+ + "ex: org.nuiton.wikitty.WikittyServiceImpl,org.nuiton.wikitty.WikittyServiceNotifier,org.nuiton.wikitty.WikittyServiceCached,org.nuiton.wikitty.WikittyServiceSecurity)"),
+ WikittyServiceInMemory.class.getName(), String.class, false, false),
+
+ WIKITTY_WIKITTYSERVICEINMEMORY_PERSISTENCE(
+ "wikitty.WikittyServiceInMemory.persistence",
+ _("Indique si les donnees sont stocker entre deux utilisations."),
+ "false", Boolean.class, false, false),
+ WIKITTY_WIKITTYSERVICEINMEMORY_PERSISTENCE_FILE(
+ "wikitty.WikittyServiceInMemory.persistence.file",
+ _("Fichier ou les donnees sont stocker"),
+ "/tmp/wikitty-inmemory.ser", File.class, false, false),
+
+
+ WIKITTY_WIKITTYSERVICEIMPL_COMPONENTS(
+ "wikitty.WikittyServiceImpl.components",
+ _("WikittyServiceImpl component to use (ExtensionStorage, WikittyStorage, SearchEngine)"),
+ "org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC,"
+ + "org.nuiton.wikitty.jdbc.WikittyStorageJDBC,"
+ + "org.nuiton.wikitty.solr.WikittySearchEnginSolr", String.class, false, false),
+
+ WIKITTY_EXPORT_THREADNUMBER(
+ "wikitty.addon.export.threadnumber",
+ _("number of thread used to export task"),
+ "1", Integer.class, false, false),
+ WIKITTY_EXPORT_DIRECTORY(
+ "wikitty.addon.export.directory",
+ _("directory path where export asynchronous file are stored"),
+ "/tmp", String.class, false, false),
+ WIKITTY_EXPORT_PUBLICURL(
+ "wikitty.addon.export.publicurl",
+ _("url used by client to retrieve export file when job is ended"),
+ "file:///tmp/", String.class, false, false),
+
+ WIKITTY_CACHE_LISTEN_REMOTEEVENTS(
+ "wikitty.service.cache.listenevents",
+ _("Indique si le service de cache ecoute les events reseaux"),
+ "false", Boolean.class, false, false),
+ WIKITTY_CACHE_RESTORE_COPIES(
+ "wikitty.service.cache.allwaysRestoreCopies",
+ _("Indique si le cache retourne des copies des objets ou des proxies"),
+ "false", Boolean.class, false, false),
+
+ WIKITTY_EVENT_PROPAGATE(
+ "wikitty.service.event.propagate",
+ _("Indique si le service d'event propage sur le reseau les evenements"),
+ "false", Boolean.class, false, false),
+ WIKITTY_EVENT_PROPAGATE_TRANSPORTER(
+ "wikitty.service.event.propagate.transporter",
+ _("La classe du transporter a utiliser pour la propagation reseau"),
+ XMPPNotifierTransporter.class.getName(), Class.class, false, false),
+
+ WIKITTY_EVENT_TRANSPORTER_JGROUP_CHANNELNAME(
+ "wikitty.service.event.transporter.jgroups.channelname",
+ _("channel name for jgroups transporter"),
+ null, String.class, false, false),
+
+ WIKITTY_EVENT_TRANSPORTER_XMPP_SERVER(
+ "wiktty.service.event.transporter.xmpp.server",
+ _("XMPP server to use for XMPP transporter"),
+ "im.codelutin.com", String.class, false, false),
+ WIKITTY_EVENT_TRANSPORTER_XMPP_ROOM(
+ "wikitty.service.event.transporter.xmpp.room",
+ _("Room to use for XMPP transporter"),
+ "test(a)conference.im.codelutin.com", String.class, false, false),
+ WIKITTY_EVENT_TRANSPORTER_XMPP_NOTIFICATION_PERSISTENT(
+ "wikitty.service.event.transporter.xmpp.notification.persistent",
+ _("If true client try to retrieve missed message during client"
+ + "stopped. For that room must have history activated"),
+ "false", Boolean.class, false, false),
+
+ // achitecture client serveur
+ WIKITTY_SERVER_HESSIAN_ENDPOINT(
+ "wikitty.server.hessian.endpoint",
+ _("Hessian serveur URL"),
+ null, String.class, false, false);
+
+ public String key;
+ public String description;
+ public String defaultValue;
+ public Class<?> type;
+ public boolean isTransient;
+ public boolean isFinal;
+
+ private Option(String key, String description, String defaultValue, Class<?> type, boolean isTransient, boolean isFinal) {
+ this.key = key;
+ this.description = description;
+ this.defaultValue = defaultValue;
+ this.type = type;
+ this.isTransient = isTransient;
+ this.isFinal = isFinal;
+ }
+
+ @Override
+ public boolean isFinal() {
+ return isFinal;
+ }
+
+ @Override
+ public boolean isTransient() {
+ return isTransient;
+ }
+
+ @Override
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ @Override
+ public String getKey() {
+ return key;
+ }
+
+ @Override
+ public Class<?> getType() {
+ return type;
+ }
+
+ @Override
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ @Override
+ public void setTransient(boolean isTransient) {
+ this.isTransient = isTransient;
+ }
+
+ @Override
+ public void setFinal(boolean isFinal) {
+ this.isFinal = isFinal;
+ }
+ }
+
+ public static enum Action {
+
+ HELP(_("Wikitty help"),
+ WikittyConfig.class.getName() + "#help", "-h", "--help");
+
+ public String description;
+ public String action;
+ public String[] aliases;
+
+ private Action(String description, String action, String... aliases) {
+ this.description = description;
+ this.action = action;
+ this.aliases = aliases;
+ }
+ }
+
+ static public void help() {
+ System.out.println("Wikitty configuration and action");
+ System.out.println("Options (set with --option <key> <value>:");
+ for (WikittyConfig.Option o : WikittyConfig.Option.values()) {
+ log.debug("\t" + o.key + "(" + o.defaultValue + "):" + o.description);
+ }
+
+ log.debug("Actions:");
+ for (WikittyConfig.Action a : WikittyConfig.Action.values()) {
+ log.debug("\t" + java.util.Arrays.toString(a.aliases) + "(" + a.action + "):" + a.description);
+ }
+ System.exit(0);
+ }
+
+}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImportExportService.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImportExportService.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImportExportService.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -39,6 +39,7 @@
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;
+import org.nuiton.util.ApplicationConfig;
import org.nuiton.wikitty.importexport.ExportTask;
import org.nuiton.wikitty.importexport.ImportExportCSV;
@@ -74,18 +75,13 @@
}
};
- // FIXME poussin 20090902 next 3 variables must be read from configuration file
- /** number of thread used to import/export task */
- protected static final int MAX_IMPORT_EXPORT_THREAD = 1;
/** directory path where export asynchronous file are stored */
- protected static final String EXPORT_DIRECTORY = "/tmp/";
+ protected String exportDirectory = "/tmp/";
/** url used by client to retrieve export file when job is ended */
- protected static final String EXPORT_URL = "file:///tmp/";
+ protected String exportPublicURL = "file:///tmp/";
/** Executor that do import export task */
- protected ExecutorService importExportExecutor =
- // TODO poussin 20090902 do thread number configurable
- Executors.newFixedThreadPool(MAX_IMPORT_EXPORT_THREAD);
+ protected ExecutorService importExportExecutor;
/** contains all import or export task, key is job id send to client */
protected Map<String, Future<String>> importExportTask =
@@ -94,15 +90,34 @@
protected WikittyService ws;
protected String securityToken;
- public WikittyImportExportService(String securityToken, WikittyService ws) {
+ public WikittyImportExportService(
+ ApplicationConfig config, String securityToken, WikittyService ws) {
this.securityToken = securityToken;
this.ws = ws;
+
+ exportDirectory = config.getOption(
+ WikittyConfig.Option.WIKITTY_EXPORT_DIRECTORY.getKey());
+ exportPublicURL = config.getOption(
+ WikittyConfig.Option.WIKITTY_EXPORT_PUBLICURL.getKey());
+
+ int maxThread = config.getOptionAsInt(
+ WikittyConfig.Option.WIKITTY_EXPORT_THREADNUMBER.getKey());
+ this.importExportExecutor =
+ Executors.newFixedThreadPool(maxThread);
}
public WikittyService getWikittyService() {
return ws;
}
+ public String getExportDirectory() {
+ return exportDirectory;
+ }
+
+ public String getExportPublicURL() {
+ return exportPublicURL;
+ }
+
public void syncImport(FORMAT format, String s) {
Reader reader = new StringReader(s);
ImportTask task = new ImportTask(securityToken, ws, format, reader);
@@ -175,8 +190,8 @@
try {
String jobId = UUID.randomUUID().toString();
- File file = new File(EXPORT_DIRECTORY, jobId);
- String url = EXPORT_URL + jobId;
+ File file = new File(exportDirectory, jobId);
+ String url = exportPublicURL + jobId;
Writer result = new FileWriter(file);
ExportTask task = new ExportTask(
securityToken, ws, format, criteria, result);
@@ -239,7 +254,7 @@
public void freeJobResource(String jobId) {
Future<String> future = importExportTask.remove(jobId);
if (future != null) {
- File file = new File(EXPORT_DIRECTORY, jobId);
+ File file = new File(exportDirectory, jobId);
file.delete();
}
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -31,11 +31,10 @@
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.ApplicationConfig;
/**
* Override some method of WikittyService to use cache
@@ -51,17 +50,20 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(WikittyServiceCached.class);
- /**
- * Utiliser pour mettre à jour le cache en ecoutant les evenements
- * sur le service.
- *
- * Le service {@link #ws} doit supporter l'enregistrement de listener.
- */
- static public final String WIKITTY_CACHE_LISTENEVENTS_OPTION = "wikitty.service.cache.listenevents";
+ // FIXME REMOVE IT
+// /**
+// * Utiliser pour mettre à jour le cache en ecoutant les evenements
+// * sur le service.
+// *
+// * Le service {@link #ws} doit supporter l'enregistrement de listener.
+// */
+// static public final String WIKITTY_CACHE_LISTEN_REMOTEEVENTS =
+// "wikitty.service.cache.listenevents";
+//
+// /** used as property name in props given in the constructor */
+// public static final String WIKITTY_CACHE_RESTORE_COPIES =
+// "wikitty.service.cache.allwaysRestoreCopies";
- /** used as property name in props given in the constructor */
- public static final String WIKITTY_CACHE_ALLWAYS_RESTORE_COPIES_POLICY_OPTION = "wikitty.service.cache.allwaysRestoreCopies";
-
/** Cache. */
protected WikittyCache cache = null;
@@ -80,14 +82,15 @@
*/
protected boolean allwaysRestoreCopies = false;
- /**
- * Default constructor.
- *
- * @param ws delegate service
- */
- public WikittyServiceCached(WikittyService ws) {
- this(ws, null);
- }
+ // FIXME 20101027 REMOVE IT when WikittyConfig is used everywhere
+// /**
+// * Default constructor.
+// *
+// * @param ws delegate service
+// */
+// public WikittyServiceCached(WikittyService ws) {
+// this(null, ws);
+// }
/**
* Constructor with configuration.
@@ -95,15 +98,15 @@
* @param ws delegate service
* @param props properties (can be null)
*/
- public WikittyServiceCached(WikittyService ws, Properties props) {
+ public WikittyServiceCached(ApplicationConfig config, WikittyService ws) {
this.ws = ws;
- cache = new WikittyCache();
- registerWikittyServiceListener(props);
-
- // reading configuration and set allwaysRestoreCopies accordingly
- if (props != null && props.containsKey(WIKITTY_CACHE_ALLWAYS_RESTORE_COPIES_POLICY_OPTION)) {
- allwaysRestoreCopies = Boolean.parseBoolean(
- props.getProperty(WIKITTY_CACHE_ALLWAYS_RESTORE_COPIES_POLICY_OPTION));
+ cache = new WikittyCache(config);
+ registerWikittyServiceListener(config);
+
+ if (config != null) {
+ // reading configuration and set allwaysRestoreCopies accordingly
+ allwaysRestoreCopies =
+ config.getOptionAsBoolean(WikittyConfig.Option.WIKITTY_CACHE_RESTORE_COPIES.getKey());
}
}
@@ -136,12 +139,12 @@
*
* @param props properties (can be null)
*/
- protected void registerWikittyServiceListener(Properties props) {
-
- if (props != null) {
+ protected void registerWikittyServiceListener(ApplicationConfig config) {
+ if (config != null) {
// add notifier as listener
- String listenEvents = props.getProperty(WIKITTY_CACHE_LISTENEVENTS_OPTION, "false");
- if ("true".equalsIgnoreCase(listenEvents)) {
+ boolean listenEvents = config.getOptionAsBoolean(
+ WikittyConfig.Option.WIKITTY_CACHE_LISTEN_REMOTEEVENTS.getKey());
+ if (listenEvents) {
// add service listener for synchronisation
// listener des remote event
addWikittyServiceListener(cache, ServiceListenerType.REMOTE);
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceEvent.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceEvent.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceEvent.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -26,15 +26,12 @@
package org.nuiton.wikitty;
import com.thoughtworks.xstream.XStream;
-import java.util.Collection;
import java.util.Date;
import java.util.EnumSet;
import java.util.EventObject;
import java.util.HashMap;
import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
import java.util.Map;
-import java.util.Set;
/**
* Wikitty service event.
Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceFactory.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceFactory.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceFactory.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -0,0 +1,156 @@
+package org.nuiton.wikitty;
+
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Properties;
+import org.apache.commons.lang.ClassUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.ApplicationConfig;
+import org.picocontainer.MutablePicoContainer;
+import org.picocontainer.containers.TransientPicoContainer;
+
+/**
+ * Point d'entre de wikitty, permet de recuperer un WikittyService pour
+ * travailler
+ *
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class WikittyServiceFactory {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(WikittyServiceFactory.class);
+
+ // FIXME REMOVE IT
+// /**
+// * Construit l'enchainement des differents WikittyService comme decrit
+// * dans le fichier de configuration via la cle:
+// * wikitty.WikittyService.components
+// * <p>
+// * Chaque composant de l'enchainement peut avoir lui aussi ses propres
+// * composants dans une cle:
+// * wikitty.[nom simple de la classe].components *
+// *
+// * @param props
+// * @return
+// */
+// static public WikittyService buildWikittyService(Properties props) {
+// WikittyConfig config = new WikittyConfig(props);
+// return buildWikittyService(config);
+// }
+
+ /**
+ * Construit l'enchainement des differents WikittyService comme decrit
+ * dans le fichier de configuration via la cle:
+ * wikitty.WikittyService.components
+ * <p>
+ * Chaque composant de l'enchainement peut avoir lui aussi ses propres
+ * composants dans une cle:
+ * wikitty.[nom simple de la classe].components *
+ *
+ * @param config
+ * @return
+ */
+ static public WikittyService buildWikittyService(ApplicationConfig config) {
+ WikittyService result = null;
+
+ List<Class> layers = getComponents(config, WikittyService.class);
+
+ MutablePicoContainer pico = new TransientPicoContainer();
+ pico.addComponent(config);
+ for (Class<WikittyService> clazz : layers) {
+ pico.addComponent(WikittyService.class, clazz);
+
+ // on cree un container specifique pour l'instanciate de cette objet
+ // avec tous les composants dont il a besoin
+ MutablePicoContainer childPico = getChildContainer(config, pico, clazz);
+ result = childPico.getComponent(clazz);
+
+ pico.removeComponent(WikittyService.class);
+ pico.removeComponent("parent");
+ pico.addComponent("parent", result);
+ }
+ return result;
+ }
+
+ static public WikittyServiceNotifier.RemoteNotifierTransporter buildTransporter(
+ ApplicationConfig config, WikittyServiceNotifier notifier) {
+ Class<WikittyServiceNotifier.RemoteNotifierTransporter> transporterClass =
+ (Class<WikittyServiceNotifier.RemoteNotifierTransporter>)config.getOptionAsClass(
+ WikittyConfig.Option.WIKITTY_EVENT_PROPAGATE_TRANSPORTER.getKey());
+
+ MutablePicoContainer pico = new TransientPicoContainer();
+ pico.addComponent(config);
+ pico.addComponent(notifier);
+ WikittyServiceNotifier.RemoteNotifierTransporter result =
+ pico.getComponent(transporterClass);
+ return result;
+ }
+
+ /**
+ * Retourne un nouveau container fils de celui passe en parametre et dans
+ * lequel on a injecte tous les composans necessaire a clazz comme decrit
+ * dans le fichier de configuration
+ *
+ * @param config
+ * @param parent
+ * @param clazz
+ * @return
+ */
+ static protected MutablePicoContainer getChildContainer(
+ ApplicationConfig config, MutablePicoContainer parent, Class clazz) {
+ List<Class> comps = getComponents(config, clazz);
+ MutablePicoContainer result = makeChildContainer(parent, comps);
+ return result;
+ }
+
+ /**
+ * Recherche dans la config une key de la forme
+ * <pre>
+ * wikitty.[nom simple de la classe].components
+ * </pre>
+ * Par exemple pour org.nuiton.wikitty.WikittyService le nom simple est
+ * WikittyService.
+ * La valeur doit contenir une liste de classes separer par des ','.
+ * *
+ * @param config
+ * @param clazz
+ * @return la liste de classe trouvee ou null si la cle n'existe pas
+ */
+ static protected List<Class> getComponents(ApplicationConfig config, Class clazz) {
+ List<Class> result = null;
+
+ String key = "wikitty." + clazz.getSimpleName() + ".components";
+
+ String componentsString = config.getOption(key);
+ if (componentsString != null) {
+ String[] componentsList = componentsString.split(",");
+ result = (List<Class>) ClassUtils.convertClassNamesToClasses(
+ Arrays.asList(componentsList));
+ }
+ return result;
+ }
+
+ /**
+ * Cree un nouveau container et injecte les classes donnees en parametre
+ * @param parent
+ * @param comps
+ * @return
+ */
+ static protected MutablePicoContainer makeChildContainer(
+ MutablePicoContainer parent, List<Class> comps) {
+ MutablePicoContainer result = parent.makeChildContainer();
+ if (comps != null) {
+ for (Class clazz : comps) {
+ result.addComponent(clazz);
+ }
+ }
+ return result;
+ }
+}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceImpl.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceImpl.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceImpl.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -65,13 +65,14 @@
protected WikittyStorage wikittyStorage;
/**
+ * FIXME poussin 20101027 remove it when all used WikittyServiceHelper.build
+ *
* Used by specific child
* {@link org.nuiton.wikitty.jdbc.WikittyServiceJDBC}
* {@link org.nuiton.wikitty.jdbc.WikittyServiceJPA}
* {@link org.nuiton.wikitty.jdbc.WikittyServiceHbase}
*/
protected WikittyServiceImpl() {
-
}
public WikittyServiceImpl(WikittyExtensionStorage extensionStorage,
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -44,6 +44,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.ApplicationConfig;
import org.nuiton.wikitty.FieldType.TYPE;
import org.nuiton.wikitty.search.And;
import org.nuiton.wikitty.search.BinaryOperator;
@@ -429,56 +430,58 @@
}
/**
- * if persitenceFile is not null, serialize all data to disk during store
+ * if persistenceFile is not null, serialize all data to disk during store
* operation and the file is reloaded during init
*/
- protected File persitenceFile = null;
+ protected File persistenceFile = null;
-// protected WikittyStorage wikittyStorage;
-// protected WikittyExtensionStorage extensionStorage;
-// protected WikittySearchEngin searchEngin;
-
- public WikittyServiceInMemory() {
+ public WikittyServiceInMemory(ApplicationConfig config) {
super(new WikittyExtensionStorageInMemory(),
new WikittyStorageInMemory(),
null);
searchEngin = new WikittySearchEnginInMemory(
(WikittyStorageInMemory) wikittyStorage);
+
+ boolean persist = config.getOptionAsBoolean(
+ WikittyConfig.Option.WIKITTY_WIKITTYSERVICEINMEMORY_PERSISTENCE.getKey());
+ if (persist) {
+ persistenceFile = config.getOptionAsFile(
+ WikittyConfig.Option.WIKITTY_WIKITTYSERVICEINMEMORY_PERSISTENCE_FILE.getKey());
+ restoreFromPersistenceFile(persistenceFile);
+ }
}
- public WikittyServiceInMemory(File persitenceFile) {
- this();
- this.persitenceFile = persitenceFile;
- if (persitenceFile != null && persitenceFile.exists()) {
+ @Override
+ protected void finalize() throws Throwable {
+ saveToPersistenceFile(persistenceFile);
+
+ super.finalize();
+ }
+
+ protected void restoreFromPersistenceFile(File persistenceFile) {
+ if (persistenceFile != null && persistenceFile.exists()) {
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(
- persitenceFile));
+ persistenceFile));
((WikittyExtensionStorageInMemory)extensionStorage).extensions = (Map) in.readObject();
((WikittyStorageInMemory)wikittyStorage).wikitties = (Map) in.readObject();
in.close();
} catch (Exception eee) {
- log.error("Can't read data file " + persitenceFile, eee);
+ log.error("Can't read data file " + persistenceFile, eee);
}
}
}
- @Override
- protected void finalize() throws Throwable {
- saveToPersistenceFile();
-
- super.finalize();
- }
-
- public void saveToPersistenceFile() {
- if (persitenceFile != null) {
+ public void saveToPersistenceFile(File persistenceFile) {
+ if (persistenceFile != null) {
try {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(
- persitenceFile));
+ persistenceFile));
out.writeObject(((WikittyExtensionStorageInMemory)extensionStorage).extensions);
out.writeObject(((WikittyStorageInMemory)wikittyStorage).wikitties);
out.close();
} catch (IOException eee) {
- log.error("Can't write data file " + persitenceFile, eee);
+ log.error("Can't write data file " + persistenceFile, eee);
}
}
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -26,14 +26,10 @@
package org.nuiton.wikitty;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.concurrent.LinkedBlockingQueue;
@@ -85,21 +81,12 @@
protected EventThread eventThread;
/**
- * Default constructor.
- *
- * @param ws delegate service
- */
- public WikittyServiceNotifier(WikittyService ws) {
- this(ws, null);
- }
-
- /**
* Constructor with configuration.
*
* @param ws delegate service
* @param props properties (can be null)
*/
- public WikittyServiceNotifier(WikittyService ws, Properties props) {
+ public WikittyServiceNotifier(ApplicationConfig config, WikittyService ws) {
// service
this.ws = ws;
@@ -115,8 +102,8 @@
remoteWikittyServiceListeners);
// can be null according to default constructor
- if (props != null) {
- notifier = new RemoteNotifier(this, props);
+ if (config != null) {
+ notifier = new RemoteNotifier(config, this);
}
}
@@ -566,13 +553,6 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(RemoteNotifier.class);
- /**
- * Indique si les objects sont propages (true) vers les autres caches ou
- * simplement supprimes des autres caches (false). Default to {@code false}.
- */
- static public final String WIKITTY_EVENT_PROPAGATE_OPTION = "wikitty.service.event.propagateEvent";
- /** notifier class name in configuration that this service must used */
- static final public String WIKITTY_NOTIFIER_TRANSPORTER_CLASS = "wikitty.notifier.transporter.class";
/** Notifier service reference reference. */
protected WikittyServiceNotifier ws;
@@ -586,34 +566,22 @@
protected boolean propagateEvent = false;
protected RemoteNotifierTransporter transporter;
- public RemoteNotifier(WikittyServiceNotifier ws, Properties props) {
+ public RemoteNotifier(ApplicationConfig config, WikittyServiceNotifier ws) {
// can be null according to default constructor
- if (props != null) {
+ if (config != null) {
this.ws = ws;
- if (!props.containsKey(WIKITTY_NOTIFIER_TRANSPORTER_CLASS)) {
- props.setProperty(WIKITTY_NOTIFIER_TRANSPORTER_CLASS, JGroupsNotifierTransporter.class.getName());
- }
- ApplicationConfig config = new ApplicationConfig(props);
-
- propagateEvent = config.getOptionAsBoolean(WIKITTY_EVENT_PROPAGATE_OPTION);
+ propagateEvent = config.getOptionAsBoolean(
+ WikittyConfig.Option.WIKITTY_EVENT_PROPAGATE.getKey());
if (log.isDebugEnabled()) {
log.debug("Set propagateEvent option to " + propagateEvent);
}
- Class transporterClass = config.getOptionAsClass(
- WIKITTY_NOTIFIER_TRANSPORTER_CLASS);
- try {
- transporter = (RemoteNotifierTransporter) ConstructorUtils.invokeConstructor(transporterClass,
- new Object[]{ws, props},
- new Class[]{WikittyServiceNotifier.class, Properties.class});
- } catch (Exception eee) {
- throw new WikittyException("Can't create notifier: "
- + transporterClass.getName(), eee);
+ if (propagateEvent) {
+ transporter = WikittyServiceFactory.buildTransporter(config, ws);
+ // add this as listener when transporter is created without error
+ ws.addWikittyServiceListener(this, WikittyService.ServiceListenerType.ALL); // weak reference
}
-
- // add this as listener when transporter is created without error
- ws.addWikittyServiceListener(this, WikittyService.ServiceListenerType.ALL); // weak reference
}
if (log.isInfoEnabled()) {
if (transporter == null) {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -36,6 +36,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.ApplicationConfig;
import org.nuiton.wikitty.search.Search;
/**
@@ -58,7 +59,12 @@
/** cache de l'id du groupe AppAdmin */
transient protected String appAdminGroupId = null;
- public WikittyServiceSecurity(WikittyService ws) {
+ /**
+ *
+ * @param config not use currently but needed in futur
+ * @param ws
+ */
+ public WikittyServiceSecurity(ApplicationConfig config, WikittyService ws) {
this.ws = new WikittyServiceEnhanced(ws);
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyTransaction.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyTransaction.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyTransaction.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -51,6 +51,9 @@
}
/**
+ * FIXME poussin 20101027 a supprimer lorsque WikittyServiceTransaction
+ * aura ete implante
+ *
* Visibilite 'default' car est uilise par WikittyServiceCached qui est dans
* le meme package et a priori seulement lui en a besoin
*
@@ -58,7 +61,7 @@
*/
WikittyCache getCache() {
if (cache == null) {
- cache = new WikittyCache();
+ cache = new WikittyCache(false);
}
return cache;
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/XMPPNotifierTransporter.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/XMPPNotifierTransporter.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/XMPPNotifierTransporter.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -32,7 +32,6 @@
import java.net.NetworkInterface;
import java.util.Date;
import java.util.Enumeration;
-import java.util.Properties;
import java.util.UUID;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -68,10 +67,6 @@
static private Log log = LogFactory.getLog(XMPPNotifierTransporter.class);
static final public String PROPERTY_EVENT_NAME = "wikitty-event";
- static final public String WIKITTY_XMPP_SERVER = "wikitty.xmpp.server";
- static final public String WIKITTY_XMPP_ROOM = "wikitty.xmpp.room";
- static final public String WIKITTY_NOTIFICATION_PERSISTENT =
- "wikitty.notification.persistent";
/** Notifier service reference reference. */
protected WikittyServiceNotifier ws;
@@ -92,9 +87,9 @@
* @param ws
* @param props
*/
- public XMPPNotifierTransporter(WikittyServiceNotifier ws, Properties props) {
+ public XMPPNotifierTransporter(ApplicationConfig config, WikittyServiceNotifier ws) {
this.ws = ws;
- initXMPP(props);
+ initXMPP(config);
}
/**
@@ -102,14 +97,14 @@
*
* @param props
*/
- protected void initXMPP(Properties props) {
- ApplicationConfig config = new ApplicationConfig(props);
+ protected void initXMPP(ApplicationConfig config) {
+ persistent = config.getOptionAsBoolean(
+ WikittyConfig.Option.WIKITTY_EVENT_TRANSPORTER_XMPP_NOTIFICATION_PERSISTENT.getKey());
+ String server = config.getOption(
+ WikittyConfig.Option.WIKITTY_EVENT_TRANSPORTER_XMPP_SERVER.getKey());
- persistent = config.getOptionAsBoolean(WIKITTY_NOTIFICATION_PERSISTENT);
- String server = config.getOption(WIKITTY_XMPP_SERVER);
-
// Keep them to verify that is not us notifications
- room = config.getOption(WIKITTY_XMPP_ROOM);
+ room = config.getOption(WikittyConfig.Option.WIKITTY_EVENT_TRANSPORTER_XMPP_ROOM.getKey());
pseudo = getUniqueLoginName();
try {
if (log.isInfoEnabled()) {
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyI18nTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyI18nTest.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyI18nTest.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -22,7 +22,8 @@
@Test
public void testI18n() throws Exception {
// creation d'un proxy sur un ws in memory
- WikittyService ws = new WikittyServiceInMemory();
+ WikittyConfig config = new WikittyConfig();
+ WikittyService ws = new WikittyServiceInMemory(config);
WikittyProxy proxy = new WikittyProxy(ws);
// creation d'un label pour l'utiliser pour l'i18n
Added: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyServiceHelperTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyServiceHelperTest.java (rev 0)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyServiceHelperTest.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -0,0 +1,39 @@
+package org.nuiton.wikitty;
+
+
+import java.util.Properties;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class WikittyServiceHelperTest {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(WikittyServiceHelperTest.class);
+
+ @Test
+ public void testBuild() throws Exception {
+ Properties props = new Properties();
+ props.setProperty(WikittyConfig.Option.WIKITTY_WIKITTYSERVICE_COMPONENTS.getKey(),
+ WikittyServiceInMemory.class.getName() + "," +
+ WikittyServiceNotifier.class.getName() + "," +
+ WikittyServiceCached.class.getName());
+ WikittyConfig config = new WikittyConfig(props);
+ WikittyService ws = WikittyServiceFactory.buildWikittyService(config);
+
+ Assert.assertEquals(WikittyServiceCached.class, ws.getClass());
+ ws = ((WikittyServiceCached)ws).ws;
+ Assert.assertEquals(WikittyServiceNotifier.class, ws.getClass());
+ ws = ((WikittyServiceNotifier)ws).ws;
+ Assert.assertEquals(WikittyServiceInMemory.class, ws.getClass());
+ }
+}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -43,6 +43,7 @@
import org.junit.Test;
import org.nuiton.wikitty.Criteria;
import org.nuiton.wikitty.Wikitty;
+import org.nuiton.wikitty.WikittyConfig;
import org.nuiton.wikitty.WikittyImportExportService;
import org.nuiton.wikitty.search.Element;
import org.nuiton.wikitty.search.Search;
@@ -59,7 +60,8 @@
protected WikittyImportExportService getImportExportService() {
if (ieService == null) {
- ieService = new WikittyImportExportService(null, ws);
+ WikittyConfig config = new WikittyConfig();
+ ieService = new WikittyImportExportService(config, null, ws);
}
return ieService;
}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/importexport/ImportExportCSVTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/importexport/ImportExportCSVTest.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/importexport/ImportExportCSVTest.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -35,6 +35,7 @@
import org.nuiton.util.StringUtil;
import org.nuiton.wikitty.Criteria;
import org.nuiton.wikitty.PagedResult;
+import org.nuiton.wikitty.WikittyConfig;
import org.nuiton.wikitty.WikittyTreeNode;
import org.nuiton.wikitty.WikittyTreeNodeImpl;
import org.nuiton.wikitty.WikittyExtension;
@@ -167,11 +168,17 @@
proxy.storeExtension(extensionTag);
// declare import service
- WikittyImportExportService wsImport = new WikittyImportExportService(null, ws);
- String[] importFiles = {"/csv/importclient.csv", "/csv/importtree.csv", "/csv/importtree2.csv"};
+ WikittyConfig config = new WikittyConfig();
+ WikittyImportExportService wsImport =
+ new WikittyImportExportService(config, null, ws);
+ String[] importFiles = {
+ "/csv/importclient.csv",
+ "/csv/importtree.csv",
+ "/csv/importtree2.csv"};
for (String importFile : importFiles) {
URL importFileURL = ImportExportCSVTest.class.getResource(importFile);
- wsImport.syncImportFromUri(WikittyImportExportService.FORMAT.CSV, importFileURL.toExternalForm());
+ wsImport.syncImportFromUri(WikittyImportExportService.FORMAT.CSV,
+ importFileURL.toExternalForm());
}
// test extension support
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -35,6 +35,7 @@
import org.junit.Before;
import org.junit.Test;
import org.nuiton.wikitty.Wikitty;
+import org.nuiton.wikitty.WikittyConfig;
import org.nuiton.wikitty.WikittyServiceCached;
import org.nuiton.wikitty.WikittyServiceInMemory;
@@ -43,7 +44,8 @@
@Before
public void setUpWikittyServiceCachedTest() {
- setService(new WikittyServiceCached(new WikittyServiceInMemory()));
+ WikittyConfig config = new WikittyConfig();
+ setService(new WikittyServiceCached(config, new WikittyServiceInMemory(config)));
token = service.login(null, null);
service.store(token, null, Collections.singletonList(getaWikitty()), false);
}
@@ -90,10 +92,12 @@
@Test
public void testRestoreAllwaysCopyPolicy() throws Exception {
- Properties props = new Properties();
- props.setProperty(WikittyServiceCached.WIKITTY_CACHE_ALLWAYS_RESTORE_COPIES_POLICY_OPTION, "true");
+ WikittyConfig config = new WikittyConfig();
+ config.setOption(
+ WikittyConfig.Option.WIKITTY_CACHE_RESTORE_COPIES.getKey(),
+ "true");
- setService(new WikittyServiceCached(new WikittyServiceInMemory(), props));
+ setService(new WikittyServiceCached(config, new WikittyServiceInMemory(config)));
token = service.login(null, null);
service.store(token, null, Collections.singletonList(getaWikitty()), false);
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -40,6 +40,7 @@
import org.nuiton.wikitty.WikittyAuthorisationAbstract;
import org.nuiton.wikitty.WikittyAuthorisationHelper;
import org.nuiton.wikitty.WikittyAuthorisationImpl;
+import org.nuiton.wikitty.WikittyConfig;
import org.nuiton.wikitty.WikittyGroup;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.WikittySecurityHelper;
@@ -67,9 +68,11 @@
@Before
public void setUpWikittyServiceSecurityTest() {
- WikittyService inMemoryService = new WikittyServiceInMemory();
+ WikittyConfig config = new WikittyConfig();
+ WikittyService inMemoryService = new WikittyServiceInMemory(config);
- WikittyServiceSecurity securityService = new WikittyServiceSecurity(inMemoryService);
+ WikittyServiceSecurity securityService =
+ new WikittyServiceSecurity(config, inMemoryService);
/** /
// FIXME 20101005 bleny implementation should be able to allow
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -40,6 +40,7 @@
import org.nuiton.wikitty.ExtensionFactory;
import org.nuiton.wikitty.FieldType.TYPE;
import org.nuiton.wikitty.Wikitty;
+import org.nuiton.wikitty.WikittyConfig;
import org.nuiton.wikitty.WikittyExtension;
import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyServiceEnhanced;
@@ -53,7 +54,8 @@
@Before
public void init() throws Exception {
- wikittyService = new WikittyServiceInMemory();
+ WikittyConfig config = new WikittyConfig();
+ wikittyService = new WikittyServiceInMemory(config);
}
protected static DateFormat dateFormater = new SimpleDateFormat("dd/MM/yyyy");
@@ -70,7 +72,14 @@
tempPersistFile.delete();
tempPersistFile.deleteOnExit();
- wikittyService = new WikittyServiceInMemory( tempPersistFile );
+ WikittyConfig config = new WikittyConfig();
+ config.setOption(
+ WikittyConfig.Option.WIKITTY_WIKITTYSERVICEINMEMORY_PERSISTENCE.getKey(),
+ "true");
+ config.setOption(
+ WikittyConfig.Option.WIKITTY_WIKITTYSERVICEINMEMORY_PERSISTENCE_FILE.getKey(),
+ tempPersistFile.getPath());
+ wikittyService = new WikittyServiceInMemory(config);
String extName = "MyExtName";
WikittyExtension ext = ExtensionFactory.create("MyExtName", "1")
.addField("fieldName0", TYPE.NUMERIC)
@@ -87,9 +96,9 @@
);
String id = w.getId();
wikittyService.store(null, null, Collections.singletonList(w), false);
- ((WikittyServiceInMemory)wikittyService).saveToPersistenceFile();
+ ((WikittyServiceInMemory)wikittyService).saveToPersistenceFile(tempPersistFile);
- wikittyService = new WikittyServiceInMemory( tempPersistFile );
+ wikittyService = new WikittyServiceInMemory( config );
w = WikittyServiceEnhanced.restore(wikittyService, null, id);
assertTrue( w.hasField(extName, "fieldName0") );
assertEquals( 123, w.getFieldAsInt(extName, "fieldName0") );
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -35,7 +35,7 @@
*/
@Test
public void testEvent() throws Exception {
- WikittyServiceNotifier wsn = new WikittyServiceNotifier(null);
+ WikittyServiceNotifier wsn = new WikittyServiceNotifier(null, null);
Listener l = new Listener();
// test d'envoi et de bonne reception
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -26,9 +26,7 @@
import java.util.Date;
-import java.util.HashSet;
import java.util.Properties;
-import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jivesoftware.smack.PacketListener;
@@ -36,8 +34,8 @@
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smackx.muc.DiscussionHistory;
import org.jivesoftware.smackx.muc.MultiUserChat;
-import org.jivesoftware.smackx.muc.RoomInfo;
import org.junit.Test;
+import org.nuiton.wikitty.WikittyConfig;
import org.nuiton.wikitty.WikittyServiceEvent;
import org.nuiton.wikitty.XMPPNotifierTransporter;
@@ -58,13 +56,13 @@
public void testXMPP() throws Exception {
String server = "im.codelutin.com";
String room = "test(a)conference.im.codelutin.com";
- Properties props = new Properties();
- props.setProperty(XMPPNotifierTransporter.WIKITTY_XMPP_SERVER, server);
- props.setProperty(XMPPNotifierTransporter.WIKITTY_XMPP_ROOM, room);
+ WikittyConfig config = new WikittyConfig();
+ config.setOption(WikittyConfig.Option.WIKITTY_EVENT_TRANSPORTER_XMPP_SERVER.getKey(), server);
+ config.setOption(WikittyConfig.Option.WIKITTY_EVENT_TRANSPORTER_XMPP_ROOM.getKey(), room);
// Envoi d'un message avec le transporter normal
- XMPPNotifierTransporter xmpp = new XMPPNotifierTransporter(null, props);
+ XMPPNotifierTransporter xmpp = new XMPPNotifierTransporter(config, null);
WikittyServiceEvent event = new WikittyServiceEvent("test");
event.addRemoveDate("theId", new Date());
Modified: trunk/wikitty-api/src/test/resources/META-INF/spring/wikitty-test.xml
===================================================================
--- trunk/wikitty-api/src/test/resources/META-INF/spring/wikitty-test.xml 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/test/resources/META-INF/spring/wikitty-test.xml 2010-10-28 13:54:03 UTC (rev 455)
@@ -31,9 +31,12 @@
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
+ <bean name="wikittyConfig" class="org.nuiton.wikitty.WikittyConfig"/>
+
+ <bean id="wikittyService" class="org.nuiton.wikitty.WikittyServiceInMemory">
+ <constructor-arg ref="wikittyConfig"/>
+ </bean>
- <bean id="wikittyService" class="org.nuiton.wikitty.WikittyServiceInMemory" />
-
<context:annotation-config/>
<context:component-scan base-package="org.nuiton.wikitty"/>
Modified: trunk/wikitty-api/src/test/resources/csv/importtree.csv
===================================================================
--- trunk/wikitty-api/src/test/resources/csv/importtree.csv 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-api/src/test/resources/csv/importtree.csv 2010-10-28 13:54:03 UTC (rev 455)
@@ -1,3 +1,3 @@
"Wikitty.Id","Wikitty.Ext","WikittyTreeNode.name","WikittyTreeNode.parent","WikittyTreeNode.attachment"
"4f6fc798-41f8-48d7-9398-119ef6ab02b6",,"MyRootNode",,
-"1142aa4c-af5a-4264-9918-9f72d9ef9d59","Tag","MyTreeNode","4f6fc798-41f8-48d7-9398-119ef6ab02b6","(fbcc8aed-7f67-4e3c-a9aa-221373765f8d),(677ee1e7-239f-416c-a353-6e56bc0451e2)"
+"1142aa4c-af5a-4264-9918-9f72d9ef9d59","Tag","MyTreeNode","4f6fc798-41f8-48d7-9398-119ef6ab02b6","(fbcc8aed-7f67-4e3c-a9aa-221373765f8d),(677ee1e7-239f-416c-a353-6e56bc0451e2_dont-exist)"
Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java
===================================================================
--- trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -41,12 +41,6 @@
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_SELECT_WHERE;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.TABLE_EXTENSION_ADMIN;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.TABLE_EXTENSION_DATA;
-import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.commitJDBCConnection;
-import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.doQuery;
-import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.getConnection;
-import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.getJDBCConnection;
-import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.loadProperties;
-import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.rollbackJDBCConnection;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -63,7 +57,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.ApplicationConfig;
import org.nuiton.wikitty.FieldType;
+import org.nuiton.wikitty.WikittyConfig;
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyExtension;
import org.nuiton.wikitty.WikittyExtensionStorage;
@@ -85,7 +81,8 @@
static protected Log log = LogFactory.getLog(WikittyExtensionStorageJDBC.class);
/** Properties file */
- protected final Properties conf;
+ protected final Properties jdbcQuery;
+ protected ApplicationConfig config;
/** cache for extension key: ext id (extname[extversion]) value: WikittyExtension */
protected Map<String, WikittyExtension> extensionCache =
@@ -94,31 +91,33 @@
/** cache for last extension version; key: extName value: extVersion */
transient protected Map<String, String> lastVersion = null;
- public WikittyExtensionStorageJDBC() {
- this(null);
- }
+ // FIXME REMOVE IT
+// public WikittyExtensionStorageJDBC() {
+// this(null);
+// }
- public WikittyExtensionStorageJDBC(Properties properties) {
- conf = loadProperties(properties);
- Connection connectionTest = getJDBCConnection(conf);
+ public WikittyExtensionStorageJDBC(ApplicationConfig config) {
+ this.config = config;
+ jdbcQuery = WikittyJDBCUtil.loadQuery(config);
+ Connection connectionTest = WikittyJDBCUtil.getJDBCConnection(config);
try {
// If test of existance work, no exception and do nothing
// if exception try to create databse
Statement statementTest = connectionTest.createStatement();
- statementTest.execute(conf.getProperty(QUERY_CREATION_EXTENSION_ADMIN_TEST));
- statementTest.execute(conf.getProperty(QUERY_CREATION_EXTENSION_DATA_TEST));
+ statementTest.execute(jdbcQuery.getProperty(QUERY_CREATION_EXTENSION_ADMIN_TEST));
+ statementTest.execute(jdbcQuery.getProperty(QUERY_CREATION_EXTENSION_DATA_TEST));
} catch(SQLException silentError) {
if (log.isInfoEnabled()) {
log.info("try to create extension database");
}
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
Statement statement = connection.createStatement();
- statement.execute(conf.getProperty(QUERY_CREATION_EXTENSION_ADMIN));
- statement.execute(conf.getProperty(QUERY_CREATION_EXTENSION_DATA));
- commitJDBCConnection(connection);
+ statement.execute(jdbcQuery.getProperty(QUERY_CREATION_EXTENSION_ADMIN));
+ statement.execute(jdbcQuery.getProperty(QUERY_CREATION_EXTENSION_DATA));
+ WikittyJDBCUtil.commitJDBCConnection(connection);
} catch (SQLException eee) {
- rollbackJDBCConnection(connection);
+ WikittyJDBCUtil.rollbackJDBCConnection(connection);
throw new WikittyException("Can't create table for extension storage", eee);
} finally {
WikittyJDBCUtil.closeQuietly(connection);
@@ -133,13 +132,13 @@
Collection<WikittyExtension> extensions)
throws WikittyException {
WikittyServiceEvent result = new WikittyServiceEvent(this);
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
for (WikittyExtension ext : extensions) {
// extension id is extension name with version
String id = ext.getId();
//select all the data with the id "id"
- String query = String.format(conf.getProperty(QUERY_SELECT_WHERE),
+ String query = String.format(jdbcQuery.getProperty(QUERY_SELECT_WHERE),
COL_VERSION, TABLE_EXTENSION_ADMIN, COL_ID);
PreparedStatement statement = connection.prepareStatement(query);
statement.setString(1, id);
@@ -148,7 +147,8 @@
//if the data is not already recorded
if (!versionResultSet.next()) {
result.addExtension(ext);
- doQuery(connection, conf.getProperty(QUERY_INSERT_EXTENSION_ADMIN),
+ WikittyJDBCUtil.doQuery(connection,
+ jdbcQuery.getProperty(QUERY_INSERT_EXTENSION_ADMIN),
ext.getId(),
ext.getName(),
ext.getVersion(),
@@ -156,7 +156,8 @@
WikittyUtil.tagValuesToString(ext.getTagValues()));
for (String fieldName : ext.getFieldNames()) {
FieldType type = ext.getFieldType(fieldName);
- doQuery(connection, conf.getProperty(QUERY_INSERT_EXTENSION_DATA),
+ WikittyJDBCUtil.doQuery(connection,
+ jdbcQuery.getProperty(QUERY_INSERT_EXTENSION_DATA),
ext.getId(), fieldName, type.toDefinition(fieldName));
}
} else {
@@ -180,10 +181,10 @@
@Override
public boolean exists(WikittyTransaction transaction, String id) {
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
//select the data with teh id "id" in the admin table
- String q = String.format(conf.getProperty(QUERY_SELECT_WHERE),
+ String q = String.format(jdbcQuery.getProperty(QUERY_SELECT_WHERE),
COL_ID, TABLE_EXTENSION_ADMIN, COL_ID);
PreparedStatement statement = connection.prepareStatement(q);
statement.setString(1, id);
@@ -200,13 +201,13 @@
@Override
public List<String> getAllExtensionIds(WikittyTransaction transaction) {
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
List<String> result = new ArrayList<String>();
Statement statement = connection.createStatement();
//get all extensions names and versions
ResultSet resultSet = statement.executeQuery(
- String.format(conf.getProperty(QUERY_SELECT),
+ String.format(jdbcQuery.getProperty(QUERY_SELECT),
COL_ID, TABLE_EXTENSION_ADMIN));
while (resultSet.next()) {
@@ -224,10 +225,10 @@
@Override
public List<String> getAllExtensionsRequires(WikittyTransaction transaction,
String extensionName) {
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
List<String> result = new ArrayList<String>();
- String q = String.format(conf.getProperty(QUERY_SELECT_WHERE),
+ String q = String.format(jdbcQuery.getProperty(QUERY_SELECT_WHERE),
COL_ID, TABLE_EXTENSION_ADMIN, COL_REQUIRES);
PreparedStatement statement = connection.prepareStatement(q);
@@ -260,12 +261,12 @@
if (lastVersion == null) {
// create cache for futur call
Map<String, String> tmp = new HashMap<String, String>();
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
Statement statement = connection.createStatement();
//get all extensions names and versions
ResultSet resultSet = statement.executeQuery(
- String.format(conf.getProperty(QUERY_SELECT),
+ String.format(jdbcQuery.getProperty(QUERY_SELECT),
COL_NAME + "," + COL_VERSION, TABLE_EXTENSION_ADMIN));
while (resultSet.next()) {
String name = resultSet.getString(COL_NAME);
@@ -294,11 +295,11 @@
String id = WikittyExtension.computeId(name, version);
WikittyExtension result = extensionCache.get(id);
if (result == null) {
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
//get the data with the id "id" in the admin table
- String q = String.format(conf.getProperty(QUERY_SELECT_WHERE),
+ String q = String.format(jdbcQuery.getProperty(QUERY_SELECT_WHERE),
"*", TABLE_EXTENSION_ADMIN, COL_ID);
PreparedStatement statement = connection.prepareStatement(q);
statement.setString(1, id);
@@ -312,7 +313,7 @@
new LinkedHashMap<String, FieldType>();
//get the data with the id "id" in the data table
- String qdata = String.format(conf.getProperty(QUERY_SELECT_WHERE),
+ String qdata = String.format(jdbcQuery.getProperty(QUERY_SELECT_WHERE),
"*", TABLE_EXTENSION_DATA, COL_ID);
PreparedStatement sta = connection.prepareStatement(qdata);
sta.setString(1, id);
@@ -349,10 +350,10 @@
@Override
public WikittyServiceEvent clear(WikittyTransaction transaction) {
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
lastVersion = null;
- doQuery(connection, conf.getProperty(QUERY_CLEAR_EXTENSION));
+ WikittyJDBCUtil.doQuery(connection, jdbcQuery.getProperty(QUERY_CLEAR_EXTENSION));
WikittyServiceEvent result = new WikittyServiceEvent(this);
result.addType(WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION);
return result;
Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java
===================================================================
--- trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -49,6 +49,8 @@
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.ApplicationConfig;
+import org.nuiton.wikitty.WikittyConfig;
import org.nuiton.wikitty.WikittyException;
/**
@@ -145,16 +147,16 @@
static final public String QUERY_INSERT_EXTENSION_DATA =
"jdbc.queries.insert.extension.data";
- /** JDBC JDBC_DRIVER property name */
- static protected String JDBC_DRIVER = "jdbc.con.driver";
- /** JDBC_HOST property name */
- static protected String JDBC_HOST = "jdbc.con.host";
- /** JDBC_USER_NAME property name */
- static protected String JDBC_USER_NAME = "jdbc.con.userName";
- /** JDBC_PASSWORD property name */
- static protected String JDBC_PASSWORD = "jdbc.con.password";
- /** JDBC_XADATASOURCE property name */
- static protected String JDBC_XADATASOURCE = "jdbc.xadatasource";
+// /** JDBC JDBC_DRIVER property name */
+// static protected String JDBC_DRIVER = "jdbc.con.driver";
+// /** JDBC_HOST property name */
+// static protected String JDBC_HOST = "jdbc.con.host";
+// /** JDBC_USER_NAME property name */
+// static protected String JDBC_USER_NAME = "jdbc.con.userName";
+// /** JDBC_PASSWORD property name */
+// static protected String JDBC_PASSWORD = "jdbc.con.password";
+// /** JDBC_XADATASOURCE property name */
+// static protected String JDBC_XADATASOURCE = "jdbc.xadatasource";
/** admin table name */
static protected String TABLE_WIKITTY_ADMIN = "wikitty_admin";
@@ -172,20 +174,22 @@
* @param properties custom properties to override default configuration
* @return the properties for the connection and the queries
*/
- public static synchronized Properties loadProperties(Properties properties) {
- Properties queryConfig = new Properties();
- Properties databaseConfig = new Properties(queryConfig);
+ public static synchronized Properties loadQuery(ApplicationConfig config) {
+ Properties result = new Properties();
+// Properties databaseConfig = new Properties(queryConfig);
InputStream streamQuery = null;
- InputStream streamConfig = null;
+// InputStream streamConfig = null;
try {
// FIXME poussin 20100112 perhaps used nuitonutil.ApplicationConfig
-
+
+ String wikittyQueryFile = config.getOption(
+ WikittyConfig.Option.WIKITTY_STORAGE_JDBC_QUERY_FILE.getKey());
// queries
- URL url = ClassLoader.getSystemResource("wikitty-jdbc-query.properties");
+ URL url = ClassLoader.getSystemResource(wikittyQueryFile);
if (url == null) {
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
- url = contextClassLoader.getResource("wikitty-jdbc-query.properties");
+ url = contextClassLoader.getResource(wikittyQueryFile);
}
if (log.isInfoEnabled()) {
@@ -193,42 +197,43 @@
}
// url can't be null
streamQuery = url.openStream();
- queryConfig.load(streamQuery);
-
- // config
- url = ClassLoader.getSystemResource("wikitty-jdbc-config.properties");
- if (url == null) {
- ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
- url = contextClassLoader.getResource("wikitty-jdbc-config.properties");
- }
+ result.load(streamQuery);
- if (url == null) {
- if (log.isInfoEnabled()) {
- log.info("No wikitty-jdbc-config.properties file found in classpath (skip default configuration loading)");
- }
- }
- else {
- if (log.isInfoEnabled()) {
- log.info("Reading resource from: " + url);
- }
- streamConfig = url.openStream();
- databaseConfig.load(streamConfig);
- }
-
- // extra config
- if (properties != null) {
- databaseConfig.putAll(properties);
- }
+ // FIXME REMOVE IT
+// // config
+// url = ClassLoader.getSystemResource("wikitty-jdbc-config.properties");
+// if (url == null) {
+// ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+// url = contextClassLoader.getResource("wikitty-jdbc-config.properties");
+// }
+//
+// if (url == null) {
+// if (log.isInfoEnabled()) {
+// log.info("No wikitty-jdbc-config.properties file found in classpath (skip default configuration loading)");
+// }
+// }
+// else {
+// if (log.isInfoEnabled()) {
+// log.info("Reading resource from: " + url);
+// }
+// streamConfig = url.openStream();
+// databaseConfig.load(streamConfig);
+// }
+//
+// // extra config
+// if (properties != null) {
+// databaseConfig.putAll(properties);
+// }
} catch (IOException eee) {
throw new WikittyException("Unable to load property file", eee);
}
finally {
IOUtils.closeQuietly(streamQuery);
- IOUtils.closeQuietly(streamConfig);
+// IOUtils.closeQuietly(streamConfig);
}
- return databaseConfig;
+ return result;
}
private static Map<String, BasicManagedDataSource> dataSources =
@@ -241,12 +246,23 @@
* @param conf configuration
* @return a new Connection (db transaction)
*/
- public static synchronized Connection getConnection(Properties conf) {
+ public static synchronized Connection getConnection(ApplicationConfig conf) {
+ String driver = conf.getOption(
+ WikittyConfig.Option.WIKITTY_STORAGE_JDBC_DRIVER.getKey());
+ String host = conf.getOption(
+ WikittyConfig.Option.WIKITTY_STORAGE_JDBC_URL.getKey());
+ String username = conf.getOption(
+ WikittyConfig.Option.WIKITTY_STORAGE_JDBC_LOGIN.getKey());
+ String password = conf.getOption(
+ WikittyConfig.Option.WIKITTY_STORAGE_JDBC_PASSWORD.getKey());
+
+ String xaDataSourceClassName = conf.getOption(
+ WikittyConfig.Option.WIKITTY_STORAGE_JDBC_XADATASOURCE.getKey());;
try {
- TransactionManager transactionManager = com.arjuna.ats.jta.TransactionManager.transactionManager();
+ TransactionManager transactionManager =
+ com.arjuna.ats.jta.TransactionManager.transactionManager();
- String jdbcUrl = String.format("%s:%s@%s", conf.getProperty(JDBC_USER_NAME),
- conf.getProperty(JDBC_PASSWORD), conf.getProperty(JDBC_HOST));
+ String jdbcUrl = String.format("%s:%s@%s", username, password, host);
if (!dataSources.containsKey(jdbcUrl)) {
log.info("Creating BasicManagedDataSource for: " + jdbcUrl);
@@ -255,7 +271,6 @@
BasicManagedDataSource dataSource = new BasicManagedDataSource();
// if xadatasource
- String xaDataSourceClassName = conf.getProperty(JDBC_XADATASOURCE);
if(xaDataSourceClassName != null) {
XADataSource xaDataSource = (XADataSource) Class.forName(xaDataSourceClassName).newInstance();
@@ -263,10 +278,14 @@
Set<String> fields = beanMap.keySet();
// Inject properties in xadatasource
- for(Entry<Object, Object> properties : conf.entrySet()) {
+ for(Entry<Object, Object> properties : conf.getFlatOptions().entrySet()) {
String propertyName = (String) properties.getKey();
- if (propertyName.startsWith(JDBC_XADATASOURCE + "." + xaDataSourceClassName + ".")) {
- propertyName = propertyName.replaceFirst(JDBC_XADATASOURCE + "." + xaDataSourceClassName + ".", "");
+ if (propertyName.startsWith(
+ WikittyConfig.Option.WIKITTY_STORAGE_JDBC_XADATASOURCE.getKey()
+ + "." + xaDataSourceClassName + ".")) {
+ propertyName = propertyName.replaceFirst(
+ WikittyConfig.Option.WIKITTY_STORAGE_JDBC_XADATASOURCE.getKey()
+ + "." + xaDataSourceClassName + ".", "");
if(fields.contains(propertyName)) {
String propertyValue = (String) properties.getValue();
BeanUtils.setProperty(xaDataSource, propertyName, propertyValue);
@@ -281,10 +300,10 @@
}
// else standard datasource
- dataSource.setDriverClassName(conf.getProperty(JDBC_DRIVER));
- dataSource.setUrl(conf.getProperty(JDBC_HOST));
- dataSource.setUsername(conf.getProperty(JDBC_USER_NAME));
- dataSource.setPassword(conf.getProperty(JDBC_PASSWORD));
+ dataSource.setDriverClassName(driver);
+ dataSource.setUrl(host);
+ dataSource.setUsername(username);
+ dataSource.setPassword(password);
dataSource.setTransactionManager(transactionManager);
dataSources.put(jdbcUrl, dataSource);
@@ -297,7 +316,7 @@
} catch(Exception eee) {
throw new WikittyException(String.format(
"Can't connect to database %s %s with login %s",
- JDBC_DRIVER, JDBC_HOST, JDBC_USER_NAME), eee);
+ driver, host, username), eee);
}
}
@@ -320,9 +339,9 @@
* @return a new Connection (db transaction)
* @throws SQLException if the connection fails
*/
- public static synchronized Connection getJDBCConnection(Properties conf) {
+ public static synchronized Connection getJDBCConnection(ApplicationConfig config) {
try {
- Connection connection = getConnection(conf);
+ Connection connection = getConnection(config);
connection.setAutoCommit(false);
return connection;
} catch(SQLException eee) {
Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyServiceJDBC.java
===================================================================
--- trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyServiceJDBC.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyServiceJDBC.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -25,9 +25,9 @@
package org.nuiton.wikitty.jdbc;
-import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.ApplicationConfig;
import org.nuiton.wikitty.WikittyServiceImpl;
import org.nuiton.wikitty.solr.WikittySearchEnginSolr;
@@ -43,16 +43,17 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(WikittyServiceJDBC.class);
- public WikittyServiceJDBC() {
- extensionStorage = new WikittyExtensionStorageJDBC();
- wikittyStorage = new WikittyStorageJDBC(extensionStorage);
- searchEngin = new WikittySearchEnginSolr(extensionStorage);
- }
+ // FIXME REMOVE IT
+// public WikittyServiceJDBC() {
+// extensionStorage = new WikittyExtensionStorageJDBC();
+// wikittyStorage = new WikittyStorageJDBC(extensionStorage);
+// searchEngin = new WikittySearchEnginSolr(extensionStorage);
+// }
- public WikittyServiceJDBC(Properties config) {
+ public WikittyServiceJDBC(ApplicationConfig config) {
extensionStorage = new WikittyExtensionStorageJDBC(config);
- wikittyStorage = new WikittyStorageJDBC(extensionStorage, config);
- searchEngin = new WikittySearchEnginSolr(extensionStorage);
+ wikittyStorage = new WikittyStorageJDBC(config, extensionStorage);
+ searchEngin = new WikittySearchEnginSolr(config, extensionStorage);
}
}
Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java
===================================================================
--- trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -49,12 +49,6 @@
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_UPDATE_WIKITTY_ADMIN;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.TABLE_WIKITTY_ADMIN;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.TABLE_WIKITTY_DATA;
-import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.commitJDBCConnection;
-import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.doQuery;
-import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.getConnection;
-import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.getJDBCConnection;
-import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.loadProperties;
-import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.rollbackJDBCConnection;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -76,6 +70,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.ApplicationConfig;
import org.nuiton.wikitty.FieldType;
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyException;
@@ -102,41 +97,44 @@
static protected Log log = LogFactory.getLog(WikittyStorageJDBC.class);
/** Properties file */
- protected final Properties conf;
+ protected final Properties jdbcQuery;
+ protected ApplicationConfig config;
/** used to parse list field from hbase data. ex: extension.fieldname[11/15] */
static final private Pattern listFieldPattern =
Pattern.compile("(.*)\\[(\\d+)/(\\d+)\\]");
protected WikittyExtensionStorage extensionStorage;
+
+ // FIXME REMOVE IT
+// public WikittyStorageJDBC(WikittyExtensionStorage extensionStorage) {
+// this(extensionStorage, null);
+// }
- public WikittyStorageJDBC(WikittyExtensionStorage extensionStorage) {
- this(extensionStorage, null);
- }
-
- public WikittyStorageJDBC(WikittyExtensionStorage extensionStorage, Properties properties) {
+ public WikittyStorageJDBC(ApplicationConfig config, WikittyExtensionStorage extensionStorage) {
+ this.config = config;
this.extensionStorage = extensionStorage;
- conf = loadProperties(properties);
- Connection connectionTest = getJDBCConnection(conf);
+ jdbcQuery = WikittyJDBCUtil.loadQuery(config);
+ Connection connectionTest = WikittyJDBCUtil.getJDBCConnection(config);
try {
// If test of existance work, no exception and do nothing
// if exception try to create databse
Statement statementTest = connectionTest.createStatement();
- statementTest.execute(conf.getProperty(QUERY_CREATION_WIKITTY_ADMIN_TEST));
- statementTest.execute(conf.getProperty(QUERY_CREATION_WIKITTY_DATA_TEST));
+ statementTest.execute(jdbcQuery.getProperty(QUERY_CREATION_WIKITTY_ADMIN_TEST));
+ statementTest.execute(jdbcQuery.getProperty(QUERY_CREATION_WIKITTY_DATA_TEST));
} catch (SQLException silentError) {
if (log.isInfoEnabled()) {
log.info("try to create wikitty database");
}
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
Statement statement = connection.createStatement();
- statement.execute(conf.getProperty(QUERY_CREATION_WIKITTY_ADMIN));
- statement.execute(conf.getProperty(QUERY_CREATION_WIKITTY_DATA));
- commitJDBCConnection(connection);
+ statement.execute(jdbcQuery.getProperty(QUERY_CREATION_WIKITTY_ADMIN));
+ statement.execute(jdbcQuery.getProperty(QUERY_CREATION_WIKITTY_DATA));
+ WikittyJDBCUtil.commitJDBCConnection(connection);
} catch (SQLException eee) {
- rollbackJDBCConnection(connection);
+ WikittyJDBCUtil.rollbackJDBCConnection(connection);
throw new WikittyException("Can't create table for wikitty storage", eee);
} finally {
WikittyJDBCUtil.closeQuietly(connection);
@@ -170,11 +168,11 @@
@Override
public WikittyServiceEvent store(WikittyTransaction transaction,
Collection<Wikitty> wikitties, boolean force) throws WikittyException {
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
WikittyServiceEvent result = new WikittyServiceEvent(this);
for (Wikitty wikitty : wikitties) {
- String query = String.format(conf.getProperty(QUERY_SELECT_TWO_WHERE),
+ String query = String.format(jdbcQuery.getProperty(QUERY_SELECT_TWO_WHERE),
COL_VERSION, COL_DELETION_DATE, TABLE_WIKITTY_ADMIN, COL_ID);
PreparedStatement statement = connection.prepareStatement(query);
statement.setString(1, wikitty.getId());
@@ -227,10 +225,14 @@
}
if (wikittyAlreadyExists) {
- doQuery(connection, conf.getProperty(QUERY_DELETE_WIKITTY_DATA), wikitty.getId());
+ WikittyJDBCUtil.doQuery(connection,
+ jdbcQuery.getProperty(QUERY_DELETE_WIKITTY_DATA),
+ wikitty.getId());
}
else {
- doQuery(connection, conf.getProperty(QUERY_INSERT_WIKITTY_ADMIN), wikitty.getId(), newVersion, "");
+ WikittyJDBCUtil.doQuery(connection,
+ jdbcQuery.getProperty(QUERY_INSERT_WIKITTY_ADMIN),
+ wikitty.getId(), newVersion, "");
}
@@ -245,8 +247,9 @@
for (int i = 0; i < list.size(); i++) {
Object value = list.get(i);
String colName = getColName(type.getType());
- String q = String.format(conf.getProperty(QUERY_INSERT_WIKITTY_DATA), colName);
- doQuery(connection, q,
+ String q = String.format(jdbcQuery.getProperty(
+ QUERY_INSERT_WIKITTY_DATA), colName);
+ WikittyJDBCUtil.doQuery(connection, q,
wikitty.getId(),
ext.getName() + "." + fieldName + "[" + i + "/" + list.size() + "]",
value);
@@ -262,14 +265,16 @@
Object value = wikitty.getFieldAsObject(ext.getName(), fieldName);
if (value != null) {
String colName = getColName(type.getType());
- String q = String.format(conf.getProperty(QUERY_INSERT_WIKITTY_DATA), colName);
- doQuery(connection, q,
+ String q = String.format(jdbcQuery.getProperty(
+ QUERY_INSERT_WIKITTY_DATA), colName);
+ WikittyJDBCUtil.doQuery(connection, q,
wikitty.getId(),
ext.getName() + "." + fieldName,
value);
} else {
if (type.isNotNull()) {
- throw new WikittyException(String.format("Field %s in extension %s can't be null",
+ throw new WikittyException(String.format(
+ "Field %s in extension %s can't be null",
fieldName, ext.getName()));
}
}
@@ -283,8 +288,9 @@
}
// update extensions in wikitty object
- String q = conf.getProperty(QUERY_UPDATE_WIKITTY_ADMIN);
- doQuery(connection, q, newVersion, extensionList, null, wikitty.getId());
+ String q = jdbcQuery.getProperty(QUERY_UPDATE_WIKITTY_ADMIN);
+ WikittyJDBCUtil.doQuery(connection, q, newVersion, extensionList,
+ null, wikitty.getId());
wikitty.setVersion(newVersion);
wikitty.clearDirty();
@@ -301,10 +307,10 @@
@Override
public boolean exists(WikittyTransaction transaction, String id) {
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
//select the data with the id "id" in the admin table
- String q = String.format(conf.getProperty(QUERY_SELECT_WHERE), COL_ID,
+ String q = String.format(jdbcQuery.getProperty(QUERY_SELECT_WHERE), COL_ID,
TABLE_WIKITTY_ADMIN, COL_ID);
PreparedStatement statement = connection.prepareStatement(q);
statement.setString(1, id);
@@ -321,10 +327,10 @@
@Override
public boolean isDeleted(WikittyTransaction transaction, String id) {
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
//select the data with the id "id" in the admin table
- String q = String.format(conf.getProperty(QUERY_SELECT_WHERE),
+ String q = String.format(jdbcQuery.getProperty(QUERY_SELECT_WHERE),
COL_DELETION_DATE, TABLE_WIKITTY_ADMIN, COL_ID);
PreparedStatement statement = connection.prepareStatement(q);
statement.setString(1, id);
@@ -347,10 +353,10 @@
@Override
public Wikitty restore(WikittyTransaction transaction,
String id, String... fqFieldName) throws WikittyException {
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
//select the data with the id "id" in the admin table
- String q = String.format(conf.getProperty(
+ String q = String.format(jdbcQuery.getProperty(
QUERY_SELECT_WHERE_NOTDELETED), "*", TABLE_WIKITTY_ADMIN, COL_ID);
PreparedStatement statement = connection.prepareStatement(q);
statement.setString(1, id);
@@ -360,7 +366,7 @@
String version = adminResultSet.getString(COL_VERSION);
String extensionList = adminResultSet.getString(COL_EXTENSION);
//select the data with the id "id" in the data table
- String qdata = String.format(conf.getProperty(QUERY_SELECT_WHERE),
+ String qdata = String.format(jdbcQuery.getProperty(QUERY_SELECT_WHERE),
"*", TABLE_WIKITTY_DATA, COL_ID);
PreparedStatement sta = connection.prepareStatement(qdata);
sta.setString(1, id);
@@ -383,7 +389,7 @@
@Override
public WikittyServiceEvent delete(WikittyTransaction transaction, Collection<String> ids) throws WikittyException {
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
WikittyServiceEvent result = new WikittyServiceEvent(this);
Date now = new Date();
@@ -399,7 +405,8 @@
"Wikitty with id '%s' is already deleted", id));
}
// addVersionUpdate delete date field
- doQuery(connection, conf.getProperty(QUERY_DELETE_WIKITTY_ADMIN), id);
+ WikittyJDBCUtil.doQuery(connection, jdbcQuery.getProperty(
+ QUERY_DELETE_WIKITTY_ADMIN), id);
result.addRemoveDate(id, now);
}
@@ -414,14 +421,14 @@
@Override
public void scanWikitties(WikittyTransaction transaction, Scanner scanner) {
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
Statement statement = connection.createStatement();
// get all wikitties
// fails with QUERY_SELECT
ResultSet resultSet = statement.executeQuery(
- String.format(conf.getProperty(QUERY_SELECT_NOTDELETED),
+ String.format(jdbcQuery.getProperty(QUERY_SELECT_NOTDELETED),
COL_ID, TABLE_WIKITTY_ADMIN));
while (resultSet.next()) {
@@ -558,9 +565,9 @@
@Override
public WikittyServiceEvent clear(WikittyTransaction transaction) {
- Connection connection = getConnection(conf);
+ Connection connection = WikittyJDBCUtil.getConnection(config);
try {
- doQuery(connection, conf.getProperty(QUERY_CLEAR_WIKITTY));
+ WikittyJDBCUtil.doQuery(connection, jdbcQuery.getProperty(QUERY_CLEAR_WIKITTY));
WikittyServiceEvent result = new WikittyServiceEvent(this);
result.addType(WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY);
return result;
Modified: trunk/wikitty-jdbc-impl/src/test/resources/META-INF/spring/wikitty-test.xml
===================================================================
--- trunk/wikitty-jdbc-impl/src/test/resources/META-INF/spring/wikitty-test.xml 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-jdbc-impl/src/test/resources/META-INF/spring/wikitty-test.xml 2010-10-28 13:54:03 UTC (rev 455)
@@ -31,8 +31,12 @@
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
- <bean name="wikittyService" class="org.nuiton.wikitty.jdbc.WikittyServiceJDBC"/>
+ <bean name="wikittyConfig" class="org.nuiton.wikitty.WikittyConfig"/>
+ <bean name="wikittyService" class="org.nuiton.wikitty.jdbc.WikittyServiceJDBC">
+ <constructor-arg ref="wikittyConfig"/>
+ </bean>
+
<context:annotation-config/>
<context:component-scan base-package="org.nuiton.wikitty"/>
Modified: trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java
===================================================================
--- trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -33,7 +33,6 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Properties;
import java.util.Set;
import org.apache.commons.logging.Log;
@@ -70,6 +69,8 @@
import com.arjuna.ats.arjuna.state.OutputObjectState;
import com.arjuna.ats.internal.arjuna.abstractrecords.LastResourceRecord;
import java.io.File;
+import org.nuiton.util.ApplicationConfig;
+import org.nuiton.wikitty.WikittyConfig;
/**
*
@@ -84,7 +85,7 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(WikittySearchEnginSolr.class);
- /** Solr data dir config option name. */
+ /** Solr data dir, this name are used directly by SolR, don't change it. */
static final protected String SOLR_DATA_DIR_CONFIG = "solr.data.dir";
/** id field in solr */
@@ -477,14 +478,15 @@
/** JTA resource */
protected SolrResource solrResource;
- /**
- * Init wikitty search engin on solr embedded server.
- *
- * @param extensionStorage extension storage
- */
- public WikittySearchEnginSolr(WikittyExtensionStorage extensionStorage) {
- this(extensionStorage, null);
- }
+ // FIXME REMOVE IT
+// /**
+// * Init wikitty search engin on solr embedded server.
+// *
+// * @param extensionStorage extension storage
+// */
+// public WikittySearchEnginSolr(WikittyExtensionStorage extensionStorage) {
+// this(extensionStorage, null);
+// }
/**
* Init wikitty search engin on solr embedded server.
@@ -492,11 +494,13 @@
* @param extensionStorage extension storage
* @param properties properties (can be null)
*/
- public WikittySearchEnginSolr(WikittyExtensionStorage extensionStorage, Properties properties) {
+ public WikittySearchEnginSolr(
+ ApplicationConfig config, WikittyExtensionStorage extensionStorage) {
// init system env solr.data.dir
- if (properties != null) {
- String solrDataDir = properties.getProperty(SOLR_DATA_DIR_CONFIG);
+ if (config != null) {
+ String solrDataDir = config.getOption(
+ WikittyConfig.Option.WIKITTY_SEARCHENGINE_SOLR_DIRECTORY_DATA.getKey());
// make sure that dir exists
if (solrDataDir != null) {
File file = new File(solrDataDir);
Modified: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/AbstractTestSolr.java
===================================================================
--- trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/AbstractTestSolr.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/AbstractTestSolr.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -25,12 +25,13 @@
package org.nuiton.wikitty.solr.test;
import org.junit.Before;
+import org.nuiton.wikitty.WikittyConfig;
import org.nuiton.wikitty.WikittyServiceEnhanced;
public abstract class AbstractTestSolr {
protected WikittyServiceEnhanced ws =
- new WikittyServiceEnhanced(new WikittyServiceSolr());
+ new WikittyServiceEnhanced(new WikittyServiceSolr(new WikittyConfig()));
@Before
public void deleteAll() throws Exception {
Modified: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/WikittyServiceSolr.java
===================================================================
--- trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/WikittyServiceSolr.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/WikittyServiceSolr.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -25,6 +25,7 @@
package org.nuiton.wikitty.solr.test;
+import org.nuiton.util.ApplicationConfig;
import org.nuiton.wikitty.WikittyServiceImpl;
import org.nuiton.wikitty.WikittyServiceInMemory;
import org.nuiton.wikitty.solr.WikittySearchEnginSolr;
@@ -39,9 +40,9 @@
*/
public class WikittyServiceSolr extends WikittyServiceImpl {
- public WikittyServiceSolr() {
+ public WikittyServiceSolr(ApplicationConfig config) {
extensionStorage = new WikittyServiceInMemory.WikittyExtensionStorageInMemory();
wikittyStorage = new WikittyServiceInMemory.WikittyStorageInMemory();
- searchEngin = new WikittySearchEnginSolr(extensionStorage);
+ searchEngin = new WikittySearchEnginSolr(config, extensionStorage);
}
}
Modified: trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/LoginController.java
===================================================================
--- trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/LoginController.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/LoginController.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -38,6 +38,7 @@
import org.apache.commons.lang.UnhandledException;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.ArgumentsParserException;
+import org.nuiton.wikitty.WikittyConfig;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.WikittyServiceCached;
@@ -245,8 +246,9 @@
protected WikittyProxy createLocalProxy(Properties properties, String login, String password) {
WikittyProxy proxy = new WikittyProxy();
try {
- WikittyService ws = new WikittyServiceJDBC(properties);
- ws = new WikittyServiceCached(ws);
+ WikittyConfig config = new WikittyConfig(properties);
+ WikittyService ws = new WikittyServiceJDBC(config);
+ ws = new WikittyServiceCached(config, ws);
proxy.setWikittyService(ws);
} catch (Exception eee) {
return null;
Modified: trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyZkService.java
===================================================================
--- trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyZkService.java 2010-10-27 09:06:35 UTC (rev 454)
+++ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyZkService.java 2010-10-28 13:54:03 UTC (rev 455)
@@ -34,7 +34,7 @@
public WikittyZkService() throws IOException {
WikittyZkConfig config = WikittyZkConfig.getInstance();
- instance = new WikittyServiceJDBC(config.getFlatOptions());
+ instance = new WikittyServiceJDBC(config);
}
public WikittyService getWikittyService() {
1
0
Author: bpoussin
Date: 2010-10-27 11:06:35 +0200 (Wed, 27 Oct 2010)
New Revision: 454
Url: http://nuiton.org/repositories/revision/wikitty/454
Log:
add some concept documentation
Modified:
trunk/src/site/rst/index.rst
Modified: trunk/src/site/rst/index.rst
===================================================================
--- trunk/src/site/rst/index.rst 2010-10-27 09:05:10 UTC (rev 453)
+++ trunk/src/site/rst/index.rst 2010-10-27 09:06:35 UTC (rev 454)
@@ -26,3 +26,91 @@
=======
Wikitty est un système de stockage et de recherche de type clé/valeur.
+
+Concept métier
+==============
+
+Un objet java ou une table relationnelle sont des choses figées au moment de
+l'écriture du code ou la création de la base de données. Pour les faire évoluer
+par la suite, il faut donc retourner dans le code, prévoir la migration,
+etc.
+
+Il est aussi difficile de maintenir un code cohérent lorsque l'on veut
+développer la même application pour des besoins semblable mais qui ont
+chacun de petites spécificités qui rend le code difficile à maintenir sur le
+long terme, entre le code commun et le code spécifique.
+
+Wikitty essaie de répondre à ces différentes problèmatiques en apportant une
+solution technique simple à mettre en oeuvre et à utiliser.
+
+Un objet n'a pas de champs prédéfini, mais seulement un identifiant unique.
+Pour connaître les champs disponibles sur un objet, il faut regarder les
+extensions qui lui ont été ajoutées. Une extension est la définition d'un
+ensemble de champs. Par exemple nous pouvons définir l'extension Personne et
+l'extension Employer et les utiliser sur le même objet. L'objet aura donc
+tous les champs Personne et tous les champs Employer il portera donc les
+deux notions en même temps. Si pour le projet est utilisé par une société
+qui à besoin de champs complémentaire à Employer, il n'y a pas besoin de
+modifier les extensions existantes ou modifier le schéma de la base. Il faut
+simplement créer une extension spécifique que l'on ajoutera à Employer et
+que l'on pourra utilisé pour la visualisation de l'Employer. Si le projet
+principale évolue, cela n'a aucun impact sur l'extension spécifique de cette
+société. Il n'y a donc aucun effort à faire pour maintenir des extensions
+spécifiques. Les développeurs du coeur de l'application n'ont pas besoin de
+se soucier de chose spécifique qui aurait pu être développer. De la même
+façon, il n'y a pas de surcoût de maintenance pour les personnes ayant fait
+des extensions spécifiques, ces extensions sont réutilisables de version en
+version sans modification ou maintenance.
+
+Le coeur de Wikitty apporte les services de base:
+
+- génération de Bean métier pour une utilisation simple par le développeur
+- une classe WikittyProxy qui masque les objets Wikitty et manipule les Bean
+ métier généré
+- Création, sauvegarde, restoration des Entités
+- Recherche des entités (fulltext, facette, ...)
+- notion d'arbre
+
+Les services additionnels existants:
+
+- notion de label (pour étiqueter des objets)
+- sécurité: authentification et autorisation
+- cache
+- notification (synchronisation de deux serveurs, notification en
+ client/serveur, listener sur les modifications)
+- import/export
+
+Concept technique
+=================
+
+Le concept est d'avoir un coeur le plus simple possible avec quelques methodes
+(une vingtaine).
+- lecture
+- ecriture
+- recherche
+- login/logout
+- check de droit (read, write, delete)
+
+Les nouveaux services (cache, securite, notification, ...) s'intercale en
+couche au dessus du coeur pour founir les services.
+
+Le coeur delegue le travail à trois services qui peuvent être implanté avec
+des techologies différentes:
+- stockage des extensions (memoire, jdbc, hbase, jpa, ...)
+- stockage des données (memoire, jdbc, hbase, jpa, ...)
+- indexation et recherhce (memoire, SolR, ...)
+
+Il est donc possible d'ajouter de nouveau service de haut niveau, ou
+d'ajouter de nouvelle façon de stocker l'information.
+
+La partie cliente des applications ne travail qu'avec le WikittyProxy qui
+masque la notion d'objet Wikitty pour retourner des beans metiers facilement
+manipulable par le développeur.
+
+Service haut niveau
+===================
+
+Un service de haut niveau peut contenir:
+- des extensions spécifiques
+- une couche de service specifiques
+- une classe Helper
1
0
Author: bpoussin
Date: 2010-10-27 11:05:10 +0200 (Wed, 27 Oct 2010)
New Revision: 453
Url: http://nuiton.org/repositories/revision/wikitty/453
Log:
use properties file to put object version
Added:
trunk/wikitty-api/src/main/xmi/wikitty.properties
Modified:
trunk/wikitty-api/src/main/xmi/wikitty.zargo
Added: trunk/wikitty-api/src/main/xmi/wikitty.properties
===================================================================
--- trunk/wikitty-api/src/main/xmi/wikitty.properties (rev 0)
+++ trunk/wikitty-api/src/main/xmi/wikitty.properties 2010-10-27 09:05:10 UTC (rev 453)
@@ -0,0 +1,7 @@
+org.nuiton.wikitty.WikittyAuthorisation.class.tagvalue.version=1.0
+org.nuiton.wikitty.WikittyGroup.class.tagvalue.version=1.0
+org.nuiton.wikitty.WikittyLabel.class.tagvalue.version=1.0
+org.nuiton.wikitty.WikittyToken.class.tagvalue.version=1.0
+org.nuiton.wikitty.WikittyTreeNode.class.tagvalue.version=2.0
+org.nuiton.wikitty.WikittyUser.class.tagvalue.version=1.0
+org.nuiton.wikitty.WikittyI18n.class.tagvalue.version=1.0
Modified: trunk/wikitty-api/src/main/xmi/wikitty.zargo
===================================================================
(Binary files differ)
1
0
Author: bpoussin
Date: 2010-10-27 11:04:19 +0200 (Wed, 27 Oct 2010)
New Revision: 452
Url: http://nuiton.org/repositories/revision/wikitty/452
Log:
Each WikittyService modification method must return WikittyServiceEvent
http://www.nuiton.org/issues/show/944
Simplify WikittyService Interface to simplify maintenance and additional service layer
http://www.nuiton.org/issues/show/994
Added:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceEnhanced.java
Removed:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/UpdateResponse.java
Modified:
trunk/pom.xml
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/PagedResult.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCopyOnWrite.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyExtensionStorage.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittySearchEngin.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceDelegator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceEvent.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceImpl.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyStorage.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportCSV.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/PerformanceBenchMark.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/importexport/ImportExportCSVTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/AbstractWikittyServiceTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java
trunk/wikitty-hessian-client/src/main/java/org/wikitty/hessian/WikittyHessianFactory.java
trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian/WikittyServiceHessianDelegator.java
trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java
trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java
trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java
trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/AbstractTestSolr.java
trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/TreeTest.java
trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/Model.java
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/pom.xml 2010-10-27 09:04:19 UTC (rev 452)
@@ -140,7 +140,7 @@
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-utils</artifactId>
- <version>1.5</version>
+ <version>1.6-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
@@ -503,7 +503,6 @@
</plugin>
</plugins>
</pluginManagement>
-
</build>
<profiles>
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/PagedResult.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/PagedResult.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/PagedResult.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -118,7 +118,7 @@
// Si ce n'est pas le cas, ca veut dire que le developpeur utilisant
// ce PagedResult ne sait pas ce qu'il fait :)
List<String> ids = (List<String>) results;
- castedResult = ws.restore(securityToken, ids);
+ castedResult = ws.restore(securityToken, null, ids);
} else {
throw new ClassCastException("PagedResult don't contains" +
" wikitty String id but " + results.get(0).getClass());
Deleted: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/UpdateResponse.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/UpdateResponse.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/UpdateResponse.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -1,91 +0,0 @@
-/*
- * #%L
- * Wikitty :: api
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2010 CodeLutin, Benjamin Poussin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-package org.nuiton.wikitty;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-public class UpdateResponse implements Serializable {
-
- /** serialVersionUID. */
- private static final long serialVersionUID = -5908785223965002731L;
-
- protected Map<String, String> idVersionMap = new HashMap<String, String>();
- protected Map<String, Date> idDeletionDateMap = new HashMap<String, Date>();
-
- public UpdateResponse() {
- super();
- idVersionMap = new HashMap<String, String>();
- }
-
- /**
- * Merge all update passed in argument in local update list
- * @param update
- */
- public void add(UpdateResponse update) {
- idVersionMap.putAll(update.idVersionMap);
- idDeletionDateMap.putAll(update.idDeletionDateMap);
- }
-
- public void addVersionUpdate( String id, String version ) {
- idVersionMap.put(id, version);
- }
-
- public void addDeletionDateUpdate(String id, Date date) {
- idDeletionDateMap.put(id, date);
- }
-// @Deprecated
-// public void update(BusinessEntity e) {
-// update((BusinessEntityWikitty) e);
-// }
-
-// @Deprecated
-// public void update(BusinessEntityWikitty e) {
-// update(e.getWikitty());
-// }
-
- /**
- * Update data directly in object passed in argument.
- * Actualy only version and deletion date are updated.
- * And internaly wikitty object is marked clean (not dirty)
- * @param e
- */
- public void update(Wikitty e) {
- // update version
- String id = e.getId();
- String version = idVersionMap.get(id);
- if (version != null) {
- e.setVersion(version);
- }
- Date date = idDeletionDateMap.get(id);
- if (date != null) {
- e.setDeleteDate(date);
- }
- e.clearDirty();
- }
-
-}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -44,6 +44,13 @@
void removePropertyChangeListener(String propertyName,
PropertyChangeListener listener);
+ /**
+ * Replace all field of current wikitty with field found in w.
+ * This two wikitty must have same id
+ * @param w wikitty where we take information
+ */
+ void replace(Wikitty w);
+
String getId();
boolean isDeleted();
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -164,21 +164,8 @@
*/
@Override
public void putWikitty(WikittyServiceEvent event) {
-
- Collection<String> ids = event.getIds();
- Map<String, String> idsVersions = event.getIdVersions();
-
- for (String id : ids) {
- // put on server, remove it from local cache
- Wikitty currentWikitty = getWikitty(id);
- if (currentWikitty != null) {
- String version = idsVersions.get(id);
- if (WikittyUtil.versionGreaterThan(version, currentWikitty.getVersion())) {
- removeWikitty(id);
- }
- }
- }
-
+ Collection<Wikitty> wikitties = event.getWikitties().values();
+ putAllWikitty(wikitties);
}
/*
@@ -186,7 +173,7 @@
*/
@Override
public void removeWikitty(WikittyServiceEvent event) {
- for (String id : event.getIds()) {
+ for (String id : event.getRemoveDate().keySet()) {
removeWikitty(id);
}
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCopyOnWrite.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCopyOnWrite.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCopyOnWrite.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -61,7 +61,26 @@
protected WikittyCopyOnWrite(Wikitty target) {
this.target = target;
}
-
+
+ @Override
+ public void replace(Wikitty w) {
+ // test make a the copy once
+ if (targetIsACopy) {
+ target.replace(w);
+ } else {
+ try {
+ target = w.clone();
+ if (log.isTraceEnabled()) {
+ log.trace(this + " now has for target " + target);
+ }
+ } catch (CloneNotSupportedException eee) {
+ throw new WikittyException(String.format(
+ "unable to clone wikitty %s", target), eee);
+ }
+ targetIsACopy = true;
+ }
+ }
+
/** replace {@link #target} with a clone
*
* this method must be called to prevent any modification on target
@@ -74,8 +93,9 @@
if (log.isTraceEnabled()) {
log.trace(this + " now has for target " + target);
}
- } catch (CloneNotSupportedException e) {
- log.error("unable to clone wikitty " + target, e);
+ } catch (CloneNotSupportedException eee) {
+ throw new WikittyException(String.format(
+ "unable to clone wikitty %s", target), eee);
}
targetIsACopy = true;
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyExtensionStorage.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyExtensionStorage.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyExtensionStorage.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -45,7 +45,8 @@
* @param extensions the extensions to store
* @return information usefull for client side update data
*/
- UpdateResponse store(WikittyTransaction transaction, Collection<WikittyExtension> extensions);
+ WikittyServiceEvent store(WikittyTransaction transaction,
+ Collection<WikittyExtension> extensions);
/**
* Return true if id exists in storage.
@@ -101,6 +102,6 @@
*
* @param transaction transaction
*/
- public void clear(WikittyTransaction transaction);
+ public WikittyServiceEvent clear(WikittyTransaction transaction);
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -40,6 +40,10 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.commons.lang.ObjectUtils;
+import org.nuiton.util.ObjectUtil;
/**
* Wikitty implementation.
@@ -104,6 +108,57 @@
}
/**
+ * Replace all field of current wikitty with field found in w.
+ * This two wikitty must have same id.
+ *
+ * This method is used to clone Wikitty too
+ *
+ * @param w wikitty where we take information
+ */
+ @Override
+ public void replace(Wikitty w) {
+ // il faut que ce soit le meme objet mais pas la meme instance
+ // car ca ne sert a rien de copier un objet sur lui meme
+ if (this == w) {
+ return;
+ }
+ if (this.getId().equals(w.getId())) {
+ this.extensions.clear();
+ this.fieldValue.clear();
+ for (WikittyExtension ext : w.getExtensions()) {
+ String extName = ext.getName();
+ this.extensions.put(extName, ext);
+ for(String fieldName : ext.getFieldNames()) {
+ Object value = w.getFieldAsObject(extName, fieldName);
+ if (value != null) {
+ // seul les collections sont a cloner, sinon ce ne sont
+ // que des types primitifs immutable
+ if (value instanceof Collection && value instanceof Cloneable) {
+ try {
+ value = ObjectUtil.clone((Cloneable) value);
+ } catch (CloneNotSupportedException eee) {
+ throw new WikittyException(String.format(
+ "Can't copy field %s.%s",
+ ext.getName(), fieldName), eee);
+ }
+ }
+ this.setField(extName, fieldName, value);
+ }
+ }
+ }
+
+ // we must change version after field value copy, because
+ // copy increment version because it use setField method
+ this.version = w.getVersion();
+ this.deleteDate = w.getDeleteDate();
+
+ clearDirty();
+ } else {
+ throw new IllegalArgumentException("Wikitty in argument don't have same id");
+ }
+ }
+
+ /**
* Always call this method because field is transient.
*
* @return
@@ -260,7 +315,7 @@
@Override
public void addExtension(List<WikittyExtension> exts) {
for (WikittyExtension ext : exts) {
- extensions.put(ext.name, ext);
+ addExtension(ext);
}
}
@@ -571,7 +626,7 @@
return null;
} catch (Exception eee) {
throw new WikittyException(String.format(
- "Can't add value to field '%s'",
+ "Can't get value to field '%s'",
ext + "." + fieldName), eee);
}
}
@@ -614,7 +669,7 @@
return result;
} catch (Exception eee) {
throw new WikittyException(String.format(
- "Can't add value to field '%s'",
+ "Can't get value to field '%s'",
ext + "." + fieldName), eee);
}
}
@@ -849,16 +904,16 @@
return str;
}
+ /**
+ * Clone is deep for extension and values
+ * @return
+ * @throws CloneNotSupportedException
+ */
@Override
public WikittyImpl clone() throws CloneNotSupportedException {
- WikittyImpl clone = (WikittyImpl) super.clone();
- // deep copy of field and values
- clone.fieldValue = new HashMap<String, Object>();
- for (Map.Entry<String, Object> aFieldValue : fieldValue.entrySet()) {
- clone.fieldValue.put(aFieldValue.getKey(), aFieldValue.getValue());
- }
- clone.clearDirty();
- return clone;
+ WikittyImpl result = new WikittyImpl(this.id);
+ result.replace(this);
+ return result;
}
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -54,7 +54,7 @@
public class WikittyProxy {
/** Delegated wikitty service. */
- protected WikittyService wikittyService;
+ protected WikittyServiceEnhanced wikittyService;
/**
* Security token.
@@ -77,7 +77,7 @@
*/
public WikittyProxy(WikittyService wikittyService) {
this();
- this.wikittyService = wikittyService;
+ setWikittyService(wikittyService);
}
public String login(String login, String password) {
@@ -99,11 +99,11 @@
}
public WikittyService getWikittyService() {
- return wikittyService;
+ return wikittyService.getDelegate();
}
public void setWikittyService(WikittyService wikittyService) {
- this.wikittyService = wikittyService;
+ this.wikittyService = new WikittyServiceEnhanced(wikittyService);
}
/**
@@ -122,7 +122,8 @@
public <E extends BusinessEntity> E store(E e) {
Wikitty w = ((BusinessEntityWikitty)e).getWikitty();
- UpdateResponse resp = wikittyService.store(securityToken, w);
+ WikittyServiceEvent resp = wikittyService.store(securityToken, w);
+ // update object
resp.update(w);
return e;
}
@@ -143,7 +144,7 @@
}
// call the service with Wikitty
- UpdateResponse resp = wikittyService.store(securityToken, wikitties);
+ WikittyServiceEvent resp = wikittyService.store(securityToken, wikitties);
// update object
for (Wikitty w : wikitties) {
@@ -417,8 +418,8 @@
* @param treeNodeId tree node id to delete
* @return {@true} if at least one node has been deleted
*/
- public List<String> deleteTree(String treeNodeId) {
- List<String> result = wikittyService.deleteTree(securityToken, treeNodeId);
+ public WikittyServiceEvent deleteTree(String treeNodeId) {
+ WikittyServiceEvent result = wikittyService.deleteTree(securityToken,treeNodeId);
return result;
}
@@ -555,8 +556,9 @@
* @param ext extension to be persisted
* @return update response
*/
- public UpdateResponse storeExtension(WikittyExtension ext) {
- UpdateResponse response = wikittyService.storeExtension(securityToken, ext);
+ public WikittyServiceEvent storeExtension(WikittyExtension ext) {
+ WikittyServiceEvent response =
+ wikittyService.storeExtension(securityToken, ext);
return response;
}
@@ -566,8 +568,9 @@
* @param exts list of wikitty extension to be persisted
* @return update response
*/
- public UpdateResponse storeExtension(Collection<WikittyExtension> exts) {
- UpdateResponse response = wikittyService.storeExtension(securityToken, exts);
+ public WikittyServiceEvent storeExtension(Collection<WikittyExtension> exts) {
+ WikittyServiceEvent response =
+ wikittyService.storeExtension(securityToken, exts);
return response;
}
@@ -619,8 +622,9 @@
* Use with caution : It will delete ALL indexes from search engine !
* This operation should be disabled in production environment.
*/
- public void clear() {
- wikittyService.clear(securityToken);
+ public WikittyServiceEvent clear() {
+ WikittyServiceEvent result = wikittyService.clear(securityToken);
+ return result;
}
/**
@@ -629,9 +633,8 @@
*
* @return update response
*/
- public UpdateResponse syncEngin() {
- UpdateResponse result = wikittyService.syncEngin(securityToken);
- return result;
+ public void syncEngin() {
+ wikittyService.syncEngin(securityToken);
}
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittySearchEngin.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittySearchEngin.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittySearchEngin.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -49,7 +49,7 @@
* Store wikitty in storage
* @return information usefull for client side update data
*/
- public UpdateResponse store(WikittyTransaction transaction,
+ public void store(WikittyTransaction transaction,
Collection<Wikitty> wikitties);
/**
@@ -59,7 +59,7 @@
* @return <code>UpdateResponse</code>>
* @throws WikittyException
*/
- public UpdateResponse delete(WikittyTransaction transaction,
+ public void delete(WikittyTransaction transaction,
Collection<String> idList) throws WikittyException;
/**
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -122,12 +122,16 @@
*
* @param securityToken security token
*/
- public void clear(String securityToken);
+ public WikittyServiceEvent clear(String securityToken);
/**
* Verifie si l'utilisateur lie au securityToken a le droit d'ecrire
- * le Wikitty passe en argument
+ * le Wikitty passe en argument.
*
+ * On ne peut pas passer seulement l'id du wikitty en parametre car de
+ * nouvelles extensions ont peut lui etre ajouter depuis la derniere
+ * sauvegarde
+ *
* @param securityToken le token de securite qui permet de retrouver
* l'utilisateur et ainsi verifier les droits
* @param wikitty le wikitty a sauver
@@ -163,48 +167,18 @@
public boolean canRead(String securityToken, String wikittyId);
/**
- * Manage Update and creation.
- *
- * @param securityToken security token
- * @param wikitty contains an id all the time.
- * @return update response containing version and id of stored wikitty
- */
- public UpdateResponse store(String securityToken, Wikitty wikitty);
-
- /**
- * Manage Update and creation.
- *
- * @param securityToken security token
- * @param wikitties list of wikitty to be persisted
- * @return update response containing version and id of stored wikitty
- */
- public UpdateResponse store(String securityToken, Collection<Wikitty> wikitties);
-
- /**
- * Manage Update and creation.
- *
- * @param securityToken security token
- * @param wikitties list of wikitty to be persisted
- * @param force boolean force non version version increment on saved wikitty
- * or force version on wikitty creation (version 0.0)
- * @return update response
- */
- public UpdateResponse store(String securityToken, Collection<Wikitty> wikitties,
- boolean force);
-
-
- /**
* Manage Update and creation, action is done in transaction passed in
* argument.
*
* @param securityToken security token
- * @param transaction transaction used to do the action (must not be null)
+ * @param transaction transaction used to do the action (can be null, if we
+ * want new transaction)
* @param wikitties list of wikitty to be persisted
* @param force boolean force non version version increment on saved wikitty
* or force version on wikitty creation (version 0.0)
* @return update response
*/
- public UpdateResponse store(String securityToken, WikittyTransaction transaction,
+ public WikittyServiceEvent store(String securityToken, WikittyTransaction transaction,
Collection<Wikitty> wikitties, boolean force);
/**
@@ -226,50 +200,25 @@
public List<String> getAllExtensionsRequires(String securityToken, String extensionName);
/**
- * Manage Update and creation.
- *
- * @param securityToken security token
- * @param ext extension to be persisted
- * @return update response
- */
- public UpdateResponse storeExtension(String securityToken, WikittyExtension ext);
-
- /**
- * Manage Update and creation.
- *
- * @param securityToken security token
- * @param exts list of wikitty extension to be persisted
- * @return update response
- */
- public UpdateResponse storeExtension(String securityToken,
- Collection<WikittyExtension> exts);
-
- /**
* Manage Update and creation, action is done in transaction passed in
* argument
*
* @param securityToken security token
- * @param transaction transaction used to do the action (must not be null)
+ * @param transaction transaction used to do the action (can be null if we
+ * want new transaction)
* @param exts list of wikitty extension to be persisted
* @return update response
*/
- public UpdateResponse storeExtension(String securityToken,
+ public WikittyServiceEvent storeExtension(String securityToken,
WikittyTransaction transaction, Collection<WikittyExtension> exts);
/**
* Load extension from id. Id is 'name[version]'.
- *
- * @param securityToken security token
- * @param extensionId extension id to restore
- * @return the corresponding object, exception if no such object found.
- */
- public WikittyExtension restoreExtension(String securityToken, String extensionId);
-
- /**
* Action is done in transaction passed in argument.
*
* @param securityToken security token
- * @param transaction transaction used to do the action (must not be null)
+ * @param transaction transaction used to do the action (can be null if we
+ * want new transaction)
* @param extensionId
* @return the corresponding object, exception if no such object found.
*/
@@ -280,84 +229,41 @@
* Search extension with name in last version.
*
* @param securityToken security token
+ * @param transaction transaction used to do the action (can be null if we
+ * want new transaction)
* @param name extension name
* @return the corresponding object, exception if no such object found.
*/
public WikittyExtension restoreExtensionLastVersion(
- String securityToken, String name);
-
- /**
- * Search extension with name in last version.
- *
- * @param securityToken security token
- * @param transaction transaction used to do the action (must not be null)
- * @param name extension name
- * @return the corresponding object, exception if no such object found.
- */
- public WikittyExtension restoreExtensionLastVersion(
String securityToken, WikittyTransaction transaction, String name);
/**
- *
- * @param securityToken security token
- * @param id object id to restore
- * @return the corresponding object, or null if object doesn't exist, is
- * deleted or you don't have authorisation (you can check authorisation
- * before call restore with {@link #canRead(java.lang.String, java.lang.String)}
- */
- public Wikitty restore(String securityToken, String id);
-
- /**
- *
- * @param securityToken security token
- * @param id list of wikitty ids to restore
- * @return list of corresponding wikitty, if one id is not valid (no object
- * or deleted or no authorisation) this id is skip and result list have less
- * elements than collection argument
- */
- public List<Wikitty> restore(String securityToken, List<String> id);
-
- /**
* Restore wikitty using opened transaction.
*
* @param securityToken security token
- * @param transaction transaction to use
+ * @param transaction transaction to use (can be null if we
+ * want new transaction)
* @param id list of wikitty ids to restore
* @return list of corresponding wikitty, if one id is not valid (no object
- * or deleted or no authorisation) this id is skip and result list have less
- * elements than collection argument
+ * or deleted or no authorisation) this id return null and result list can
+ * have null elements
*/
- public List<Wikitty> restore(String securityToken, WikittyTransaction transaction, List<String> id);
+ public List<Wikitty> restore(String securityToken,
+ WikittyTransaction transaction, List<String> id);
/**
- * Delete object if id exists.
- *
- * @param securityToken security token
- * @param id object's id to remove
- */
- public void delete(String securityToken, String id);
-
- /**
* Delete all object if id exists.
*
* @param securityToken security token
* @param ids object's ids to remove
*/
- public void delete(String securityToken, Collection<String> ids);
+ public WikittyServiceEvent delete(String securityToken, Collection<String> ids);
/**
- *
- * @param securityToken security token
- * @param criteria
- * @return
- */
- public PagedResult<String> findAllByCriteria(
- String securityToken, Criteria criteria);
-
- /**
*
* @param securityToken security token
- * @param transaction
+ * @param transaction (can be null if we
+ * want new transaction)
* @param criteria
* @return
*/
@@ -365,27 +271,18 @@
WikittyTransaction transaction, Criteria criteria);
/**
- * Fist lonely (or first one) wikitty object that match criteria, if no
+ * First lonely (or first one) wikitty object that match criteria, if no
* wikitty found or first retrived is not authorized for the user return
* null
*
* @param securityToken security token
* @param criteria
+ * @param transaction (can be null if we
+ * want new transaction)
* @return wikitty object or null
*/
- public Wikitty findByCriteria(String securityToken, Criteria criteria);
-
- /**
- * Fist lonely (or first one) wikitty object that match criteria, if no
- * wikitty found or first retrived is not authorized for the user return
- * null
- *
- * @param securityToken security token
- * @param criteria
- * @param transaction
- * @return wikitty object or null
- */
- public Wikitty findByCriteria(String securityToken, WikittyTransaction transaction, Criteria criteria);
+ public Wikitty findByCriteria(String securityToken,
+ WikittyTransaction transaction, Criteria criteria);
/*
* Classification
@@ -409,7 +306,7 @@
* @param treeNodeId tree node id to delete
* @return delete wikitty ids
*/
- public List<String> deleteTree(String securityToken, String treeNodeId);
+ public WikittyServiceEvent deleteTree(String securityToken, String treeNodeId);
/**
* Retrieve wikitty node with count. Wikitty reference by wikittyId MUST
@@ -456,8 +353,7 @@
* reindex all wikitties.
*
* @param securityToken security token
- * @return update response
*/
- public UpdateResponse syncEngin(String securityToken);
+ public void syncEngin(String securityToken);
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -179,47 +179,25 @@
}
@Override
- public void clear(String securityToken) {
- ws.clear(securityToken);
+ public WikittyServiceEvent clear(String securityToken) {
+ WikittyServiceEvent result = ws.clear(securityToken);
cache.clearWikitty();
+ return result;
}
/**
- * delete object in cache
- * @param id
- */
- @Override
- public void delete(String securityToken, String id) {
- ws.delete(securityToken, id);
- cache.removeWikitty(id);
- }
-
- /**
* delete objets in cache
* @param ids
*/
@Override
- public void delete(String securityToken, Collection<String> ids) {
- ws.delete(securityToken, ids);
+ public WikittyServiceEvent delete(String securityToken, Collection<String> ids) {
+ WikittyServiceEvent result = ws.delete(securityToken, ids);
cache.removeAllWikitty(ids);
+ return result;
}
/**
* just wrap service method
- *
- * @param criteria
- * @return
- */
- @Override
- public PagedResult<String> findAllByCriteria(
- String securityToken, Criteria criteria) {
- // if we want to add cache for this method, we must clear cache when
- // addLabel, store, storeExtension are called
- return ws.findAllByCriteria(securityToken, criteria);
- }
-
- /**
- * just wrap service method
*
* @param criteria
* @return
@@ -236,19 +214,6 @@
/**
* just wrap service method
*
- * @param criteria
- * @return
- */
- @Override
- public Wikitty findByCriteria(String securityToken, Criteria criteria) {
- // if we want to add cache for this method, we must clear cache when
- // addLabel, store, storeExtension are called
- return ws.findByCriteria(securityToken, criteria);
- }
-
- /**
- * just wrap service method
- *
* @param securityToken
* @param criteria
* @param transaction
@@ -288,79 +253,6 @@
}
/**
- * just wrap service method
- *
- * @param id
- * @return
- */
- @Override
- public Wikitty restore(String securityToken, String id) {
- Wikitty result = cache.getWikitty(id);
- if (result == null) {
- if (log.isTraceEnabled()) {
- log.trace("Wikitty " + id + " not found in cache");
- }
- result = ws.restore(securityToken, id);
-
- // Dont store in cache if restored wikitty is null
- if (result != null) {
- cache.putWikitty(result);
- }
- } else {
- if (log.isTraceEnabled()) {
- log.trace("Use cached wikitty " + id);
- }
- }
-
- // wrap wikitty to prevent conflict in cache modification
- result = wrapWikitty(result);
- return result;
- }
-
- /**
- * Overriden to put all restored object from server in cache.
- *
- * @param ids id to restore
- * @return restored wikitties
- */
- @Override
- public List<Wikitty> restore(String securityToken, List<String> ids) {
- ArrayList<String> notInCache = new ArrayList<String>();
- // linked to maintains the order
- LinkedHashMap<String, Wikitty> fromCache =
- new LinkedHashMap<String, Wikitty>();
- for (String id : ids) {
- Wikitty w = cache.getWikitty(id);
- fromCache.put(id, w); // put all to maintains order
- if (w == null) { // if not found on cache, ask the server
- notInCache.add(id);
- }
- }
-
- // retrieve missing object
- List<Wikitty> missingInCache = ws.restore(securityToken, notInCache);
-
- cache.putAllWikitty(missingInCache);
-
- for (Wikitty w : missingInCache) {
- if (w != null) {
- // add missing object
- fromCache.put(w.getId(), w);
- }
- }
-
- Collection<Wikitty> tmp = fromCache.values();
-
- // wrap the resulting wikitties to prevent cache conflicts
- ArrayList<Wikitty> result = new ArrayList<Wikitty>();
- for (Wikitty w : tmp) {
- result.add(wrapWikitty(w));
- }
-
- return result;
- }
-
- /**
* Overriden to put all restored object from server in cache
*
* @param securityToken security token
@@ -420,36 +312,11 @@
/**
* just wrap service method
*
- * @param id
- * @return
- */
- @Override
- public WikittyExtension restoreExtension(String securityToken, String id) {
- // TODO poussin 20100412: perhaps use cache for extension ?
- return ws.restoreExtension(securityToken, id);
- }
-
- /**
- * just wrap service method
- *
* @param name
* @return
*/
@Override
public WikittyExtension restoreExtensionLastVersion(
- String securityToken, String name) {
- // TODO poussin 20100412: perhaps use cache for extension ?
- return ws.restoreExtensionLastVersion(securityToken, name);
- }
-
- /**
- * just wrap service method
- *
- * @param name
- * @return
- */
- @Override
- public WikittyExtension restoreExtensionLastVersion(
String securityToken, WikittyTransaction transaction, String name) {
// TODO poussin 20100412: perhaps use cache for extension ?
// if use cache use transaction.getCache()
@@ -489,113 +356,36 @@
* @return
*/
@Override
- public List<String> deleteTree(String securityToken, String wikittyId) {
+ public WikittyServiceEvent deleteTree(String securityToken, String wikittyId) {
return ws.deleteTree(securityToken, wikittyId);
}
/**
- * Overriden to update wikitty and put it in cache
- * @param wikitty
- * @return
- */
- @Override
- public UpdateResponse store(String securityToken, Wikitty wikitty) {
- UpdateResponse result = ws.store(securityToken, wikitty);
-
- result.update(wikitty);
- cache.putWikitty(wikitty);
-
- return result;
- }
-
- /**
* Overriden to put wikitty in cache
*
* @param wikitties
- * @return
- */
- @Override
- public UpdateResponse store(String securityToken, Collection<Wikitty> wikitties) {
- UpdateResponse result = ws.store(securityToken, wikitties);
-
- for (Wikitty w : wikitties) {
- result.update(w);
- }
- cache.putAllWikitty(wikitties);
-
- return result;
- }
-
- /**
- * Overriden to put wikitty in cache
- *
- * @param wikitties
* @param force boolean force non version version increment on saved wikitty
* or force version on wikitty creation (version 0.0)
* @return
*/
@Override
- public UpdateResponse store(String securityToken,
+ public WikittyServiceEvent store(String securityToken, WikittyTransaction transaction,
Collection<Wikitty> wikitties, boolean force) {
- UpdateResponse result = ws.store(securityToken, wikitties, force);
-
- for (Wikitty w : wikitties) {
- result.update(w);
- }
- cache.putAllWikitty(wikitties);
-
- return result;
- }
-
- /**
- * Overriden to put wikitty in cache
- *
- * @param wikitties
- * @param force boolean force non version version increment on saved wikitty
- * or force version on wikitty creation (version 0.0)
- * @return
- */
- @Override
- public UpdateResponse store(String securityToken, WikittyTransaction transaction,
- Collection<Wikitty> wikitties, boolean force) {
- UpdateResponse result = ws.store(securityToken, transaction,
+ WikittyServiceEvent result = ws.store(securityToken, transaction,
wikitties, force);
- for (Wikitty w : wikitties) {
- result.update(w);
+ if (transaction != null) {
+ for (Wikitty w : wikitties) {
+ result.update(w);
+ }
+ transaction.getCache().putAllWikitty(wikitties);
}
- transaction.getCache().putAllWikitty(wikitties);
return result;
}
-
- /**
- * just wrap service method
- *
- * @param ext
- * @return
- */
@Override
- public UpdateResponse storeExtension(String securityToken, WikittyExtension ext) {
- // TODO poussin 20100412: perhaps use cache for extension ?
- return ws.storeExtension(securityToken, ext);
- }
-
- /**
- * just wrap service method
- *
- * @param exts
- * @return
- */
- @Override
- public UpdateResponse storeExtension(String securityToken, Collection<WikittyExtension> exts) {
- // TODO poussin 20100412: perhaps use cache for extension ?
- return ws.storeExtension(securityToken, exts);
- }
-
- @Override
- public UpdateResponse storeExtension(String securityToken,
+ public WikittyServiceEvent storeExtension(String securityToken,
WikittyTransaction transaction, Collection<WikittyExtension> exts) {
// si on implante le cache pour cette methode, utiliser transaction.getCache()
//throw new UnsupportedOperationException("Not supported yet.");
@@ -632,8 +422,8 @@
}
@Override
- public UpdateResponse syncEngin(String securityToken) {
- return ws.syncEngin(securityToken);
+ public void syncEngin(String securityToken) {
+ ws.syncEngin(securityToken);
}
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceDelegator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceDelegator.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceDelegator.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -28,7 +28,6 @@
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Set;
/**
* Wikitty service delegator.
@@ -44,6 +43,13 @@
/** Delegated wikitty service. */
protected WikittyService delegate;
+ public WikittyServiceDelegator() {
+ }
+
+ public WikittyServiceDelegator(WikittyService delegate) {
+ setDelegate(delegate);
+ }
+
/**
* Get delegated service.
*
@@ -85,29 +91,12 @@
}
@Override
- public void clear(String securityToken) {
- delegate.clear(securityToken);
+ public WikittyServiceEvent clear(String securityToken) {
+ return delegate.clear(securityToken);
}
@Override
- public UpdateResponse store(String securityToken, Wikitty wikitty) {
- return delegate.store(securityToken, wikitty);
- }
-
- @Override
- public UpdateResponse store(String securityToken,
- Collection<Wikitty> wikitties) {
- return delegate.store(securityToken, wikitties);
- }
-
- @Override
- public UpdateResponse store(String securityToken,
- Collection<Wikitty> wikitties, boolean force) {
- return delegate.store(securityToken, wikitties, force);
- }
-
- @Override
- public UpdateResponse store(String securityToken,
+ public WikittyServiceEvent store(String securityToken,
WikittyTransaction transaction, Collection<Wikitty> wikitties,
boolean force) {
return delegate.store(securityToken, transaction, wikitties, force);
@@ -125,29 +114,12 @@
}
@Override
- public UpdateResponse storeExtension(String securityToken,
- WikittyExtension ext) {
- return delegate.storeExtension(securityToken, ext);
- }
-
- @Override
- public UpdateResponse storeExtension(String securityToken,
- Collection<WikittyExtension> exts) {
- return delegate.storeExtension(securityToken, exts);
- }
-
- @Override
- public UpdateResponse storeExtension(String securityToken,
+ public WikittyServiceEvent storeExtension(String securityToken,
WikittyTransaction transaction, Collection<WikittyExtension> exts) {
return delegate.storeExtension(securityToken, transaction, exts);
}
@Override
- public WikittyExtension restoreExtension(String securityToken, String id) {
- return delegate.restoreExtension(securityToken, id);
- }
-
- @Override
public WikittyExtension restoreExtension(String securityToken,
WikittyTransaction transaction, String id) {
return delegate.restoreExtension(securityToken, transaction, id);
@@ -155,61 +127,31 @@
@Override
public WikittyExtension restoreExtensionLastVersion(String securityToken,
- String name) {
- return delegate.restoreExtensionLastVersion(securityToken, name);
- }
-
- @Override
- public WikittyExtension restoreExtensionLastVersion(String securityToken,
WikittyTransaction transaction, String name) {
return delegate.restoreExtensionLastVersion(securityToken, transaction,
name);
}
@Override
- public Wikitty restore(String securityToken, String id) {
- return delegate.restore(securityToken, id);
- }
-
- @Override
- public List<Wikitty> restore(String securityToken, List<String> id) {
- return delegate.restore(securityToken, id);
- }
-
- @Override
- public List<Wikitty> restore(String securityToken, WikittyTransaction transaction, List<String> id) {
+ public List<Wikitty> restore(String securityToken,
+ WikittyTransaction transaction, List<String> id) {
return delegate.restore(securityToken, transaction, id);
}
@Override
- public void delete(String securityToken, String id) {
- delegate.delete(securityToken, id);
+ public WikittyServiceEvent delete(String securityToken, Collection<String> ids) {
+ return delegate.delete(securityToken, ids);
}
@Override
- public void delete(String securityToken, Collection<String> ids) {
- delegate.delete(securityToken, ids);
- }
-
- @Override
public PagedResult<String> findAllByCriteria(String securityToken,
- Criteria criteria) {
- return delegate.findAllByCriteria(securityToken, criteria);
- }
-
- @Override
- public PagedResult<String> findAllByCriteria(String securityToken,
WikittyTransaction transaction, Criteria criteria) {
return delegate.findAllByCriteria(securityToken, transaction, criteria);
}
@Override
- public Wikitty findByCriteria(String securityToken, Criteria criteria) {
- return delegate.findByCriteria(securityToken, criteria);
- }
-
- @Override
- public Wikitty findByCriteria(String securityToken, WikittyTransaction transaction, Criteria criteria) {
+ public Wikitty findByCriteria(String securityToken,
+ WikittyTransaction transaction, Criteria criteria) {
return delegate.findByCriteria(securityToken, transaction, criteria);
}
@@ -219,7 +161,7 @@
}
@Override
- public List<String> deleteTree(String securityToken, String wikittyId) {
+ public WikittyServiceEvent deleteTree(String securityToken, String wikittyId) {
return delegate.deleteTree(securityToken, wikittyId);
}
@@ -242,8 +184,8 @@
}
@Override
- public UpdateResponse syncEngin(String securityToken) {
- return delegate.syncEngin(securityToken);
+ public void syncEngin(String securityToken) {
+ delegate.syncEngin(securityToken);
}
@Override
Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceEnhanced.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceEnhanced.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceEnhanced.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -0,0 +1,111 @@
+package org.nuiton.wikitty;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Same as delegator but with some helpfull method for developer. This new
+ * methods are methods with less arguments or simple argument and not collection
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class WikittyServiceEnhanced extends WikittyServiceDelegator {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(WikittyServiceEnhanced.class);
+
+ public WikittyServiceEnhanced(WikittyService service) {
+ super(service);
+ }
+
+ public WikittyServiceEvent store(String securityToken, Wikitty wikitty) {
+ return store(securityToken, null, Collections.singleton(wikitty), false);
+ }
+
+ public WikittyServiceEvent store(String securityToken,
+ Collection<Wikitty> wikitties) {
+ return store(securityToken, null, wikitties, false);
+ }
+
+ public WikittyServiceEvent store(String securityToken,
+ Collection<Wikitty> wikitties, boolean force) {
+ return store(securityToken, null, wikitties, force);
+ }
+
+ public WikittyServiceEvent storeExtension(String securityToken,
+ WikittyExtension ext) {
+ return storeExtension(securityToken, null, Collections.singleton(ext));
+ }
+
+ public WikittyServiceEvent storeExtension(String securityToken,
+ Collection<WikittyExtension> exts) {
+ return storeExtension(securityToken, null, exts);
+ }
+
+ public WikittyExtension restoreExtension(String securityToken, String id) {
+ return restoreExtension(securityToken, null, id);
+ }
+
+ public WikittyExtension restoreExtensionLastVersion(String securityToken,
+ String name) {
+ return restoreExtensionLastVersion(securityToken, null, name);
+ }
+
+ /**
+ *
+ * @param securityToken security token
+ * @param id object id to restore
+ * @return the corresponding object, or null if object doesn't exist, is
+ * deleted or you don't have authorisation (you can check authorisation
+ * before call restore with {@link #canRead(java.lang.String, java.lang.String)}
+ */
+ public Wikitty restore(String securityToken, String id) {
+ Wikitty result = restore(this, securityToken, id);
+ return result;
+ }
+
+ public List<Wikitty> restore(String securityToken, List<String> id) {
+ return restore(securityToken, null, id);
+ }
+
+ public WikittyServiceEvent delete(String securityToken, String id) {
+ return delete(securityToken, Collections.singleton(id));
+ }
+
+ public PagedResult<String> findAllByCriteria(String securityToken,
+ Criteria criteria) {
+ return findAllByCriteria(securityToken, null, criteria);
+ }
+
+ public Wikitty findByCriteria(String securityToken, Criteria criteria) {
+ return findByCriteria(securityToken, null, criteria);
+ }
+
+ /**
+ * Conveniant static method usefull in other WikittyService implementation
+ * where we don't wan't instanciate WikittyServiceEnhanced
+ *
+ * @param securityToken security token
+ * @param id object id to restore
+ * @return the corresponding object, or null if object doesn't exist, is
+ * deleted or you don't have authorisation (you can check authorisation
+ * before call restore with {@link #canRead(java.lang.String, java.lang.String)}
+ */
+ static public Wikitty restore(WikittyService ws, String securityToken, String id) {
+ Wikitty result = null;
+ List<Wikitty> resultList = ws.restore(securityToken, null,
+ Collections.singletonList(id));
+ if (resultList != null && resultList.size() > 0) {
+ result = resultList.get(0);
+ }
+ return result;
+ }
+
+}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceEvent.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceEvent.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceEvent.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -26,7 +26,13 @@
package org.nuiton.wikitty;
import com.thoughtworks.xstream.XStream;
+import java.util.Collection;
+import java.util.Date;
+import java.util.EnumSet;
import java.util.EventObject;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
@@ -36,9 +42,9 @@
* Contains :
* <ul>
* <li>Wikitty service as source
- * <li>ids : wikitty ids or extensions ids
- * <li>ids & version : only for put : version of added wikitties
- * <li>ids & extension : only for put : extension of added ids
+ * <li>wikitties : wikitty added if type contains PUT_WIKITTY
+ * <li>ids & remove date : if type contains REMOVE_WIKITTY
+ * <li>extensions : extension added if type contains PUT_EXTENSION
* </ul>
*
* @author chatellier
@@ -69,51 +75,39 @@
}
+ /** unique event id, each event must have eventId, and event is sequence
+ * without hole. (ex: 0,1,2,3,4,5,6,...) */
+ protected long eventId;
+
/** Remote event (received from server). */
protected boolean remote;
- /** event type */
- protected WikittyEventType type;
+ /** event type, one event can have multiple type
+ * (ex: PUT_WIKITTY + PUT_EXTENSION */
+ protected EnumSet<WikittyEventType> type;
/** heure de creation de l'event */
protected long time;
- /**
- * Id managed by event.
- *
- * Can be :
- * <ul>
- * <li>wikitty ids (uuid)
- * <li>extension ids (ex : toto[2.1])
- * </ul>
- */
- protected Set<String> ids;
-
- /**
- * Map between extensions set for each id.
- * Not used for extension event
- */
- protected Map<String, Set<String>> idExtensions;
-
- /**
- * Map between versions for each id.
- */
- protected Map<String, String> idVersions;
+ /** Use by PUT_WIKITTY, all wikitties added */
+ protected Map<String, Wikitty> wikitties;
- /**
- * Map between deletion date for each id, if event is REMOVE.
- */
- protected Map<String, String> idDeletionDate;
+ /** Use by REMOVE_WIKITTY. key: wikittyId, value: removed date */
+ protected Map<String, Date> removeDate;
+ /** Use by PUT_EXTENSION, all extensions added */
+ protected Map<String, WikittyExtension> extensions;
+
/**
* Constructor with source {@link WikittyService}.
*
* @param source wikitty service
+ * @param eventId unique event id
*/
- public WikittyServiceEvent(Object source, WikittyEventType type) {
+ public WikittyServiceEvent(Object source) {
super(source);
this.time = System.currentTimeMillis();
- this.type = type;
+ this.type = EnumSet.noneOf(WikittyEventType.class);
}
/**
@@ -133,12 +127,15 @@
this.source = source;
}
- public WikittyEventType getType() {
+ public EnumSet<WikittyEventType> getType() {
return type;
}
- public void setType(WikittyEventType type) {
- this.type = type;
+ /**
+ * @param type
+ */
+ public void addType(WikittyEventType type) {
+ this.type.add(type);
}
/**
@@ -159,66 +156,128 @@
this.remote = remote;
}
- /**
- * Get ids.
- *
- * @return ids or {@code null} if no ids is related to event
- */
- public Set<String> getIds() {
- return ids;
+ public long getEventId() {
+ return eventId;
}
/**
- * Set ids.
- *
- * @param ids ids to set
+ * This method must be call with right id, just before send message
+ * notification
+ * @param eventId
*/
- public void setIds(Set<String> ids) {
- this.ids = ids;
+ public void setEventId(long eventId) {
+ this.eventId = eventId;
}
- /**
- * Get id and extensions map.
- *
- * @return map with extension set for each id or {@code null} if no ids is related to event
- */
- public Map<String, Set<String>> getIdExtensions() {
- return idExtensions;
+ public Map<String, Wikitty> getWikitties() {
+ return wikitties;
}
- /**
- * Change id and extensions map.
- *
- * @param idExtensions id and extensions map
- */
- public void setIdExtensions(Map<String, Set<String>> idExtensions) {
- this.idExtensions = idExtensions;
+ public void addWikitty(Wikitty wikitty) {
+ if (wikitties == null) {
+ wikitties = new LinkedHashMap<String, Wikitty>();
+ addType(WikittyEventType.PUT_WIKITTY);
+ }
+ this.wikitties.put(wikitty.getId(), wikitty);
}
-
+
+ public Map<String, Date> getRemoveDate() {
+ return removeDate;
+ }
+
+ public void addRemoveDate(String wikittyId, Date date) {
+ if (removeDate == null) {
+ removeDate = new HashMap<String, Date>();
+ addType(WikittyEventType.REMOVE_WIKITTY);
+ }
+ removeDate.put(wikittyId, date);
+ }
+
+ public Map<String, WikittyExtension> getExtensions() {
+ return extensions;
+ }
+
+ public void addExtension(WikittyExtension extension) {
+ if (extensions == null) {
+ extensions = new LinkedHashMap<String, WikittyExtension>();
+ addType(WikittyEventType.PUT_EXTENSION);
+ }
+ extensions.put(extension.getId(), extension);
+ }
+
/**
- * Get id and version map.
- *
- * @return map with version for each id
+ * Merge this event with event passed in arguement. Merged datas are:
+ * <li> type
+ * <li> wikitties
+ * <li> extensions
+ * <li> removeDate
+ *
+ * @param e
*/
- public Map<String, String> getIdVersions() {
- return idVersions;
+ public void add(WikittyServiceEvent e) {
+ getType().addAll(e.getType());
+ if (e.getWikitties() != null) {
+ for (Map.Entry<String, Wikitty> i : e.getWikitties().entrySet()) {
+ addWikitty(i.getValue());
+ }
+ }
+ if (e.getExtensions() != null) {
+ for (Map.Entry<String, WikittyExtension> i : e.getExtensions().entrySet()) {
+ addExtension(i.getValue());
+ }
+ }
+ if (e.getRemoveDate() != null) {
+ for (Map.Entry<String, Date> i : e.getRemoveDate().entrySet()) {
+ addRemoveDate(i.getKey(), i.getValue());
+ }
+ }
}
/**
- * Set id and version map.
- *
- * @param idVersions id and versions
+ * Update data directly in object passed in argument.
+ * Actualy only version and deletion date are updated.
+ * <p>
+ * rem: during store action, no migration has done. Migration is only
+ * done during restore process. This implies that extension don't change
+ * after store. But another client, may can load wikitty with migration
+ * and store it, or add manualy some extension. In that case, stored wikitty
+ * has new/more extension that another client.
+ * <p>
+ * And internaly wikitty object is marked clean (not dirty)
+ * @param e
+ * @return wikitty passed in arguement or null, if event is CLEAR_WIKITTY
*/
- public void setIdVersions(Map<String, String> idVersions) {
- this.idVersions = idVersions;
+ public Wikitty update(Wikitty e) {
+ // update version
+ String id = e.getId();
+ if (type.contains(WikittyEventType.CLEAR_WIKITTY)) {
+ e = null;
+ } else {
+ if (type.contains(WikittyEventType.PUT_WIKITTY)) {
+ Wikitty newWikitty = getWikitties().get(id);
+ e.replace(newWikitty);
+ }
+ if (type.contains(WikittyEventType.REMOVE_WIKITTY)) {
+ Date date = getRemoveDate().get(id);
+ e.setDeleteDate(date);
+ }
+ e.clearDirty();
+ }
+ return e;
}
@Override
public String toString() {
- String toString = getClass().getName() + "[source=" + source +
- ", type=" + type +
- ", remote=" + remote + ", ids=" + ids + ", idExtensions=" + idExtensions +
- ", idVersions=" + idVersions + ", idDeletionDate=" + idVersions + "]";
+ String toString = getClass().getName()
+ + "[source=" + source
+ + ", eventId=" + eventId
+ + ", time=" + time
+ + ", type=" + type
+ + ", remote=" + remote
+ + ", wikitties=" + wikitties
+ + ", removeDate=" + removeDate
+ + ", extensions=" + extensions
+ + "]";
return toString;
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceImpl.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceImpl.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceImpl.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -26,14 +26,11 @@
package org.nuiton.wikitty;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
-import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -155,8 +152,38 @@
}
}
+// @Override
+// public UpdateResponse store(String securityToken, WikittyTransaction transaction,
+// Collection<Wikitty> wikitties, boolean force) {
+// if (!(wikitties instanceof Set)) {
+// // use all time Set to prevent duplicated wikitty in collection
+// wikitties = new LinkedHashSet<Wikitty>(wikitties);
+// }
+// checkConstraint(wikitties);
+//
+// // update/store extension if necessary
+// Set<WikittyExtension> allExtensions = new LinkedHashSet<WikittyExtension>();
+// for (Wikitty w : wikitties) {
+// // collect all extensions used by all wikitties
+// allExtensions.addAll(w.getExtensions());
+// }
+//
+// // try to commit command
+// UpdateResponse extUpdate = getExtensionStorage().store(transaction, allExtensions);
+// UpdateResponse wikUpdate = getWikittyStorage().store(transaction, wikitties, force);
+// UpdateResponse indexUpdate = getSearchEngin().store(transaction, wikitties);
+//
+// UpdateResponse result = new UpdateResponse();
+// // prepare update client response
+// result.add(extUpdate);
+// result.add(wikUpdate);
+// result.add(indexUpdate);
+//
+// return result;
+// }
@Override
- public UpdateResponse store(String securityToken, WikittyTransaction transaction,
+ public WikittyServiceEvent store(String securityToken,
+ WikittyTransaction transaction,
Collection<Wikitty> wikitties, boolean force) {
if (!(wikitties instanceof Set)) {
// use all time Set to prevent duplicated wikitty in collection
@@ -171,103 +198,44 @@
allExtensions.addAll(w.getExtensions());
}
- // try to commit command
- UpdateResponse extUpdate = getExtensionStorage().store(transaction, allExtensions);
- UpdateResponse wikUpdate = getWikittyStorage().store(transaction, wikitties, force);
- UpdateResponse indexUpdate = getSearchEngin().store(transaction, wikitties);
-
- UpdateResponse result = new UpdateResponse();
- // prepare update client response
- result.add(extUpdate);
- result.add(wikUpdate);
- result.add(indexUpdate);
-
- return result;
- }
-
- /**
- * Store and index wikitty object
- * @param wikitty
- */
- @Override
- public UpdateResponse store(String securityToken, Wikitty wikitty) {
- if (wikitty != null) {
- WikittyTransaction transaction = new WikittyTransaction();
- try {
+ boolean txCreated = false;
+ try {
+ if (transaction == null) {
+ transaction = new WikittyTransaction();
+ txCreated = true;
transaction.begin();
-
- List<Wikitty> wikitties = Arrays.asList(wikitty);
- UpdateResponse result = store(
- securityToken, transaction, wikitties, false);
-
- transaction.commit();
- return result;
- } catch (WikittyException ex) {
- transaction.rollback();
- throw ex;
- } catch (Exception eee) {
- transaction.rollback();
- throw new WikittyException("Can't store wikitty", eee);
}
- } else {
- throw new WikittyException("You can't store null wikitty object");
- }
- }
- /**
- * Store and index wikitties object.
- *
- * @param wikitties
- */
- @Override
- public UpdateResponse store(String securityToken, Collection<Wikitty> wikitties) {
- WikittyTransaction transaction = new WikittyTransaction();
- try {
- transaction.begin();
+ // try to commit command
+ WikittyServiceEvent extUpdate =
+ getExtensionStorage().store(transaction, allExtensions);
+ WikittyServiceEvent wikUpdate =
+ getWikittyStorage().store(transaction, wikitties, force);
+ getSearchEngin().store(transaction, wikitties);
- UpdateResponse result = store(
- securityToken, transaction, wikitties, false);
+ WikittyServiceEvent result = new WikittyServiceEvent(this);
+ // prepare update client response
+ result.add(extUpdate);
+ result.add(wikUpdate);
- transaction.commit();
+ if (txCreated) {
+ transaction.commit();
+ }
return result;
} catch (WikittyException ex) {
- transaction.rollback();
+ if (transaction != null) {
+ transaction.rollback();
+ }
throw ex;
} catch (Exception eee) {
- transaction.rollback();
+ if (transaction != null) {
+ transaction.rollback();
+ }
throw new WikittyException("Can't store wikitty", eee);
}
}
- /**
- * Store and index wikitties object.
- *
- * @param wikitties
- * @param force boolean force non version version increment on saved wikitty
- * or force version on wikitty creation (version 0.0)
- */
@Override
- public UpdateResponse store(String securityToken,
- Collection<Wikitty> wikitties, boolean force) {
- WikittyTransaction transaction = new WikittyTransaction();
- try {
- transaction.begin();
-
- UpdateResponse result = store(securityToken,
- transaction, wikitties, force);
-
- transaction.commit();
- return result;
- } catch (WikittyException ex) {
- transaction.rollback();
- throw ex;
- } catch (Exception eee) {
- transaction.rollback();
- throw new WikittyException("Can't store wikitty", eee);
- }
- }
-
- @Override
public List<String> getAllExtensionIds(String securityToken) {
WikittyTransaction transaction = new WikittyTransaction();
try {
@@ -303,87 +271,71 @@
}
@Override
- public UpdateResponse storeExtension(String securityToken,
+ public WikittyServiceEvent storeExtension(String securityToken,
WikittyTransaction transaction, Collection<WikittyExtension> exts) {
- UpdateResponse result = getExtensionStorage().store(transaction, exts);
- return result;
- }
-
- /**
- * Save several extension.
- *
- * @param exts
- */
- @Override
- public UpdateResponse storeExtension(String securityToken,
- Collection<WikittyExtension> exts) {
- WikittyTransaction transaction = new WikittyTransaction();
+ boolean txCreated = false;
try {
- transaction.begin();
+ if (transaction == null) {
+ transaction = new WikittyTransaction();
+ txCreated = true;
+ transaction.begin();
+ }
- UpdateResponse result = storeExtension(
- securityToken, transaction, exts);
-
- transaction.commit();
+ WikittyServiceEvent result =
+ getExtensionStorage().store(transaction, exts);
+
+ if (txCreated) {
+ transaction.commit();
+ }
return result;
+ } catch (WikittyException ex) {
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ throw ex;
} catch (Exception eee) {
- transaction.rollback();
+ if (transaction != null) {
+ transaction.rollback();
+ }
throw new WikittyException("Can't store extensions", eee);
}
}
@Override
- public UpdateResponse storeExtension(String securityToken, WikittyExtension ext) {
- WikittyTransaction transaction = new WikittyTransaction();
- try {
- transaction.begin();
-
- UpdateResponse result = storeExtension(
- securityToken, transaction, Arrays.asList(ext));
-
- transaction.commit();
- return result;
- } catch (Exception eee) {
- transaction.rollback();
- throw new WikittyException("Can't store extension", eee);
- }
- }
-
- @Override
public WikittyExtension restoreExtension(
String securityToken, WikittyTransaction transaction, String extensionId) {
- //split the id to ensure that version is normalized
- String name = WikittyExtension.computeName(extensionId);
- String version = WikittyExtension.computeVersion(extensionId);
-
- WikittyExtension result = getExtensionStorage().restore(transaction, name, version);
- return result;
- }
-
- /**
- * Load extension from id. Id is 'name[version]'.
- *
- * @param extensionId extension id to restore
- * @return extension
- */
- @Override
- public WikittyExtension restoreExtension(String securityToken, String extensionId) {
- WikittyTransaction transaction = new WikittyTransaction();
+ boolean txCreated = false;
try {
- transaction.begin();
+ if (transaction == null) {
+ transaction = new WikittyTransaction();
+ txCreated = true;
+ transaction.begin();
+ }
- WikittyExtension result = restoreExtension(
- securityToken, transaction, extensionId);
+ //split the id to ensure that version is normalized
+ String name = WikittyExtension.computeName(extensionId);
+ String version = WikittyExtension.computeVersion(extensionId);
- transaction.commit();
+ WikittyExtension result = getExtensionStorage().restore(transaction, name, version);
+
+ if (txCreated) {
+ transaction.commit();
+ }
return result;
+ } catch (WikittyException ex) {
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ throw ex;
} catch (Exception eee) {
- transaction.rollback();
- throw new WikittyException("can't restore extensions", eee);
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ throw new WikittyException("Can't restore extensions", eee);
}
-
}
+ @Override
public WikittyExtension restoreExtensionLastVersion(String securityToken,
WikittyTransaction transaction, String name) {
String version = getExtensionStorage().getLastVersion(transaction, name);
@@ -391,25 +343,30 @@
return null;
}
- WikittyExtension result = getExtensionStorage().restore(transaction, name, version);
- return result;
- }
-
- @Override
- public WikittyExtension restoreExtensionLastVersion(
- String securityToken, String name) {
- WikittyTransaction transaction = new WikittyTransaction();
+ boolean txCreated = false;
try {
- transaction.begin();
+ if (transaction == null) {
+ transaction = new WikittyTransaction();
+ txCreated = true;
+ transaction.begin();
+ }
- WikittyExtension result = restoreExtensionLastVersion(
- securityToken, transaction, name);
+ WikittyExtension result = getExtensionStorage().restore(transaction, name, version);
- transaction.commit();
+ if (txCreated) {
+ transaction.commit();
+ }
return result;
+ } catch (WikittyException ex) {
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ throw ex;
} catch (Exception eee) {
- transaction.rollback();
- throw new WikittyException("Can't restore extension", eee);
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ throw new WikittyException("Can't store extensions", eee);
}
}
@@ -437,51 +394,57 @@
@Override
public List<Wikitty> restore(String securityToken,
WikittyTransaction transaction, List<String> ids) {
+
List<Wikitty> result = new ArrayList<Wikitty>();
- for(String id : ids) {
- Wikitty w = restore(securityToken, transaction, id);
- if (w != null) {
- result.add(w);
+ boolean txCreated = false;
+ try {
+ if (transaction == null) {
+ transaction = new WikittyTransaction();
+ txCreated = true;
+ transaction.begin();
}
- }
- return result;
- }
- @Override
- public List<Wikitty> restore(String securityToken, List<String> ids) {
- WikittyTransaction transaction = new WikittyTransaction();
- try {
- transaction.begin();
-
- List<Wikitty> result = restore(securityToken, transaction, ids);
-
- transaction.commit();
+ for (String id : ids) {
+ Wikitty w = restore(securityToken, transaction, id);
+ // on l'ajoutde tout le temps, meme si w est nul lorsqu'il y a
+ // une demande et qu'elle echoue on ajout
+ // bien null, pour qu'il y ait une correspondance 1 pour 1
+ // avec la demande
+ result.add(w);
+ }
+ if (txCreated) {
+ transaction.commit();
+ }
return result;
+ } catch (WikittyException ex) {
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ throw ex;
} catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't restore wikitty collection", eee);
+ if (transaction != null) {
+ transaction.rollback();
}
- transaction.rollback();
throw new WikittyException("Can't restore wikitty", eee);
}
}
- @Override
- public Wikitty restore(String securityToken, String id) {
- WikittyTransaction transaction = new WikittyTransaction();
- try {
- transaction.begin();
+// @Override
+// public Wikitty restore(String securityToken, String id) {
+// WikittyTransaction transaction = new WikittyTransaction();
+// try {
+// transaction.begin();
+//
+// Wikitty result = restore(securityToken, transaction, id);
+//
+// transaction.commit();
+// return result;
+// } catch (Exception eee) {
+// transaction.rollback();
+// throw new WikittyException("Can't restore wikitty", eee);
+// }
+// }
- Wikitty result = restore(securityToken, transaction, id);
-
- transaction.commit();
- return result;
- } catch (Exception eee) {
- transaction.rollback();
- throw new WikittyException("Can't restore wikitty", eee);
- }
- }
-
protected Wikitty upgradeData(String securityToken,
WikittyTransaction transaction, Wikitty wikitty) {
Wikitty result = wikitty;
@@ -505,7 +468,8 @@
log.debug("lastExtensionVersion=" + lastExtensionVersion);
}
- WikittyExtensionMigration migration = WikittyExtensionMigration.migrationRegistry.get(extensionName);
+ WikittyExtensionMigration migration =
+ WikittyExtensionMigration.migrationRegistry.get(extensionName);
if (migration == null) {
migration = defaultExtensionMigration;
}
@@ -514,8 +478,10 @@
while(WikittyUtil.versionGreaterThan(lastExtensionVersion, currentExtensionVersion)) {
// Get extension after the current version
- String nextExtensionVersion = WikittyUtil.incrementMajorRevision(currentExtensionVersion);
- String nextExtensionId = WikittyExtension.computeId(extensionName, nextExtensionVersion);
+ String nextExtensionVersion =
+ WikittyUtil.incrementMajorRevision(currentExtensionVersion);
+ String nextExtensionId =
+ WikittyExtension.computeId(extensionName, nextExtensionVersion);
WikittyExtension nextExtension = restoreExtension(
securityToken, transaction, nextExtensionId);
@@ -539,7 +505,7 @@
return result;
}
- protected void delete(String securityToken, WikittyTransaction transaction,
+ protected WikittyServiceEvent delete(String securityToken, WikittyTransaction transaction,
Collection<String> ids) throws WikittyException {
// work only on valid id
Collection<Wikitty> storedWikitties = new LinkedHashSet<Wikitty>();
@@ -592,37 +558,30 @@
}
}
- getWikittyStorage().delete(transaction, idSet);
+ WikittyServiceEvent eventDelete =
+ getWikittyStorage().delete(transaction, idSet);
getSearchEngin().delete(transaction, idSet);
- store(securityToken, transaction, storedWikitties, false);
+ WikittyServiceEvent eventStore =
+ store(securityToken, transaction, storedWikitties, false);
+
+ WikittyServiceEvent result = new WikittyServiceEvent(this);
+ result.add(eventDelete);
+ result.add(eventStore);
+
+ return result;
}
@Override
- public void delete(String securityToken, String id) {
+ public WikittyServiceEvent delete(String securityToken, Collection<String> ids){
WikittyTransaction transaction = new WikittyTransaction();
try {
transaction.begin();
-
- List<String> ids = Arrays.asList(id);
- delete(securityToken, transaction, ids);
-
- transaction.commit();
- } catch (Exception eee) {
- transaction.rollback();
- throw new WikittyException("Can't delete wikitty", eee);
- }
- }
-
- @Override
- public void delete(String securityToken, Collection<String> ids){
- WikittyTransaction transaction = new WikittyTransaction();
- try {
- transaction.begin();
- delete(securityToken, transaction, ids);
+ WikittyServiceEvent result = delete(securityToken, transaction, ids);
transaction.commit();
+ return result;
} catch (Exception eee) {
transaction.rollback();
throw new WikittyException("Can't delete wikitty", eee);
@@ -634,16 +593,21 @@
* This operation should be disabled in production environment.
*/
@Override
- public void clear(String securityToken) {
+ public WikittyServiceEvent clear(String securityToken) {
WikittyTransaction transaction = new WikittyTransaction();
try {
transaction.begin();
getSearchEngin().clear(transaction);
- getWikittyStorage().clear(transaction);
- getExtensionStorage().clear(transaction);
+ WikittyServiceEvent eventWik = getWikittyStorage().clear(transaction);
+ WikittyServiceEvent eventExt = getExtensionStorage().clear(transaction);
+ WikittyServiceEvent result = new WikittyServiceEvent(this);
+ result.add(eventWik);
+ result.add(eventExt);
+
transaction.commit();
+ return result;
} catch (Exception eee) {
transaction.rollback();
throw new WikittyException("Can't clear all data", eee);
@@ -657,61 +621,70 @@
@Override
public PagedResult<String> findAllByCriteria(String securityToken,
WikittyTransaction transaction, Criteria criteria) {
- PagedResult<String> result =
- getSearchEngin().findAllByCriteria(transaction, criteria);
- return result;
- }
-
- @Override
- public PagedResult<String> findAllByCriteria(
- String securityToken, Criteria criteria) {
- WikittyTransaction transaction = new WikittyTransaction();
try {
- transaction.begin();
+ boolean txCreated = false;
+ if (transaction == null) {
+ transaction = new WikittyTransaction();
+ txCreated = true;
+ transaction.begin();
+ }
- PagedResult<String> result = findAllByCriteria(
- securityToken, transaction, criteria);
-
- transaction.commit();
+ PagedResult<String> result =
+ getSearchEngin().findAllByCriteria(transaction, criteria);
+ if (txCreated) {
+ transaction.commit();
+ }
return result;
+ } catch (WikittyException ex) {
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ throw ex;
} catch (Exception eee) {
- transaction.rollback();
+ if (transaction != null) {
+ transaction.rollback();
+ }
throw new WikittyException("Error during find", eee);
}
}
-
+
public Wikitty findByCriteria(String securityToken,
WikittyTransaction transaction, Criteria criteria) {
- criteria.setFirstIndex(0).setEndIndex(1);
- PagedResult<String> pages = findAllByCriteria(
- securityToken, transaction, criteria);
-
- Wikitty result = null;
- if (pages.size() > 0) {
- String id = pages.getFirst();
- result = restore(securityToken, transaction, id);
- }
-
- return result;
- }
-
- @Override
- public Wikitty findByCriteria(String securityToken, Criteria criteria) {
- WikittyTransaction transaction = new WikittyTransaction();
try {
- transaction.begin();
+ boolean txCreated = false;
+ if (transaction == null) {
+ transaction = new WikittyTransaction();
+ txCreated = true;
+ transaction.begin();
+ }
- Wikitty result = findByCriteria(
+ criteria.setFirstIndex(0).setEndIndex(1);
+ PagedResult<String> pages = findAllByCriteria(
securityToken, transaction, criteria);
-
- transaction.commit();
+
+ Wikitty result = null;
+ if (pages.size() > 0) {
+ String id = pages.getFirst();
+ result = restore(securityToken, transaction, id);
+ }
+
+ if (txCreated) {
+ transaction.commit();
+ }
return result;
+ } catch (WikittyException ex) {
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ throw ex;
} catch (Exception eee) {
- transaction.rollback();
+ if (transaction != null) {
+ transaction.rollback();
+ }
throw new WikittyException("Error during find", eee);
}
}
-
+
protected WikittyTree restoreTree(String securityToken,
WikittyTransaction transaction, String wikittyId) {
Wikitty w = restore(securityToken, transaction, wikittyId);
@@ -759,21 +732,19 @@
}
@Override
- public List<String> deleteTree(String securityToken, String thesaurusId) {
- List<String> deletedIds = null;
+ public WikittyServiceEvent deleteTree(String securityToken, String thesaurusId) {
WikittyTransaction transaction = new WikittyTransaction();
try {
transaction.begin();
- deletedIds = deleteTree(securityToken, transaction, thesaurusId);
+ WikittyServiceEvent result = deleteTree(securityToken, transaction, thesaurusId);
transaction.commit();
+ return result;
} catch (Exception eee) {
transaction.rollback();
throw new WikittyException("Can't delete tree", eee);
}
-
- return deletedIds;
}
/**
@@ -784,10 +755,10 @@
* @param treeNodeId thesaurusId to delete
* @return all id of delete nodes
*/
- public List<String> deleteTree(String securityToken, WikittyTransaction transaction, String treeNodeId) {
+ protected WikittyServiceEvent deleteTree(String securityToken, WikittyTransaction transaction, String treeNodeId) {
List<String> allTreeNodeId = getRecursiveTreeNodeId(securityToken, transaction, treeNodeId);
- delete(securityToken, transaction, allTreeNodeId);
- return allTreeNodeId;
+ WikittyServiceEvent result = delete(securityToken, transaction, allTreeNodeId);
+ return result;
}
/**
@@ -896,12 +867,11 @@
}
@Override
- public UpdateResponse syncEngin(final String securityToken) {
+ public void syncEngin(final String securityToken) {
final WikittyTransaction transaction = new WikittyTransaction();
try {
final int numberForCommit = 1000;
final WikittySearchEngin searchEngin = getSearchEngin();
- final UpdateResponse result = new UpdateResponse();
final List<Wikitty> wikitties = new ArrayList<Wikitty>(numberForCommit);
transaction.begin();
@@ -922,8 +892,7 @@
if(count == numberForCommit) {
// Reindex
- UpdateResponse response = searchEngin.store(transaction, wikitties);
- result.add(response);
+ searchEngin.store(transaction, wikitties);
transaction.commit();
// Reinit
count = 0;
@@ -935,11 +904,8 @@
});
// Last wikitties
- UpdateResponse response = searchEngin.store(transaction, wikitties);
- result.add(response);
-
+ searchEngin.store(transaction, wikitties);
transaction.commit();
- return result;
} catch (Exception eee) {
transaction.rollback();
throw new WikittyException("Can't sync searchable index with data", eee);
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -71,9 +71,17 @@
protected Map<String, Wikitty> wikitties = new LinkedHashMap<String, Wikitty>();
@Override
- public UpdateResponse store(WikittyTransaction transaction, Collection<Wikitty> wikitties, boolean force) {
- UpdateResponse result = new UpdateResponse();
+ public WikittyServiceEvent store(WikittyTransaction transaction,
+ Collection<Wikitty> wikitties, boolean force) {
+ WikittyServiceEvent result = new WikittyServiceEvent(this);
for (Wikitty wikitty : wikitties) {
+ // begin with clone of wikitty to prevent modification of
+ // wikitty passed as argument
+ try {
+ wikitty = wikitty.clone();
+ } catch (CloneNotSupportedException eee) {
+ throw new WikittyException("Can't clone ?", eee);
+ }
String actualVersion = null;
Wikitty inMemoryWikitty = this.wikitties.get(wikitty.getId());
@@ -123,24 +131,22 @@
try {
this.wikitties.put(wikitty.getId(), wikitty.clone());
- } catch (CloneNotSupportedException ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't clone ?", ex);
- }
+ } catch (CloneNotSupportedException eee) {
+ throw new WikittyException("Can't clone ?", eee);
}
- result.addVersionUpdate(wikitty.getId(), wikitty.getVersion());
+ result.addWikitty(wikitty);
}
return result;
}
@Override
- public UpdateResponse delete(WikittyTransaction transaction, Collection<String> idList) throws WikittyException {
- UpdateResponse result = new UpdateResponse();
+ public WikittyServiceEvent delete(WikittyTransaction transaction, Collection<String> idList) throws WikittyException {
+ WikittyServiceEvent result = new WikittyServiceEvent(this);
Date now = new Date();
for (String id : idList) {
Wikitty w = restore(transaction, id);
w.setDeleteDate(now);
- result.addDeletionDateUpdate(id, now);
+ result.addRemoveDate(id, now);
}
return result;
}
@@ -184,8 +190,11 @@
}
@Override
- public void clear(WikittyTransaction transaction) {
+ public WikittyServiceEvent clear(WikittyTransaction transaction) {
wikitties = new LinkedHashMap<String, Wikitty>();
+ WikittyServiceEvent result = new WikittyServiceEvent(this);
+ result.addType(WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY);
+ return result;
}
}
@@ -197,13 +206,16 @@
}
@Override
- public UpdateResponse store(WikittyTransaction transaction,
+ public WikittyServiceEvent store(WikittyTransaction transaction,
Collection<WikittyExtension> exts) throws WikittyException {
+ WikittyServiceEvent result = new WikittyServiceEvent(this);
for (WikittyExtension ext : exts) {
- extensions.put(ext.getId(), ext);
+ // on ajoute que s'il n'y est pas deja
+ if (!extensions.containsKey(ext.getId())) {
+ extensions.put(ext.getId(), ext);
+ result.addExtension(ext);
+ }
}
- // nothing to do in UpdateResponse
- UpdateResponse result = new UpdateResponse();
return result;
}
@@ -262,8 +274,11 @@
}
@Override
- public void clear(WikittyTransaction transaction) {
+ public WikittyServiceEvent clear(WikittyTransaction transaction) {
extensions = new HashMap<String, WikittyExtension>();
+ WikittyServiceEvent result = new WikittyServiceEvent(this);
+ result.addType(WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION);
+ return result;
}
}
@@ -281,17 +296,13 @@
}
@Override
- public UpdateResponse store(WikittyTransaction transaction,
+ public void store(WikittyTransaction transaction,
Collection<Wikitty> wikitties) {
- // do nothing
- return new UpdateResponse();
}
@Override
- public UpdateResponse delete(WikittyTransaction transaction,
+ public void delete(WikittyTransaction transaction,
Collection<String> idList) throws WikittyException {
- // do nothing
- return new UpdateResponse();
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -190,60 +190,21 @@
}
@Override
- public void clear(String securityToken) {
- // FIXME poussin 20101015 pourquoi n'y a t il pas d'event pour un clear total ?
- // il faut prévenir les clients de synchro de ce vider totalement aussi
- ws.clear(securityToken);
+ public WikittyServiceEvent clear(String securityToken) {
+ WikittyServiceEvent result = ws.clear(securityToken);
+ fireEvent(result);
+ return result;
}
@Override
- public UpdateResponse store(String securityToken, Wikitty wikitty) {
- UpdateResponse updateResponse = ws.store(securityToken, wikitty);
- // update wikitty
- updateResponse.update(wikitty);
- // notify listeners
- firePutWikitty(wikitty);
- return updateResponse;
- }
-
- @Override
- public UpdateResponse store(String securityToken, Collection<Wikitty> wikitties) {
- UpdateResponse updateResponse = ws.store(securityToken, wikitties);
- // update wikitty
- for (Wikitty wikitty : wikitties) {
- updateResponse.update(wikitty);
- }
- // notify listeners
- firePutWikitty(wikitties.toArray(new Wikitty[wikitties.size()]));
- return updateResponse;
- }
-
- @Override
- public UpdateResponse store(String securityToken, Collection<Wikitty> wikitties,
- boolean force) {
- UpdateResponse updateResponse = ws.store(
- securityToken, wikitties, force);
- // update wikitty
- for (Wikitty wikitty : wikitties) {
- updateResponse.update(wikitty);
- }
- // notify listeners
- firePutWikitty(wikitties.toArray(new Wikitty[wikitties.size()]));
- return updateResponse;
- }
-
- @Override
- public UpdateResponse store(String securityToken, WikittyTransaction transaction,
+ public WikittyServiceEvent store(String securityToken, WikittyTransaction transaction,
Collection<Wikitty> wikitties, boolean force) {
- UpdateResponse updateResponse = ws.store(securityToken, transaction,
+ WikittyServiceEvent result = ws.store(securityToken, transaction,
wikitties, force);
- // update wikitty
- for (Wikitty wikitty : wikitties) {
- updateResponse.update(wikitty);
- }
+
// notify listeners
- firePutWikitty(wikitties.toArray(new Wikitty[wikitties.size()]));
- return updateResponse;
+ fireEvent(result);
+ return result;
}
@Override
@@ -260,38 +221,15 @@
}
@Override
- public UpdateResponse storeExtension(String securityToken, WikittyExtension ext) {
- UpdateResponse updateResponse = ws.storeExtension(securityToken, ext);
- // notify listeners
- firePutExtension(ext);
- return updateResponse;
- }
-
- @Override
- public UpdateResponse storeExtension(
- String securityToken, Collection<WikittyExtension> exts) {
- UpdateResponse updateResponse = ws.storeExtension(securityToken, exts);
- // notify listeners
- firePutExtension(exts.toArray(new WikittyExtension[exts.size()]));
- return updateResponse;
- }
-
- @Override
- public UpdateResponse storeExtension(String securityToken,
+ public WikittyServiceEvent storeExtension(String securityToken,
WikittyTransaction transaction, Collection<WikittyExtension> exts) {
- UpdateResponse updateResponse = ws.storeExtension(
+ WikittyServiceEvent result = ws.storeExtension(
securityToken, transaction, exts);
- // no notification called by #storeExtension(Collection<WikittyExtension>)
- return updateResponse;
+ fireEvent(result);
+ return result;
}
@Override
- public WikittyExtension restoreExtension(String securityToken, String id) {
- // no notification
- return ws.restoreExtension(securityToken, id);
- }
-
- @Override
public WikittyExtension restoreExtension(String securityToken,
WikittyTransaction transaction, String id) {
// no notification
@@ -300,57 +238,27 @@
@Override
public WikittyExtension restoreExtensionLastVersion(
- String securityToken, String name) {
- // no notification
- return ws.restoreExtensionLastVersion(securityToken, name);
- }
-
- @Override
- public WikittyExtension restoreExtensionLastVersion(
String securityToken, WikittyTransaction transaction, String name) {
// no notification
return ws.restoreExtensionLastVersion(securityToken, transaction, name);
}
@Override
- public Wikitty restore(String securityToken, String id) {
+ public List<Wikitty> restore(String securityToken,
+ WikittyTransaction transaction, List<String> ids) {
// no notification
- return ws.restore(securityToken, id);
- }
-
- @Override
- public List<Wikitty> restore(String securityToken, List<String> ids) {
- // no notification
- return ws.restore(securityToken, ids);
- }
-
- @Override
- public List<Wikitty> restore(String securityToken, WikittyTransaction transaction, List<String> ids) {
- // no notification
return ws.restore(securityToken, transaction, ids);
}
@Override
- public void delete(String securityToken, String id) {
- ws.delete(securityToken, id);
+ public WikittyServiceEvent delete(String securityToken, Collection<String> ids) {
+ WikittyServiceEvent result = ws.delete(securityToken, ids);
// notify listeners
- fireRemoveWikitty(id);
+ fireEvent(result);
+ return result;
}
@Override
- public void delete(String securityToken, Collection<String> ids) {
- ws.delete(securityToken, ids);
- // notify listeners
- fireRemoveWikitty(ids.toArray(new String[ids.size()]));
- }
-
- @Override
- public PagedResult<String> findAllByCriteria(String securityToken, Criteria criteria) {
- // no notification
- return ws.findAllByCriteria(securityToken, criteria);
- }
-
- @Override
public PagedResult<String> findAllByCriteria(String securityToken,
WikittyTransaction transaction, Criteria criteria) {
// no notification
@@ -358,14 +266,9 @@
}
@Override
- public Wikitty findByCriteria(String securityToken, Criteria criteria) {
+ public Wikitty findByCriteria(String securityToken,
+ WikittyTransaction transaction, Criteria criteria) {
// no notification
- return ws.findByCriteria(securityToken, criteria);
- }
-
- @Override
- public Wikitty findByCriteria(String securityToken, WikittyTransaction transaction, Criteria criteria) {
- // no notification
return ws.findByCriteria(securityToken, transaction, criteria);
}
@@ -376,10 +279,9 @@
}
@Override
- public List<String> deleteTree(String securityToken, String wikittyId) {
- // no notification
- List<String> result = ws.deleteTree(securityToken, wikittyId);
- fireRemoveWikitty(result.toArray(new String[result.size()]));
+ public WikittyServiceEvent deleteTree(String securityToken, String wikittyId) {
+ WikittyServiceEvent result = ws.deleteTree(securityToken, wikittyId);
+ fireEvent(result);
return result;
}
@@ -405,128 +307,12 @@
}
@Override
- public UpdateResponse syncEngin(String securityToken) {
+ public void syncEngin(String securityToken) {
// no notification
- return ws.syncEngin(securityToken);
+ ws.syncEngin(securityToken);
}
/**
- * Build event to fire and call {@link #firePutWikitty(WikittyServiceEvent)}.
- *
- * @param ws data
- */
- protected void firePutWikitty(Wikitty... ws) {
- WikittyServiceEvent event = new WikittyServiceEvent(ws,
- WikittyServiceEvent.WikittyEventType.PUT_WIKITTY);
- Set<String> ids = new HashSet<String>();
- Map<String, Set<String>> idsExtension = new HashMap<String, Set<String>>();
- Map<String, String> idsVersion = new HashMap<String, String>();
-
- for (Wikitty w : ws) {
- // ids
- ids.add(w.getId());
- // extension
- Set<String> extension = new HashSet<String>();
- extension.addAll(w.getExtensionNames());
- idsExtension.put(w.getId(), extension);
- // version
- idsVersion.put(w.getId(), w.getVersion());
- }
-
- event.setIds(ids);
- event.setIdExtensions(idsExtension);
- event.setIdVersions(idsVersion);
- fireEvent(event);
- }
-
- /**
- * Build event to fire and call {@link #fireRemoveWikitty(WikittyServiceEvent)}.
- *
- * @param wikittyIds wikitty ids
- */
- protected void fireRemoveWikitty(String... wikittyIds) {
- WikittyServiceEvent event = new WikittyServiceEvent(ws,
- WikittyServiceEvent.WikittyEventType.REMOVE_WIKITTY);
- Set<String> ids = new HashSet<String>();
-
- for (String wikittyId : wikittyIds) {
- // ids
- ids.add(wikittyId);
- }
-
- event.setIds(ids);
- fireEvent(event);
- }
-
- /**
- * Build event to fire and call {@link #fireClearWikitty(WikittyServiceEvent)}.
- */
- protected void fireClearWikitty() {
- WikittyServiceEvent event = new WikittyServiceEvent(ws,
- WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY);
- fireEvent(event);
- }
-
- /**
- * Build event to fire and call {@link #firePutExtension(WikittyServiceEvent)}.
- *
- * @param ws data
- */
- protected void firePutExtension(WikittyExtension... exts) {
- WikittyServiceEvent event = new WikittyServiceEvent(ws,
- WikittyServiceEvent.WikittyEventType.PUT_EXTENSION);
- Set<String> ids = new HashSet<String>();
- Map<String, Set<String>> idsExtension = new HashMap<String, Set<String>>();
-
- for (WikittyExtension ext : exts) {
- // ids
- ids.add(ext.getId());
- // extension
- Set<String> extension = new HashSet<String>();
- extension.add(ext.getName());
-
- // also add requires fields
- extension.add(ext.requires);
-
- idsExtension.put(ext.getId(), extension);
- }
-
- event.setIds(ids);
- event.setIdExtensions(idsExtension);
- fireEvent(event);
- }
-
- /**
- * Build event to fire and call {@link #fireRemoveExtension(WikittyServiceEvent)}.
- *
- * @param ws data
- */
- protected void fireRemoveExtension(WikittyExtension... exts) {
- WikittyServiceEvent event = new WikittyServiceEvent(ws,
- WikittyServiceEvent.WikittyEventType.REMOVE_EXTENSION);
- Set<String> ids = new HashSet<String>();
-
- for (WikittyExtension ext : exts) {
- // ids
- ids.add(ext.getId());
- }
-
- event.setIds(ids);
- fireEvent(event);
- }
-
- /**
- * Build event to fire and call {@link #fireClearExtension(WikittyServiceEvent)}.
- *
- * @param ws data
- */
- protected void fireClearExtension() {
- WikittyServiceEvent event = new WikittyServiceEvent(ws,
- WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION);
- fireEvent(event);
- }
-
- /**
* Fire event to all registred listener.
*
* Take care about {@link WikittyServiceEvent#isRemote()} for fire.
@@ -683,8 +469,10 @@
while (null != (event = eventToSend.poll(5, TimeUnit.SECONDS))) {
try {
synchronized (allWikittyServiceListeners) {
- allWikittyServiceListeners.fire(
- event.getType().listenerMethodName, event);
+ for(WikittyServiceEvent.WikittyEventType type : event.getType()) {
+ allWikittyServiceListeners.fire(
+ type.listenerMethodName, event);
+ }
}
} catch (Exception eee) {
log.error("Can't notify listener", eee);
@@ -692,13 +480,17 @@
try {
if (event.isRemote()) {
synchronized (remoteWikittyServiceListeners) {
- remoteWikittyServiceListeners.fire(
- event.getType().listenerMethodName, event);
+ for (WikittyServiceEvent.WikittyEventType type : event.getType()) {
+ remoteWikittyServiceListeners.fire(
+ type.listenerMethodName, event);
+ }
}
} else {
synchronized (localWikittyServiceListeners) {
- localWikittyServiceListeners.fire(
- event.getType().listenerMethodName, event);
+ for (WikittyServiceEvent.WikittyEventType type : event.getType()) {
+ localWikittyServiceListeners.fire(
+ type.listenerMethodName, event);
+ }
}
}
} catch (Exception eee) {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -53,13 +53,13 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(WikittyServiceSecurity.class);
- protected WikittyService ws;
+ protected WikittyServiceEnhanced ws;
/** cache de l'id du groupe AppAdmin */
transient protected String appAdminGroupId = null;
public WikittyServiceSecurity(WikittyService ws) {
- this.ws = ws;
+ this.ws = new WikittyServiceEnhanced(ws);
}
@Override
@@ -74,7 +74,7 @@
@Override
public String login(String login, String password) {
- Wikitty user = ws.findByCriteria(null, Search.query().eq(
+ Wikitty user = ws.findByCriteria(null, null, Search.query().eq(
WikittyUser.FQ_FIELD_WIKITTYUSER_LOGIN, login).criteria());
if (user == null) {
throw new IllegalArgumentException(String.format("no such account '%s'", login));
@@ -86,7 +86,7 @@
// force add extension to wikitty
WikittyTokenHelper.addExtension(wikittyToken);
WikittyTokenHelper.setUser(wikittyToken, user.getId());
- ws.store(null, wikittyToken);
+ ws.store(null, null, Arrays.asList(wikittyToken), false);
log.debug(String.format("token '%s' is for login '%s'",
tokenId, login));
return tokenId;
@@ -102,16 +102,17 @@
throw new IllegalArgumentException("security token is null");
} else {
getUserId(securityToken); // will throw exception if token is not valid
- ws.delete(securityToken, securityToken);
+ ws.delete(securityToken, Arrays.asList(securityToken));
}
}
@Override
- public void clear(String securityToken) {
+ public WikittyServiceEvent clear(String securityToken) {
String userId = getUserId(securityToken);
if (isAppAdmin(securityToken, userId)) {
// seul les AppAdmin on le droit a cette method
- ws.clear(securityToken);
+ WikittyServiceEvent result = ws.clear(securityToken);
+ return result;
} else {
throw new SecurityException(_("user %s can't clear data", userId));
}
@@ -140,34 +141,13 @@
}
@Override
- public UpdateResponse store(String securityToken, Wikitty wikitty) {
- Collection<Wikitty> wikitties = Arrays.asList(wikitty);
- wikitties = checkStore(securityToken, wikitties);
- UpdateResponse result = ws.store(securityToken, wikitties);
- return result;
- }
-
- @Override
- public UpdateResponse store(String securityToken, Collection<Wikitty> wikitties) {
+ public WikittyServiceEvent store(String securityToken,
+ WikittyTransaction transaction, Collection<Wikitty> wikitties, boolean force) {
Collection<Wikitty> wikittiesToStore = checkStore(securityToken, wikitties);
- UpdateResponse result = ws.store(securityToken, wikittiesToStore);
+ WikittyServiceEvent result = ws.store(securityToken, transaction, wikittiesToStore, force);
return result;
}
-
- @Override
- public UpdateResponse store(String securityToken, Collection<Wikitty> wikitties, boolean force) {
- Collection<Wikitty> wikittiesToStore = checkStore(securityToken, wikitties);
- UpdateResponse result = ws.store(securityToken, wikittiesToStore, force);
- return result;
- }
- @Override
- public UpdateResponse store(String securityToken, WikittyTransaction transaction, Collection<Wikitty> wikitties, boolean force) {
- Collection<Wikitty> wikittiesToStore = checkStore(securityToken, wikitties);
- UpdateResponse result = ws.store(securityToken, transaction, wikittiesToStore, force);
- return result;
- }
-
protected Collection<Wikitty> checkStore(String securityToken, Collection<Wikitty> wikitties) {
String userId = getUserId(securityToken);
List<Wikitty> wikittiesToStore = new ArrayList<Wikitty>();
@@ -239,31 +219,13 @@
}
@Override
- public Wikitty restore(String securityToken, String id) {
- String userId = getUserId(securityToken);
- Wikitty wikitty = ws.restore(securityToken, id);
- if (wikitty != null) {
- refuseUnauthorizedRead(securityToken, userId, wikitty);
- }
- return wikitty;
- }
-
- @Override
- public List<Wikitty> restore(String securityToken, List<String> ids) {
- String userId = getUserId(securityToken);
- List<Wikitty> wikitties = ws.restore(securityToken, ids);
- for (Wikitty wikitty : wikitties) {
- refuseUnauthorizedRead(securityToken, userId, wikitty);
- }
- return wikitties;
- }
-
- @Override
public List<Wikitty> restore(String securityToken, WikittyTransaction transaction, List<String> ids) {
String userId = getUserId(securityToken);
List<Wikitty> wikitties = ws.restore(securityToken, transaction, ids);
for (Wikitty wikitty : wikitties) {
- refuseUnauthorizedRead(securityToken, userId, wikitty);
+ if (wikitty != null) {
+ refuseUnauthorizedRead(securityToken, userId, wikitty);
+ }
}
return wikitties;
}
@@ -357,16 +319,10 @@
}
@Override
- public void delete(String securityToken, String id) {
- Collection<String> ids = Arrays.asList(id);
- delete(securityToken, ids);
- }
-
- @Override
- public void delete(String securityToken, Collection<String> ids) {
+ public WikittyServiceEvent delete(String securityToken, Collection<String> ids) {
String userId = getUserId(securityToken);
List<String> idsAsList = new ArrayList<String>(ids);
- List<Wikitty> wikitties = ws.restore(securityToken, idsAsList);
+ List<Wikitty> wikitties = ws.restore(securityToken, null, idsAsList);
for (Wikitty wikitty : wikitties) {
for (String extensionName : wikitty.getExtensionNames()) {
if ( ! canWrite(securityToken, userId, extensionName, wikitty)) {
@@ -376,25 +332,51 @@
}
}
}
- ws.delete(securityToken, ids);
+ WikittyServiceEvent result = ws.delete(securityToken, ids);
+ return result;
}
@Override
- @Deprecated
public boolean canWrite(String securityToken, Wikitty wikitty) {
- throw new UnsupportedOperationException();
+ boolean result = true;
+ String userId = getUserId(securityToken);
+ for (String extName : wikitty.getExtensionNames()) {
+ result = result && isWriter(securityToken, userId, wikitty, extName);
+ if (!result) {
+ break;
+ }
+ }
+ return result;
}
@Override
- @Deprecated
public boolean canDelete(String securityToken, String wikittyId) {
- throw new UnsupportedOperationException();
+ boolean result = true;
+ Wikitty wikitty = WikittyServiceEnhanced.restore(ws, securityToken, wikittyId);
+ if (wikitty != null) {
+ String userId = getUserId(securityToken);
+ for (String extName : wikitty.getExtensionNames()) {
+ result = result && isWriter(securityToken, userId, wikitty, extName);
+ if (!result) {
+ break;
+ }
+ }
+ }
+ return result;
}
@Override
- @Deprecated
public boolean canRead(String securityToken, String wikittyId) {
- throw new UnsupportedOperationException();
+ boolean result = true;
+ String userId = getUserId(securityToken);
+ Wikitty wikitty = WikittyServiceEnhanced.restore(ws, securityToken, wikittyId);
+ for (String extName : wikitty.getExtensionNames()) {
+ result = result && isReader(securityToken, userId, wikitty, extName);
+ if (!result) {
+ break;
+ }
+ }
+ return result;
}
@Override
@@ -408,17 +390,8 @@
String securityToken, String extensionName) {
// All people can read extension
return ws.getAllExtensionsRequires(securityToken, extensionName);
- }
-
- @Override
- public UpdateResponse storeExtension(String securityToken, WikittyExtension ext) {
- Collection<WikittyExtension> exts = Arrays.asList(ext);
- checkStoreExtension(securityToken, exts);
- return storeExtension(securityToken, exts);
- }
-
+ }
-
/* *** storing and restoring extensions ***/
protected void checkStoreExtension(String securityToken,
@@ -439,26 +412,13 @@
}
@Override
- public UpdateResponse storeExtension(String securityToken,
- Collection<WikittyExtension> exts) {
- checkStoreExtension(securityToken, exts);
- return ws.storeExtension(securityToken, exts);
- }
-
- @Override
- public UpdateResponse storeExtension(String securityToken,
+ public WikittyServiceEvent storeExtension(String securityToken,
WikittyTransaction transaction, Collection<WikittyExtension> exts) {
checkStoreExtension(securityToken, exts);
return ws.storeExtension(securityToken, transaction, exts);
}
@Override
- public WikittyExtension restoreExtension(String securityToken, String id) {
- // All people can read extension
- return ws.restoreExtension(securityToken, id);
- }
-
- @Override
public WikittyExtension restoreExtension(String securityToken,
WikittyTransaction transaction, String id) {
// All people can read extension
@@ -466,13 +426,6 @@
}
@Override
- public WikittyExtension restoreExtensionLastVersion(String securityToken,
- String name) {
- // All people can read extension
- return ws.restoreExtensionLastVersion(securityToken, name);
- }
-
- @Override
public WikittyExtension restoreExtensionLastVersion(
String securityToken, WikittyTransaction transaction, String name) {
// All people can read extension
@@ -480,13 +433,6 @@
}
@Override
- public PagedResult<String> findAllByCriteria(String securityToken, Criteria criteria) {
- // All people can read PagedResult that contains only id
- PagedResult<String> result = ws.findAllByCriteria(securityToken, criteria);
- return result;
- }
-
- @Override
public PagedResult<String> findAllByCriteria(String securityToken,
WikittyTransaction transaction, Criteria criteria) {
// All people can read PagedResult that contains only id
@@ -496,14 +442,6 @@
}
@Override
- public Wikitty findByCriteria(String securityToken, Criteria criteria) {
- String userId = getUserId(securityToken);
- Wikitty wikitty = ws.findByCriteria(securityToken, criteria);
- refuseUnauthorizedRead(securityToken, userId, wikitty);
- return wikitty;
- }
-
- @Override
public WikittyTree restoreTree(String securityToken, String wikittyId) {
String userId = getUserId(securityToken);
WikittyTree restoredTree = ws.restoreTree(securityToken, wikittyId);
@@ -544,7 +482,7 @@
}
@Override
- public List<String> deleteTree(String securityToken, String treeNodeId) {
+ public WikittyServiceEvent deleteTree(String securityToken, String treeNodeId) {
WikittyTreeNode treeNode = ws.restoreNode(securityToken, treeNodeId, null).getKey();
Collection<Wikitty> wikitties = Arrays.asList(treeNode.getWikitty());
checkStore(securityToken, wikitties);
@@ -569,11 +507,11 @@
}
@Override
- public UpdateResponse syncEngin(String securityToken) {
+ public void syncEngin(String securityToken) {
String userId = getUserId(securityToken);
if (isAppAdmin(securityToken, userId)) {
// seul les AppAdmin on le droit a cette method
- return ws.syncEngin(securityToken);
+ ws.syncEngin(securityToken);
} else {
throw new SecurityException(_("user %s can't sync search engine",
getUserId(securityToken)));
@@ -743,7 +681,7 @@
Wikitty group;
if (appAdminGroupId == null) {
// 1er fois, on le recherche
- group = ws.findByCriteria(securityToken, Search.query().eq(
+ group = ws.findByCriteria(securityToken, null, Search.query().eq(
WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME,
WikittySecurityHelper.WIKITTY_APPADMIN_GROUP_NAME).criteria());
// group peut-etre null s'il n'existe pas
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyStorage.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyStorage.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyStorage.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -48,7 +48,7 @@
*
* @return information usefull for client side update data
*/
- public UpdateResponse store(WikittyTransaction transaction, Collection<Wikitty> wikitties, boolean force);
+ public WikittyServiceEvent store(WikittyTransaction transaction, Collection<Wikitty> wikitties, boolean force);
/**
* Return true if id exists in storage.
@@ -89,7 +89,7 @@
* @return delete response
* @throws WikittyException If id is not valid or don't exist.
*/
- public UpdateResponse delete(WikittyTransaction transaction, Collection<String> idList) throws WikittyException;
+ public WikittyServiceEvent delete(WikittyTransaction transaction, Collection<String> idList) throws WikittyException;
/**
* Scan all wikitties with specific scanner, even if the wikitty is deleted.
@@ -97,7 +97,7 @@
* @param transaction transaction
* @param scanner scanner
*/
- void scanWikitties(WikittyTransaction transaction, Scanner scanner);
+ public void scanWikitties(WikittyTransaction transaction, Scanner scanner);
/**
* Call each time wikitty is scan.
@@ -111,6 +111,6 @@
*
* @param transaction transaction
*/
- public void clear(WikittyTransaction transaction);
+ public WikittyServiceEvent clear(WikittyTransaction transaction);
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -743,7 +743,8 @@
String oldVersion = oldExt.getVersion();
if (WikittyUtil.versionGreaterThan(newVersion, oldVersion)) {
- wikittyService.storeExtension(securityToken, Arrays.asList(ext));
+ wikittyService.storeExtension(
+ securityToken, null, Arrays.asList(ext));
upgradeData = true;
}
}
@@ -751,7 +752,8 @@
if (upgradeData) {
String wikittyId = wikitty.getId();
- result = wikittyService.restore(securityToken, wikittyId);
+ result = WikittyServiceEnhanced.restore(
+ wikittyService, securityToken, wikittyId);
}
return result;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportCSV.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportCSV.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportCSV.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -177,7 +177,7 @@
// restore works (database) but solr criteria won't
List<Wikitty> wikitties = ws.restore(securityToken, transaction, Collections.singletonList(multiplesValue));
- if ( wikitties != null && wikitties.size() == 1) {
+ if ( wikitties != null && wikitties.size() == 1 && wikitties.get(0) != null) {
currentWikitty.addToField(extName, fieldName, multiplesValue);
}
}
@@ -191,7 +191,7 @@
// restore works (database) but solr criteria won't
List<Wikitty> wikitties = ws.restore(securityToken, transaction, Collections.singletonList(value));
- if ( wikitties != null && wikitties.size() == 1) {
+ if ( wikitties != null && wikitties.size() == 1 && wikitties.get(0) != null) {
currentWikitty.setField(extName, fieldName, value);
}
}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -26,6 +26,7 @@
import java.text.ParseException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
@@ -153,7 +154,7 @@
Wikitty w = createWikitty( wValue, EXTNAME, EXT_TEST );
result.add( w );
}
- ws.store(null, result);
+ ws.store(null, null, result, false);
return result;
}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -163,7 +163,7 @@
"7ca86742-5957-4659-b12f-4915cbef9193",
"77d7640c-573d-421c-a7e9-9b70bd025983"
};
- List<Wikitty> wikitties = ws.restore(null, Arrays.asList(ids));
+ List<Wikitty> wikitties = ws.restore(null, null, Arrays.asList(ids));
assertEquals(3, wikitties.size());
}
}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/PerformanceBenchMark.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/PerformanceBenchMark.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/PerformanceBenchMark.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -26,6 +26,7 @@
package org.nuiton.wikitty.conform;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Random;
@@ -77,7 +78,7 @@
FieldType fieldType = new FieldType(FieldType.TYPE.STRING, 1, 1);
extension.addField("field" + i, fieldType);
}
- wikittyService.storeExtension(null, extension);
+ wikittyService.storeExtension(null, null, Arrays.asList(extension));
Collection<Wikitty> wikitties = new ArrayList<Wikitty>(WIKITTY_SIZE);
for (int i = 0; i < WIKITTY_SIZE; i++) {
@@ -89,7 +90,7 @@
wikitties.add(wikitty);
}
long start = System.currentTimeMillis();
- wikittyService.store(null, wikitties);
+ wikittyService.store(null, null, wikitties, false);
long end = System.currentTimeMillis();
log.info("[Performance" + fieldSize + "] Write times : " + ((end - start) / 1000) + "s");
@@ -97,7 +98,7 @@
start = System.currentTimeMillis();
for (int i = 0; i < WIKITTY_SIZE; i++) {
int nextInt = random.nextInt(WIKITTY_SIZE);
- wikittyService.restore(null, "Performance" + fieldSize + "id" + nextInt);
+ wikittyService.restore(null, null, Arrays.asList("Performance" + fieldSize + "id" + nextInt));
}
end = System.currentTimeMillis();
log.info("[Performance" + fieldSize + "] Read times : " + ((end - start) / 1000) + "s");
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -37,6 +37,7 @@
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyExtension;
import org.nuiton.wikitty.WikittyImpl;
+import org.nuiton.wikitty.WikittyServiceEnhanced;
import org.nuiton.wikitty.search.Search;
public class SearchTest extends AbstractTestConformance {
@@ -83,72 +84,72 @@
w.setField(ext.getName(), "birth", "19/04/1968 15:12");
wikitties.add( w );
- ws.store(null, wikitties);
+ ws.store(null, null, wikitties, false);
// Testing search on a date criteria
Criteria criteria = Search.query()
.gt("testExt.birth", "19/04/1968 15:00")
.criteria();
- PagedResult<String> result = ws.findAllByCriteria(null, criteria);
+ PagedResult<String> result = ws.findAllByCriteria(null, null, criteria);
List<String> found = result.getAll();
assertEquals(1, found.size());
- Wikitty wikittyFound = ws.restore(null, found.get(0));
+ Wikitty wikittyFound = WikittyServiceEnhanced.restore(ws, null, found.get(0));
log.info( wikittyFound.getFieldAsString(ext.getName(), "birth") );
// Testing search on a date criteria
criteria = Search.query()
.ge("testExt.birth", "19/04/1968")
.criteria();
- result = ws.findAllByCriteria(null, criteria);
+ result = ws.findAllByCriteria(null, null, criteria);
found = result.getAll();
assertEquals(2, found.size());
- wikittyFound = ws.restore(null, found.get(0));
+ wikittyFound = WikittyServiceEnhanced.restore(ws, null, found.get(0));
log.info( wikittyFound.getFieldAsString(ext.getName(), "birth") );
criteria = Search.query()
.eq("testExt.name", "Guillaume")
.criteria();
- result = ws.findAllByCriteria(null, criteria);
+ result = ws.findAllByCriteria(null, null, criteria);
found = result.getAll();
assertEquals(1, found.size());
- wikittyFound = ws.restore(null, found.get(0));
+ wikittyFound = WikittyServiceEnhanced.restore(ws, null, found.get(0));
log.info( wikittyFound.getFieldAsString(ext.getName(), "name") );
criteria = Search.query()
.eq("testExt.age", "125")
.criteria();
- result = ws.findAllByCriteria(null, criteria);
+ result = ws.findAllByCriteria(null, null, criteria);
found = result.getAll();
assertEquals(1, found.size());
- wikittyFound = ws.restore(null, found.get(0));
+ wikittyFound = WikittyServiceEnhanced.restore(ws, null, found.get(0));
log.info( wikittyFound.getFieldAsString(ext.getName(), "name") );
criteria = Search.query()
.gt("testExt.age", "10")
.criteria();
- result = ws.findAllByCriteria(null, criteria);
+ result = ws.findAllByCriteria(null, null, criteria);
found = result.getAll();
assertEquals(2, found.size());
- wikittyFound = ws.restore(null, found.get(0));
+ wikittyFound = WikittyServiceEnhanced.restore(ws, null, found.get(0));
log.info( wikittyFound.getFieldAsString(ext.getName(), "name") );
- wikittyFound = ws.restore(null, found.get(1));
+ wikittyFound = WikittyServiceEnhanced.restore(ws, null, found.get(1));
log.info( wikittyFound.getFieldAsString(ext.getName(), "name") );
Wikitty exemple = new WikittyImpl();
exemple.addExtension(ext);
exemple.setField(ext.getName(), "name", "Guillaume");
exemple.setField(ext.getName(), "age", "27");
- result = ws.findAllByCriteria(null, Search.query(exemple).criteria() );
+ result = ws.findAllByCriteria(null, null, Search.query(exemple).criteria() );
found = result.getAll();
assertEquals(1, found.size());
- wikittyFound = ws.restore(null, found.get(0));
+ wikittyFound = WikittyServiceEnhanced.restore(ws, null, found.get(0));
log.info( wikittyFound.getFieldAsString(ext.getName(), "name") );
exemple = new WikittyImpl();
exemple.addExtension(ext);
exemple.setField(ext.getName(), "name", "Guillaume");
exemple.setField(ext.getName(), "age", "125");
- result = ws.findAllByCriteria(null, Search.query(exemple).criteria() );
+ result = ws.findAllByCriteria(null, null, Search.query(exemple).criteria() );
found = result.getAll();
assertEquals(0, found.size());
// log.info( found.get(0).getFieldAsString(ext.getName(), "name") );
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -51,7 +51,6 @@
import org.nuiton.wikitty.WikittyTree;
import org.nuiton.wikitty.WikittyTreeNode;
import org.nuiton.wikitty.WikittyTreeNodeImpl;
-import org.nuiton.wikitty.UpdateResponse;
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyExtension;
@@ -59,6 +58,8 @@
import org.nuiton.wikitty.WikittyLabelUtil;
import org.nuiton.wikitty.WikittyObsoleteException;
import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.WikittyServiceEnhanced;
+import org.nuiton.wikitty.WikittyServiceEvent;
import org.nuiton.wikitty.WikittyUtil;
import org.nuiton.wikitty.search.Element;
import org.nuiton.wikitty.search.Search;
@@ -71,8 +72,8 @@
public void testStoreRestoreBasics() throws Exception {
Wikitty w = createBasicWikitty();
String id = w.getId();
- ws.store(null, w);
- w = ws.restore(null, id);
+ ws.store(null, null, Collections.singletonList(w), false);
+ w = WikittyServiceEnhanced.restore(ws, null, id);
assertTrue(w.hasExtension(EXTNAME));
for ( int i = 0; i < 3; i++ ) {
assertTrue( w.hasField(EXTNAME, "fieldName" + i));
@@ -81,11 +82,11 @@
@Test
public void testExtensionMethod() throws Exception {
- ws.storeExtension(null, Arrays.asList(EXT_TEST));
+ ws.storeExtension(null, null, Collections.singletonList(EXT_TEST));
List<String> extIds = ws.getAllExtensionIds(null);
log.debug("extIds: " + extIds);
assertEquals(1, extIds.size());
- WikittyExtension ext = ws.restoreExtension(null, extIds.get(0));
+ WikittyExtension ext = ws.restoreExtension(null, null, extIds.get(0));
assertEquals(EXT_TEST.getName(), ext.getName());
assertEquals(EXT_TEST.getVersion(), ext.getVersion());
assertEquals(EXT_TEST, ext);
@@ -93,12 +94,12 @@
@Test
public void testExtensionRequires() throws Exception {
- ws.storeExtension(null, Arrays.asList(EXT_REQUIRED, EXT_REQUIRES));
+ ws.storeExtension(null, null, Arrays.asList(EXT_REQUIRED, EXT_REQUIRES));
List<String> extIds = ws.getAllExtensionsRequires(null, EXTREQUIRED);
log.debug("extIds: " + extIds);
assertEquals(1, extIds.size());
- WikittyExtension ext = ws.restoreExtension(null, extIds.get(0));
+ WikittyExtension ext = ws.restoreExtension(null, null, extIds.get(0));
assertEquals(EXT_REQUIRES.getName(), ext.getName());
assertEquals(EXT_REQUIRES.getVersion(), ext.getVersion());
assertEquals(EXT_REQUIRES, ext);
@@ -129,9 +130,9 @@
wikitties.add( w );
ids.add( w.getId() );
}
- ws.store(null, wikitties);
+ ws.store(null, null, wikitties, false);
- wikitties = ws.restore(null, ids);
+ wikitties = ws.restore(null, null, ids);
int wIndex = 0;
for ( String wValue : wValues ) {
Wikitty w = wikitties.get(wIndex);
@@ -169,7 +170,7 @@
Wikitty w = null;
// should be ignored (?)
try {
- ws.store(null, w);
+ ws.store(null, null, Collections.singletonList(w), false);
fail("store(null) Must throw an exception !");
} catch (Exception e) {
// OK !
@@ -177,8 +178,8 @@
w = new WikittyImpl();
String id = w.getId();
- ws.store(null, w);
- w = ws.restore(null, id);
+ ws.store(null, null, Collections.singletonList(w), false);
+ w = WikittyServiceEnhanced.restore(ws, null, id);
assertEquals( id, w.getId() );
}
@@ -191,12 +192,12 @@
"String other[0-n] unique=true notNull=true"
));
- ws.storeExtension(null, Arrays.asList(ext));
+ ws.storeExtension(null, null, Collections.singletonList(ext));
Wikitty w = new WikittyImpl();
w.addExtension(ext);
try {
- ws.store(null, w);
+ ws.store(null, null, Collections.singletonList(w), false);
Assert.fail("not null contraint don't work on String");
} catch (WikittyException eee) {
eee.printStackTrace();
@@ -205,7 +206,7 @@
w.setField("TestConstraint", "id", "toto");
try {
- ws.store(null, w);
+ ws.store(null, null, Collections.singletonList(w), false);
Assert.fail("not null contraint don't work in Collection");
} catch (WikittyException eee) {
eee.printStackTrace();
@@ -213,18 +214,18 @@
}
w.addToField("TestConstraint", "other", "titi");
- ws.store(null, w);
+ ws.store(null, null, Collections.singletonList(w), false);
w.addToField("TestConstraint", "ext", "tata");
w.addToField("TestConstraint", "ext", "titi");
- ws.store(null, w);
+ ws.store(null, null, Collections.singletonList(w), false);
- Wikitty w2 = ws.restore(null, w.getId());
+ Wikitty w2 = WikittyServiceEnhanced.restore(ws, null, w.getId());
w2.addToField("TestConstraint", "ext", "tata"); // tata ne doit pas s'ajouter
w2.addToField("TestConstraint", "ext", "toto");
- ws.store(null, w2);
- Wikitty w3 = ws.restore(null, w.getId());
+ ws.store(null, null, Collections.singletonList(w2), false);
+ Wikitty w3 = WikittyServiceEnhanced.restore(ws, null, w.getId());
HashSet set = new HashSet(Arrays.asList("tata", "titi", "toto"));
assertEquals(set, w3.getFieldAsSet("TestConstraint", "ext", String.class));
@@ -255,7 +256,7 @@
Wikitty w = createWikitty( wValue, EXTNAME, EXT_TEST );
wikitties.add( w );
}
- ws.store(null, wikitties);
+ ws.store(null, null, wikitties, false);
// search test
Wikitty w = new WikittyImpl();
@@ -263,10 +264,10 @@
w.setField(EXT_TEST.getName(), "fieldName1", "003309");
Criteria criteria = Search.query(w).criteria()
.addSortDescending(EXT_TEST.getName() + ".fieldName0");
- PagedResult<String> resultFind = ws.findAllByCriteria(null, criteria);
+ PagedResult<String> resultFind = ws.findAllByCriteria(null, null, criteria);
assertEquals(2, resultFind.size());
- List<Wikitty> wikittyFind = ws.restore(null, resultFind.getAll());
+ List<Wikitty> wikittyFind = ws.restore(null, null, resultFind.getAll());
assertEquals(wikitties.subList(0, 2), wikittyFind);
}
@@ -300,7 +301,7 @@
Wikitty w = createWikitty( wValue, EXTNAME, EXT_TEST );
wikitties.add( w );
}
- ws.store(null, wikitties);
+ ws.store(null, null, wikitties, false);
// search test
Wikitty w = new WikittyImpl();
@@ -310,7 +311,7 @@
.setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS)
.addFacetField(EXT_TEST.getName()+".fieldName0")
.addFacetField(EXT_TEST.getName()+".fieldName1");
- PagedResult<String> resultFind = ws.findAllByCriteria(null, criteria);
+ PagedResult<String> resultFind = ws.findAllByCriteria(null, null, criteria);
List<String> facetNames = new ArrayList<String>(resultFind.getFacetNames());
Collections.sort(facetNames);
@@ -352,7 +353,7 @@
for( Wikitty w : wikitties ) {
oldIdVersion.put(w.getId(), w.getVersion());
}
- UpdateResponse response = ws.store(null, wikitties);
+ WikittyServiceEvent response = ws.store(null, null, wikitties, false);
for (Wikitty w : wikitties) {
response.update(w);
String v1 = w.getVersion();
@@ -367,7 +368,7 @@
w.addExtension(EXT_TEST);
w.setField(EXT_TEST.getName(), "fieldName0", "chaiseICI");
Criteria criteria = Search.query(w).criteria();
- Wikitty resultFind = ws.findByCriteria(null, criteria);
+ Wikitty resultFind = ws.findByCriteria(null, null, criteria);
Wikitty wikittySource = wikitties.get(1);
assertEquals(w.getFieldAsString(EXT_TEST.getName(), "fieldName0"),
@@ -388,17 +389,18 @@
// test to find deleted wikitty
// test if solr index is coherent with database
Criteria criteria1 = Search.query().eq(Element.ELT_ID, wikittySource.getId()).criteria();
- Wikitty searchedWikitty1 = ws.findByCriteria(null, criteria1);
+ Wikitty searchedWikitty1 = ws.findByCriteria(null, null, criteria1);
Assert.assertNotNull(searchedWikitty1);
- ws.delete(null, wikittySource.getId());
- Wikitty deletedObject = ws.restore(null, wikittySource.getId());
+ ws.delete(null, Collections.singletonList(wikittySource.getId()));
+ Wikitty deletedObject =
+ WikittyServiceEnhanced.restore(ws, null, wikittySource.getId());
assertNull(deletedObject);
// test to find deleted wikitty
// test if solr index is coherent with database
Criteria criteria2 = Search.query().eq(Element.ELT_ID, wikittySource.getId()).criteria();
- Wikitty searchedWikitty2 = ws.findByCriteria(null, criteria2);
+ Wikitty searchedWikitty2 = ws.findByCriteria(null, null, criteria2);
Assert.assertNull(searchedWikitty2);
}
@@ -462,7 +464,7 @@
// leaf.addChild( subLeaf.getWikittyId() );
}
}
- ws.store(null, wikittyNodes); // store treeNodes.
+ ws.store(null, null, wikittyNodes, false); // store treeNodes.
Wikitty table = wikitties.get(0);
Wikitty chaise = wikitties.get(1);
@@ -487,8 +489,8 @@
Criteria criteria = Search.query(node.getWikitty()).criteria()
.setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS);
- List<String> wikittiesId = ws.findAllByCriteria(null, criteria).getAll();
- List<Wikitty> wikitties = ws.restore(null, wikittiesId);
+ List<String> wikittiesId = ws.findAllByCriteria(null, null, criteria).getAll();
+ List<Wikitty> wikitties = ws.restore(null, null, wikittiesId);
for ( Wikitty child : wikitties ) {
if (!child.hasExtension(WikittyTreeNode.EXT_WIKITTYTREENODE)) {
continue;
@@ -502,7 +504,7 @@
fail( "Unable to find node " + nodeName + " inside " + currentNode.getName() );
}
currentNode.addAttachment(wikitty.getId());
- ws.store(null, currentNode.getWikitty());
+ ws.store(null, null, Collections.singletonList(currentNode.getWikitty()), false);
}
/**
@@ -555,23 +557,23 @@
Wikitty myWikitty = new WikittyImpl();
myWikitty.addExtension(WikittyTreeNodeImpl.extensions);
myWikitty.setField(WikittyTreeNode.EXT_WIKITTYTREENODE, WikittyTreeNode.FIELD_WIKITTYTREENODE_NAME, "name");
- ws.store(null, myWikitty);
+ ws.store(null, null, Collections.singletonList(myWikitty), false);
Assert.assertEquals("1.0", myWikitty.getVersion());
// store 2 : no modification
- ws.store(null, myWikitty);
+ ws.store(null, null, Collections.singletonList(myWikitty), false);
Assert.assertEquals("1.0", myWikitty.getVersion());
// store 3 : modification
myWikitty.setField(WikittyTreeNode.EXT_WIKITTYTREENODE, WikittyTreeNode.FIELD_WIKITTYTREENODE_NAME, "new name");
- ws.store(null, myWikitty);
+ ws.store(null, null, Collections.singletonList(myWikitty), false);
Assert.assertEquals("2.0", myWikitty.getVersion());
// store 4 : new wikitty with same wikitty id (obsolete)
Wikitty myNewWikitty = new WikittyImpl(myWikitty.getId());
myWikitty.setField(WikittyTreeNode.EXT_WIKITTYTREENODE, WikittyTreeNode.FIELD_WIKITTYTREENODE_NAME, "new wikitty");
try {
- ws.store(null, myNewWikitty);
+ ws.store(null, null, Collections.singletonList(myNewWikitty), false);
Assert.fail("Test must throw WikittyObsoleteException");
}
catch (WikittyObsoleteException ex) {
@@ -581,12 +583,12 @@
}
// store 4 : same but with force (increased by force)
- ws.store(null, Collections.singletonList(myNewWikitty), true);
+ ws.store(null, null, Collections.singletonList(myNewWikitty), true);
Assert.assertEquals("3.0", myNewWikitty.getVersion());
// store 5 : fix version (not increased by force)
myNewWikitty.setVersion("11.0");
- ws.store(null, Collections.singletonList(myNewWikitty), true);
+ ws.store(null, null, Collections.singletonList(myNewWikitty), true);
Assert.assertEquals("11.0", myNewWikitty.getVersion());
}
@@ -600,16 +602,18 @@
Wikitty myWikitty = new WikittyImpl();
myWikitty.addExtension(WikittyTreeNodeImpl.extensions);
myWikitty.setField(WikittyTreeNode.EXT_WIKITTYTREENODE, WikittyTreeNode.FIELD_WIKITTYTREENODE_NAME, "name");
- ws.store(null, myWikitty);
+ ws.store(null, null, Collections.singletonList(myWikitty), false);
// delete
- ws.delete(null, myWikitty.getId());
- Wikitty restoredWikitty = ws.restore(null, myWikitty.getId());
+ ws.delete(null, Collections.singletonList(myWikitty.getId()));
+ Wikitty restoredWikitty =
+ WikittyServiceEnhanced.restore(ws, null, myWikitty.getId());
Assert.assertNull(restoredWikitty);
// store again
- ws.store(null, myWikitty);
- restoredWikitty = ws.restore(null, myWikitty.getId());
+ ws.store(null, null, Collections.singletonList(myWikitty), false);
+ restoredWikitty =
+ WikittyServiceEnhanced.restore(ws, null, myWikitty.getId());
Assert.assertNotNull(restoredWikitty);
}
}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/importexport/ImportExportCSVTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/importexport/ImportExportCSVTest.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/importexport/ImportExportCSVTest.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -176,15 +176,15 @@
// test extension support
Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, extensionTag.getName()).criteria();
- PagedResult<String> pagedResult = ws.findAllByCriteria(null, criteria);
+ PagedResult<String> pagedResult = ws.findAllByCriteria(null, null, criteria);
Assert.assertEquals(1, pagedResult.getNumFound());
// test normal import
Criteria criteria2 = Search.query().eq(extensionClient.getName() + ".name", "Toto").criteria();
- PagedResult<String> pagedResult2 = ws.findAllByCriteria(null, criteria2);
+ PagedResult<String> pagedResult2 = ws.findAllByCriteria(null, null, criteria2);
Assert.assertEquals(1, pagedResult2.getNumFound());
- // test non existant wikitty tree node childreen deletion
+ // import attachment id that not exist, must be not imported
Criteria criteria3 = Search.query().eq(WikittyTreeNode.FQ_FIELD_WIKITTYTREENODE_NAME, "MyTreeNode").criteria();
PagedResult<WikittyTreeNode> pagedResult3 = proxy.findAllByCriteria(WikittyTreeNode.class, criteria3);
Assert.assertEquals(1, pagedResult3.getNumFound());
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/AbstractWikittyServiceTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/AbstractWikittyServiceTest.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/AbstractWikittyServiceTest.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -31,11 +31,12 @@
import org.nuiton.wikitty.WikittyExtension;
import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyService;
+import org.nuiton.wikitty.WikittyServiceEnhanced;
public abstract class AbstractWikittyServiceTest {
/** a wikitty service (in memory) with a cache */
- protected WikittyService service;
+ protected WikittyServiceEnhanced service;
protected static final String EXT_NAME = "myextension";
protected static final String FIELD_NAME = "myfield";
@@ -45,19 +46,30 @@
protected WikittyExtension extension;
/** a wikitty with extension */
- protected Wikitty aWikitty;
+ private Wikitty aWikitty ;
protected String token;
-
+
+ public void setService(WikittyService service) {
+ this.service = new WikittyServiceEnhanced(service);
+ }
+
/** create a service, an extension, a wikitty, login, and store wikitty */
@Before
public void setUp() throws Exception {
extension = ExtensionFactory.create(EXT_NAME, "1")
.addField(FIELD_NAME, TYPE.STRING)
.extension();
- aWikitty = new WikittyImpl();
- aWikitty.addExtension(extension);
- aWikitty.setField(EXT_NAME, FIELD_NAME, VALUE);
}
+ public Wikitty getaWikitty() {
+ if (aWikitty == null) {
+ aWikitty = new WikittyImpl();
+ aWikitty.addExtension(extension);
+ aWikitty.setField(EXT_NAME, FIELD_NAME, VALUE);
+ }
+ return aWikitty;
+ }
+
+
}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -28,6 +28,7 @@
import static org.junit.Assert.assertNotSame;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Properties;
@@ -42,15 +43,15 @@
@Before
public void setUpWikittyServiceCachedTest() {
- service = new WikittyServiceCached(new WikittyServiceInMemory());
+ setService(new WikittyServiceCached(new WikittyServiceInMemory()));
token = service.login(null, null);
- service.store(token, aWikitty);
+ service.store(token, null, Collections.singletonList(getaWikitty()), false);
}
/** setting a field value doesn't corrupt cache */
@Test
public void testRestore() throws Exception {
- Wikitty anotherWikitty = service.restore(token, aWikitty.getId());
+ Wikitty anotherWikitty = service.restore(token, getaWikitty().getId());
// we set the value of a field
anotherWikitty.setField(EXT_NAME, FIELD_NAME, "myothervalue");
@@ -68,9 +69,9 @@
public void testRestoreMultipleIds() throws Exception {
// now, let's do the same test, just by using others restore() available
List<String> idsToRestore = new ArrayList<String>();
- idsToRestore.add(aWikitty.getId());
+ idsToRestore.add(getaWikitty().getId());
- List<Wikitty> otherWikitties = service.restore(token, idsToRestore);
+ List<Wikitty> otherWikitties = service.restore(token, null, idsToRestore);
Wikitty anotherWikitty = otherWikitties.get(0);
// we set the value of a field
@@ -78,7 +79,7 @@
// now let's suppose, the user cancel its modification
// we don't have call store()
- otherWikitties = service.restore(token, idsToRestore);
+ otherWikitties = service.restore(token, null, idsToRestore);
anotherWikitty = otherWikitties.get(0);
// the remaining wikitty should hold old value
@@ -92,12 +93,12 @@
Properties props = new Properties();
props.setProperty(WikittyServiceCached.WIKITTY_CACHE_ALLWAYS_RESTORE_COPIES_POLICY_OPTION, "true");
- service = new WikittyServiceCached(new WikittyServiceInMemory(), props);
+ setService(new WikittyServiceCached(new WikittyServiceInMemory(), props));
token = service.login(null, null);
- service.store(token, aWikitty);
+ service.store(token, null, Collections.singletonList(getaWikitty()), false);
// restoring two times the same wikitty should produces two different copies
- Wikitty anotherWikitty = service.restore(token, aWikitty.getId());
+ Wikitty anotherWikitty = service.restore(token, getaWikitty().getId());
Wikitty yetAnotherWikitty = service.restore(token, anotherWikitty.getId());
assertEquals(anotherWikitty, yetAnotherWikitty);
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -24,6 +24,7 @@
*/
package org.nuiton.wikitty.layers;
+import java.util.Collections;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -56,7 +57,7 @@
private static final Log log = LogFactory.getLog(WikittyServiceSecurityTest.class);
- protected WikittyServiceSecurity securityService;
+// protected WikittyServiceSecurity securityService;
protected String noRightsToken;
protected String readerToken;
@@ -68,7 +69,7 @@
public void setUpWikittyServiceSecurityTest() {
WikittyService inMemoryService = new WikittyServiceInMemory();
- securityService = new WikittyServiceSecurity(inMemoryService);
+ WikittyServiceSecurity securityService = new WikittyServiceSecurity(inMemoryService);
/** /
// FIXME 20101005 bleny implementation should be able to allow
@@ -76,12 +77,12 @@
securityService = new WikittyServiceSecurity(securityService);
/**/
- service = securityService;
+ setService(securityService);
// token = service.login(APPADMIN_LOGIN, APPADMIN_PASSWORD);
token = null;
- WikittyProxy proxy = new WikittyProxy(securityService);
+ WikittyProxy proxy = new WikittyProxy(service);
proxy.setSecurityToken(token);
WikittyUser anonymous = new WikittyUserImpl();
@@ -107,9 +108,8 @@
WikittyUser owner = new WikittyUserImpl();
owner.setLogin("owner");
owner.setPassword("");
- proxy.store(owner);
+ owner = proxy.store(owner);
-
Wikitty authorizations = WikittySecurityHelper.createExtensionAuthorisation(owner, extension);
WikittyAuthorisationHelper.addReader(authorizations, reader.getWikittyId());
WikittyAuthorisationHelper.addWriter(authorizations, writer.getWikittyId());
@@ -118,8 +118,8 @@
log.debug("initial wikitty rights" + authorizations);
- securityService.storeExtension(token, extension);
- securityService.store(token, authorizations);
+ service.storeExtension(token, null, Collections.singletonList(extension));
+ service.store(token, null, Collections.singletonList(authorizations), false);
// Wikitty extensionAuthorisation =
@@ -152,16 +152,16 @@
// try to store with invalid token
String invalidToken = WikittyUtil.genSecurityTokenId();
try {
- service.store(invalidToken, aWikitty);
+ service.store(invalidToken, getaWikitty());
fail();
} catch (SecurityException e) {}
// now storing the wikitty for next tests
- service.store(readerToken, aWikitty);
+ service.store(readerToken, getaWikitty());
// try to make operations on the stored wikitty with a bad token
try {
- service.restore(invalidToken, aWikitty.getId());
+ service.restore(invalidToken, getaWikitty().getId());
fail();
} catch (SecurityException e) {}
@@ -173,7 +173,7 @@
// now try to make a valid token invalid
service.logout(readerToken);
try {
- service.store(readerToken, aWikitty);
+ service.store(readerToken, null, Collections.singletonList(getaWikitty()), false);
fail();
} catch (SecurityException e) {}
}
@@ -182,20 +182,20 @@
@Test
public void testReaderRightOnWikitty() {
- aWikitty.addExtension(WikittyAuthorisationAbstract.extensionWikittyAuthorisation);
- WikittyAuthorisation auth = new WikittyAuthorisationImpl(aWikitty);
+ getaWikitty().addExtension(WikittyAuthorisationAbstract.extensionWikittyAuthorisation);
+ WikittyAuthorisation auth = new WikittyAuthorisationImpl(getaWikitty());
- WikittyProxy proxy = new WikittyProxy(securityService);
+ WikittyProxy proxy = new WikittyProxy(service);
String readerId = WikittySecurityHelper.getUserWikittyId(proxy, "reader");
auth.clearReader();
auth.addReader(readerId);
- log.debug("will store wikitty" + aWikitty);
- service.store(ownerToken, aWikitty);
+ log.debug("will store wikitty" + getaWikitty());
+ service.store(ownerToken, null, Collections.singletonList(getaWikitty()), false);
try {
- Wikitty restoredWikitty = service.restore(null, aWikitty.getId());
+ Wikitty restoredWikitty = service.restore(null, getaWikitty().getId());
log.debug("restored wikitty is " + restoredWikitty);
fail("an exception should have been raised");
} catch (SecurityException e) {
@@ -205,11 +205,11 @@
@Test
public void testWriterRightOnWikitty() {
- aWikitty.addExtension(WikittyAuthorisationAbstract.extensionWikittyAuthorisation);
- WikittyAuthorisation auth = new WikittyAuthorisationImpl(aWikitty);
- service.store(ownerToken, aWikitty);
+ getaWikitty().addExtension(WikittyAuthorisationAbstract.extensionWikittyAuthorisation);
+ WikittyAuthorisation auth = new WikittyAuthorisationImpl(getaWikitty());
+ service.store(ownerToken, null, Collections.singletonList(getaWikitty()), false);
- WikittyProxy proxy = new WikittyProxy(securityService);
+ WikittyProxy proxy = new WikittyProxy(service);
String adminId = WikittySecurityHelper.getUserWikittyId(proxy, "admin");
auth.clearReader();
@@ -217,16 +217,16 @@
auth.clearAdmin();
auth.addAdmin(adminId);
- log.debug("will store wikitty" + aWikitty);
+ log.debug("will store wikitty" + getaWikitty());
try {
- service.store(writerToken, aWikitty);
+ service.store(writerToken, null, Collections.singletonList(getaWikitty()), false);
fail("an exception should have been raised");
} catch (SecurityException e) {
log.info("raised exception : " + e);
}
- Wikitty restoredWikitty = service.restore(null, aWikitty.getId());
+ Wikitty restoredWikitty = service.restore(null, getaWikitty().getId());
log.debug("restored wikitty is " + restoredWikitty);
assertNotNull(restoredWikitty);
}
@@ -238,28 +238,28 @@
public void checkReaderRightOnExtension() {
try {
- service.store(noRightsToken, aWikitty);
+ service.store(noRightsToken, null, Collections.singletonList(getaWikitty()), false);
fail("an exception should have been raised");
} catch (SecurityException e) {
log.debug("creating a wikitty without rights", e);
}
try {
- service.restoreExtension(noRightsToken, extension.getId());
+ service.restoreExtension(noRightsToken, null, extension.getId());
} catch (SecurityException e) {
fail("no exception should have been raised");
}
try {
- service.restoreExtensionLastVersion(noRightsToken, extension.getName());
+ service.restoreExtensionLastVersion(noRightsToken, null, extension.getName());
} catch (SecurityException e) {
fail("no exception should have been raised");
}
try {
- service.store(readerToken, aWikitty);
- service.restoreExtension(readerToken, extension.getId());
- service.restoreExtensionLastVersion(readerToken, extension.getName());
+ service.store(readerToken, null, Collections.singletonList(getaWikitty()), false);
+ service.restoreExtension(readerToken, null, extension.getId());
+ service.restoreExtensionLastVersion(readerToken, null, extension.getName());
} catch (SecurityException e) {
fail("an exception has been raised");
}
@@ -271,16 +271,16 @@
FieldType fieldType = new FieldType(FieldType.TYPE.STRING, 0, 1);
- service.restoreExtensionLastVersion(writerToken, extension.getName());
+ service.restoreExtensionLastVersion(writerToken, null, extension.getName());
extension.addField("new_field", fieldType);
try {
- service.storeExtension(readerToken, extension);
+ service.storeExtension(readerToken, null, Collections.singletonList(extension));
fail("an exception should have been raised");
} catch (SecurityException e) {}
try {
- service.storeExtension(writerToken, extension);
+ service.storeExtension(writerToken, null, Collections.singletonList(extension));
} catch (SecurityException e) {
fail("an exception has been raised");
}
@@ -290,7 +290,7 @@
public void checkAdminRightOnExtension() {
// TODO 20100923 bleny check that store with no sufficient rights fail
- WikittyProxy adminProxy = new WikittyProxy(securityService);
+ WikittyProxy adminProxy = new WikittyProxy(service);
adminProxy.setSecurityToken(adminToken);
Wikitty extensionAuthorisation =
WikittySecurityHelper.restoreExtensionAuthorisation(adminProxy, extension);
@@ -311,11 +311,11 @@
log.debug("will store rights " + extensionAuthorisation);
try {
- securityService.store(writerToken, extensionAuthorisation);
+ service.store(writerToken, null, Collections.singletonList(extensionAuthorisation), false);
fail("an exception should habe raised");
} catch (SecurityException e) {}
- securityService.store(adminToken, extensionAuthorisation);
+ service.store(adminToken, null, Collections.singletonList(extensionAuthorisation), false);
// now, restore and check that rights are preserved
extensionAuthorisation =
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -32,6 +32,7 @@
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Date;
import org.junit.Before;
@@ -41,6 +42,7 @@
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyExtension;
import org.nuiton.wikitty.WikittyImpl;
+import org.nuiton.wikitty.WikittyServiceEnhanced;
import org.nuiton.wikitty.WikittyServiceInMemory;
import org.nuiton.wikitty.WikittyUtil;
import org.nuiton.wikitty.api.AbstractTestApi;
@@ -84,11 +86,11 @@
ext
);
String id = w.getId();
- wikittyService.store(null, w);
+ wikittyService.store(null, null, Collections.singletonList(w), false);
((WikittyServiceInMemory)wikittyService).saveToPersistenceFile();
wikittyService = new WikittyServiceInMemory( tempPersistFile );
- w = wikittyService.restore(null, id);
+ w = WikittyServiceEnhanced.restore(wikittyService, null, id);
assertTrue( w.hasField(extName, "fieldName0") );
assertEquals( 123, w.getFieldAsInt(extName, "fieldName0") );
assertTrue( w.hasField(extName, "fieldName1") );
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -1,6 +1,7 @@
package org.nuiton.wikitty.notification;
+import java.util.EnumSet;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Assert;
@@ -25,7 +26,7 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(WikittyServiceNotificationTest.class);
- protected WikittyServiceEvent.WikittyEventType lastEvent = null;
+ protected EnumSet<WikittyServiceEvent.WikittyEventType> lastEvent = null;
protected int nbEvent = 0;
/**
@@ -59,12 +60,13 @@
*/
protected void sendEvent(WikittyServiceNotifier wsn, boolean hasListener) throws Exception {
{
- WikittyServiceEvent event = new WikittyServiceEvent("test",
- WikittyServiceEvent.WikittyEventType.PUT_WIKITTY);
+ WikittyServiceEvent event = new WikittyServiceEvent("test");
+ event.addType(WikittyServiceEvent.WikittyEventType.PUT_WIKITTY);
wsn.processRemoteEvent(event);
wsn.getEventThread().waitFor(event.getTime());
if (hasListener) {
- Assert.assertEquals(WikittyServiceEvent.WikittyEventType.PUT_WIKITTY,
+ Assert.assertEquals(
+ EnumSet.of(WikittyServiceEvent.WikittyEventType.PUT_WIKITTY),
lastEvent);
} else {
Assert.assertEquals(null, lastEvent);
@@ -72,12 +74,13 @@
lastEvent = null;
}
{
- WikittyServiceEvent event = new WikittyServiceEvent("test",
- WikittyServiceEvent.WikittyEventType.REMOVE_WIKITTY);
+ WikittyServiceEvent event = new WikittyServiceEvent("test");
+ event.addType(WikittyServiceEvent.WikittyEventType.REMOVE_WIKITTY);
wsn.processRemoteEvent(event);
wsn.getEventThread().waitFor(event.getTime());
if (hasListener) {
- Assert.assertEquals(WikittyServiceEvent.WikittyEventType.REMOVE_WIKITTY,
+ Assert.assertEquals(
+ EnumSet.of(WikittyServiceEvent.WikittyEventType.REMOVE_WIKITTY),
lastEvent);
} else {
Assert.assertEquals(null, lastEvent);
@@ -85,12 +88,13 @@
lastEvent = null;
}
{
- WikittyServiceEvent event = new WikittyServiceEvent("test",
- WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY);
+ WikittyServiceEvent event = new WikittyServiceEvent("test");
+ event.addType(WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY);
wsn.processRemoteEvent(event);
wsn.getEventThread().waitFor(event.getTime());
if (hasListener) {
- Assert.assertEquals(WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY,
+ Assert.assertEquals(
+ EnumSet.of(WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY),
lastEvent);
} else {
Assert.assertEquals(null, lastEvent);
@@ -98,12 +102,13 @@
lastEvent = null;
}
{
- WikittyServiceEvent event = new WikittyServiceEvent("test",
- WikittyServiceEvent.WikittyEventType.PUT_EXTENSION);
+ WikittyServiceEvent event = new WikittyServiceEvent("test");
+ event.addType(WikittyServiceEvent.WikittyEventType.PUT_EXTENSION);
wsn.processRemoteEvent(event);
wsn.getEventThread().waitFor(event.getTime());
if (hasListener) {
- Assert.assertEquals(WikittyServiceEvent.WikittyEventType.PUT_EXTENSION,
+ Assert.assertEquals(
+ EnumSet.of(WikittyServiceEvent.WikittyEventType.PUT_EXTENSION),
lastEvent);
} else {
Assert.assertEquals(null, lastEvent);
@@ -111,12 +116,13 @@
lastEvent = null;
}
{
- WikittyServiceEvent event = new WikittyServiceEvent("test",
- WikittyServiceEvent.WikittyEventType.REMOVE_EXTENSION);
+ WikittyServiceEvent event = new WikittyServiceEvent("test");
+ event.addType(WikittyServiceEvent.WikittyEventType.REMOVE_EXTENSION);
wsn.processRemoteEvent(event);
wsn.getEventThread().waitFor(event.getTime());
if (hasListener) {
- Assert.assertEquals(WikittyServiceEvent.WikittyEventType.REMOVE_EXTENSION,
+ Assert.assertEquals(
+ EnumSet.of(WikittyServiceEvent.WikittyEventType.REMOVE_EXTENSION),
lastEvent);
} else {
Assert.assertEquals(null, lastEvent);
@@ -124,12 +130,13 @@
lastEvent = null;
}
{
- WikittyServiceEvent event = new WikittyServiceEvent("test",
- WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION);
+ WikittyServiceEvent event = new WikittyServiceEvent("test");
+ event.addType(WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION);
wsn.processRemoteEvent(event);
wsn.getEventThread().waitFor(event.getTime());
if (hasListener) {
- Assert.assertEquals(WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION,
+ Assert.assertEquals(
+ EnumSet.of(WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION),
lastEvent);
} else {
Assert.assertEquals(null, lastEvent);
@@ -146,7 +153,8 @@
@Override
public void putWikitty(WikittyServiceEvent event) {
nbEvent++;
- Assert.assertEquals(WikittyServiceEvent.WikittyEventType.PUT_WIKITTY,
+ Assert.assertEquals(
+ EnumSet.of(WikittyServiceEvent.WikittyEventType.PUT_WIKITTY),
event.getType());
lastEvent = event.getType();
}
@@ -154,7 +162,8 @@
@Override
public void removeWikitty(WikittyServiceEvent event) {
nbEvent++;
- Assert.assertEquals(WikittyServiceEvent.WikittyEventType.REMOVE_WIKITTY,
+ Assert.assertEquals(
+ EnumSet.of(WikittyServiceEvent.WikittyEventType.REMOVE_WIKITTY),
event.getType());
lastEvent = event.getType();
}
@@ -162,7 +171,8 @@
@Override
public void clearWikitty(WikittyServiceEvent event) {
nbEvent++;
- Assert.assertEquals(WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY,
+ Assert.assertEquals(
+ EnumSet.of(WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY),
event.getType());
lastEvent = event.getType();
}
@@ -170,7 +180,8 @@
@Override
public void putExtension(WikittyServiceEvent event) {
nbEvent++;
- Assert.assertEquals(WikittyServiceEvent.WikittyEventType.PUT_EXTENSION,
+ Assert.assertEquals(
+ EnumSet.of(WikittyServiceEvent.WikittyEventType.PUT_EXTENSION),
event.getType());
lastEvent = event.getType();
}
@@ -178,7 +189,8 @@
@Override
public void removeExtension(WikittyServiceEvent event) {
nbEvent++;
- Assert.assertEquals(WikittyServiceEvent.WikittyEventType.REMOVE_EXTENSION,
+ Assert.assertEquals(
+ EnumSet.of(WikittyServiceEvent.WikittyEventType.REMOVE_EXTENSION),
event.getType());
lastEvent = event.getType();
}
@@ -186,7 +198,8 @@
@Override
public void clearExtension(WikittyServiceEvent event) {
nbEvent++;
- Assert.assertEquals(WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION,
+ Assert.assertEquals(
+ EnumSet.of(WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION),
event.getType());
lastEvent = event.getType();
}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -25,6 +25,7 @@
package org.nuiton.wikitty.notification;
+import java.util.Date;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
@@ -64,13 +65,9 @@
// Envoi d'un message avec le transporter normal
XMPPNotifierTransporter xmpp = new XMPPNotifierTransporter(null, props);
- WikittyServiceEvent event = new WikittyServiceEvent("test",
- WikittyServiceEvent.WikittyEventType.PUT_WIKITTY);
- Set<String> ids = new HashSet<String>();
- ids.add("id1");
- ids.add("id2");
- ids.add("id3");
- event.setIds(ids);
+ WikittyServiceEvent event = new WikittyServiceEvent("test");
+ event.addRemoveDate("theId", new Date());
+
xmpp.sendMessage(event);
Modified: trunk/wikitty-hessian-client/src/main/java/org/wikitty/hessian/WikittyHessianFactory.java
===================================================================
--- trunk/wikitty-hessian-client/src/main/java/org/wikitty/hessian/WikittyHessianFactory.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-hessian-client/src/main/java/org/wikitty/hessian/WikittyHessianFactory.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 CodeLutin
+ * Copyright (C) 2010 CodeLutin, Chatellier Eric
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -22,23 +22,6 @@
* <http://www.gnu.org/licenses/lgpl-3.0.html>.
* #L%
*/
-/* *##%
- * Copyright (C) 2010 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 org.wikitty.hessian;
Modified: trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian/WikittyServiceHessianDelegator.java
===================================================================
--- trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian/WikittyServiceHessianDelegator.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian/WikittyServiceHessianDelegator.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 CodeLutin
+ * Copyright (C) 2010 CodeLutin, Chatellier Eric
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -22,23 +22,6 @@
* <http://www.gnu.org/licenses/lgpl-3.0.html>.
* #L%
*/
-/* *##%
- * Copyright (C) 2010 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 org.nuiton.wikitty.hessian;
Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java
===================================================================
--- trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -64,10 +64,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.wikitty.FieldType;
-import org.nuiton.wikitty.UpdateResponse;
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyExtension;
import org.nuiton.wikitty.WikittyExtensionStorage;
+import org.nuiton.wikitty.WikittyServiceEvent;
import org.nuiton.wikitty.WikittyTransaction;
import org.nuiton.wikitty.WikittyUtil;
@@ -129,9 +129,10 @@
}
@Override
- public UpdateResponse store(WikittyTransaction transaction,
+ public WikittyServiceEvent store(WikittyTransaction transaction,
Collection<WikittyExtension> extensions)
throws WikittyException {
+ WikittyServiceEvent result = new WikittyServiceEvent(this);
Connection connection = getConnection(conf);
try {
for (WikittyExtension ext : extensions) {
@@ -146,6 +147,7 @@
//if the data is not already recorded
if (!versionResultSet.next()) {
+ result.addExtension(ext);
doQuery(connection, conf.getProperty(QUERY_INSERT_EXTENSION_ADMIN),
ext.getId(),
ext.getName(),
@@ -167,8 +169,7 @@
// FIXME poussin 20100114 put that in abstractService after commit, because must remove cache only when tx is commited
// modification in extension, remove the cache
lastVersion = null;
- // nothing to put in result
- UpdateResponse result = new UpdateResponse();
+
return result;
} catch (SQLException eee) {
throw new WikittyException("Can't store extension", eee);
@@ -347,12 +348,14 @@
}
@Override
- public void clear(WikittyTransaction transaction) {
+ public WikittyServiceEvent clear(WikittyTransaction transaction) {
Connection connection = getConnection(conf);
try {
lastVersion = null;
doQuery(connection, conf.getProperty(QUERY_CLEAR_EXTENSION));
-
+ WikittyServiceEvent result = new WikittyServiceEvent(this);
+ result.addType(WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION);
+ return result;
} catch (Exception eee) {
throw new WikittyException("Can't clear all extension", eee);
} finally {
Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java
===================================================================
--- trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -77,13 +77,13 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.wikitty.FieldType;
-import org.nuiton.wikitty.UpdateResponse;
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyExtension;
import org.nuiton.wikitty.WikittyExtensionStorage;
import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyObsoleteException;
+import org.nuiton.wikitty.WikittyServiceEvent;
import org.nuiton.wikitty.WikittyStorage;
import org.nuiton.wikitty.WikittyTransaction;
import org.nuiton.wikitty.WikittyUtil;
@@ -168,11 +168,11 @@
}
@Override
- public UpdateResponse store(WikittyTransaction transaction,
+ public WikittyServiceEvent store(WikittyTransaction transaction,
Collection<Wikitty> wikitties, boolean force) throws WikittyException {
Connection connection = getConnection(conf);
try {
- UpdateResponse result = new UpdateResponse();
+ WikittyServiceEvent result = new WikittyServiceEvent(this);
for (Wikitty wikitty : wikitties) {
String query = String.format(conf.getProperty(QUERY_SELECT_TWO_WHERE),
COL_VERSION, COL_DELETION_DATE, TABLE_WIKITTY_ADMIN, COL_ID);
@@ -190,7 +190,7 @@
actualVersion = versionResultSet.getString(COL_VERSION);
deletionDate = versionResultSet.getDate(COL_DELETION_DATE);
}
-
+
// compute new version, but not change wikitty
String newVersion = null;
if (force) {
@@ -234,8 +234,6 @@
}
- result.addVersionUpdate(wikitty.getId(), newVersion);
-
for (WikittyExtension ext : wikitty.getExtensions()) {
extensionList += "," + ext.getId();
for (String fieldName : ext.getFieldNames()) {
@@ -290,6 +288,7 @@
wikitty.setVersion(newVersion);
wikitty.clearDirty();
+ result.addWikitty(wikitty);
}
return result;
@@ -383,10 +382,10 @@
}
@Override
- public UpdateResponse delete(WikittyTransaction transaction, Collection<String> ids) throws WikittyException {
+ public WikittyServiceEvent delete(WikittyTransaction transaction, Collection<String> ids) throws WikittyException {
Connection connection = getConnection(conf);
try {
- UpdateResponse result = new UpdateResponse();
+ WikittyServiceEvent result = new WikittyServiceEvent(this);
Date now = new Date();
for (String id : ids) {
@@ -401,7 +400,7 @@
}
// addVersionUpdate delete date field
doQuery(connection, conf.getProperty(QUERY_DELETE_WIKITTY_ADMIN), id);
- result.addDeletionDateUpdate(id, now);
+ result.addRemoveDate(id, now);
}
@@ -558,11 +557,13 @@
}
@Override
- public void clear(WikittyTransaction transaction) {
+ public WikittyServiceEvent clear(WikittyTransaction transaction) {
Connection connection = getConnection(conf);
try {
doQuery(connection, conf.getProperty(QUERY_CLEAR_WIKITTY));
-
+ WikittyServiceEvent result = new WikittyServiceEvent(this);
+ result.addType(WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY);
+ return result;
} catch (SQLException eee) {
throw new WikittyException("Can't clear wikitty data", eee);
} finally {
Modified: trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java
===================================================================
--- trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -54,7 +54,6 @@
import org.nuiton.wikitty.FieldType.TYPE;
import org.nuiton.wikitty.PagedResult;
import org.nuiton.wikitty.WikittyTreeNode;
-import org.nuiton.wikitty.UpdateResponse;
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyExtension;
@@ -531,7 +530,7 @@
}
@Override
- public UpdateResponse store(WikittyTransaction transaction, Collection<Wikitty> wikitties) {
+ public void store(WikittyTransaction transaction, Collection<Wikitty> wikitties) {
try {
solrResource.init();
ReindexChildTreeNode reindexChildTreeNode =
@@ -574,19 +573,14 @@
}
// Reindex child in tree node
- reindexChildTreeNode.reindex();
-
- // no specific result needed
- UpdateResponse result = new UpdateResponse();
- return result;
-
+ reindexChildTreeNode.reindex();
} catch (Exception eee) {
throw new WikittyException("Can't store wikitty", eee);
}
}
@Override
- public UpdateResponse delete(WikittyTransaction transaction, Collection<String> ids) throws WikittyException {
+ public void delete(WikittyTransaction transaction, Collection<String> ids) throws WikittyException {
try {
solrResource.init();
ReindexChildTreeNode reindexChildTreeNode =
@@ -609,11 +603,6 @@
// Reindex child in tree node
reindexChildTreeNode.reindex();
-
- // No specific result needed
- UpdateResponse result = new UpdateResponse();
- return result;
-
} catch (Exception eee) {
throw new WikittyException("Can't delete wikitty in index", eee);
}
Modified: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/AbstractTestSolr.java
===================================================================
--- trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/AbstractTestSolr.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/AbstractTestSolr.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -25,16 +25,16 @@
package org.nuiton.wikitty.solr.test;
import org.junit.Before;
-import org.nuiton.wikitty.WikittyService;
+import org.nuiton.wikitty.WikittyServiceEnhanced;
public abstract class AbstractTestSolr {
- protected WikittyService ws = new WikittyServiceSolr();
+ protected WikittyServiceEnhanced ws =
+ new WikittyServiceEnhanced(new WikittyServiceSolr());
@Before
public void deleteAll() throws Exception {
- WikittyServiceSolr hbaseService = ((WikittyServiceSolr) ws);
- hbaseService.clear(null);
+ ws.clear(null);
}
}
Modified: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/TreeTest.java
===================================================================
--- trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/TreeTest.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/TreeTest.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -47,6 +47,7 @@
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyExtension;
import org.nuiton.wikitty.WikittyImpl;
+import org.nuiton.wikitty.WikittyServiceEvent;
import org.nuiton.wikitty.conform.StorageTest;
import org.nuiton.wikitty.search.Search;
@@ -399,7 +400,8 @@
WikittyTreeNodeImpl child = new WikittyTreeNodeImpl();
child.setParent(parent.getWikittyId());
- ws.store(null, child.getWikitty());
+ WikittyServiceEvent event = ws.store(null, child.getWikitty());
+ event.update(child.getWikitty());
Map<WikittyTreeNode, Integer> children = ws.restoreChildren(null, parent.getWikittyId(), null);
Modified: trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/Model.java
===================================================================
--- trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/Model.java 2010-10-26 12:58:09 UTC (rev 451)
+++ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/Model.java 2010-10-27 09:04:19 UTC (rev 452)
@@ -30,6 +30,7 @@
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyExtension;
import org.nuiton.wikitty.WikittyService;
+import org.nuiton.wikitty.WikittyServiceEnhanced;
import org.nuiton.wikitty.search.Element;
import org.nuiton.wikitty.search.Search;
@@ -39,10 +40,10 @@
*/
public class Model {
- protected WikittyService _service = null;
+ protected WikittyServiceEnhanced _service = null;
public Model(WikittyService service) {
- _service = service;
+ _service = new WikittyServiceEnhanced(service);
}
/*
1
0
Author: tchemit
Date: 2010-10-26 14:58:09 +0200 (Tue, 26 Oct 2010)
New Revision: 451
Url: http://nuiton.org/repositories/revision/wikitty/451
Log:
fix build (use inheritance from mavenpom for commons libs)
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-10-26 12:14:17 UTC (rev 450)
+++ trunk/pom.xml 2010-10-26 12:58:09 UTC (rev 451)
@@ -33,7 +33,7 @@
<dependencyManagement>
<dependencies>
- <dependency>
+ <!--dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
@@ -66,7 +66,7 @@
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
<scope>compile</scope>
- </dependency>
+ </dependency-->
<dependency>
<groupId>commons-dbcp</groupId>
@@ -75,12 +75,12 @@
<scope>compile</scope>
</dependency>
- <dependency>
+ <!--dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
<scope>compile</scope>
- </dependency>
+ </dependency-->
<dependency>
<groupId>org.nuiton.eugene</groupId>
1
0
Author: tchemit
Date: 2010-10-26 14:14:17 +0200 (Tue, 26 Oct 2010)
New Revision: 450
Url: http://nuiton.org/repositories/revision/wikitty/450
Log:
use mavenpom 2.4-SNAPSHOT
use camelCase style for version properties
use default libraries version from mavenpom
Modified:
trunk/pom.xml
trunk/wikitty-api/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-10-21 14:47:36 UTC (rev 449)
+++ trunk/pom.xml 2010-10-26 12:14:17 UTC (rev 450)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>2.3.2</version>
+ <version>2.4-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
@@ -85,7 +85,7 @@
<dependency>
<groupId>org.nuiton.eugene</groupId>
<artifactId>eugene</artifactId>
- <version>${eugene.version}</version>
+ <version>${eugeneVersion}</version>
</dependency>
<dependency>
@@ -203,32 +203,32 @@
<dependency>
<groupId>org.zkoss.zk</groupId>
<artifactId>zk</artifactId>
- <version>${zk.version}</version>
+ <version>${zkVersion}</version>
</dependency>
<dependency>
<groupId>org.zkoss.zk</groupId>
<artifactId>zkplus</artifactId>
- <version>${zk.version}</version>
+ <version>${zkVersion}</version>
</dependency>
<dependency>
<groupId>org.zkoss.zk</groupId>
<artifactId>zul</artifactId>
- <version>${zk.version}</version>
+ <version>${zkVersion}</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase</artifactId>
- <version>${hbase.version}</version>
+ <version>${hbaseVersion}</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase</artifactId>
<classifier>tests</classifier>
- <version>${hbase.version}</version>
+ <version>${hbaseVersion}</version>
<scope>test</scope>
</dependency>
@@ -250,47 +250,47 @@
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
- <version>${jetty.version}</version>
+ <version>${jettyVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
- <version>${spring.version}</version>
+ <version>${springVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
- <version>${spring.version}</version>
+ <version>${springVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
- <version>${spring.version}</version>
+ <version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
- <version>${spring.version}</version>
+ <version>${springVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
- <version>${spring.version}</version>
+ <version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
- <version>${spring.version}</version>
+ <version>${springVersion}</version>
</dependency>
<dependency>
@@ -467,13 +467,13 @@
<projectId>wikitty</projectId>
<!-- common versions used in sub-poms -->
- <eugene.version>2.2</eugene.version>
- <spring.version>3.0.1.RELEASE</spring.version>
- <jetty.version>6.1.22</jetty.version>
+ <eugeneVersion>2.2</eugeneVersion>
+ <springVersion>3.0.1.RELEASE</springVersion>
+ <jettyVersion>6.1.22</jettyVersion>
- <zk.version>5.0.2</zk.version>
+ <zkVersion>5.0.2</zkVersion>
- <hbase.version>0.89.0-SNAPSHOT</hbase.version>
+ <hbaseVersion>0.89.0-SNAPSHOT</hbaseVersion>
</properties>
<!-- ************************************************************* -->
@@ -490,7 +490,7 @@
<dependency>
<groupId>org.nuiton.jrst</groupId>
<artifactId>doxia-module-jrst</artifactId>
- <version>${jrst.version}</version>
+ <version>${jrstPluginVersion}</version>
</dependency>
</dependencies>
</plugin>
Modified: trunk/wikitty-api/pom.xml
===================================================================
--- trunk/wikitty-api/pom.xml 2010-10-21 14:47:36 UTC (rev 449)
+++ trunk/wikitty-api/pom.xml 2010-10-26 12:14:17 UTC (rev 450)
@@ -145,7 +145,7 @@
<plugin>
<groupId>org.nuiton.eugene</groupId>
<artifactId>maven-eugene-plugin</artifactId>
- <version>${eugene.version}</version>
+ <version>${eugeneVersion}</version>
<dependencies>
<dependency>
<groupId>org.nuiton.wikitty</groupId>
1
0
r449 - in trunk: . wikitty-api wikitty-generators wikitty-hessian-client wikitty-hessian-server wikitty-jdbc-impl wikitty-solr-impl wikitty-ui-zk
by bpoussin@users.nuiton.org 21 Oct '10
by bpoussin@users.nuiton.org 21 Oct '10
21 Oct '10
Author: bpoussin
Date: 2010-10-21 16:47:36 +0200 (Thu, 21 Oct 2010)
New Revision: 449
Url: http://nuiton.org/repositories/revision/wikitty/449
Log:
[maven-release-plugin] prepare for next development iteration
Modified:
trunk/pom.xml
trunk/wikitty-api/pom.xml
trunk/wikitty-generators/pom.xml
trunk/wikitty-hessian-client/pom.xml
trunk/wikitty-hessian-server/pom.xml
trunk/wikitty-jdbc-impl/pom.xml
trunk/wikitty-solr-impl/pom.xml
trunk/wikitty-ui-zk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-10-21 14:47:31 UTC (rev 448)
+++ trunk/pom.xml 2010-10-21 14:47:36 UTC (rev 449)
@@ -15,7 +15,7 @@
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2</version>
+ <version>2.3-SNAPSHOT</version>
<modules>
@@ -328,10 +328,10 @@
<!-- Source control management. -->
<scm>
- <connection>scm:svn:http://svn.nuiton.org/svn/wikitty/tags/wikitty-2.2.2</connection>
- <developerConnection>scm:svn:http://svn.nuiton.org/svn/wikitty/tags/wikitty-2.2.2
+ <connection>scm:svn:http://svn.nuiton.org/svn/wikitty/trunk</connection>
+ <developerConnection>scm:svn:http://svn.nuiton.org/svn/wikitty/trunk
</developerConnection>
- <url>http://www.nuiton.org/repositories/browse/wikitty/tags/wikitty-2.2.2</url>
+ <url>http://www.nuiton.org/repositories/browse/wikitty/trunk</url>
</scm>
<!-- ************************************************************* -->
Modified: trunk/wikitty-api/pom.xml
===================================================================
--- trunk/wikitty-api/pom.xml 2010-10-21 14:47:31 UTC (rev 448)
+++ trunk/wikitty-api/pom.xml 2010-10-21 14:47:36 UTC (rev 449)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2</version>
+ <version>2.3-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-generators/pom.xml
===================================================================
--- trunk/wikitty-generators/pom.xml 2010-10-21 14:47:31 UTC (rev 448)
+++ trunk/wikitty-generators/pom.xml 2010-10-21 14:47:36 UTC (rev 449)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2</version>
+ <version>2.3-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-hessian-client/pom.xml
===================================================================
--- trunk/wikitty-hessian-client/pom.xml 2010-10-21 14:47:31 UTC (rev 448)
+++ trunk/wikitty-hessian-client/pom.xml 2010-10-21 14:47:36 UTC (rev 449)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2</version>
+ <version>2.3-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-hessian-server/pom.xml
===================================================================
--- trunk/wikitty-hessian-server/pom.xml 2010-10-21 14:47:31 UTC (rev 448)
+++ trunk/wikitty-hessian-server/pom.xml 2010-10-21 14:47:36 UTC (rev 449)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2</version>
+ <version>2.3-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-jdbc-impl/pom.xml
===================================================================
--- trunk/wikitty-jdbc-impl/pom.xml 2010-10-21 14:47:31 UTC (rev 448)
+++ trunk/wikitty-jdbc-impl/pom.xml 2010-10-21 14:47:36 UTC (rev 449)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2</version>
+ <version>2.3-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.wikitty</groupId>
Modified: trunk/wikitty-solr-impl/pom.xml
===================================================================
--- trunk/wikitty-solr-impl/pom.xml 2010-10-21 14:47:31 UTC (rev 448)
+++ trunk/wikitty-solr-impl/pom.xml 2010-10-21 14:47:36 UTC (rev 449)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2</version>
+ <version>2.3-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-ui-zk/pom.xml
===================================================================
--- trunk/wikitty-ui-zk/pom.xml 2010-10-21 14:47:31 UTC (rev 448)
+++ trunk/wikitty-ui-zk/pom.xml 2010-10-21 14:47:36 UTC (rev 449)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2</version>
+ <version>2.3-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
1
0
Author: bpoussin
Date: 2010-10-21 16:47:31 +0200 (Thu, 21 Oct 2010)
New Revision: 448
Url: http://nuiton.org/repositories/revision/wikitty/448
Log:
[maven-release-plugin] copy for tag wikitty-2.2.2
Added:
tags/wikitty-2.2.2/
Property changes on: tags/wikitty-2.2.2
___________________________________________________________________
Added: svn:ignore
+ .settings
.project
target
*.iml
*.ipr
*.iws
Added: svn:mergeinfo
+ /branches/2.0-eugene2:164-179
1
0
r447 - in trunk: . wikitty-api wikitty-generators wikitty-hessian-client wikitty-hessian-server wikitty-jdbc-impl wikitty-solr-impl wikitty-ui-zk
by bpoussin@users.nuiton.org 21 Oct '10
by bpoussin@users.nuiton.org 21 Oct '10
21 Oct '10
Author: bpoussin
Date: 2010-10-21 16:47:29 +0200 (Thu, 21 Oct 2010)
New Revision: 447
Url: http://nuiton.org/repositories/revision/wikitty/447
Log:
[maven-release-plugin] prepare release wikitty-2.2.2
Modified:
trunk/pom.xml
trunk/wikitty-api/pom.xml
trunk/wikitty-generators/pom.xml
trunk/wikitty-hessian-client/pom.xml
trunk/wikitty-hessian-server/pom.xml
trunk/wikitty-jdbc-impl/pom.xml
trunk/wikitty-solr-impl/pom.xml
trunk/wikitty-ui-zk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-10-21 14:38:31 UTC (rev 446)
+++ trunk/pom.xml 2010-10-21 14:47:29 UTC (rev 447)
@@ -15,7 +15,7 @@
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2-SNAPSHOT</version>
+ <version>2.2.2</version>
<modules>
@@ -328,10 +328,10 @@
<!-- Source control management. -->
<scm>
- <connection>scm:svn:http://svn.nuiton.org/svn/wikitty/trunk</connection>
- <developerConnection>scm:svn:http://svn.nuiton.org/svn/wikitty/trunk
+ <connection>scm:svn:http://svn.nuiton.org/svn/wikitty/tags/wikitty-2.2.2</connection>
+ <developerConnection>scm:svn:http://svn.nuiton.org/svn/wikitty/tags/wikitty-2.2.2
</developerConnection>
- <url>http://www.nuiton.org/repositories/browse/wikitty/trunk</url>
+ <url>http://www.nuiton.org/repositories/browse/wikitty/tags/wikitty-2.2.2</url>
</scm>
<!-- ************************************************************* -->
Modified: trunk/wikitty-api/pom.xml
===================================================================
--- trunk/wikitty-api/pom.xml 2010-10-21 14:38:31 UTC (rev 446)
+++ trunk/wikitty-api/pom.xml 2010-10-21 14:47:29 UTC (rev 447)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2-SNAPSHOT</version>
+ <version>2.2.2</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-generators/pom.xml
===================================================================
--- trunk/wikitty-generators/pom.xml 2010-10-21 14:38:31 UTC (rev 446)
+++ trunk/wikitty-generators/pom.xml 2010-10-21 14:47:29 UTC (rev 447)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2-SNAPSHOT</version>
+ <version>2.2.2</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-hessian-client/pom.xml
===================================================================
--- trunk/wikitty-hessian-client/pom.xml 2010-10-21 14:38:31 UTC (rev 446)
+++ trunk/wikitty-hessian-client/pom.xml 2010-10-21 14:47:29 UTC (rev 447)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2-SNAPSHOT</version>
+ <version>2.2.2</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-hessian-server/pom.xml
===================================================================
--- trunk/wikitty-hessian-server/pom.xml 2010-10-21 14:38:31 UTC (rev 446)
+++ trunk/wikitty-hessian-server/pom.xml 2010-10-21 14:47:29 UTC (rev 447)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2-SNAPSHOT</version>
+ <version>2.2.2</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-jdbc-impl/pom.xml
===================================================================
--- trunk/wikitty-jdbc-impl/pom.xml 2010-10-21 14:38:31 UTC (rev 446)
+++ trunk/wikitty-jdbc-impl/pom.xml 2010-10-21 14:47:29 UTC (rev 447)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2-SNAPSHOT</version>
+ <version>2.2.2</version>
</parent>
<groupId>org.nuiton.wikitty</groupId>
Modified: trunk/wikitty-solr-impl/pom.xml
===================================================================
--- trunk/wikitty-solr-impl/pom.xml 2010-10-21 14:38:31 UTC (rev 446)
+++ trunk/wikitty-solr-impl/pom.xml 2010-10-21 14:47:29 UTC (rev 447)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2-SNAPSHOT</version>
+ <version>2.2.2</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-ui-zk/pom.xml
===================================================================
--- trunk/wikitty-ui-zk/pom.xml 2010-10-21 14:38:31 UTC (rev 446)
+++ trunk/wikitty-ui-zk/pom.xml 2010-10-21 14:47:29 UTC (rev 447)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.2.2-SNAPSHOT</version>
+ <version>2.2.2</version>
</parent>
<!-- ************************************************************* -->
1
0