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
November 2010
- 8 participants
- 82 discussions
r476 - in trunk/wikitty-hessian-server: . src/main src/main/java/org/nuiton/wikitty src/main/java/org/nuiton/wikitty/hessian src/main/java/org/nuiton/wikitty/services
by bpoussin@users.nuiton.org 17 Nov '10
by bpoussin@users.nuiton.org 17 Nov '10
17 Nov '10
Author: bpoussin
Date: 2010-11-17 18:54:13 +0100 (Wed, 17 Nov 2010)
New Revision: 476
Url: http://nuiton.org/repositories/revision/wikitty/476
Log:
- refactor WikittyServiceHessianDelegator to use WikittyServiceFactory
- add WikittyServiceHessianServer, this can be used as WikittyService and start jetty container
Added:
trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/services/
trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/services/WikittyServiceHessianServer.java
trunk/wikitty-hessian-server/src/main/resources/
Modified:
trunk/wikitty-hessian-server/pom.xml
trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian/WikittyServiceHessianDelegator.java
Modified: trunk/wikitty-hessian-server/pom.xml
===================================================================
--- trunk/wikitty-hessian-server/pom.xml 2010-11-16 15:47:41 UTC (rev 475)
+++ trunk/wikitty-hessian-server/pom.xml 2010-11-17 17:54:13 UTC (rev 476)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.3-SNAPSHOT</version>
+ <version>3.0-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
@@ -29,16 +29,33 @@
<groupId>${project.groupId}</groupId>
<artifactId>wikitty-jdbc-impl</artifactId>
<version>${project.version}</version>
- <scope>compile</scope>
+ <scope>runtime</scope>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>wikitty-solr-impl</artifactId>
<version>${project.version}</version>
- <scope>compile</scope>
+ <scope>runtime</scope>
</dependency>
<dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-servlet</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-server</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-util</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-xml</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-utils</artifactId>
</dependency>
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-11-16 15:47:41 UTC (rev 475)
+++ trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian/WikittyServiceHessianDelegator.java 2010-11-17 17:54:13 UTC (rev 476)
@@ -25,22 +25,12 @@
package org.nuiton.wikitty.hessian;
-import java.util.Properties;
-
+import com.caucho.hessian.server.HessianServlet;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.wikitty.WikittyException;
-import org.nuiton.wikitty.WikittyExtensionStorage;
-import org.nuiton.wikitty.WikittySearchEngin;
import org.nuiton.wikitty.WikittyService;
-import org.nuiton.wikitty.WikittyServiceCached;
-import org.nuiton.wikitty.WikittyServiceDelegator;
-import org.nuiton.wikitty.WikittyServiceImpl;
-import org.nuiton.wikitty.WikittyServiceNotifier;
-import org.nuiton.wikitty.WikittyServiceSecurity;
-import org.nuiton.wikitty.WikittyStorage;
-import org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC;
-import org.nuiton.wikitty.jdbc.WikittyStorageJDBC;
-import org.nuiton.wikitty.solr.WikittySearchEnginSolr;
+import org.nuiton.wikitty.WikittyServiceFactory;
+import org.nuiton.wikitty.services.WikittyServiceDelegator;
/**
* Hesian service delegator.
@@ -73,33 +63,9 @@
ApplicationConfig config = new ApplicationConfig();
config.setConfigFileName(WIKITTY_HESSIAN_CONFIGURATION_FILE);
config.parse(new String[0]);
-
- // get configuration as properties
- Properties properties = config.getFlatOptions();
- // make impl instance of wikitty service
- WikittyExtensionStorage extensionStorage = new WikittyExtensionStorageJDBC(properties);
- WikittyStorage wikittyStorage = new WikittyStorageJDBC(extensionStorage, properties);
- WikittySearchEngin searchEngin = new WikittySearchEnginSolr(extensionStorage, properties);
-
- // make the chosen one IMPL
- WikittyService service = new WikittyServiceImpl(extensionStorage, wikittyStorage, searchEngin);
+ WikittyService service = WikittyServiceFactory.buildWikittyService(config);
- // add security
- if (config.getOptionAsBoolean("wikitty.hessian.usesecurity")) {
- service = new WikittyServiceSecurity(service);
- }
-
- // add cache ?
- if (config.getOptionAsBoolean("wikitty.hessian.usecache")) {
- service = new WikittyServiceCached(service, properties);
- }
-
- // add notification
- if (config.getOptionAsBoolean("wikitty.hessian.usenotification")) {
- service = new WikittyServiceNotifier(service, properties);
- }
-
// set delegate service
setDelegate(service);
}
Added: trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/services/WikittyServiceHessianServer.java
===================================================================
--- trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/services/WikittyServiceHessianServer.java (rev 0)
+++ trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/services/WikittyServiceHessianServer.java 2010-11-17 17:54:13 UTC (rev 476)
@@ -0,0 +1,106 @@
+package org.nuiton.wikitty.services;
+
+
+import com.caucho.hessian.server.HessianServlet;
+import java.net.URL;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.eclipse.jetty.server.Connector;
+import org.nuiton.util.ApplicationConfig;
+import org.nuiton.wikitty.WikittyException;
+import org.nuiton.wikitty.WikittyService;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.nio.SelectChannelConnector;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.util.resource.Resource;
+import org.eclipse.jetty.xml.XmlConfiguration;
+import org.nuiton.wikitty.WikittyConfig;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class WikittyServiceHessianServer extends WikittyServiceDelegator {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(WikittyServiceHessianServer.class);
+
+ public WikittyServiceHessianServer(ApplicationConfig config, WikittyService ws) {
+ try {
+ setDelegate(ws);
+
+ // create and configure hessian servlet
+ HessianServlet servlet = new HessianServlet();
+ servlet.setHomeAPI(WikittyService.class);
+ servlet.setHome(this);
+
+ // create servlet container
+ String jettyConfig = config.getOption(WikittyConfig.Option.
+ WIKITTY_SERVER_CONFIG.getKey());
+ // port and path from hessian server url in config
+ String urlString = config.getOption(WikittyConfig.Option.
+ WIKITTY_SERVER_URL.getKey());
+
+ int port = 80;
+ String path = "/";
+ if (urlString != null && !"".equals(urlString)) {
+ URL url = new URL(urlString);
+ if (-1 != url.getPort()) {
+ port = url.getPort();
+ }
+ if (null != url.getPath()) {
+ path = url.getPath();
+ if (!path.endsWith("/")) {
+ path += "/";
+ }
+ }
+ }
+
+ Server server;
+ if (jettyConfig != null && !"".equals(jettyConfig)) {
+ // use config file
+ Resource fileserver_xml = Resource.newSystemResource(jettyConfig);
+ XmlConfiguration configuration = new XmlConfiguration(fileserver_xml.getInputStream());
+ server = (Server) configuration.configure();
+
+ // change port as asked in wikitty url server
+ boolean connectorPortFound = false;
+ for (Connector connector : server.getConnectors()) {
+ if (connector instanceof SelectChannelConnector) {
+ connectorPortFound = true;
+ connector.setPort(port);
+ }
+ }
+ if (!connectorPortFound) {
+ Connector connector = new SelectChannelConnector();
+ connector.setPort(port);
+ server.addConnector(connector);
+ }
+ } else {
+ // no config file
+ server = new Server(port);
+ }
+
+ // put servlet in container
+ ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
+ context.setContextPath("/");
+ server.setHandler(context);
+ context.addServlet(new ServletHolder(servlet), path + "*");
+
+ // start server
+ server.start();
+ server.join();
+
+ log.info("Web server are running on port: " + port);
+ } catch (Exception eee) {
+ throw new WikittyException("Can't start wikitty server", eee);
+ }
+ }
+
+
+}
1
0
r475 - trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform
by bpoussin@users.nuiton.org 16 Nov '10
by bpoussin@users.nuiton.org 16 Nov '10
16 Nov '10
Author: bpoussin
Date: 2010-11-16 16:47:41 +0100 (Tue, 16 Nov 2010)
New Revision: 475
Url: http://nuiton.org/repositories/revision/wikitty/475
Log:
better test for extension deletion
Modified:
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java
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-11-16 15:36:57 UTC (rev 474)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2010-11-16 15:47:41 UTC (rev 475)
@@ -82,19 +82,39 @@
@Test
public void testExtensionMethod() throws Exception {
- ws.storeExtension(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));
- assertEquals(EXT_TEST.getName(), ext.getName());
- assertEquals(EXT_TEST.getVersion(), ext.getVersion());
- assertEquals(EXT_TEST, ext);
+ {
+ ws.storeExtension(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));
+ assertEquals(EXT_TEST.getName(), ext.getName());
+ assertEquals(EXT_TEST.getVersion(), ext.getVersion());
+ assertEquals(EXT_TEST, ext);
+ }
+ {
+ // test de la suppression de l'extension
+ ws.deleteExtension(null, Collections.singleton(EXT_TEST.getName()));
+ List<String> extIds = ws.getAllExtensionIds(null);
+ assertEquals(0, extIds.size());
+ }
+ {
+ // test que la suppression echoue si l'extension est utilisee
+ ws.storeExtension(null, Collections.singletonList(EXT_TEST));
- // test de la suppression de l'extension
- ws.deleteExtension(null, Collections.singleton(EXT_TEST.getName()));
- extIds = ws.getAllExtensionIds(null);
- assertEquals(0, extIds.size());
+ Wikitty w = new WikittyImpl();
+ w.addExtension(EXT_TEST);
+ ws.store(null, Collections.singleton(w), false);
+
+ try {
+ ws.deleteExtension(null, Collections.singleton(EXT_TEST.getName()));
+ assertTrue(false); // il doit y avoir une exception, donc on ne passe pas la
+ } catch (WikittyException eee) {
+ assertTrue(true);
+ }
+ List<String> extIds = ws.getAllExtensionIds(null);
+ assertEquals(1, extIds.size());
+ }
}
@Test
1
0
16 Nov '10
Author: bpoussin
Date: 2010-11-16 16:36:57 +0100 (Tue, 16 Nov 2010)
New Revision: 474
Url: http://nuiton.org/repositories/revision/wikitty/474
Log:
Evolution #1024: We must can delete extension if not used
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyCache.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyEvent.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyListener.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorage.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorageInMemory.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.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/WikittyJDBCUtil.java
trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2010-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -241,6 +241,16 @@
public WikittyEvent storeExtension(
String securityToken, Collection<WikittyExtension> exts);
+ /**
+ * Delete all extension if id exists and no wikitty used this extension.
+ * extension name must be just the name (extName)
+ *
+ * @param securityToken security token
+ * @param ids extension's ids to remove
+ */
+ public WikittyEvent deleteExtension(
+ String securityToken, Collection<String> extNames);
+
/**
* Load extension from id. Id is 'name[version]'.
*
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyCache.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyCache.java 2010-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyCache.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -193,6 +193,11 @@
}
+ @Override
+ public void removeExtension(WikittyEvent event) {
+
+ }
+
/*
* @see org.nuiton.wikitty.WikittyListener#clearExtension()
*/
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyEvent.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyEvent.java 2010-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyEvent.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -31,7 +31,9 @@
import java.util.EventObject;
import java.util.HashMap;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.Map;
+import java.util.Set;
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyExtension;
@@ -63,8 +65,7 @@
REMOVE_WIKITTY(WikittyListener.REMOVE_WIKITTY_METHOD),
CLEAR_WIKITTY(WikittyListener.CLEAR_WIKITTY_METHOD),
PUT_EXTENSION(WikittyListener.PUT_EXTENSION_METHOD),
- // il est impossible actuellement de supprimer des extensions
-// REMOVE_EXTENSION(WikittyListener.REMOVE_EXTENSION_METHOD),
+ REMOVE_EXTENSION(WikittyListener.REMOVE_EXTENSION_METHOD),
CLEAR_EXTENSION(WikittyListener.CLEAR_EXTENSION_METHOD);
/** le nom de la methode du listener a appeler pour ce type d'event */
@@ -98,6 +99,9 @@
/** Use by PUT_EXTENSION, all extensions added */
protected Map<String, WikittyExtension> extensions;
+ /** Use by REMOVE_EXTENSION, all extensions name deleted */
+ protected Set<String> deletedExtensions;
+
/**
* Constructor with source {@link WikittyService}.
*
@@ -205,6 +209,20 @@
extensions.put(extension.getId(), extension);
}
+ public Set<String> getDeletedExtensions() {
+ return deletedExtensions;
+ }
+
+ public void addDeletedExtension(String extName) {
+ if (deletedExtensions == null) {
+ deletedExtensions = new LinkedHashSet<String>();
+ addType(WikittyEventType.REMOVE_EXTENSION);
+ }
+ deletedExtensions.add(extName);
+ }
+
+
+
/**
* Merge this event with event passed in arguement. Merged datas are:
* <li> type
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyListener.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyListener.java 2010-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyListener.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -52,6 +52,7 @@
/** toto[1.0] */
public void putExtension(WikittyEvent event);
+ public void removeExtension(WikittyEvent event);
public void clearExtension(WikittyEvent event);
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java 2010-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -370,6 +370,13 @@
}
@Override
+ public WikittyEvent deleteExtension(
+ String securityToken, Collection<String> extNames) {
+ // TODO poussin 20101115: perhaps use cache for extension ?
+ return ws.deleteExtension(securityToken, extNames);
+ }
+
+ @Override
public WikittyExtension restoreExtension(String securityToken, String id) {
// TODO poussin 20101029: perhaps use cache for extension ?
return ws.restoreExtension(securityToken, id);
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java 2010-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -131,6 +131,12 @@
}
@Override
+ public WikittyEvent deleteExtension(
+ String securityToken, Collection<String> extNames) {
+ return delegate.deleteExtension(securityToken, extNames);
+ }
+
+ @Override
public WikittyExtension restoreExtension(String securityToken, String id) {
return delegate.restoreExtension(securityToken, id);
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java 2010-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -55,7 +55,9 @@
import org.nuiton.wikitty.entities.WikittyTreeNodeHelper;
import org.nuiton.wikitty.entities.WikittyTreeNodeImpl;
import org.nuiton.wikitty.WikittyUtil;
+import org.nuiton.wikitty.entities.ExtensionFactory;
import org.nuiton.wikitty.search.Search;
+import org.nuiton.wikitty.search.operators.Element;
/**
* WikittyService is main service
@@ -299,6 +301,13 @@
return result;
}
+ @Override
+ public WikittyEvent deleteExtension(
+ String securityToken, Collection<String> extNames) {
+ WikittyEvent result = deleteExtension(securityToken, null, extNames);
+ return result;
+ }
+
protected WikittyEvent storeExtension(String securityToken,
WikittyTransaction transaction, Collection<WikittyExtension> exts) {
boolean txCreated = false;
@@ -329,6 +338,52 @@
}
}
+ protected WikittyEvent deleteExtension(String securityToken,
+ WikittyTransaction transaction, Collection<String> extNames) {
+ boolean txCreated = false;
+ try {
+ if (transaction == null) {
+ transaction = new WikittyTransaction();
+ txCreated = true;
+ transaction.begin();
+ }
+
+ // check that all extensions are not used
+ for(String name : extNames) {
+ // only name are stored in index, search only on name
+ Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, name).criteria();
+ criteria.setEndIndex(0); // result is not use, just numFound
+ PagedResult<String> wikittyWithExt = findAllByCriteria(
+ securityToken, transaction, criteria);
+ int numFound = wikittyWithExt.getNumFound();
+ if (numFound > 0) {
+ throw new WikittyException(String.format(
+ "Can't delete %s extension, this extension"
+ + " is in used by %s wikitty",
+ name, numFound));
+ }
+ }
+
+ WikittyEvent result =
+ getExtensionStorage().delete(transaction, extNames);
+
+ if (txCreated) {
+ transaction.commit();
+ }
+ return result;
+ } catch (WikittyException ex) {
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ throw ex;
+ } catch (Exception eee) {
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ throw new WikittyException("Can't delete extensions", eee);
+ }
+ }
+
@Override
public WikittyExtension restoreExtension(
String securityToken, String extensionId) {
@@ -1004,6 +1059,8 @@
// toutes les extensions a sauver
Set<WikittyExtension> toAddExt = new LinkedHashSet<WikittyExtension>();
+ // toutes les extensions a supprimer
+ Set<String> toDeleteExt = new LinkedHashSet<String>();
// recherche un event avec un clear pour ne pas jouer des events inutiles
// recherche un store + delete du meme wikitty
@@ -1036,14 +1093,17 @@
toAddExt.add(ext);
}
}
+ if (e.getType().contains(WikittyEvent.WikittyEventType.REMOVE_EXTENSION)) {
+ for (String extName : e.getDeletedExtensions()) {
+ toDeleteExt.add(extName);
+ }
+ }
}
WikittyTransaction tx = new WikittyTransaction();
try {
tx.begin();
- // Actuellement il n'y a pas moyen de supprimer une extension (par surete)
- // donc on ne fait rien avec toRemoveExt
WikittyEvent result = new WikittyEvent(this);
if (mustClear) {
WikittyEvent eventClear = clear(securityToken, tx);
@@ -1053,6 +1113,10 @@
storeExtension(securityToken, tx, toAddExt);
result.add(eventStoreExtension);
+ WikittyEvent eventDeleteExtension =
+ deleteExtension(securityToken, tx, toDeleteExt);
+ result.add(eventDeleteExtension);
+
WikittyEvent eventStoreWikitty =
store(securityToken, tx, toAddWikitty.values(), false);
result.add(eventStoreWikitty);
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java 2010-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -224,6 +224,14 @@
}
@Override
+ public WikittyEvent deleteExtension(
+ String securityToken, Collection<String> extNames) {
+ WikittyEvent result = ws.deleteExtension(securityToken, extNames);
+ fireEvent(result);
+ return result;
+ }
+
+ @Override
public WikittyExtension restoreExtension(String securityToken, String id) {
// no notification
return ws.restoreExtension(securityToken, id);
@@ -693,6 +701,17 @@
}
}
+ @Override
+ public void removeExtension(WikittyEvent event) {
+ if (propagateEvent) {
+ sendMessage(event);
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("Not master cache, do not propagate putExtension event");
+ }
+ }
+ }
+
/*
* @see org.nuiton.wikitty.WikittyListener#clearExtension()
*/
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java 2010-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -167,6 +167,9 @@
if (e.getType().contains(WikittyEvent.WikittyEventType.PUT_EXTENSION)) {
checkStoreExtension(securityToken, e.getExtensions().values());
}
+ if (e.getType().contains(WikittyEvent.WikittyEventType.REMOVE_EXTENSION)) {
+ checkDeleteExtension(securityToken, e.getDeletedExtensions());
+ }
}
WikittyEvent result = ws.replay(securityToken, events);
return result;
@@ -483,7 +486,11 @@
}
}
}
-
+
+ protected void checkDeleteExtension (String securityToken, Collection<String> extNames) {
+ // FIXME 20101115 poussin check security for extension deletion
+ }
+
@Override
public WikittyEvent storeExtension(String securityToken,
Collection<WikittyExtension> exts) {
@@ -492,6 +499,13 @@
}
@Override
+ public WikittyEvent deleteExtension(
+ String securityToken, Collection<String> extNames) {
+ checkDeleteExtension(securityToken, extNames);
+ return ws.deleteExtension(securityToken, extNames);
+ }
+
+ @Override
public WikittyExtension restoreExtension(String securityToken, String id) {
// All people can read extension
return ws.restoreExtension(securityToken, id);
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java 2010-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -187,6 +187,14 @@
}
@Override
+ public WikittyEvent deleteExtension(
+ String securityToken, Collection<String> extNames) {
+ WikittyEvent e = tx.deleteExtension(securityToken, extNames);
+ addEvent(securityToken, e);
+ return e;
+ }
+
+ @Override
public WikittyExtension restoreExtension(
String securityToken, String extensionId) {
WikittyExtension result = tx.restoreExtension(securityToken, extensionId);
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorage.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorage.java 2010-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorage.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -53,6 +53,15 @@
Collection<WikittyExtension> extensions);
/**
+ * delete extensions
+ *
+ * @param transaction transaction
+ * @param extNames extension name (extName)
+ */
+ public WikittyEvent delete(
+ WikittyTransaction transaction, Collection<String> extNames);
+
+ /**
* Return true if id exists in storage.
*
* @param transaction the current transaction
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorageInMemory.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorageInMemory.java 2010-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorageInMemory.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -3,6 +3,8 @@
import java.util.ArrayList;
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.Set;
@@ -14,6 +16,7 @@
public class WikittyExtensionStorageInMemory implements WikittyExtensionStorage {
+ /** key: extName[version], value: extension object */
protected Map<String, WikittyExtension> extensions;
public WikittyExtensionStorageInMemory() {
@@ -42,6 +45,21 @@
}
@Override
+ public WikittyEvent delete(WikittyTransaction transaction, Collection<String> extNames) {
+ WikittyEvent result = new WikittyEvent(this);
+ Set<String> extToDelete = new HashSet<String>(extNames);
+ for (Iterator<Map.Entry<String, WikittyExtension>> i = extensions.entrySet().iterator(); i.hasNext();) {
+ Map.Entry<String, WikittyExtension> entry = i.next();
+ String name = WikittyExtension.computeName(entry.getKey());
+ if (extToDelete.contains(name)) {
+ i.remove();
+ result.addDeletedExtension(name);
+ }
+ }
+ return result;
+ }
+
+ @Override
public boolean exists(WikittyTransaction transaction, String id) {
boolean result = extensions.containsKey(id);
return result;
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-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -90,6 +90,11 @@
assertEquals(EXT_TEST.getName(), ext.getName());
assertEquals(EXT_TEST.getVersion(), ext.getVersion());
assertEquals(EXT_TEST, ext);
+
+ // test de la suppression de l'extension
+ ws.deleteExtension(null, Collections.singleton(EXT_TEST.getName()));
+ extIds = ws.getAllExtensionIds(null);
+ assertEquals(0, extIds.size());
}
@Test
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-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -47,7 +47,7 @@
sendEvent(wsn, false);
// donc au total seulement 5 events on du etre envoye
- Assert.assertEquals(5, nbEvent);
+ Assert.assertEquals(6, nbEvent);
}
@@ -117,6 +117,20 @@
}
{
WikittyEvent event = new WikittyEvent("test");
+ event.addType(WikittyEvent.WikittyEventType.REMOVE_EXTENSION);
+ wsn.processRemoteEvent(event);
+ wsn.getEventThread().waitFor(event.getTime());
+ if (hasListener) {
+ Assert.assertEquals(
+ EnumSet.of(WikittyEvent.WikittyEventType.REMOVE_EXTENSION),
+ lastEvent);
+ } else {
+ Assert.assertEquals(null, lastEvent);
+ }
+ lastEvent = null;
+ }
+ {
+ WikittyEvent event = new WikittyEvent("test");
event.addType(WikittyEvent.WikittyEventType.CLEAR_EXTENSION);
wsn.processRemoteEvent(event);
wsn.getEventThread().waitFor(event.getTime());
@@ -173,6 +187,15 @@
}
@Override
+ public void removeExtension(WikittyEvent event) {
+ nbEvent++;
+ Assert.assertEquals(
+ EnumSet.of(WikittyEvent.WikittyEventType.REMOVE_EXTENSION),
+ event.getType());
+ lastEvent = event.getType();
+ }
+
+ @Override
public void clearExtension(WikittyEvent event) {
nbEvent++;
Assert.assertEquals(
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-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -31,6 +31,8 @@
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.COL_TAGVALUES;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.COL_VERSION;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CLEAR_EXTENSION;
+import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_DELETE_EXTENSION_ADMIN;
+import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_DELETE_EXTENSION_DATA;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CREATION_EXTENSION_ADMIN_TEST;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CREATION_EXTENSION_ADMIN;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CREATION_EXTENSION_DATA_TEST;
@@ -179,6 +181,33 @@
}
@Override
+ public WikittyEvent delete(WikittyTransaction transaction, Collection<String> extNames) {
+ Connection connection = WikittyJDBCUtil.getConnection(config);
+ try {
+ WikittyEvent result = new WikittyEvent(this);
+
+ for (String name : extNames) {
+ // # is ESCAPE caractere (see wikitty-jdbc-query file)
+ // we escape [ and ] because some database use it as special char
+ name = name + "#[%#]";
+ // delete extension in admin and data
+ WikittyJDBCUtil.doQuery(connection, jdbcQuery.getProperty(
+ QUERY_DELETE_EXTENSION_DATA), name);
+ WikittyJDBCUtil.doQuery(connection, jdbcQuery.getProperty(
+ QUERY_DELETE_EXTENSION_ADMIN), name);
+ result.addDeletedExtension(name);
+
+ }
+
+ return result;
+ } catch (SQLException eee) {
+ throw new WikittyException("Can't delete extension", eee);
+ } finally {
+ WikittyJDBCUtil.closeQuietly(connection);
+ }
+ }
+
+ @Override
public boolean exists(WikittyTransaction transaction, String id) {
Connection connection = WikittyJDBCUtil.getConnection(config);
try {
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-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java 2010-11-16 15:36:57 UTC (rev 474)
@@ -130,6 +130,10 @@
/** clear wikitty query property name */
static final public String QUERY_CLEAR_WIKITTY = "jdbc.queries.clear.wikitty";
+ /** clear extension query property name */
+ static final public String QUERY_DELETE_EXTENSION_ADMIN = "jdbc.queries.delete.extension.admin";
+ static final public String QUERY_DELETE_EXTENSION_DATA = "jdbc.queries.delete.extension.data";
+
/** extension_admin table creation query property name */
static final public String QUERY_CREATION_EXTENSION_ADMIN_TEST =
"jdbc.queries.creation.extension.admin.test";
Modified: trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties
===================================================================
--- trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties 2010-11-15 17:04:29 UTC (rev 473)
+++ trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties 2010-11-16 15:36:57 UTC (rev 474)
@@ -83,6 +83,11 @@
#wikitty deletion in the data table query
jdbc.queries.delete.wikitty.data=DELETE FROM wikitty_data WHERE id = ?;
+#extension delete admin and data (ESCAPE is needed for [ and ] because some
+# database use it like sqlserver)
+jdbc.queries.delete.extension.data=DELETE FROM extension_data WHERE id LIKE ? ESCAPE '#';
+jdbc.queries.delete.extension.admin=DELETE FROM extension_admin WHERE id LIKE ? ESCAPE '#';
+
#wikitty insertion in the admin table query
jdbc.queries.insert.wikitty.admin=INSERT INTO wikitty_admin\
(id, version, extension_list) VALUES (?, ?, ?);
1
0
15 Nov '10
Author: bpoussin
Date: 2010-11-15 18:04:29 +0100 (Mon, 15 Nov 2010)
New Revision: 473
Url: http://nuiton.org/repositories/revision/wikitty/473
Log:
Evolution #1046: Rename WikittyServiceListener and WikittyServiceEvent without 'Service' in name
Added:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyEvent.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyListener.java
Removed:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceEvent.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceListener.java
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/JGroupsNotifierTransporter.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyCache.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceEnhanced.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/XMPPNotifierTransporter.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorage.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorageInMemory.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorage.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorageInMemory.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.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-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/test/java/org/nuiton/wikitty/solr/test/TreeTest.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -32,7 +32,7 @@
import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.services.WikittyServiceEnhanced;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
+import org.nuiton.wikitty.services.WikittyEvent;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -131,7 +131,7 @@
public <E extends BusinessEntity> E store(E e) {
Wikitty w = ((BusinessEntityWikitty)e).getWikitty();
- WikittyServiceEvent resp = wikittyService.store(securityToken, w);
+ WikittyEvent resp = wikittyService.store(securityToken, w);
// update object
resp.update(w);
return e;
@@ -153,7 +153,7 @@
}
// call the service with Wikitty
- WikittyServiceEvent resp = wikittyService.store(securityToken, wikitties);
+ WikittyEvent resp = wikittyService.store(securityToken, wikitties);
// update object
for (Wikitty w : wikitties) {
@@ -427,8 +427,8 @@
* @param treeNodeId tree node id to delete
* @return {@true} if at least one node has been deleted
*/
- public WikittyServiceEvent deleteTree(String treeNodeId) {
- WikittyServiceEvent result = wikittyService.deleteTree(securityToken,treeNodeId);
+ public WikittyEvent deleteTree(String treeNodeId) {
+ WikittyEvent result = wikittyService.deleteTree(securityToken,treeNodeId);
return result;
}
@@ -565,8 +565,8 @@
* @param ext extension to be persisted
* @return update response
*/
- public WikittyServiceEvent storeExtension(WikittyExtension ext) {
- WikittyServiceEvent response =
+ public WikittyEvent storeExtension(WikittyExtension ext) {
+ WikittyEvent response =
wikittyService.storeExtension(securityToken, ext);
return response;
}
@@ -577,8 +577,8 @@
* @param exts list of wikitty extension to be persisted
* @return update response
*/
- public WikittyServiceEvent storeExtension(Collection<WikittyExtension> exts) {
- WikittyServiceEvent response =
+ public WikittyEvent storeExtension(Collection<WikittyExtension> exts) {
+ WikittyEvent response =
wikittyService.storeExtension(securityToken, exts);
return response;
}
@@ -631,8 +631,8 @@
* Use with caution : It will delete ALL indexes from search engine !
* This operation should be disabled in production environment.
*/
- public WikittyServiceEvent clear() {
- WikittyServiceEvent result = wikittyService.clear(securityToken);
+ public WikittyEvent clear() {
+ WikittyEvent result = wikittyService.clear(securityToken);
return result;
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -29,8 +29,8 @@
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
-import org.nuiton.wikitty.services.WikittyServiceListener;
+import org.nuiton.wikitty.services.WikittyEvent;
+import org.nuiton.wikitty.services.WikittyListener;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -81,7 +81,7 @@
*
* @see ServiceListenerType
*/
- public void addWikittyServiceListener(WikittyServiceListener listener, ServiceListenerType type);
+ public void addWikittyServiceListener(WikittyListener listener, ServiceListenerType type);
/**
* Remove wikitty service listener.
@@ -94,7 +94,7 @@
*
* @see ServiceListenerType
*/
- public void removeWikittyServiceListener(WikittyServiceListener listener, ServiceListenerType type);
+ public void removeWikittyServiceListener(WikittyListener listener, ServiceListenerType type);
/*
* security
@@ -129,7 +129,7 @@
*
* @param securityToken security token
*/
- public WikittyServiceEvent clear(String securityToken);
+ public WikittyEvent clear(String securityToken);
/**
* Verifie si l'utilisateur lie au securityToken a le droit d'ecrire
@@ -198,8 +198,8 @@
* (note: perhaps this broke history, when history are implanted and
* two serveur must have same history ?)
*/
- public WikittyServiceEvent replay(
- String securityToken, List<WikittyServiceEvent> events);
+ public WikittyEvent replay(
+ String securityToken, List<WikittyEvent> events);
/**
* Manage Update and creation.
@@ -210,7 +210,7 @@
* or force version on wikitty creation (version 0.0)
* @return update response
*/
- public WikittyServiceEvent store(
+ public WikittyEvent store(
String securityToken, Collection<Wikitty> wikitties, boolean force);
/**
@@ -238,7 +238,7 @@
* @param exts list of wikitty extension to be persisted
* @return update response
*/
- public WikittyServiceEvent storeExtension(
+ public WikittyEvent storeExtension(
String securityToken, Collection<WikittyExtension> exts);
/**
@@ -278,7 +278,7 @@
* @param securityToken security token
* @param ids object's ids to remove
*/
- public WikittyServiceEvent delete(String securityToken, Collection<String> ids);
+ public WikittyEvent delete(String securityToken, Collection<String> ids);
/**
*
@@ -322,7 +322,7 @@
* @param treeNodeId tree node id to delete
* @return delete wikitty ids
*/
- public WikittyServiceEvent deleteTree(String securityToken, String treeNodeId);
+ public WikittyEvent deleteTree(String securityToken, String treeNodeId);
/**
* Retrieve wikitty node with count. Wikitty reference by wikittyId MUST
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/JGroupsNotifierTransporter.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/JGroupsNotifierTransporter.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/JGroupsNotifierTransporter.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -25,7 +25,7 @@
package org.nuiton.wikitty.services;
import org.nuiton.wikitty.services.WikittyServiceNotifier;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
+import org.nuiton.wikitty.services.WikittyEvent;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
@@ -113,7 +113,7 @@
* @param event message to send
*/
@Override
- public void sendMessage(WikittyServiceEvent event) throws Exception {
+ public void sendMessage(WikittyEvent event) throws Exception {
Message msg = new Message(null, null, event);
channel.send(msg);
}
@@ -130,8 +130,8 @@
log.info("Receive message : " + message);
}
- if (message instanceof WikittyServiceEvent) {
- WikittyServiceEvent event = (WikittyServiceEvent)message;
+ if (message instanceof WikittyEvent) {
+ WikittyEvent event = (WikittyEvent)message;
ws.processRemoteEvent(event);
}
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyCache.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyCache.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyCache.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -26,8 +26,8 @@
package org.nuiton.wikitty.services;
import org.nuiton.wikitty.entities.Wikitty;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
-import org.nuiton.wikitty.services.WikittyServiceListener;
+import org.nuiton.wikitty.services.WikittyEvent;
+import org.nuiton.wikitty.services.WikittyListener;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@@ -49,7 +49,7 @@
* Last update: $Date$
* by : $Author$
*/
-public class WikittyCache implements WikittyServiceListener {
+public class WikittyCache implements WikittyListener {
static private Log log = LogFactory.getLog(WikittyCache.class);
@@ -159,45 +159,45 @@
}
/*
- * @see org.nuiton.wikitty.WikittyServiceListener#clearWikitty()
+ * @see org.nuiton.wikitty.WikittyListener#clearWikitty()
*/
@Override
- public void clearWikitty(WikittyServiceEvent event) {
+ public void clearWikitty(WikittyEvent event) {
clearWikitty();
}
/*
- * @see org.nuiton.wikitty.WikittyServiceListener#putWikitty(org.nuiton.wikitty.Wikitty[])
+ * @see org.nuiton.wikitty.WikittyListener#putWikitty(org.nuiton.wikitty.Wikitty[])
*/
@Override
- public void putWikitty(WikittyServiceEvent event) {
+ public void putWikitty(WikittyEvent event) {
Collection<Wikitty> wikitties = event.getWikitties().values();
putAllWikitty(wikitties);
}
/*
- * @see org.nuiton.wikitty.WikittyServiceListener#removeWikitty(java.lang.String[])
+ * @see org.nuiton.wikitty.WikittyListener#removeWikitty(java.lang.String[])
*/
@Override
- public void removeWikitty(WikittyServiceEvent event) {
+ public void removeWikitty(WikittyEvent event) {
for (String id : event.getRemoveDate().keySet()) {
removeWikitty(id);
}
}
/*
- * @see org.nuiton.wikitty.WikittyServiceListener#putExtension(org.nuiton.wikitty.WikittyExtension[])
+ * @see org.nuiton.wikitty.WikittyListener#putExtension(org.nuiton.wikitty.WikittyExtension[])
*/
@Override
- public void putExtension(WikittyServiceEvent event) {
+ public void putExtension(WikittyEvent event) {
}
/*
- * @see org.nuiton.wikitty.WikittyServiceListener#clearExtension()
+ * @see org.nuiton.wikitty.WikittyListener#clearExtension()
*/
@Override
- public void clearExtension(WikittyServiceEvent event) {
+ public void clearExtension(WikittyEvent event) {
}
}
Copied: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyEvent.java (from rev 471, trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceEvent.java)
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyEvent.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyEvent.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -0,0 +1,308 @@
+/*
+ * #%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.services;
+
+import com.thoughtworks.xstream.XStream;
+import java.util.Date;
+import java.util.EnumSet;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import org.nuiton.wikitty.entities.Wikitty;
+import org.nuiton.wikitty.entities.WikittyExtension;
+
+/**
+ * Wikitty service event.
+ *
+ * Contains :
+ * <ul>
+ * <li>Wikitty service as source
+ * <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
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class WikittyEvent extends EventObject {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 9017732163643700599L;
+
+ /** Message type (put, remove, clear...). */
+ static public enum WikittyEventType {
+ PUT_WIKITTY(WikittyListener.PUT_WIKITTY_METHOD),
+ REMOVE_WIKITTY(WikittyListener.REMOVE_WIKITTY_METHOD),
+ CLEAR_WIKITTY(WikittyListener.CLEAR_WIKITTY_METHOD),
+ PUT_EXTENSION(WikittyListener.PUT_EXTENSION_METHOD),
+ // il est impossible actuellement de supprimer des extensions
+// REMOVE_EXTENSION(WikittyListener.REMOVE_EXTENSION_METHOD),
+ CLEAR_EXTENSION(WikittyListener.CLEAR_EXTENSION_METHOD);
+
+ /** le nom de la methode du listener a appeler pour ce type d'event */
+ public String listenerMethodName;
+ WikittyEventType(String listenerMethodName) {
+ this.listenerMethodName = listenerMethodName;
+ }
+ }
+
+
+ /** 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, one event can have multiple type
+ * (ex: PUT_WIKITTY + PUT_EXTENSION */
+ protected EnumSet<WikittyEventType> type;
+
+ /** heure de creation de l'event */
+ protected long time;
+
+ /** Use by PUT_WIKITTY, all wikitties added */
+ protected Map<String, Wikitty> wikitties;
+
+ /** 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 WikittyEvent(Object source) {
+ super(source);
+ this.time = System.currentTimeMillis();
+ this.type = EnumSet.noneOf(WikittyEventType.class);
+ }
+
+ /**
+ * Return time of event creation
+ * @return
+ */
+ public long getTime() {
+ return time;
+ }
+
+ /**
+ * To allow set transient source after deserialisation.
+ *
+ * @param source source
+ */
+ public void setSource(Object source) {
+ this.source = source;
+ }
+
+ public EnumSet<WikittyEventType> getType() {
+ return type;
+ }
+
+ /**
+ * @param type
+ */
+ public void addType(WikittyEventType type) {
+ this.type.add(type);
+ }
+
+ /**
+ * Is event remote.
+ *
+ * @return remote event
+ */
+ public boolean isRemote() {
+ return remote;
+ }
+
+ /**
+ * Change remote event property.
+ *
+ * @param remote remote
+ */
+ public void setRemote(boolean remote) {
+ this.remote = remote;
+ }
+
+ public long getEventId() {
+ return eventId;
+ }
+
+ /**
+ * This method must be call with right id, just before send message
+ * notification
+ * @param eventId
+ */
+ public void setEventId(long eventId) {
+ this.eventId = eventId;
+ }
+
+ public Map<String, Wikitty> getWikitties() {
+ return wikitties;
+ }
+
+ 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);
+ }
+
+ /**
+ * Merge this event with event passed in arguement. Merged datas are:
+ * <li> type
+ * <li> wikitties
+ * <li> extensions
+ * <li> removeDate
+ *
+ * @param e
+ */
+ public void add(WikittyEvent 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());
+ }
+ }
+ }
+
+ /**
+ * 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 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
+ + ", eventId=" + eventId
+ + ", time=" + time
+ + ", type=" + type
+ + ", remote=" + remote
+ + ", wikitties=" + wikitties
+ + ", removeDate=" + removeDate
+ + ", extensions=" + extensions
+ + "]";
+ return toString;
+ }
+
+ /**
+ * Permet de serializer en XML l'event. Pourrait etre utilise pour l'envoi
+ * sur un transporteur qui ne peremt pas la serialisation java
+ * @return
+ */
+ public String toXML() {
+ XStream xstream = new XStream();
+ xstream.setMode(XStream.NO_REFERENCES);
+ xstream.alias("event", WikittyEvent.class);
+ String result = xstream.toXML(this);
+ return result;
+ }
+
+ /**
+ * Inverse de la methode toXML
+ * @param xml
+ * @return
+ */
+ static public WikittyEvent fromXML(String xml) {
+ XStream xstream = new XStream();
+ xstream.alias("event", WikittyEvent.class);
+ WikittyEvent result = (WikittyEvent)xstream.fromXML(xml);
+ return result;
+ }
+}
Copied: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyListener.java (from rev 471, trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceListener.java)
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyListener.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyListener.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -0,0 +1,57 @@
+/*
+ * #%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.services;
+
+/**
+ * Permet d'ajouter des listeners sur les methodes de modification de
+ * WikittyService.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public interface WikittyListener {
+
+ // this constant must be up to date with real method name
+ // this is used during fire event
+ final static public String PUT_WIKITTY_METHOD = "putWikitty";
+ final static public String REMOVE_WIKITTY_METHOD = "removeWikitty";
+ final static public String CLEAR_WIKITTY_METHOD = "clearWikitty";
+ final static public String PUT_EXTENSION_METHOD = "putExtension";
+ final static public String REMOVE_EXTENSION_METHOD = "removeExtension";
+ final static public String CLEAR_EXTENSION_METHOD = "clearExtension";
+
+ public void putWikitty(WikittyEvent event);
+ public void removeWikitty(WikittyEvent event);
+ public void clearWikitty(WikittyEvent event);
+
+ /** toto[1.0] */
+ public void putExtension(WikittyEvent event);
+ public void clearExtension(WikittyEvent event);
+
+}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -167,8 +167,8 @@
}
@Override
- public WikittyServiceEvent clear(String securityToken) {
- WikittyServiceEvent result = ws.clear(securityToken);
+ public WikittyEvent clear(String securityToken) {
+ WikittyEvent result = ws.clear(securityToken);
cache.clearWikitty();
return result;
}
@@ -178,8 +178,8 @@
* @param ids
*/
@Override
- public WikittyServiceEvent delete(String securityToken, Collection<String> ids) {
- WikittyServiceEvent result = ws.delete(securityToken, ids);
+ public WikittyEvent delete(String securityToken, Collection<String> ids) {
+ WikittyEvent result = ws.delete(securityToken, ids);
cache.removeAllWikitty(ids);
return result;
}
@@ -340,7 +340,7 @@
* @return
*/
@Override
- public WikittyServiceEvent deleteTree(String securityToken, String wikittyId) {
+ public WikittyEvent deleteTree(String securityToken, String wikittyId) {
return ws.deleteTree(securityToken, wikittyId);
}
@@ -353,9 +353,9 @@
* @return
*/
@Override
- public WikittyServiceEvent store(String securityToken,
+ public WikittyEvent store(String securityToken,
Collection<Wikitty> wikitties, boolean force) {
- WikittyServiceEvent result = ws.store(securityToken, wikitties, force);
+ WikittyEvent result = ws.store(securityToken, wikitties, force);
cache.putAllWikitty(result.getWikitties().values());
@@ -363,7 +363,7 @@
}
@Override
- public WikittyServiceEvent storeExtension(String securityToken,
+ public WikittyEvent storeExtension(String securityToken,
Collection<WikittyExtension> exts) {
// TODO poussin 20101029: perhaps use cache for extension ?
return ws.storeExtension(securityToken, exts);
@@ -387,12 +387,12 @@
//
@Override
- public void addWikittyServiceListener(WikittyServiceListener listener, ServiceListenerType type) {
+ public void addWikittyServiceListener(WikittyListener listener, ServiceListenerType type) {
ws.addWikittyServiceListener(listener, type);
}
@Override
- public void removeWikittyServiceListener(WikittyServiceListener listener, ServiceListenerType type) {
+ public void removeWikittyServiceListener(WikittyListener listener, ServiceListenerType type) {
ws.removeWikittyServiceListener(listener, type);
}
@@ -402,7 +402,7 @@
}
@Override
- public WikittyServiceEvent replay(String securityToken, List<WikittyServiceEvent> events) {
+ public WikittyEvent replay(String securityToken, List<WikittyEvent> events) {
return ws.replay(securityToken, events);
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -76,13 +76,13 @@
}
@Override
- public void addWikittyServiceListener(WikittyServiceListener listener,
+ public void addWikittyServiceListener(WikittyListener listener,
ServiceListenerType type) {
delegate.addWikittyServiceListener(listener, type);
}
@Override
- public void removeWikittyServiceListener(WikittyServiceListener listener,
+ public void removeWikittyServiceListener(WikittyListener listener,
ServiceListenerType type) {
delegate.removeWikittyServiceListener(listener, type);
}
@@ -98,17 +98,17 @@
}
@Override
- public WikittyServiceEvent clear(String securityToken) {
+ public WikittyEvent clear(String securityToken) {
return delegate.clear(securityToken);
}
@Override
- public WikittyServiceEvent replay(String securityToken, List<WikittyServiceEvent> events) {
+ public WikittyEvent replay(String securityToken, List<WikittyEvent> events) {
return delegate.replay(securityToken, events);
}
@Override
- public WikittyServiceEvent store(
+ public WikittyEvent store(
String securityToken, Collection<Wikitty> wikitties, boolean force) {
return delegate.store(securityToken, wikitties, force);
}
@@ -125,7 +125,7 @@
}
@Override
- public WikittyServiceEvent storeExtension(String securityToken,
+ public WikittyEvent storeExtension(String securityToken,
Collection<WikittyExtension> exts) {
return delegate.storeExtension(securityToken, exts);
}
@@ -147,7 +147,7 @@
}
@Override
- public WikittyServiceEvent delete(String securityToken, Collection<String> ids) {
+ public WikittyEvent delete(String securityToken, Collection<String> ids) {
return delegate.delete(securityToken, ids);
}
@@ -168,7 +168,7 @@
}
@Override
- public WikittyServiceEvent deleteTree(String securityToken, String wikittyId) {
+ public WikittyEvent deleteTree(String securityToken, String wikittyId) {
return delegate.deleteTree(securityToken, wikittyId);
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceEnhanced.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceEnhanced.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceEnhanced.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -28,16 +28,16 @@
super(service);
}
- public WikittyServiceEvent store(String securityToken, Wikitty wikitty) {
+ public WikittyEvent store(String securityToken, Wikitty wikitty) {
return store(securityToken, Collections.singleton(wikitty), false);
}
- public WikittyServiceEvent store(String securityToken,
+ public WikittyEvent store(String securityToken,
Collection<Wikitty> wikitties) {
return store(securityToken, wikitties, false);
}
- public WikittyServiceEvent storeExtension(String securityToken,
+ public WikittyEvent storeExtension(String securityToken,
WikittyExtension ext) {
return storeExtension(securityToken, Collections.singleton(ext));
}
@@ -55,7 +55,7 @@
return result;
}
- public WikittyServiceEvent delete(String securityToken, String id) {
+ public WikittyEvent delete(String securityToken, String id) {
return delete(securityToken, Collections.singleton(id));
}
Deleted: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceEvent.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceEvent.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceEvent.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -1,308 +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.services;
-
-import com.thoughtworks.xstream.XStream;
-import java.util.Date;
-import java.util.EnumSet;
-import java.util.EventObject;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import org.nuiton.wikitty.entities.Wikitty;
-import org.nuiton.wikitty.entities.WikittyExtension;
-
-/**
- * Wikitty service event.
- *
- * Contains :
- * <ul>
- * <li>Wikitty service as source
- * <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
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public class WikittyServiceEvent extends EventObject {
-
- /** serialVersionUID. */
- private static final long serialVersionUID = 9017732163643700599L;
-
- /** Message type (put, remove, clear...). */
- static public enum WikittyEventType {
- PUT_WIKITTY(WikittyServiceListener.PUT_WIKITTY_METHOD),
- REMOVE_WIKITTY(WikittyServiceListener.REMOVE_WIKITTY_METHOD),
- CLEAR_WIKITTY(WikittyServiceListener.CLEAR_WIKITTY_METHOD),
- PUT_EXTENSION(WikittyServiceListener.PUT_EXTENSION_METHOD),
- // il est impossible actuellement de supprimer des extensions
-// REMOVE_EXTENSION(WikittyServiceListener.REMOVE_EXTENSION_METHOD),
- CLEAR_EXTENSION(WikittyServiceListener.CLEAR_EXTENSION_METHOD);
-
- /** le nom de la methode du listener a appeler pour ce type d'event */
- public String listenerMethodName;
- WikittyEventType(String listenerMethodName) {
- this.listenerMethodName = listenerMethodName;
- }
- }
-
-
- /** 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, one event can have multiple type
- * (ex: PUT_WIKITTY + PUT_EXTENSION */
- protected EnumSet<WikittyEventType> type;
-
- /** heure de creation de l'event */
- protected long time;
-
- /** Use by PUT_WIKITTY, all wikitties added */
- protected Map<String, Wikitty> wikitties;
-
- /** 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) {
- super(source);
- this.time = System.currentTimeMillis();
- this.type = EnumSet.noneOf(WikittyEventType.class);
- }
-
- /**
- * Return time of event creation
- * @return
- */
- public long getTime() {
- return time;
- }
-
- /**
- * To allow set transient source after deserialisation.
- *
- * @param source source
- */
- public void setSource(Object source) {
- this.source = source;
- }
-
- public EnumSet<WikittyEventType> getType() {
- return type;
- }
-
- /**
- * @param type
- */
- public void addType(WikittyEventType type) {
- this.type.add(type);
- }
-
- /**
- * Is event remote.
- *
- * @return remote event
- */
- public boolean isRemote() {
- return remote;
- }
-
- /**
- * Change remote event property.
- *
- * @param remote remote
- */
- public void setRemote(boolean remote) {
- this.remote = remote;
- }
-
- public long getEventId() {
- return eventId;
- }
-
- /**
- * This method must be call with right id, just before send message
- * notification
- * @param eventId
- */
- public void setEventId(long eventId) {
- this.eventId = eventId;
- }
-
- public Map<String, Wikitty> getWikitties() {
- return wikitties;
- }
-
- 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);
- }
-
- /**
- * Merge this event with event passed in arguement. Merged datas are:
- * <li> type
- * <li> wikitties
- * <li> extensions
- * <li> removeDate
- *
- * @param e
- */
- 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());
- }
- }
- }
-
- /**
- * 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 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
- + ", eventId=" + eventId
- + ", time=" + time
- + ", type=" + type
- + ", remote=" + remote
- + ", wikitties=" + wikitties
- + ", removeDate=" + removeDate
- + ", extensions=" + extensions
- + "]";
- return toString;
- }
-
- /**
- * Permet de serializer en XML l'event. Pourrait etre utilise pour l'envoi
- * sur un transporteur qui ne peremt pas la serialisation java
- * @return
- */
- public String toXML() {
- XStream xstream = new XStream();
- xstream.setMode(XStream.NO_REFERENCES);
- xstream.alias("event", WikittyServiceEvent.class);
- String result = xstream.toXML(this);
- return result;
- }
-
- /**
- * Inverse de la methode toXML
- * @param xml
- * @return
- */
- static public WikittyServiceEvent fromXML(String xml) {
- XStream xstream = new XStream();
- xstream.alias("event", WikittyServiceEvent.class);
- WikittyServiceEvent result = (WikittyServiceEvent)xstream.fromXML(xml);
- return result;
- }
-}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -111,18 +111,18 @@
}
/*
- * @see org.nuiton.wikitty.WikittyService#addWikittyServiceListener(org.nuiton.wikitty.WikittyServiceListener, org.nuiton.wikitty.WikittyService.ServiceListenerType)
+ * @see org.nuiton.wikitty.WikittyService#addWikittyServiceListener(org.nuiton.wikitty.WikittyListener, org.nuiton.wikitty.WikittyService.ServiceListenerType)
*/
@Override
- public void addWikittyServiceListener(WikittyServiceListener listener, ServiceListenerType type) {
+ public void addWikittyServiceListener(WikittyListener listener, ServiceListenerType type) {
throw new UnsupportedOperationException("Can't add listener on " + WikittyServiceImpl.class.getName());
}
/*
- * @see org.nuiton.wikitty.WikittyService#removeWikittyServiceListener(org.nuiton.wikitty.WikittyServiceListener, org.nuiton.wikitty.WikittyService.ServiceListenerType)
+ * @see org.nuiton.wikitty.WikittyService#removeWikittyServiceListener(org.nuiton.wikitty.WikittyListener, org.nuiton.wikitty.WikittyService.ServiceListenerType)
*/
@Override
- public void removeWikittyServiceListener(WikittyServiceListener listener, ServiceListenerType type) {
+ public void removeWikittyServiceListener(WikittyListener listener, ServiceListenerType type) {
throw new UnsupportedOperationException("Can't remove listener on " + WikittyServiceImpl.class.getName());
}
@@ -198,13 +198,13 @@
// return result;
// }
@Override
- public WikittyServiceEvent store(String securityToken,
+ public WikittyEvent store(String securityToken,
Collection<Wikitty> wikitties, boolean force) {
- WikittyServiceEvent result = store(securityToken, null, wikitties, force);
+ WikittyEvent result = store(securityToken, null, wikitties, force);
return result;
}
- protected WikittyServiceEvent store(String securityToken,
+ protected WikittyEvent store(String securityToken,
WikittyTransaction transaction,
Collection<Wikitty> wikitties, boolean force) {
if (!(wikitties instanceof Set)) {
@@ -229,13 +229,13 @@
}
// try to commit command
- WikittyServiceEvent extUpdate =
+ WikittyEvent extUpdate =
getExtensionStorage().store(transaction, allExtensions);
- WikittyServiceEvent wikUpdate =
+ WikittyEvent wikUpdate =
getWikittyStorage().store(transaction, wikitties, force);
getSearchEngin().store(transaction, wikitties);
- WikittyServiceEvent result = new WikittyServiceEvent(this);
+ WikittyEvent result = new WikittyEvent(this);
// prepare update client response
result.add(extUpdate);
result.add(wikUpdate);
@@ -293,13 +293,13 @@
}
@Override
- public WikittyServiceEvent storeExtension(
+ public WikittyEvent storeExtension(
String securityToken, Collection<WikittyExtension> exts) {
- WikittyServiceEvent result = storeExtension(securityToken, null, exts);
+ WikittyEvent result = storeExtension(securityToken, null, exts);
return result;
}
- protected WikittyServiceEvent storeExtension(String securityToken,
+ protected WikittyEvent storeExtension(String securityToken,
WikittyTransaction transaction, Collection<WikittyExtension> exts) {
boolean txCreated = false;
try {
@@ -309,7 +309,7 @@
transaction.begin();
}
- WikittyServiceEvent result =
+ WikittyEvent result =
getExtensionStorage().store(transaction, exts);
if (txCreated) {
@@ -551,7 +551,7 @@
return result;
}
- protected WikittyServiceEvent delete(String securityToken, WikittyTransaction transaction,
+ protected WikittyEvent delete(String securityToken, WikittyTransaction transaction,
Collection<String> ids) throws WikittyException {
// work only on valid id
Collection<Wikitty> storedWikitties = new LinkedHashSet<Wikitty>();
@@ -604,14 +604,14 @@
}
}
- WikittyServiceEvent eventDelete =
+ WikittyEvent eventDelete =
getWikittyStorage().delete(transaction, idSet);
getSearchEngin().delete(transaction, idSet);
- WikittyServiceEvent eventStore =
+ WikittyEvent eventStore =
store(securityToken, transaction, storedWikitties, false);
- WikittyServiceEvent result = new WikittyServiceEvent(this);
+ WikittyEvent result = new WikittyEvent(this);
result.add(eventDelete);
result.add(eventStore);
@@ -619,12 +619,12 @@
}
@Override
- public WikittyServiceEvent delete(String securityToken, Collection<String> ids){
+ public WikittyEvent delete(String securityToken, Collection<String> ids){
WikittyTransaction transaction = new WikittyTransaction();
try {
transaction.begin();
- WikittyServiceEvent result = delete(securityToken, transaction, ids);
+ WikittyEvent result = delete(securityToken, transaction, ids);
transaction.commit();
return result;
@@ -639,13 +639,13 @@
* This operation should be disabled in production environment.
*/
@Override
- public WikittyServiceEvent clear(String securityToken) {
+ public WikittyEvent clear(String securityToken) {
WikittyTransaction transaction = new WikittyTransaction();
try {
transaction.begin();
- WikittyServiceEvent result = clear(securityToken, transaction);
+ WikittyEvent result = clear(securityToken, transaction);
transaction.commit();
return result;
@@ -659,12 +659,12 @@
* Use with caution : It will delete ALL indexes from search engine !
* This operation should be disabled in production environment.
*/
- protected WikittyServiceEvent clear(String securityToken, WikittyTransaction tx) {
+ protected WikittyEvent clear(String securityToken, WikittyTransaction tx) {
getSearchEngin().clear(tx);
- WikittyServiceEvent eventWik = getWikittyStorage().clear(tx);
- WikittyServiceEvent eventExt = getExtensionStorage().clear(tx);
+ WikittyEvent eventWik = getWikittyStorage().clear(tx);
+ WikittyEvent eventExt = getExtensionStorage().clear(tx);
- WikittyServiceEvent result = new WikittyServiceEvent(this);
+ WikittyEvent result = new WikittyEvent(this);
result.add(eventWik);
result.add(eventExt);
return result;
@@ -800,12 +800,12 @@
}
@Override
- public WikittyServiceEvent deleteTree(String securityToken, String thesaurusId) {
+ public WikittyEvent deleteTree(String securityToken, String thesaurusId) {
WikittyTransaction transaction = new WikittyTransaction();
try {
transaction.begin();
- WikittyServiceEvent result = deleteTree(securityToken, transaction, thesaurusId);
+ WikittyEvent result = deleteTree(securityToken, transaction, thesaurusId);
transaction.commit();
return result;
@@ -823,9 +823,9 @@
* @param treeNodeId thesaurusId to delete
* @return all id of delete nodes
*/
- protected WikittyServiceEvent deleteTree(String securityToken, WikittyTransaction transaction, String treeNodeId) {
+ protected WikittyEvent deleteTree(String securityToken, WikittyTransaction transaction, String treeNodeId) {
List<String> allTreeNodeId = getRecursiveTreeNodeId(securityToken, transaction, treeNodeId);
- WikittyServiceEvent result = delete(securityToken, transaction, allTreeNodeId);
+ WikittyEvent result = delete(securityToken, transaction, allTreeNodeId);
return result;
}
@@ -993,7 +993,7 @@
* @return
*/
@Override
- public WikittyServiceEvent replay(String securityToken, List<WikittyServiceEvent> events) {
+ public WikittyEvent replay(String securityToken, List<WikittyEvent> events) {
// indique qu'il faut vider la base avant de faire les ajouts
boolean mustClear = false;
@@ -1008,30 +1008,30 @@
// recherche un event avec un clear pour ne pas jouer des events inutiles
// recherche un store + delete du meme wikitty
// recherche le dernier store du wikitty
- for (WikittyServiceEvent e : events) {
+ for (WikittyEvent e : events) {
// check clear must be the first, if event have clear and other type
// clear is all time play first
if (e.getType().contains(
- WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY)
+ WikittyEvent.WikittyEventType.CLEAR_WIKITTY)
|| e.getType().contains(
- WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION)) {
+ WikittyEvent.WikittyEventType.CLEAR_EXTENSION)) {
mustClear = true;
toAddWikitty.clear();
toRemoveWikitty.clear();
toAddExt.clear();
}
- if (e.getType().contains(WikittyServiceEvent.WikittyEventType.PUT_WIKITTY)) {
+ if (e.getType().contains(WikittyEvent.WikittyEventType.PUT_WIKITTY)) {
for (Wikitty w : e.getWikitties().values()) {
toAddWikitty.put(w.getId(), w);
}
}
- if (e.getType().contains(WikittyServiceEvent.WikittyEventType.REMOVE_WIKITTY)) {
+ if (e.getType().contains(WikittyEvent.WikittyEventType.REMOVE_WIKITTY)) {
for (Map.Entry<String, Date> entry : e.getRemoveDate().entrySet()) {
toAddWikitty.remove(entry.getKey());
toRemoveWikitty.put(entry.getKey(), entry.getValue());
}
}
- if (e.getType().contains(WikittyServiceEvent.WikittyEventType.PUT_EXTENSION)) {
+ if (e.getType().contains(WikittyEvent.WikittyEventType.PUT_EXTENSION)) {
for (WikittyExtension ext : e.getExtensions().values()) {
toAddExt.add(ext);
}
@@ -1044,20 +1044,20 @@
// Actuellement il n'y a pas moyen de supprimer une extension (par surete)
// donc on ne fait rien avec toRemoveExt
- WikittyServiceEvent result = new WikittyServiceEvent(this);
+ WikittyEvent result = new WikittyEvent(this);
if (mustClear) {
- WikittyServiceEvent eventClear = clear(securityToken, tx);
+ WikittyEvent eventClear = clear(securityToken, tx);
result.add(eventClear);
}
- WikittyServiceEvent eventStoreExtension =
+ WikittyEvent eventStoreExtension =
storeExtension(securityToken, tx, toAddExt);
result.add(eventStoreExtension);
- WikittyServiceEvent eventStoreWikitty =
+ WikittyEvent eventStoreWikitty =
store(securityToken, tx, toAddWikitty.values(), false);
result.add(eventStoreWikitty);
- WikittyServiceEvent eventDeleteWikitty =
+ WikittyEvent eventDeleteWikitty =
delete(securityToken, tx, toRemoveWikitty.keySet());
result.add(eventDeleteWikitty);
Deleted: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceListener.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceListener.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceListener.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -1,57 +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.services;
-
-/**
- * Permet d'ajouter des listeners sur les methodes de modification de
- * WikittyService.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public interface WikittyServiceListener {
-
- // this constant must be up to date with real method name
- // this is used during fire event
- final static public String PUT_WIKITTY_METHOD = "putWikitty";
- final static public String REMOVE_WIKITTY_METHOD = "removeWikitty";
- final static public String CLEAR_WIKITTY_METHOD = "clearWikitty";
- final static public String PUT_EXTENSION_METHOD = "putExtension";
- final static public String REMOVE_EXTENSION_METHOD = "removeExtension";
- final static public String CLEAR_EXTENSION_METHOD = "clearExtension";
-
- public void putWikitty(WikittyServiceEvent event);
- public void removeWikitty(WikittyServiceEvent event);
- public void clearWikitty(WikittyServiceEvent event);
-
- /** toto[1.0] */
- public void putExtension(WikittyServiceEvent event);
- public void clearExtension(WikittyServiceEvent event);
-
-}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -70,21 +70,21 @@
protected WikittyService ws;
/** Wikitty service listener (all event). */
- protected ListenerSet<WikittyServiceListener> allWikittyServiceListeners;
+ protected ListenerSet<WikittyListener> allWikittyServiceListeners;
/** Wikitty service listener (only for local event). */
- protected ListenerSet<WikittyServiceListener> localWikittyServiceListeners;
+ protected ListenerSet<WikittyListener> localWikittyServiceListeners;
/** Wikitty service listener (only for remote event). */
- protected ListenerSet<WikittyServiceListener> remoteWikittyServiceListeners;
+ protected ListenerSet<WikittyListener> remoteWikittyServiceListeners;
/** notifier */
- protected WikittyServiceListener notifier;
+ protected WikittyListener notifier;
/**
* Tous les events en attentent d'etre envoyer aux listeners
*/
- protected LinkedBlockingQueue<WikittyServiceEvent> eventToSend;
+ protected LinkedBlockingQueue<WikittyEvent> eventToSend;
/** thread utilise pour evoyer les events */
protected EventThread eventThread;
@@ -100,11 +100,11 @@
this.ws = ws;
// listeners
- allWikittyServiceListeners = new ListenerSet<WikittyServiceListener>();
- localWikittyServiceListeners = new ListenerSet<WikittyServiceListener>();
- remoteWikittyServiceListeners = new ListenerSet<WikittyServiceListener>();
+ allWikittyServiceListeners = new ListenerSet<WikittyListener>();
+ localWikittyServiceListeners = new ListenerSet<WikittyListener>();
+ remoteWikittyServiceListeners = new ListenerSet<WikittyListener>();
- eventToSend = new LinkedBlockingQueue<WikittyServiceEvent>();
+ eventToSend = new LinkedBlockingQueue<WikittyEvent>();
eventThread = new EventThread(eventToSend,
allWikittyServiceListeners, localWikittyServiceListeners,
@@ -117,7 +117,7 @@
}
@Override
- public void addWikittyServiceListener(WikittyServiceListener listener, ServiceListenerType type) {
+ public void addWikittyServiceListener(WikittyListener listener, ServiceListenerType type) {
// not delegated
switch (type) {
case ALL :
@@ -139,7 +139,7 @@
}
@Override
- public void removeWikittyServiceListener(WikittyServiceListener listener, ServiceListenerType type) {
+ public void removeWikittyServiceListener(WikittyListener listener, ServiceListenerType type) {
// not delegated
switch (type) {
case ALL :
@@ -186,16 +186,16 @@
}
@Override
- public WikittyServiceEvent clear(String securityToken) {
- WikittyServiceEvent result = ws.clear(securityToken);
+ public WikittyEvent clear(String securityToken) {
+ WikittyEvent result = ws.clear(securityToken);
fireEvent(result);
return result;
}
@Override
- public WikittyServiceEvent store(String securityToken,
+ public WikittyEvent store(String securityToken,
Collection<Wikitty> wikitties, boolean force) {
- WikittyServiceEvent result = ws.store(securityToken, wikitties, force);
+ WikittyEvent result = ws.store(securityToken, wikitties, force);
// notify listeners
fireEvent(result);
@@ -216,9 +216,9 @@
}
@Override
- public WikittyServiceEvent storeExtension(String securityToken,
+ public WikittyEvent storeExtension(String securityToken,
Collection<WikittyExtension> exts) {
- WikittyServiceEvent result = ws.storeExtension(securityToken, exts);
+ WikittyEvent result = ws.storeExtension(securityToken, exts);
fireEvent(result);
return result;
}
@@ -243,8 +243,8 @@
}
@Override
- public WikittyServiceEvent delete(String securityToken, Collection<String> ids) {
- WikittyServiceEvent result = ws.delete(securityToken, ids);
+ public WikittyEvent delete(String securityToken, Collection<String> ids) {
+ WikittyEvent result = ws.delete(securityToken, ids);
// notify listeners
fireEvent(result);
return result;
@@ -270,8 +270,8 @@
}
@Override
- public WikittyServiceEvent deleteTree(String securityToken, String wikittyId) {
- WikittyServiceEvent result = ws.deleteTree(securityToken, wikittyId);
+ public WikittyEvent deleteTree(String securityToken, String wikittyId) {
+ WikittyEvent result = ws.deleteTree(securityToken, wikittyId);
fireEvent(result);
return result;
}
@@ -306,11 +306,11 @@
/**
* Fire event to all registred listener.
*
- * Take care about {@link WikittyServiceEvent#isRemote()} for fire.
+ * Take care about {@link WikittyEvent#isRemote()} for fire.
*
* @param event event to fire
*/
- protected void fireEvent(final WikittyServiceEvent event) {
+ protected void fireEvent(final WikittyEvent event) {
// ajout d'un thread, car si les listener doit
// ouvrir une transaction WikittyTransaction
// alors que celui qui lance l'event en a une ouverte
@@ -335,7 +335,7 @@
* fire event passed in argument. Before fire, change source to current
* WikittyServiceNotifier and set remote event to true.
*/
- public void processRemoteEvent(WikittyServiceEvent event) {
+ public void processRemoteEvent(WikittyEvent event) {
//source is transient, add it here :
event.setSource(this);
event.setRemote(true); // received event became remote
@@ -358,8 +358,8 @@
}
@Override
- public WikittyServiceEvent replay(String securityToken, List<WikittyServiceEvent> events) {
- WikittyServiceEvent result = ws.replay(securityToken, events);
+ public WikittyEvent replay(String securityToken, List<WikittyEvent> events) {
+ WikittyEvent result = ws.replay(securityToken, events);
// notify listeners
fireEvent(result);
return result;
@@ -390,24 +390,24 @@
/**
* reference vers la collection qui contient les events a envoyer
*/
- protected LinkedBlockingQueue<WikittyServiceEvent> eventToSend;
+ protected LinkedBlockingQueue<WikittyEvent> eventToSend;
/** Wikitty service listener (all event). */
- protected ListenerSet<WikittyServiceListener> allWikittyServiceListeners;
+ protected ListenerSet<WikittyListener> allWikittyServiceListeners;
/** Wikitty service listener (only for local event). */
- protected ListenerSet<WikittyServiceListener> localWikittyServiceListeners;
+ protected ListenerSet<WikittyListener> localWikittyServiceListeners;
/** Wikitty service listener (only for remote event). */
- protected ListenerSet<WikittyServiceListener> remoteWikittyServiceListeners;
+ protected ListenerSet<WikittyListener> remoteWikittyServiceListeners;
/** heure du dernier event envoye */
protected long lastEventTime = 0;
- public EventThread(LinkedBlockingQueue<WikittyServiceEvent> eventToSend,
- ListenerSet<WikittyServiceListener> allWikittyServiceListeners,
- ListenerSet<WikittyServiceListener> localWikittyServiceListeners,
- ListenerSet<WikittyServiceListener> remoteWikittyServiceListeners) {
+ public EventThread(LinkedBlockingQueue<WikittyEvent> eventToSend,
+ ListenerSet<WikittyListener> allWikittyServiceListeners,
+ ListenerSet<WikittyListener> localWikittyServiceListeners,
+ ListenerSet<WikittyListener> remoteWikittyServiceListeners) {
super("wikitty-event-thread");
this.eventToSend = eventToSend;
this.allWikittyServiceListeners = allWikittyServiceListeners;
@@ -472,13 +472,13 @@
protected void processEventQueue() {
try {
- WikittyServiceEvent event;
+ WikittyEvent event;
// on attend pas indefiniment un event, car il faut verifier
// aussi que personne n'a arrete le thread
while (null != (event = eventToSend.poll(5, TimeUnit.SECONDS))) {
try {
synchronized (allWikittyServiceListeners) {
- for(WikittyServiceEvent.WikittyEventType type : event.getType()) {
+ for(WikittyEvent.WikittyEventType type : event.getType()) {
allWikittyServiceListeners.fire(
type.listenerMethodName, event);
}
@@ -489,14 +489,14 @@
try {
if (event.isRemote()) {
synchronized (remoteWikittyServiceListeners) {
- for (WikittyServiceEvent.WikittyEventType type : event.getType()) {
+ for (WikittyEvent.WikittyEventType type : event.getType()) {
remoteWikittyServiceListeners.fire(
type.listenerMethodName, event);
}
}
} else {
synchronized (localWikittyServiceListeners) {
- for (WikittyServiceEvent.WikittyEventType type : event.getType()) {
+ for (WikittyEvent.WikittyEventType type : event.getType()) {
localWikittyServiceListeners.fire(
type.listenerMethodName, event);
}
@@ -563,7 +563,7 @@
*
* @param event message to send
*/
- public void sendMessage(WikittyServiceEvent event) throws Exception;
+ public void sendMessage(WikittyEvent event) throws Exception;
}
/**
@@ -571,7 +571,7 @@
* only if wikitty.notifier.transporter.class configuration is found and
* wikitty.service.event.propagateEvent is true
*/
- static public class RemoteNotifier implements WikittyServiceListener {
+ static public class RemoteNotifier implements WikittyListener {
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(RemoteNotifier.class);
@@ -619,7 +619,7 @@
*
* @param event message to send
*/
- protected void sendMessage(WikittyServiceEvent event) {
+ protected void sendMessage(WikittyEvent event) {
try {
if (log.isDebugEnabled()) {
log.debug("Try to send message : " + event);
@@ -638,10 +638,10 @@
}
/*
- * @see org.nuiton.wikitty.WikittyServiceListener#putWikitty(org.nuiton.wikitty.Wikitty[])
+ * @see org.nuiton.wikitty.WikittyListener#putWikitty(org.nuiton.wikitty.Wikitty[])
*/
@Override
- public void putWikitty(WikittyServiceEvent event) {
+ public void putWikitty(WikittyEvent event) {
if (propagateEvent) {
sendMessage(event);
} else {
@@ -652,10 +652,10 @@
}
/*
- * @see org.nuiton.wikitty.WikittyServiceListener#removeWikitty(java.lang.String[])
+ * @see org.nuiton.wikitty.WikittyListener#removeWikitty(java.lang.String[])
*/
@Override
- public void removeWikitty(WikittyServiceEvent event) {
+ public void removeWikitty(WikittyEvent event) {
if (propagateEvent) {
sendMessage(event);
} else {
@@ -666,10 +666,10 @@
}
/*
- * @see org.nuiton.wikitty.WikittyServiceListener#clearWikitty()
+ * @see org.nuiton.wikitty.WikittyListener#clearWikitty()
*/
@Override
- public void clearWikitty(WikittyServiceEvent event) {
+ public void clearWikitty(WikittyEvent event) {
if (propagateEvent) {
sendMessage(event);
} else {
@@ -680,10 +680,10 @@
}
/*
- * @see org.nuiton.wikitty.WikittyServiceListener#putExtension(org.nuiton.wikitty.WikittyExtension[])
+ * @see org.nuiton.wikitty.WikittyListener#putExtension(org.nuiton.wikitty.WikittyExtension[])
*/
@Override
- public void putExtension(WikittyServiceEvent event) {
+ public void putExtension(WikittyEvent event) {
if (propagateEvent) {
sendMessage(event);
} else {
@@ -694,10 +694,10 @@
}
/*
- * @see org.nuiton.wikitty.WikittyServiceListener#clearExtension()
+ * @see org.nuiton.wikitty.WikittyListener#clearExtension()
*/
@Override
- public void clearExtension(WikittyServiceEvent event) {
+ public void clearExtension(WikittyEvent event) {
if (propagateEvent) {
sendMessage(event);
} else {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -86,12 +86,12 @@
}
@Override
- public void addWikittyServiceListener(WikittyServiceListener listener, ServiceListenerType type) {
+ public void addWikittyServiceListener(WikittyListener listener, ServiceListenerType type) {
ws.addWikittyServiceListener(listener, type);
}
@Override
- public void removeWikittyServiceListener(WikittyServiceListener listener, ServiceListenerType type) {
+ public void removeWikittyServiceListener(WikittyListener listener, ServiceListenerType type) {
ws.addWikittyServiceListener(listener, type);
}
@@ -130,11 +130,11 @@
}
@Override
- public WikittyServiceEvent clear(String securityToken) {
+ public WikittyEvent clear(String securityToken) {
String userId = getUserId(securityToken);
if (isAppAdmin(securityToken, userId)) {
// seul les AppAdmin on le droit a cette method
- WikittyServiceEvent result = ws.clear(securityToken);
+ WikittyEvent result = ws.clear(securityToken);
return result;
} else {
throw new SecurityException(_("user %s can't clear data", userId));
@@ -142,13 +142,13 @@
}
@Override
- public WikittyServiceEvent replay(String securityToken, List<WikittyServiceEvent> events) {
+ public WikittyEvent replay(String securityToken, List<WikittyEvent> events) {
String userId = getUserId(securityToken);
- for (WikittyServiceEvent e : events) {
+ for (WikittyEvent e : events) {
if (e.getType().contains(
- WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY)
+ WikittyEvent.WikittyEventType.CLEAR_WIKITTY)
|| e.getType().contains(
- WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION)) {
+ WikittyEvent.WikittyEventType.CLEAR_EXTENSION)) {
if (isAppAdmin(securityToken, userId)) {
// seul les AppAdmin on le droit a cette method
// les AppAdmin on meme le droit de tout faire, donc on
@@ -158,17 +158,17 @@
throw new SecurityException(_("user %s can't clear data", userId));
}
}
- if (e.getType().contains(WikittyServiceEvent.WikittyEventType.PUT_WIKITTY)) {
+ if (e.getType().contains(WikittyEvent.WikittyEventType.PUT_WIKITTY)) {
checkStore(securityToken, e.getWikitties().values());
}
- if (e.getType().contains(WikittyServiceEvent.WikittyEventType.REMOVE_WIKITTY)) {
+ if (e.getType().contains(WikittyEvent.WikittyEventType.REMOVE_WIKITTY)) {
checkDelete(securityToken, e.getRemoveDate().keySet());
}
- if (e.getType().contains(WikittyServiceEvent.WikittyEventType.PUT_EXTENSION)) {
+ if (e.getType().contains(WikittyEvent.WikittyEventType.PUT_EXTENSION)) {
checkStoreExtension(securityToken, e.getExtensions().values());
}
}
- WikittyServiceEvent result = ws.replay(securityToken, events);
+ WikittyEvent result = ws.replay(securityToken, events);
return result;
}
@@ -196,10 +196,10 @@
}
@Override
- public WikittyServiceEvent store(String securityToken,
+ public WikittyEvent store(String securityToken,
Collection<Wikitty> wikitties, boolean force) {
Collection<Wikitty> wikittiesToStore = checkStore(securityToken, wikitties);
- WikittyServiceEvent result = ws.store(securityToken, wikittiesToStore, force);
+ WikittyEvent result = ws.store(securityToken, wikittiesToStore, force);
return result;
}
@@ -383,9 +383,9 @@
}
@Override
- public WikittyServiceEvent delete(String securityToken, Collection<String> ids) {
+ public WikittyEvent delete(String securityToken, Collection<String> ids) {
checkDelete(securityToken, ids);
- WikittyServiceEvent result = ws.delete(securityToken, ids);
+ WikittyEvent result = ws.delete(securityToken, ids);
return result;
}
@@ -485,7 +485,7 @@
}
@Override
- public WikittyServiceEvent storeExtension(String securityToken,
+ public WikittyEvent storeExtension(String securityToken,
Collection<WikittyExtension> exts) {
checkStoreExtension(securityToken, exts);
return ws.storeExtension(securityToken, exts);
@@ -553,7 +553,7 @@
}
@Override
- public WikittyServiceEvent deleteTree(String securityToken, String treeNodeId) {
+ public WikittyEvent deleteTree(String securityToken, String treeNodeId) {
WikittyTreeNode treeNode = ws.restoreNode(securityToken, treeNodeId, null).getKey();
Collection<Wikitty> wikitties = Arrays.asList(treeNode.getWikitty());
checkStore(securityToken, wikitties);
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -41,7 +41,7 @@
/** WikittyService used to store modified object */
protected WikittyService tx;
- protected List<WikittyServiceEvent> events;
+ protected List<WikittyEvent> events;
/** if autoCommit > 0 all time events numbers element equals to this
* autoCommit commit is call */
@@ -52,7 +52,7 @@
// create new WikittyServiceInMemory not configured with default config
// this WikittyServiceInMemory must be only in memory
this.tx = new WikittyServiceInMemory(null);
- events = new LinkedList<WikittyServiceEvent>();
+ events = new LinkedList<WikittyEvent>();
}
public void setAutoCommit(int autoCommit) {
@@ -63,7 +63,7 @@
return autoCommit;
}
- protected void addEvent(String securityToken, WikittyServiceEvent e) {
+ protected void addEvent(String securityToken, WikittyEvent e) {
events.add(e);
if (autoCommit > 0 && events.size() >= autoCommit) {
commit(securityToken);
@@ -82,7 +82,7 @@
}
@Override
- public void addWikittyServiceListener(WikittyServiceListener listener, ServiceListenerType type) {
+ public void addWikittyServiceListener(WikittyListener listener, ServiceListenerType type) {
throw new UnsupportedOperationException(
"You try to add listener on WikittyServiceTransaction,"
+ "this is an error desgin, you must add WikittyServiceNotifier"
@@ -90,7 +90,7 @@
}
@Override
- public void removeWikittyServiceListener(WikittyServiceListener listener, ServiceListenerType type) {
+ public void removeWikittyServiceListener(WikittyListener listener, ServiceListenerType type) {
throw new UnsupportedOperationException(
"You try to remove listener on WikittyServiceTransaction,"
+ "this is an error desgin, you must add WikittyServiceNotifier"
@@ -113,8 +113,8 @@
}
@Override
- public WikittyServiceEvent clear(String securityToken) {
- WikittyServiceEvent e = tx.clear(securityToken);
+ public WikittyEvent clear(String securityToken) {
+ WikittyEvent e = tx.clear(securityToken);
addEvent(securityToken, e);
return e;
}
@@ -142,16 +142,16 @@
}
@Override
- public WikittyServiceEvent replay(String securityToken, List<WikittyServiceEvent> events) {
- WikittyServiceEvent e = tx.replay(securityToken, events);
+ public WikittyEvent replay(String securityToken, List<WikittyEvent> events) {
+ WikittyEvent e = tx.replay(securityToken, events);
events.add(e);
return e;
}
@Override
- public WikittyServiceEvent store(
+ public WikittyEvent store(
String securityToken, Collection<Wikitty> wikitties, boolean force) {
- WikittyServiceEvent e = tx.store(securityToken, wikitties, force);
+ WikittyEvent e = tx.store(securityToken, wikitties, force);
addEvent(securityToken, e);
return e;
}
@@ -179,9 +179,9 @@
}
@Override
- public WikittyServiceEvent storeExtension(
+ public WikittyEvent storeExtension(
String securityToken, Collection<WikittyExtension> exts) {
- WikittyServiceEvent e = tx.storeExtension(securityToken, exts);
+ WikittyEvent e = tx.storeExtension(securityToken, exts);
addEvent(securityToken, e);
return e;
}
@@ -230,13 +230,13 @@
}
@Override
- public WikittyServiceEvent delete(String securityToken, Collection<String> ids) {
+ public WikittyEvent delete(String securityToken, Collection<String> ids) {
// pour que tout fonctionne bien, il faut que les objets supprimer soit
// dans la tx, car il faut avoir une vrai trace de cette suppression dans la tx
List<Wikitty> wikitties = ws.restore(securityToken, new ArrayList<String>(ids));
tx.store(securityToken, wikitties, true);
- WikittyServiceEvent e = tx.delete(securityToken, ids);
+ WikittyEvent e = tx.delete(securityToken, ids);
addEvent(securityToken, e);
return e;
}
@@ -294,7 +294,7 @@
}
@Override
- public WikittyServiceEvent deleteTree(String securityToken, String treeNodeId) {
+ public WikittyEvent deleteTree(String securityToken, String treeNodeId) {
throw new UnsupportedOperationException("Not supported yet.");
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/XMPPNotifierTransporter.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/XMPPNotifierTransporter.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/XMPPNotifierTransporter.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -27,7 +27,7 @@
import org.nuiton.wikitty.services.WikittyServiceNotifier;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
+import org.nuiton.wikitty.services.WikittyEvent;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
@@ -140,7 +140,7 @@
}
@Override
- public void sendMessage(WikittyServiceEvent event) throws Exception {
+ public void sendMessage(WikittyEvent event) throws Exception {
Message message = muc.createMessage();
message.setBody(event.getType().toString());
message.setProperty(PROPERTY_EVENT_NAME, event);
@@ -165,8 +165,8 @@
log.debug("Receive message : " + event);
}
- if (event instanceof WikittyServiceEvent) {
- ws.processRemoteEvent((WikittyServiceEvent)event);
+ if (event instanceof WikittyEvent) {
+ ws.processRemoteEvent((WikittyEvent)event);
}
}
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorage.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorage.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorage.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -29,7 +29,7 @@
import java.util.List;
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.entities.WikittyExtension;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
+import org.nuiton.wikitty.services.WikittyEvent;
import org.nuiton.wikitty.services.WikittyTransaction;
/**
@@ -49,7 +49,7 @@
* @param extensions the extensions to store
* @return information usefull for client side update data
*/
- WikittyServiceEvent store(WikittyTransaction transaction,
+ WikittyEvent store(WikittyTransaction transaction,
Collection<WikittyExtension> extensions);
/**
@@ -106,6 +106,6 @@
*
* @param transaction transaction
*/
- public WikittyServiceEvent clear(WikittyTransaction transaction);
+ public WikittyEvent clear(WikittyTransaction transaction);
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorageInMemory.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorageInMemory.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorageInMemory.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -9,7 +9,7 @@
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyUtil;
import org.nuiton.wikitty.entities.WikittyExtension;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
+import org.nuiton.wikitty.services.WikittyEvent;
import org.nuiton.wikitty.services.WikittyTransaction;
public class WikittyExtensionStorageInMemory implements WikittyExtensionStorage {
@@ -29,8 +29,8 @@
}
@Override
- public WikittyServiceEvent store(WikittyTransaction transaction, Collection<WikittyExtension> exts) throws WikittyException {
- WikittyServiceEvent result = new WikittyServiceEvent(this);
+ public WikittyEvent store(WikittyTransaction transaction, Collection<WikittyExtension> exts) throws WikittyException {
+ WikittyEvent result = new WikittyEvent(this);
for (WikittyExtension ext : exts) {
// on ajoute que s'il n'y est pas deja
if (!extensions.containsKey(ext.getId())) {
@@ -91,10 +91,10 @@
}
@Override
- public WikittyServiceEvent clear(WikittyTransaction transaction) {
+ public WikittyEvent clear(WikittyTransaction transaction) {
extensions = new HashMap<String, WikittyExtension>();
- WikittyServiceEvent result = new WikittyServiceEvent(this);
- result.addType(WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION);
+ WikittyEvent result = new WikittyEvent(this);
+ result.addType(WikittyEvent.WikittyEventType.CLEAR_EXTENSION);
return result;
}
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorage.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorage.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorage.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -28,7 +28,7 @@
import java.util.Collection;
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.WikittyException;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
+import org.nuiton.wikitty.services.WikittyEvent;
import org.nuiton.wikitty.services.WikittyTransaction;
/**
@@ -52,7 +52,7 @@
*
* @return information usefull for client side update data
*/
- public WikittyServiceEvent store(WikittyTransaction transaction, Collection<Wikitty> wikitties, boolean force);
+ public WikittyEvent store(WikittyTransaction transaction, Collection<Wikitty> wikitties, boolean force);
/**
* Return true if id exists in storage.
@@ -93,7 +93,7 @@
* @return delete response
* @throws WikittyException If id is not valid or don't exist.
*/
- public WikittyServiceEvent delete(WikittyTransaction transaction, Collection<String> idList) throws WikittyException;
+ public WikittyEvent delete(WikittyTransaction transaction, Collection<String> idList) throws WikittyException;
/**
* Scan all wikitties with specific scanner, even if the wikitty is deleted.
@@ -115,6 +115,6 @@
*
* @param transaction transaction
*/
- public WikittyServiceEvent clear(WikittyTransaction transaction);
+ public WikittyEvent clear(WikittyTransaction transaction);
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorageInMemory.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorageInMemory.java 2010-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorageInMemory.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -8,7 +8,7 @@
import org.nuiton.wikitty.WikittyObsoleteException;
import org.nuiton.wikitty.WikittyUtil;
import org.nuiton.wikitty.entities.Wikitty;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
+import org.nuiton.wikitty.services.WikittyEvent;
import org.nuiton.wikitty.services.WikittyTransaction;
public class WikittyStorageInMemory implements WikittyStorage {
@@ -24,8 +24,8 @@
}
@Override
- public WikittyServiceEvent store(WikittyTransaction transaction, Collection<Wikitty> wikitties, boolean force) {
- WikittyServiceEvent result = new WikittyServiceEvent(this);
+ public WikittyEvent store(WikittyTransaction transaction, Collection<Wikitty> wikitties, boolean force) {
+ WikittyEvent result = new WikittyEvent(this);
for (Wikitty wikitty : wikitties) {
// begin with clone of wikitty to prevent modification of
// wikitty passed as argument
@@ -91,8 +91,8 @@
}
@Override
- public WikittyServiceEvent delete(WikittyTransaction transaction, Collection<String> idList) throws WikittyException {
- WikittyServiceEvent result = new WikittyServiceEvent(this);
+ public WikittyEvent delete(WikittyTransaction transaction, Collection<String> idList) throws WikittyException {
+ WikittyEvent result = new WikittyEvent(this);
Date now = new Date();
for (String id : idList) {
Wikitty w = restore(transaction, id);
@@ -140,10 +140,10 @@
}
@Override
- public WikittyServiceEvent clear(WikittyTransaction transaction) {
+ public WikittyEvent clear(WikittyTransaction transaction) {
wikitties = new LinkedHashMap<String, Wikitty>();
- WikittyServiceEvent result = new WikittyServiceEvent(this);
- result.addType(WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY);
+ WikittyEvent result = new WikittyEvent(this);
+ result.addType(WikittyEvent.WikittyEventType.CLEAR_WIKITTY);
return result;
}
}
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-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -59,7 +59,7 @@
import org.nuiton.wikitty.WikittyObsoleteException;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.services.WikittyServiceEnhanced;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
+import org.nuiton.wikitty.services.WikittyEvent;
import org.nuiton.wikitty.WikittyUtil;
import org.nuiton.wikitty.search.operators.Element;
import org.nuiton.wikitty.search.Search;
@@ -353,7 +353,7 @@
for( Wikitty w : wikitties ) {
oldIdVersion.put(w.getId(), w.getVersion());
}
- WikittyServiceEvent response = ws.store(null, wikitties, false);
+ WikittyEvent response = ws.store(null, wikitties, false);
for (Wikitty w : wikitties) {
response.update(w);
String v1 = w.getVersion();
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-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -7,8 +7,8 @@
import org.junit.Assert;
import org.junit.Test;
import org.nuiton.wikitty.WikittyService.ServiceListenerType;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
-import org.nuiton.wikitty.services.WikittyServiceListener;
+import org.nuiton.wikitty.services.WikittyEvent;
+import org.nuiton.wikitty.services.WikittyListener;
import org.nuiton.wikitty.services.WikittyServiceNotifier;
/**
@@ -26,7 +26,7 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(WikittyServiceNotificationTest.class);
- protected EnumSet<WikittyServiceEvent.WikittyEventType> lastEvent = null;
+ protected EnumSet<WikittyEvent.WikittyEventType> lastEvent = null;
protected int nbEvent = 0;
/**
@@ -60,13 +60,13 @@
*/
protected void sendEvent(WikittyServiceNotifier wsn, boolean hasListener) throws Exception {
{
- WikittyServiceEvent event = new WikittyServiceEvent("test");
- event.addType(WikittyServiceEvent.WikittyEventType.PUT_WIKITTY);
+ WikittyEvent event = new WikittyEvent("test");
+ event.addType(WikittyEvent.WikittyEventType.PUT_WIKITTY);
wsn.processRemoteEvent(event);
wsn.getEventThread().waitFor(event.getTime());
if (hasListener) {
Assert.assertEquals(
- EnumSet.of(WikittyServiceEvent.WikittyEventType.PUT_WIKITTY),
+ EnumSet.of(WikittyEvent.WikittyEventType.PUT_WIKITTY),
lastEvent);
} else {
Assert.assertEquals(null, lastEvent);
@@ -74,13 +74,13 @@
lastEvent = null;
}
{
- WikittyServiceEvent event = new WikittyServiceEvent("test");
- event.addType(WikittyServiceEvent.WikittyEventType.REMOVE_WIKITTY);
+ WikittyEvent event = new WikittyEvent("test");
+ event.addType(WikittyEvent.WikittyEventType.REMOVE_WIKITTY);
wsn.processRemoteEvent(event);
wsn.getEventThread().waitFor(event.getTime());
if (hasListener) {
Assert.assertEquals(
- EnumSet.of(WikittyServiceEvent.WikittyEventType.REMOVE_WIKITTY),
+ EnumSet.of(WikittyEvent.WikittyEventType.REMOVE_WIKITTY),
lastEvent);
} else {
Assert.assertEquals(null, lastEvent);
@@ -88,13 +88,13 @@
lastEvent = null;
}
{
- WikittyServiceEvent event = new WikittyServiceEvent("test");
- event.addType(WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY);
+ WikittyEvent event = new WikittyEvent("test");
+ event.addType(WikittyEvent.WikittyEventType.CLEAR_WIKITTY);
wsn.processRemoteEvent(event);
wsn.getEventThread().waitFor(event.getTime());
if (hasListener) {
Assert.assertEquals(
- EnumSet.of(WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY),
+ EnumSet.of(WikittyEvent.WikittyEventType.CLEAR_WIKITTY),
lastEvent);
} else {
Assert.assertEquals(null, lastEvent);
@@ -102,13 +102,13 @@
lastEvent = null;
}
{
- WikittyServiceEvent event = new WikittyServiceEvent("test");
- event.addType(WikittyServiceEvent.WikittyEventType.PUT_EXTENSION);
+ WikittyEvent event = new WikittyEvent("test");
+ event.addType(WikittyEvent.WikittyEventType.PUT_EXTENSION);
wsn.processRemoteEvent(event);
wsn.getEventThread().waitFor(event.getTime());
if (hasListener) {
Assert.assertEquals(
- EnumSet.of(WikittyServiceEvent.WikittyEventType.PUT_EXTENSION),
+ EnumSet.of(WikittyEvent.WikittyEventType.PUT_EXTENSION),
lastEvent);
} else {
Assert.assertEquals(null, lastEvent);
@@ -116,13 +116,13 @@
lastEvent = null;
}
{
- WikittyServiceEvent event = new WikittyServiceEvent("test");
- event.addType(WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION);
+ WikittyEvent event = new WikittyEvent("test");
+ event.addType(WikittyEvent.WikittyEventType.CLEAR_EXTENSION);
wsn.processRemoteEvent(event);
wsn.getEventThread().waitFor(event.getTime());
if (hasListener) {
Assert.assertEquals(
- EnumSet.of(WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION),
+ EnumSet.of(WikittyEvent.WikittyEventType.CLEAR_EXTENSION),
lastEvent);
} else {
Assert.assertEquals(null, lastEvent);
@@ -134,49 +134,49 @@
/**
* Class listener des events, check la bonne reception
*/
- class Listener implements WikittyServiceListener {
+ class Listener implements WikittyListener {
@Override
- public void putWikitty(WikittyServiceEvent event) {
+ public void putWikitty(WikittyEvent event) {
nbEvent++;
Assert.assertEquals(
- EnumSet.of(WikittyServiceEvent.WikittyEventType.PUT_WIKITTY),
+ EnumSet.of(WikittyEvent.WikittyEventType.PUT_WIKITTY),
event.getType());
lastEvent = event.getType();
}
@Override
- public void removeWikitty(WikittyServiceEvent event) {
+ public void removeWikitty(WikittyEvent event) {
nbEvent++;
Assert.assertEquals(
- EnumSet.of(WikittyServiceEvent.WikittyEventType.REMOVE_WIKITTY),
+ EnumSet.of(WikittyEvent.WikittyEventType.REMOVE_WIKITTY),
event.getType());
lastEvent = event.getType();
}
@Override
- public void clearWikitty(WikittyServiceEvent event) {
+ public void clearWikitty(WikittyEvent event) {
nbEvent++;
Assert.assertEquals(
- EnumSet.of(WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY),
+ EnumSet.of(WikittyEvent.WikittyEventType.CLEAR_WIKITTY),
event.getType());
lastEvent = event.getType();
}
@Override
- public void putExtension(WikittyServiceEvent event) {
+ public void putExtension(WikittyEvent event) {
nbEvent++;
Assert.assertEquals(
- EnumSet.of(WikittyServiceEvent.WikittyEventType.PUT_EXTENSION),
+ EnumSet.of(WikittyEvent.WikittyEventType.PUT_EXTENSION),
event.getType());
lastEvent = event.getType();
}
@Override
- public void clearExtension(WikittyServiceEvent event) {
+ public void clearExtension(WikittyEvent event) {
nbEvent++;
Assert.assertEquals(
- EnumSet.of(WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION),
+ EnumSet.of(WikittyEvent.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-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -36,7 +36,7 @@
import org.jivesoftware.smackx.muc.MultiUserChat;
import org.junit.Test;
import org.nuiton.wikitty.WikittyConfig;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
+import org.nuiton.wikitty.services.WikittyEvent;
import org.nuiton.wikitty.services.XMPPNotifierTransporter;
/**
@@ -63,7 +63,7 @@
// Envoi d'un message avec le transporter normal
XMPPNotifierTransporter xmpp = new XMPPNotifierTransporter(config, null);
- WikittyServiceEvent event = new WikittyServiceEvent("test");
+ WikittyEvent event = new WikittyEvent("test");
event.addRemoveDate("theId", new Date());
xmpp.sendMessage(event);
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-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -62,7 +62,7 @@
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.entities.WikittyExtension;
import org.nuiton.wikitty.storage.WikittyExtensionStorage;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
+import org.nuiton.wikitty.services.WikittyEvent;
import org.nuiton.wikitty.services.WikittyTransaction;
import org.nuiton.wikitty.WikittyUtil;
@@ -127,10 +127,10 @@
}
@Override
- public WikittyServiceEvent store(WikittyTransaction transaction,
+ public WikittyEvent store(WikittyTransaction transaction,
Collection<WikittyExtension> extensions)
throws WikittyException {
- WikittyServiceEvent result = new WikittyServiceEvent(this);
+ WikittyEvent result = new WikittyEvent(this);
Connection connection = WikittyJDBCUtil.getConnection(config);
try {
for (WikittyExtension ext : extensions) {
@@ -348,13 +348,13 @@
}
@Override
- public WikittyServiceEvent clear(WikittyTransaction transaction) {
+ public WikittyEvent clear(WikittyTransaction transaction) {
Connection connection = WikittyJDBCUtil.getConnection(config);
try {
lastVersion = null;
WikittyJDBCUtil.doQuery(connection, jdbcQuery.getProperty(QUERY_CLEAR_EXTENSION));
- WikittyServiceEvent result = new WikittyServiceEvent(this);
- result.addType(WikittyServiceEvent.WikittyEventType.CLEAR_EXTENSION);
+ WikittyEvent result = new WikittyEvent(this);
+ result.addType(WikittyEvent.WikittyEventType.CLEAR_EXTENSION);
return result;
} catch (Exception eee) {
throw new WikittyException("Can't clear all extension", eee);
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-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -78,7 +78,7 @@
import org.nuiton.wikitty.storage.WikittyExtensionStorage;
import org.nuiton.wikitty.entities.WikittyImpl;
import org.nuiton.wikitty.WikittyObsoleteException;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
+import org.nuiton.wikitty.services.WikittyEvent;
import org.nuiton.wikitty.storage.WikittyStorage;
import org.nuiton.wikitty.services.WikittyTransaction;
import org.nuiton.wikitty.WikittyUtil;
@@ -166,11 +166,11 @@
}
@Override
- public WikittyServiceEvent store(WikittyTransaction transaction,
+ public WikittyEvent store(WikittyTransaction transaction,
Collection<Wikitty> wikitties, boolean force) throws WikittyException {
Connection connection = WikittyJDBCUtil.getConnection(config);
try {
- WikittyServiceEvent result = new WikittyServiceEvent(this);
+ WikittyEvent result = new WikittyEvent(this);
for (Wikitty wikitty : wikitties) {
String query = String.format(jdbcQuery.getProperty(QUERY_SELECT_TWO_WHERE),
COL_VERSION, COL_DELETION_DATE, TABLE_WIKITTY_ADMIN, COL_ID);
@@ -388,10 +388,10 @@
}
@Override
- public WikittyServiceEvent delete(WikittyTransaction transaction, Collection<String> ids) throws WikittyException {
+ public WikittyEvent delete(WikittyTransaction transaction, Collection<String> ids) throws WikittyException {
Connection connection = WikittyJDBCUtil.getConnection(config);
try {
- WikittyServiceEvent result = new WikittyServiceEvent(this);
+ WikittyEvent result = new WikittyEvent(this);
Date now = new Date();
for (String id : ids) {
@@ -564,12 +564,12 @@
}
@Override
- public WikittyServiceEvent clear(WikittyTransaction transaction) {
+ public WikittyEvent clear(WikittyTransaction transaction) {
Connection connection = WikittyJDBCUtil.getConnection(config);
try {
WikittyJDBCUtil.doQuery(connection, jdbcQuery.getProperty(QUERY_CLEAR_WIKITTY));
- WikittyServiceEvent result = new WikittyServiceEvent(this);
- result.addType(WikittyServiceEvent.WikittyEventType.CLEAR_WIKITTY);
+ WikittyEvent result = new WikittyEvent(this);
+ result.addType(WikittyEvent.WikittyEventType.CLEAR_WIKITTY);
return result;
} catch (SQLException eee) {
throw new WikittyException("Can't clear wikitty data", eee);
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-11-15 16:36:44 UTC (rev 472)
+++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/TreeTest.java 2010-11-15 17:04:29 UTC (rev 473)
@@ -47,7 +47,7 @@
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyExtension;
import org.nuiton.wikitty.entities.WikittyImpl;
-import org.nuiton.wikitty.services.WikittyServiceEvent;
+import org.nuiton.wikitty.services.WikittyEvent;
import org.nuiton.wikitty.conform.StorageTest;
import org.nuiton.wikitty.search.Search;
@@ -400,7 +400,7 @@
WikittyTreeNodeImpl child = new WikittyTreeNodeImpl();
child.setParent(parent.getWikittyId());
- WikittyServiceEvent event = ws.store(null, child.getWikitty());
+ WikittyEvent event = ws.store(null, child.getWikitty());
event.update(child.getWikitty());
Map<WikittyTreeNode, Integer> children = ws.restoreChildren(null, parent.getWikittyId(), null);
1
0
r472 - in trunk: wikitty-api/src/main/java/org/nuiton/wikitty wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr wikitty-solr-impl/src/main/resources
by bpoussin@users.nuiton.org 15 Nov '10
by bpoussin@users.nuiton.org 15 Nov '10
15 Nov '10
Author: bpoussin
Date: 2010-11-15 17:36:44 +0100 (Mon, 15 Nov 2010)
New Revision: 472
Url: http://nuiton.org/repositories/revision/wikitty/472
Log:
Evolution #1005: Create for WikittyServiceInMemory a SolR in memory instance (via configuration)
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java
trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java
trunk/wikitty-solr-impl/src/main/resources/solrconfig.xml
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java 2010-11-10 09:06:57 UTC (rev 471)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java 2010-11-15 16:36:44 UTC (rev 472)
@@ -143,10 +143,17 @@
_("JDBC xadatasource property h2 password"),
"", String.class, false, false),
+ /* Solr config name are used directly in solr config file. If
+ * you change it, change too in module
+ * wikitty-solr-impl/src/main/resources/solrconfig.xml */
WIKITTY_SEARCHENGINE_SOLR_DIRECTORY_DATA(
"wikitty.searchengine.solr.directory.data",
_("Solr data directory"),
"./target/data/solr", File.class, false, false),
+ WIKITTY_SEARCHENGINE_SOLR_DIRECTORY_FACTORY(
+ "wikitty.searchengine.solr.directory.factory",
+ _("SolR storage type possible value: solr.StandardDirectoryFactory, solr.RAMDirectoryFactory"),
+ "solr.StandardDirectoryFactory", String.class, false, false),
WIKITTY_WIKITTYSERVICE_COMPONENTS(
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-11-10 09:06:57 UTC (rev 471)
+++ trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java 2010-11-15 16:36:44 UTC (rev 472)
@@ -85,9 +85,6 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(WikittySearchEnginSolr.class);
- /** 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 */
static final protected String SOLR_ID = "id";
@@ -499,14 +496,26 @@
// init system env solr.data.dir
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);
- file.mkdirs();
- System.setProperty(SOLR_DATA_DIR_CONFIG, solrDataDir);
+ // choix du storage (file or Ram)
+ String solrDirFactoryKey =
+ WikittyConfig.Option.WIKITTY_SEARCHENGINE_SOLR_DIRECTORY_FACTORY.getKey();
+ String solrDirFactory = config.getOption(solrDirFactoryKey);
+ if (solrDirFactory != null) {
+ System.setProperty(solrDirFactoryKey, solrDirFactory);
}
+
+ // on utilise le directory que si on est pas en Ram
+ if (solrDirFactory != null && !solrDirFactory.contains("RAMDirectoryFactory")) {
+ String solrDataDirKey =
+ WikittyConfig.Option.WIKITTY_SEARCHENGINE_SOLR_DIRECTORY_DATA.getKey();
+ String solrDataDir = config.getOption(solrDataDirKey);
+ // make sure that dir exists
+ if (solrDataDir != null) {
+ File file = new File(solrDataDir);
+ file.mkdirs();
+ System.setProperty(solrDataDirKey, solrDataDir);
+ }
+ }
}
try {
Modified: trunk/wikitty-solr-impl/src/main/resources/solrconfig.xml
===================================================================
--- trunk/wikitty-solr-impl/src/main/resources/solrconfig.xml 2010-11-10 09:06:57 UTC (rev 471)
+++ trunk/wikitty-solr-impl/src/main/resources/solrconfig.xml 2010-11-15 16:36:44 UTC (rev 472)
@@ -54,8 +54,16 @@
<!-- Used to specify an alternate directory to hold all index data
other than the default ./data under the Solr home.
If replication is in use, this should match the replication configuration. -->
- <dataDir>${solr.data.dir:./solr/data}</dataDir>
+ <dataDir>${wikitty.searchengine.solr.directory.data:./solr/data}</dataDir>
+ <!-- The DirectoryFactory to use for indexes.
+ solr.StandardDirectoryFactory, the default, is filesystem based.
+ solr.RAMDirectoryFactory is memory based, not persistent, and doesn't work with replication.
+ A prefix of "solr." for class names is an alias that
+ causes solr to search appropriate packages, including
+ org.apache.solr.(search|update|request|core|analysis)
+ -->
+ <directoryFactory name="DirectoryFactory" class="${wikitty.searchengine.solr.directory.factory:solr.StandardDirectoryFactory}"/>
<indexDefaults>
<!-- Values here affect all index writers and act as a default unless overridden. -->
1
0
r471 - in trunk: . src/site src/site/en src/site/en/rst src/site/rst
by jcouteau@users.nuiton.org 10 Nov '10
by jcouteau@users.nuiton.org 10 Nov '10
10 Nov '10
Author: jcouteau
Date: 2010-11-10 10:06:57 +0100 (Wed, 10 Nov 2010)
New Revision: 471
Url: http://nuiton.org/repositories/revision/wikitty/471
Log:
Split doc between english and french (was mixed) prepare site generation for new documentation
Added:
trunk/src/site/en/
trunk/src/site/en/rst/
trunk/src/site/en/rst/HowTo.rst
trunk/src/site/en/rst/changes.rst
trunk/src/site/en/rst/hessian.rst
trunk/src/site/en/rst/index.rst
trunk/src/site/en/rst/migration.rst
trunk/src/site/site_en.xml
trunk/src/site/site_fr.xml
Removed:
trunk/src/site/rst/HowTo.rst
trunk/src/site/site.xml
Modified:
trunk/pom.xml
trunk/src/site/rst/changes.rst
trunk/src/site/rst/migration.rst
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-11-09 09:14:33 UTC (rev 470)
+++ trunk/pom.xml 2010-11-10 09:06:57 UTC (rev 471)
@@ -491,6 +491,7 @@
<packaging>pom</packaging>
<properties>
+ <platform>nuiton</platform>
<projectId>wikitty</projectId>
<!-- common versions used in sub-poms -->
@@ -501,6 +502,10 @@
<zkVersion>5.0.2</zkVersion>
<hbaseVersion>0.89.0-SNAPSHOT</hbaseVersion>
+
+ <!--Multilanguage maven-site -->
+ <locales>fr,en</locales>
+
</properties>
<!-- ************************************************************* -->
Added: trunk/src/site/en/rst/HowTo.rst
===================================================================
--- trunk/src/site/en/rst/HowTo.rst (rev 0)
+++ trunk/src/site/en/rst/HowTo.rst 2010-11-10 09:06:57 UTC (rev 471)
@@ -0,0 +1,44 @@
+.. -
+.. * #%L
+.. * Wikitty
+.. *
+.. * $Id$
+.. * $HeadURL$
+.. * %%
+.. * Copyright (C) 2009 - 2010 CodeLutin
+.. * %%
+.. * 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%
+.. -
+How to work Translation
+======================
+
+Add extension field translation
+-------------------------------
+
+WikittyI18n w = WikittyI18nUtil.getI18n(proxy, extension);
+w.setTranslation("fr", "myField", "MonChampsTraduit");
+proxy.store(w);
+
+Get extension field translation
+-------------------------------
+
+WikittyI18n w = WikittyI18nUtil.getI18n(proxy, extension);
+String trad = w.getTranslation("fr", "myField");
+
+If there is no translation for this field, default value is returned
+
+How to add security
+===================
Added: trunk/src/site/en/rst/changes.rst
===================================================================
--- trunk/src/site/en/rst/changes.rst (rev 0)
+++ trunk/src/site/en/rst/changes.rst 2010-11-10 09:06:57 UTC (rev 471)
@@ -0,0 +1,38 @@
+.. -
+.. * #%L
+.. * Wikitty
+.. *
+.. * $Id$
+.. * $HeadURL$
+.. * %%
+.. * Copyright (C) 2009 - 2010 CodeLutin
+.. * %%
+.. * 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%
+.. -
+Changes
+=======
+
+TreeNode
+--------
+
+Since 2.2, attribute "children" in tree node has been renamed to "attachment"
+du to confusion between attached wikitty and sub node children.
+
+TreeNode extension version has been increased to ``2.0``.
+
+You will need to migrate_ your wikitties.
+
+.. _migrate: migration.html
\ No newline at end of file
Added: trunk/src/site/en/rst/hessian.rst
===================================================================
--- trunk/src/site/en/rst/hessian.rst (rev 0)
+++ trunk/src/site/en/rst/hessian.rst 2010-11-10 09:06:57 UTC (rev 471)
@@ -0,0 +1,92 @@
+.. -
+.. * #%L
+.. * Wikitty
+.. *
+.. * $Id$
+.. * $HeadURL$
+.. * %%
+.. * Copyright (C) 2009 - 2010 CodeLutin
+.. * %%
+.. * 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%
+.. -
+Hessian
+=======
+
+Wikitty provides the modules necessary to be used as a client/server based on
+Hessian.
+
+It is compounded of :
+ * a war application that, reading a configuration file, is capable of
+ providing a service on any Wikitty storage type.
+ * a Factory that returns a proxy on a distant service.
+
+Server
+------
+
+The server is available as a a web app (war) ready to be used. You can download
+it on this adress : http://www.nuiton.org/projects/list_files/wikitty
+
+By default, this web app is based on the configuration file
+``/etc/wikitty-hessian.properties`` (under Linux). This configuration file
+contains 3 configuration options specific to Hessian :
+
+ * wikitty.hessian.usecache : add cache use
+ * wikitty.hessian.usenotification : add notification use
+ * wikitty.hessian.usesecurity : add security use
+
+Then the configuration file contains the specific configuration of the
+storage to use.
+
+Here is a configuration example::
+
+ # security
+ wikitty.hessian.usesecurity=true
+ wikitty.service.login=xxxx
+ wikitty.service.password=zzzz
+
+ # notification
+ wikitty.hessian.usenotification=true
+ wikitty.service.event.jgroupschannelname=myjgroupchannel
+ wikitty.service.event.propagateEvent=false
+
+ # cache
+ wikitty.hessian.usecache=true
+ wikitty.service.cache.listenevents=true
+
+ # jdbc configuration
+ jdbc.con.driver=org.h2.Driver
+ jdbc.con.host=jdbc:h2:file:/var/lib/myapp/h2db
+ jdbc.con.userName=sa
+ jdbc.con.password=
+
+ # solr configuration
+ solr.data.dir=/var/lib/myapp/solr
+
+The application is then accessible on "/wikitty" uri following the deployment
+context.
+For example : http://localhost:8080/myapp/wikitty
+
+Client
+------
+
+The interface for the service can be obtained using the available Factory in
+``wikitty-hessian-client`` module.
+
+Example::
+
+ WikittyService service = getWikittyService("http://localhost/wikitty");
+
+The ``service`` can then be used as a local service.
Added: trunk/src/site/en/rst/index.rst
===================================================================
--- trunk/src/site/en/rst/index.rst (rev 0)
+++ trunk/src/site/en/rst/index.rst 2010-11-10 09:06:57 UTC (rev 471)
@@ -0,0 +1,119 @@
+.. -
+.. * #%L
+.. * Wikitty
+.. *
+.. * $Id$
+.. * $HeadURL$
+.. * %%
+.. * Copyright (C) 2009 - 2010 CodeLutin
+.. * %%
+.. * 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%
+.. -
+Wikitty
+=======
+
+Wikitty is a key/value storage and search system.
+
+Concept
+=======
+
+A Java object or a relational table are frozen when writing code or creating
+database. To make them evolve, you have to go back into the code, write a
+migration process,...
+
+It is also really hard to maintain a coherent code when you want to develop the
+same application for similar needs with only little differences. Between the
+common code and the specific code, it can easily be a real burden.
+
+Wikitty tries to bring some answers to those problems bringing a technical
+solution easy to put into place and to use.
+
+An object never has predefined fields, but only a unique id. You can add
+extensions to this object. An extension is the definition of a group of fields.
+To knw all the fields of an object, you just have to know which extensions have
+been added. For example, we can define the extension Person and the extension
+Employee and use them on the same object. The said object will have all the
+fields of the Person extension and all the fields of the Employee extension and
+will carry the two notions. If the project is used by a company that needs to
+add fields to the Employee extension, there is no need to modify the existing
+extensions or the database scheme. You just need to create a new extension,
+depending on Employee extension, and that you will use to display your Employee
+data. If the main project evolve, there is absolutely no impact on the specific
+extension used by the company. The core application developers do not have to
+worry (or know) about specific stuff that might have been developed by others.
+The same way, there is no maintenance costs for people that have made
+specific extensions, those extensions are re-usable from version to version
+without any modification or maintenance.
+
+Wikitty core brings the base services :
+
+- Bean generating for easy use by developers.
+- A WikittyProxy class that masks the Wikitty objects and only uses generated
+ Beans.
+- Creation, restoration, update, delete of entities.
+- Search for entities (full text, facets, ...)
+- Tree notion
+
+Some other extra-services exists :
+
+- security : authentification and authorisation
+- cache
+- notification (synchronisation between two servers, client/server notification,
+ listener on modifications)
+
+Complementary add-ons :
+- Labels (to labelize objects)
+- Import/Export
+- Internationalization (i18n)
+
+Technical concept
+=================
+
+The concept is two have a core as simple as possible, with a few methods (around
+20).
+- read
+- write
+- search
+- login/logout
+- rights checking (read, write, delete)
+
+The new services (cache, security, notification, ...) are on top
+of the core to provide the services.
+
+The core delegate all the work to 3 services that can be implemented using
+different technologies :
+- extensions storage (in-memory, jdbc, hbase, jpa, ...)
+- data storage (in-memory, jdbc, hbase, jpa, ...)
+- indexation and search (in-memory, SolR, ...)
+
+So it is possible to add new high-level services, or to add new ways to store
+the info.
+
+For some needs, there is no need to implement a new level (WikittyService), so
+we speak of AddOn. Those AddOns work directly using the WikittyService API, this
+is for example the case for import/export.
+
+The lient part of the applications only work through WikittyProxy who masks
+the Wikitty object notion to return Beans that can be easily used by the
+developer.
+
+High-level service
+==================
+
+A high-level service can contain :
+- specific extensions
+- a specific service layer
+- a Helper class
Added: trunk/src/site/en/rst/migration.rst
===================================================================
--- trunk/src/site/en/rst/migration.rst (rev 0)
+++ trunk/src/site/en/rst/migration.rst 2010-11-10 09:06:57 UTC (rev 471)
@@ -0,0 +1,77 @@
+.. -
+.. * #%L
+.. * Wikitty
+.. *
+.. * $Id$
+.. * $HeadURL$
+.. * %%
+.. * Copyright (C) 2009 - 2010 CodeLutin
+.. * %%
+.. * 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%
+.. -
+Manage data migration using Wikitty
+-----------------------------------
+
+Presentation
+============
+
+In Wikitty, migration is done each time you load an object. If an object is
+present in the database in an old version, when it is loaded from the database,
+it is automatically migrated to the new version. This way, you avoid costly
+migration at initialisation.
+
+The only thing to bear in mind is that data which was not migrated is still
+indexed in the old version and might not be returned by requests. If you need
+the data to be indexed on the new version, you still can migrate all your
+objects at initialisation by loading all the objects and store them.
+
+How migrate data properly in Wikitty
+====================================
+
+After your application launch and before any request, you should store all the
+extensions needed by your application, in their last version ::
+
+ store(myExtension);
+
+Then you need to add to the registry all the specific migrations for
+extensions::
+
+ WikittyExtensionMigration.migrationRegistry.put("myExtension", myMigrationClass);
+
+You can now use your data properly, they will be migrated at loading time.
+
+If you want to migrate objects before using them (for requests purpose for
+example), for each version, search all you objects, restore and then store
+them::
+
+ search(Client)
+ restore(Client)
+ store(Client)
+
+Take care to the cost of the indexation compared to the data volume.
+
+Specific migrations
+===================
+
+Wikitty makes an automatic migration in cas of deleted fields, added fields or
+renamed fields (need to add a renameFrom tag on the field).
+
+For other kind of migration, you might want to create your own migration class
+that implements WikittyExtensionMigration. This class only needs to make the
+migration from a version to the next version, for example version 1 to version 2.
+In cas of a migration needed from version 1 to version 4, Wikitty will
+automatically call the classes to migrate form version 1 to 2, then from version
+2 to 3 and so on.
Deleted: trunk/src/site/rst/HowTo.rst
===================================================================
--- trunk/src/site/rst/HowTo.rst 2010-11-09 09:14:33 UTC (rev 470)
+++ trunk/src/site/rst/HowTo.rst 2010-11-10 09:06:57 UTC (rev 471)
@@ -1,20 +0,0 @@
-How to work Translation
-======================
-
-Add extension field translation
--------------------------------
-
-WikittyI18n w = WikittyI18nUtil.getI18n(proxy, extension);
-w.setTranslation("fr", "myField", "MonChampsTraduit");
-proxy.store(w);
-
-Get extension field translation
--------------------------------
-
-WikittyI18n w = WikittyI18nUtil.getI18n(proxy, extension);
-String trad = w.getTranslation("fr", "myField");
-
-If there is no translation for this field, default value is returned
-
-How to add security
-===================
Modified: trunk/src/site/rst/changes.rst
===================================================================
--- trunk/src/site/rst/changes.rst 2010-11-09 09:14:33 UTC (rev 470)
+++ trunk/src/site/rst/changes.rst 2010-11-10 09:06:57 UTC (rev 471)
@@ -1,38 +1,37 @@
.. -
.. * #%L
.. * Wikitty
-.. *
+.. *
.. * $Id$
.. * $HeadURL$
.. * %%
.. * Copyright (C) 2009 - 2010 CodeLutin
.. * %%
.. * 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
+.. * 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
+.. *
+.. * 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%
.. -
-Changes
-=======
+Changements
+===========
TreeNode
--------
-Since 2.2, attribute "children" in tree node has been renamed to "attachment"
-du to confusion between attached wikitty and sub node children.
+Depuis la version 2.2, l'attribut "children" des TreeNode a été renommé en
+"attachment" pour éviter la confusion entre les wikitty attachés à un noeud et
+les noeuds fils.
-TreeNode extension version has been increased to ``2.0``.
+Vous aurez besoin de migrer_ vos Wikitty.
-You will need to migrate_ your wikitties.
-
-.. _migrate: migration.html
\ No newline at end of file
+.. _migrer: migration.html
\ No newline at end of file
Modified: trunk/src/site/rst/migration.rst
===================================================================
--- trunk/src/site/rst/migration.rst 2010-11-09 09:14:33 UTC (rev 470)
+++ trunk/src/site/rst/migration.rst 2010-11-10 09:06:57 UTC (rev 471)
@@ -1,77 +1,83 @@
.. -
.. * #%L
.. * Wikitty
-.. *
+.. *
.. * $Id$
.. * $HeadURL$
.. * %%
.. * Copyright (C) 2009 - 2010 CodeLutin
.. * %%
.. * 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
+.. * 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
+.. *
+.. * 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%
.. -
-Manage data migration using Wikitty
------------------------------------
-Presentation
+Gérer la migration des données dans Wikitty
+-------------------------------------------
+
+Présentation
============
-In Wikitty, migration is done each time you load an object. If an object is
-present in the database in an old version, when it is loaded from the database,
-it is automatically migrated to the new version. This way, you avoid costly
-migration at initialisation.
+Dans Wikitty, la migration est effectuée à chaque fois que vous chargez un
+objet. Si un objet est présent dans la base de donnée dans une ancienne version,
+quand il est chargé depuis la base de donnée, il est automatiquement migré dans
+la nouvelle version. De cette manière, vous pouvez éviter les migrations
+coûteuses à l'initialisation.
-The only thing to bear in mind is that data which was not migrated is still
-indexed in the old version and might not be returned by requests. If you need
-the data to be indexed on the new version, you still can migrate all your
-objects at initialisation by loading all the objects and store them.
+La seule chose à garder à l'esprit est que les données qui n'ont pas encore
+été migrée sont encore indexées dans l'ancienne version et peuvent ne pas être
+retournées par certaines requêtes. Si vous avez besoin que les données soient
+indexées dans la nouvelle version, vous pouvez toujours migrer tous vos objets
+à l'initialisation en chargeant les objets et en les enregistrant.
-How migrate data properly in Wikitty
-====================================
+Comment migrer proprement les données dans Wikitty
+==================================================
-After your application launch and before any request, you should store all the
-extensions needed by your application, in their last version ::
+Après avoir lancé votre application et avant toutes vos requêtes, vous devez
+enregistrer toutes les extensions dont votre application a besoin dans leur
+dernière version::
store(myExtension);
-Then you need to add to the registry all the specific migrations for
+Ensuite, vous devez ajouter au registre toutes les migrations spécifiques des
extensions::
WikittyExtensionMigration.migrationRegistry.put("myExtension", myMigrationClass);
-You can now use your data properly, they will be migrated at loading time.
+Vous pouvez maintenant utiliser vos données simplement, elles seront migrées
+au chargement.
-If you want to migrate objects before using them (for requests purpose for
-example), for each version, search all you objects, restore and then store
-them::
+Si vous voulez migrer vos objets avant de les utiliser (pour des histoires de
+requêtes par exemple), pour chaque version, recherchez vos objets, restaurez
+les puis enregistrez-les::
search(Client)
restore(Client)
store(Client)
-Take care to the cost of the indexation compared to the data volume.
+Attention au coût d'une indexation au vu du volume de données, il n'est pas
+toujours judicieux de réindexer toutes les données.
-Specific migrations
-===================
+Migrations spécifiques
+======================
-Wikitty makes an automatic migration in cas of deleted fields, added fields or
-renamed fields (need to add a renameFrom tag on the field).
+Wikitty réalise une migration automatique en cas de champs supprimés, ajoutés
+ou renommés (dans ce cas, il faut ajouter un tag renameFrom sur le champ).
-For other kind of migration, you might want to create your own migration class
-that implements WikittyExtensionMigration. This class only needs to make the
-migration from a version to the next version, for example version 1 to version 2.
-In cas of a migration needed from version 1 to version 4, Wikitty will
-automatically call the classes to migrate form version 1 to 2, then from version
-2 to 3 and so on.
+Pour toutes les autre migrations, vous devrez créer votre propre classe de
+migration qui implémente WikittyExtensionMigration. Cette classe n'a besoin de
+faire la migration d'une version à l'autre, par exemple de la version 1 à la
+version 2. Dans le cas d'une migration de la version 1 à la version 4, Wikitty
+appellera automatiquement les classes pour migrer de la version 1 à la version 2
+puis de la version 2 à la version 3 et ainsi de suite.
\ No newline at end of file
Deleted: trunk/src/site/site.xml
===================================================================
--- trunk/src/site/site.xml 2010-11-09 09:14:33 UTC (rev 470)
+++ trunk/src/site/site.xml 2010-11-10 09:06:57 UTC (rev 471)
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- #%L
- Wikitty
-
- $Id$
- $HeadURL$
- %%
- Copyright (C) 2009 - 2010 CodeLutin
- %%
- 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%
- -->
-
-<project name="${project.name}">
-
- <publishDate format="dd/MM/yyyy"/>
-
- <bannerLeft>
- <name>${project.name}</name>
- <href>index.html</href>
- </bannerLeft>
-
- <body>
- <menu name="Overview">
- <item name="Accueil" href="index.html"/>
- <item name="Changes" href="changes.html"/>
- <item name="Migration" href="migration.html"/>
- <item name="Hessian" href="hessian.html"/>
- <item name="TODO" href="todo.html"/>
- </menu>
-
- <menu ref="modules"/>
-
- <menu ref="reports"/>
-
- </body>
-</project>
Added: trunk/src/site/site_en.xml
===================================================================
--- trunk/src/site/site_en.xml (rev 0)
+++ trunk/src/site/site_en.xml 2010-11-10 09:06:57 UTC (rev 471)
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ Wikitty
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2009 - 2010 CodeLutin
+ %%
+ 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%
+ -->
+
+<project name="${project.name}">
+
+ <publishDate format="dd/MM/yyyy"/>
+
+ <bannerLeft>
+ <name>${project.name}</name>
+ <href>index.html</href>
+ </bannerLeft>
+
+ <body>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="${project.url}"/>
+ </breadcrumbs>
+
+ <links>
+ <item name="Libre-Entreprise"
+ href="http://www.libre-entreprise.org/"/>
+ <item name="[fr" href="../index.html"/>
+ <item name="en]" href="index.html"/>
+ </links>
+
+ <menu name="Overview">
+ <item name="Home" href="index.html"/>
+ <item name="Changes" href="changes.html"/>
+ </menu>
+
+ <menu name="User">
+ <item name="Migration" href="migration.html"/>
+ <item name="Hessian" href="hessian.html"/>
+ </menu>
+
+ <menu name="Developer">
+ <item name="Todo" href="todo.html"/>
+ </menu>
+
+ <menu name="Community">
+ <item name="Bug tracker" href="http://nuiton.org/projects/wikitty/issues"/>
+ <item name="Download" href="http://nuiton.org/projects/list_files/wikitty"/>
+ <item name="SVN Repository" href="http://svn.nuiton.org/svn/wikitty/"/>
+ <item name="Continuous Integration" href="http://hudson.nuiton.org/hudson/job/wikitty/"/>
+ <item name="Sonar analysis" href="http://sonar.nuiton.org/sonar/project/index/org.nuiton:wikitty"/>
+ </menu>
+
+ <menu ref="modules"/>
+
+ <menu ref="reports"/>
+
+ </body>
+</project>
Added: trunk/src/site/site_fr.xml
===================================================================
--- trunk/src/site/site_fr.xml (rev 0)
+++ trunk/src/site/site_fr.xml 2010-11-10 09:06:57 UTC (rev 471)
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ Wikitty
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2009 - 2010 CodeLutin
+ %%
+ 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%
+ -->
+
+<project name="${project.name}">
+
+ <publishDate format="dd/MM/yyyy"/>
+
+ <bannerLeft>
+ <name>${project.name}</name>
+ <href>index.html</href>
+ </bannerLeft>
+
+ <body>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="${project.url}"/>
+ </breadcrumbs>
+
+ <links>
+ <item name="Libre-Entreprise"
+ href="http://www.libre-entreprise.org/"/>
+ <item name="[fr" href="index.html"/>
+ <item name="en]" href="en/index.html"/>
+ </links>
+
+ <menu name="Overview">
+ <item name="Accueil" href="index.html"/>
+ <item name="Changements" href="changes.html"/>
+ </menu>
+
+ <menu name="User">
+ <item name="Migration" href="migration.html"/>
+ <item name="Hessian" href="hessian.html"/>
+ </menu>
+
+ <menu name="Developer">
+ <item name="Todo" href="todo.html"/>
+ </menu>
+
+ <menu name="Communauté">
+ <item name="Bug tracker"
+ href="http://nuiton.org/projects/wikitty/issues"/>
+ <item name="Téléchargement"
+ href="http://nuiton.org/projects/list_files/wikitty"/>
+ <item name="Dépot SVN"
+ href="http://svn.nuiton.org/svn/wikitty/"/>
+ <item name="Intégration continue"
+ href="http://hudson.nuiton.org/hudson/job/wikitty/"/>
+ <item name="Analyse Sonar"
+ href="http://sonar.nuiton.org/sonar/project/index/org.nuiton:wikitty"/>
+ </menu>
+
+ <menu ref="modules"/>
+
+ <menu ref="reports"/>
+
+ </body>
+</project>
\ No newline at end of file
1
0
r470 - trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities
by echatellier@users.nuiton.org 09 Nov '10
by echatellier@users.nuiton.org 09 Nov '10
09 Nov '10
Author: echatellier
Date: 2010-11-09 10:14:33 +0100 (Tue, 09 Nov 2010)
New Revision: 470
Url: http://nuiton.org/repositories/revision/wikitty/470
Log:
Fix import and javadoc
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyMetaExtensionUtil.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java 2010-11-09 09:13:41 UTC (rev 469)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java 2010-11-09 09:14:33 UTC (rev 470)
@@ -221,7 +221,7 @@
boolean isEmpty();
/**
- * @see Cloneable#clone()
+ * @see Object#clone()
*/
Wikitty clone() throws CloneNotSupportedException;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyMetaExtensionUtil.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyMetaExtensionUtil.java 2010-11-09 09:13:41 UTC (rev 469)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyMetaExtensionUtil.java 2010-11-09 09:14:33 UTC (rev 470)
@@ -25,7 +25,6 @@
package org.nuiton.wikitty.entities;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
1
0
r469 - trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities
by echatellier@users.nuiton.org 09 Nov '10
by echatellier@users.nuiton.org 09 Nov '10
09 Nov '10
Author: echatellier
Date: 2010-11-09 10:13:41 +0100 (Tue, 09 Nov 2010)
New Revision: 469
Url: http://nuiton.org/repositories/revision/wikitty/469
Log:
Fix import and javadoc
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java 2010-11-05 13:51:30 UTC (rev 468)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java 2010-11-09 09:13:41 UTC (rev 469)
@@ -40,9 +40,6 @@
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;
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyUtil;
@@ -275,7 +272,7 @@
}
/**
- * @see org.nuiton.wikitty.Wikitty#hasMetaExtension(String, String)
+ * @see Wikitty#hasMetaExtension(String, String)
*/
@Override
public boolean hasMetaExtension(String metaExtensionName,
@@ -288,7 +285,7 @@
}
/**
- * @see org.nuiton.wikitty.Wikitty#addMetaExtension(WikittyExtension, WikittyExtension)
+ * @see Wikitty#addMetaExtension(WikittyExtension, WikittyExtension)
*/
@Override
public void addMetaExtension(WikittyExtension metaExtension,
@@ -297,7 +294,7 @@
}
/**
- * @see org.nuiton.wikitty.Wikitty#addMetaExtension(WikittyExtension, String)
+ * @see Wikitty#addMetaExtension(WikittyExtension, String)
*/
@Override
public void addMetaExtension(WikittyExtension metaExtension, String extensionName) {
@@ -789,7 +786,7 @@
}
/**
- * @see org.nuiton.wikitty.Wikitty#removeFromField(String, Object)
+ * @see Wikitty#removeFromField(String, Object)
*/
@Override
public void removeFromField(String fqFieldName, Object value) {
@@ -798,7 +795,7 @@
}
/**
- * @see org.nuiton.wikitty.Wikitty#clearField(String)
+ * @see Wikitty#clearField(String)
*/
@Override
public void clearField(String fqFieldName) {
@@ -858,7 +855,7 @@
}
/**
- * @see org.nuiton.wikitty.Wikitty#getDirty()
+ * @see Wikitty#getDirty()
*/
public Set<String> getDirty() {
return fieldDirty;
1
0
05 Nov '10
Author: jcouteau
Date: 2010-11-05 14:51:30 +0100 (Fri, 05 Nov 2010)
New Revision: 468
Url: http://nuiton.org/repositories/revision/wikitty/468
Log:
Put only entities in gwt module
Modified:
trunk/wikitty-api/src/main/resources/org/nuiton/WikittyAPI.gwt.xml
Modified: trunk/wikitty-api/src/main/resources/org/nuiton/WikittyAPI.gwt.xml
===================================================================
--- trunk/wikitty-api/src/main/resources/org/nuiton/WikittyAPI.gwt.xml 2010-11-05 11:01:43 UTC (rev 467)
+++ trunk/wikitty-api/src/main/resources/org/nuiton/WikittyAPI.gwt.xml 2010-11-05 13:51:30 UTC (rev 468)
@@ -27,6 +27,6 @@
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.6.4//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.6.4/distro-source/core/…">
<module>
- <source path="wikitty" />
+ <source path="wikitty/entities" />
</module>
\ No newline at end of file
1
0
r467 - trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator
by bleny@users.nuiton.org 05 Nov '10
by bleny@users.nuiton.org 05 Nov '10
05 Nov '10
Author: bleny
Date: 2010-11-05 12:01:43 +0100 (Fri, 05 Nov 2010)
New Revision: 467
Url: http://nuiton.org/repositories/revision/wikitty/467
Log:
fixes operations inheritence on multiple level of dependency in entities, spreading needed imports. removed useless implements in Abstract, since interface should already extends interface
Modified:
trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java
trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java
Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java
===================================================================
--- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-11-05 08:08:27 UTC (rev 466)
+++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-11-05 11:01:43 UTC (rev 467)
@@ -24,15 +24,7 @@
*/
package org.nuiton.wikitty.generator;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import org.apache.commons.lang.StringEscapeUtils;
-
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -44,6 +36,14 @@
import org.nuiton.eugene.models.object.ObjectModelModifier;
import org.nuiton.eugene.models.object.ObjectModelOperation;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/*{generator option: writeString = }*/
/*{generator option: parentheses = false}*/
/*{generator option: writeString = +}*/
@@ -75,6 +75,16 @@
return new WikittyPurifierTransformer();
}
+ protected List<ObjectModelClass> entitiesWithInheritedOperations =
+ new ArrayList<ObjectModelClass>();
+
+ /** an entity with a dependency must add the imports defined as values
+ * in the map. By filling and reading this map, imports while spread across
+ * the levels of dependencies
+ */
+ protected Map<ObjectModelClass, List<String>> requiredDependencyImports =
+ new HashMap<ObjectModelClass, List<String>>();
+
@Override
public void transformFromModel(ObjectModel model) {
@@ -386,31 +396,76 @@
}
}
+ /** Add inherited operations to the abstract generated from an entity.
+ * Method browse superClasses to copy methods and their bodies. The method
+ * deal with imports, cause bodies call the Helper of the classe where
+ * the attribute was declared.
+ *
+ * If A inherit from B and B inherit from and A, B, C not in the same package
+ * we B need to import CHelper and A need to import BHelper. But, since A
+ * has C attributes too, it needs CHelper too. So when we will process B,
+ * we will save needed imports, A will get them thus import CHelper.
+ */
protected void addInheritedOperations(ObjectModelClass businessEntity, ObjectModelClass abstractClass) {
- // now, add to this abstract all operation due to inheritence from
- // other business entities
- for (ObjectModelClass superClass : businessEntity.getSuperclasses()) {
+ if ( ! entitiesWithInheritedOperations.contains(businessEntity)) {
- // if super class is not in the same package, import it Helper
- if (! businessEntity.getPackageName().equals(superClass.getPackageName())) {
- addImport(abstractClass, superClass.getPackageName() + "." +
- WikittyTransformerUtil.businessEntityToHelperName(superClass));
- }
-
- if (WikittyTransformerUtil.isBusinessEntity(superClass)) {
- addInterface(abstractClass, WikittyTransformerUtil.businessEntityToContractName(superClass)); // extends
- // getting the signatures and bodies of those operations
- for (ObjectModelOperation operation : processedClasses.get(superClass).getOperations()) {
-
- ObjectModelOperation operationClone = cloneOperationSignature(operation, abstractClass, true);
- setOperationBody(operationClone, operation.getBodyCode());
-
- // XXX 20100816 bleny should be a call to cloneOperation(operation, abstractClass, true);
+ // now, add to this abstract all operation due to inheritence from
+ // other business entities
+
+ for (ObjectModelClass superClass : businessEntity.getSuperclasses()) {
+ // this list will contains all imports we do due to inheritence
+ List<String> imports = requiredDependencyImports.get(businessEntity);
+ if (imports == null) {
+ imports = new ArrayList<String>();
+ requiredDependencyImports.put(businessEntity, imports);
}
- } else {
- addInterface(abstractClass, superClass.getQualifiedName()); // extends
+
+ // process superclasses first, so we will get inherited operations from superclass
+ addInheritedOperations(superClass, processedClasses.get(superClass));
+
+ // if super class is not in the same package, import its Helper
+ if ( ! businessEntity.getPackageName().equals(superClass.getPackageName())) {
+ String helperToImport = superClass.getPackageName() + "." +
+ WikittyTransformerUtil.businessEntityToHelperName(superClass);
+
+ addImport(abstractClass, helperToImport);
+
+ // add the last import to the map, so sub-classes will be
+ // able to know what imports they need
+ imports.add(helperToImport);
+ }
+
+ // we may need to some imports for the bodies of the inherited operations
+ // let's get the imports done by superClass and copy them
+ List<String> importsNeeded = requiredDependencyImports.get(superClass);
+ if (log.isDebugEnabled()) {
+ log.debug(businessEntity + " needs imports " + importsNeeded);
+ }
+ if (importsNeeded != null) {
+ for (String importNeeded : importsNeeded) {
+ // superclass needed this import, so wo import too
+ addImport(abstractClass, importNeeded);
+
+ // subclasses will need it too, so add it
+ imports.add(importNeeded);
+ }
+ }
+
+ if (WikittyTransformerUtil.isBusinessEntity(superClass)) {
+
+ // getting the signatures and bodies of those operations
+ for (ObjectModelOperation operation : processedClasses.get(superClass).getOperations()) {
+
+ ObjectModelOperation operationClone = cloneOperationSignature(operation, abstractClass, true);
+ setOperationBody(operationClone, operation.getBodyCode());
+
+ // XXX 20100816 bleny should be a call to cloneOperation(operation, abstractClass, true);
+ }
+ }
}
+
+ entitiesWithInheritedOperations.add(businessEntity);
}
}
Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java
===================================================================
--- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2010-11-05 08:08:27 UTC (rev 466)
+++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2010-11-05 11:01:43 UTC (rev 467)
@@ -248,7 +248,7 @@
// other business entities
Collection<ObjectModelClass> superClasses = businessEntity.getSuperclasses();
for (ObjectModelClass superClass : superClasses) {
- addInterface(contract, superClass.getQualifiedName()); // extends ?
+ addInterface(contract, superClass.getQualifiedName());
if (WikittyTransformerUtil.isBusinessEntity(superClass)) {
// superclass must have been processed first to have its operations set
if ( ! processedEntities.contains(superClass)) {
1
0