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
Author: bpoussin
Date: 2010-11-18 13:16:22 +0100 (Thu, 18 Nov 2010)
New Revision: 486
Url: http://nuiton.org/repositories/revision/wikitty/486
Log:
- rename BusinessEntityWikitty in BusinessEntityImpl
- pass some FIXME to TODO and fix some other
Added:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityImpl.java
Removed:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityWikitty.java
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyI18nImpl.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyImportExportService.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntity.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyCopyOnWrite.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyExtension.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/PagedResult.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceInMemory.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/WikittyStorage.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java
trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java
trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java
trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java
trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceSlave.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/java/org/nuiton/wikitty/jdbc/WikittyServiceJDBC.java
trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java
trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/Restriction2Solr.java
trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java
trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrServerTest.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-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -27,7 +27,7 @@
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.BusinessEntity;
-import org.nuiton.wikitty.entities.BusinessEntityWikitty;
+import org.nuiton.wikitty.entities.BusinessEntityImpl;
import org.nuiton.wikitty.entities.WikittyExtension;
import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.Criteria;
@@ -125,12 +125,12 @@
*/
public <E extends BusinessEntity> E cast(BusinessEntity source, Class<E> target) {
E result = WikittyUtil.newInstance(
- securityToken, wikittyService, target, ((BusinessEntityWikitty)source).getWikitty());
+ securityToken, wikittyService, target, ((BusinessEntityImpl)source).getWikitty());
return result;
}
public <E extends BusinessEntity> E store(E e) {
- Wikitty w = ((BusinessEntityWikitty)e).getWikitty();
+ Wikitty w = ((BusinessEntityImpl)e).getWikitty();
WikittyEvent resp = wikittyService.store(securityToken, w);
// update object
resp.update(w);
@@ -148,7 +148,7 @@
// prepare data to send to service
List<Wikitty> wikitties = new ArrayList<Wikitty>(objets.size());
for (E e : objets) {
- Wikitty w = ((BusinessEntityWikitty)e).getWikitty();
+ Wikitty w = ((BusinessEntityImpl)e).getWikitty();
wikitties.add(w);
}
@@ -196,7 +196,7 @@
}
if (checkExtension) {
// WikittyUtil.newInstance instanciate only BusinessEntityWikittyImpl
- BusinessEntityWikitty b = (BusinessEntityWikitty)result;
+ BusinessEntityImpl b = (BusinessEntityImpl)result;
Collection<WikittyExtension> BusinessEntityStaticExtensions = b.getStaticExtensions();
for (WikittyExtension ext : BusinessEntityStaticExtensions) {
String extensionName = ext.getName();
@@ -263,7 +263,7 @@
securityToken, wikittyService, clazz, w);
if (checkExtension) {
// WikittyUtil.newInstance instanciate only BusinessEntityWikittyImpl
- BusinessEntityWikitty b = (BusinessEntityWikitty) dto;
+ BusinessEntityImpl b = (BusinessEntityImpl) dto;
for (WikittyExtension ext : b.getStaticExtensions()) {
if (!extNames.contains(ext.getName())) {
// extension wanted by BusinessEntity (clazz)
@@ -291,7 +291,16 @@
wikittyService.delete(securityToken, ids);
}
- public <E extends BusinessEntityWikitty> PagedResult<E> findAllByExample(E e,
+ /**
+ * Null field are not used in search request.
+ *
+ * @param e sample wikitty
+ * @param firstIndex
+ * @param endIndex
+ * @param fieldFacet
+ * @return
+ */
+ public <E extends BusinessEntityImpl> PagedResult<E> findAllByExample(E e,
int firstIndex, int endIndex, String ... fieldFacet ) {
Criteria criteria = Search.query(e.getWikitty()).criteria()
@@ -307,7 +316,13 @@
return result;
}
- public <E extends BusinessEntityWikitty> E findByExample(E e) {
+ /**
+ * Null field are not used in search request.
+ *
+ * @param e sample wikitty
+ * @return
+ */
+ public <E extends BusinessEntityImpl> E findByExample(E e) {
Criteria criteria = Search.query(e.getWikitty()).criteria();
Wikitty w = wikittyService.findByCriteria(securityToken, criteria);
@@ -333,8 +348,8 @@
Class<E> clazz, Criteria criteria) {
// newInstance only return BusinessEntityWikittyImpl
- BusinessEntityWikitty sample =
- (BusinessEntityWikitty)WikittyUtil.newInstance(clazz);
+ BusinessEntityImpl sample =
+ (BusinessEntityImpl)WikittyUtil.newInstance(clazz);
Wikitty wikitty = sample.getWikitty();
Collection<String> extensions = wikitty.getExtensionNames();
@@ -395,8 +410,8 @@
}
public <E extends BusinessEntity> E findByCriteria(Class<E> clazz, Criteria criteria) {
- BusinessEntityWikitty sample =
- (BusinessEntityWikitty)WikittyUtil.newInstance(clazz);
+ BusinessEntityImpl sample =
+ (BusinessEntityImpl)WikittyUtil.newInstance(clazz);
Wikitty wikitty = sample.getWikitty();
Collection<String> extensions = wikitty.getExtensionNames();
@@ -498,8 +513,8 @@
boolean goodType = true;
if(checkExtension) {
// WikittyUtil.newInstance instanciate only BusinessEntityWikittyImpl
- BusinessEntityWikitty businessEntityImpl =
- (BusinessEntityWikitty) businessEntity;
+ BusinessEntityImpl businessEntityImpl =
+ (BusinessEntityImpl) businessEntity;
Collection<WikittyExtension> staticExtensions =
businessEntityImpl.getStaticExtensions();
@@ -547,7 +562,7 @@
"Can't retrieve wikitty needed for hasType test", eee);
}
// WikittyUtil.newInstance instanciate only BusinessEntityWikittyImpl
- BusinessEntityWikitty b = (BusinessEntityWikitty)result;
+ BusinessEntityImpl b = (BusinessEntityImpl)result;
for (WikittyExtension ext : b.getStaticExtensions()) {
if (!extNames.contains(ext.getName())) {
// extension wanted by BusinessEntity (clazz)
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -30,7 +30,7 @@
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyImpl;
import org.nuiton.wikitty.entities.FieldType;
-import org.nuiton.wikitty.entities.BusinessEntityWikitty;
+import org.nuiton.wikitty.entities.BusinessEntityImpl;
import org.nuiton.wikitty.services.WikittyServiceEnhanced;
import java.lang.reflect.Constructor;
import java.math.BigDecimal;
@@ -644,7 +644,7 @@
}
}
- if (!BusinessEntityWikitty.class
+ if (!BusinessEntityImpl.class
.isAssignableFrom(clazzInstanciable)) {
throw new WikittyException(String.format(
"Your class '%s' don't extends WikittyDto", clazz
@@ -689,7 +689,7 @@
}
}
- if (!BusinessEntityWikitty.class
+ if (!BusinessEntityImpl.class
.isAssignableFrom(clazzInstanciable)) {
throw new WikittyException(String.format(
"Your class '%s' don't extends WikittyDto", clazz
@@ -705,7 +705,7 @@
Object[] parms = { null };
result = (E) cons.newInstance(parms);
- BusinessEntityWikitty bean = (BusinessEntityWikitty) result;
+ BusinessEntityImpl bean = (BusinessEntityImpl) result;
checkExtensionVersion(securityToken, wikittyService, w, bean);
bean.setWikitty(w);
@@ -739,7 +739,7 @@
*/
static public Wikitty checkExtensionVersion(
String securityToken, WikittyService wikittyService,
- Wikitty wikitty, BusinessEntityWikitty entity) {
+ Wikitty wikitty, BusinessEntityImpl entity) {
Wikitty result = wikitty;
boolean upgradeData = false;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyI18nImpl.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyI18nImpl.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyI18nImpl.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -7,7 +7,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.StringUtil;
-import org.nuiton.wikitty.entities.BusinessEntityWikitty;
+import org.nuiton.wikitty.entities.BusinessEntityImpl;
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyExtension;
import org.nuiton.wikitty.entities.WikittyI18nAbstract;
@@ -51,7 +51,7 @@
* WikittyI18nImpl :
* @param businessEntityWikitty
*/
- public WikittyI18nImpl(BusinessEntityWikitty businessEntityWikitty) {
+ public WikittyI18nImpl(BusinessEntityImpl businessEntityWikitty) {
super(businessEntityWikitty.getWikitty());
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyImportExportService.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyImportExportService.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyImportExportService.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -40,7 +40,7 @@
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;
import org.nuiton.util.ApplicationConfig;
-import org.nuiton.wikitty.entities.BusinessEntityWikitty;
+import org.nuiton.wikitty.entities.BusinessEntityImpl;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.WikittyConfig;
import org.nuiton.wikitty.WikittyException;
@@ -165,7 +165,7 @@
* @param e sample
* @return job id
*/
- public String asyncExportAllByExample(FORMAT format, BusinessEntityWikitty e) {
+ public String asyncExportAllByExample(FORMAT format, BusinessEntityImpl e) {
Criteria criteria = Search.query(e.getWikitty()).criteria();
String result = asyncExportAllByCriteria(format, criteria);
return result;
@@ -178,7 +178,7 @@
* @param e sample
* @return export string
*/
- public String syncExportAllByExample(FORMAT format, BusinessEntityWikitty e) {
+ public String syncExportAllByExample(FORMAT format, BusinessEntityImpl e) {
Criteria criteria = Search.query(e.getWikitty()).criteria();
String result = syncExportAllByCriteria(format, criteria);
return result;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntity.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntity.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntity.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -38,7 +38,6 @@
* Last update: $Date$
* by : $Author$
*/
-// FIXME poussin 20100528 voir si cette interface est reellement necessaire. On pourra renommer BusinessEntityWikitty en BusinessEntity
public interface BusinessEntity extends Serializable, Cloneable {
/**
Copied: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityImpl.java (from rev 483, trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityWikitty.java)
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityImpl.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityImpl.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -0,0 +1,188 @@
+/*
+ * #%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.entities;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.Collection;
+import java.util.Collections;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Each business object will inherit of this class.
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class BusinessEntityImpl implements BusinessEntity {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -4399752739887114180L;
+
+ /**
+ * Property change support.
+ *
+ * Warning, this transient field is null after deserialization.
+ */
+ protected transient PropertyChangeSupport propertyChangeSupport;
+
+ protected Wikitty wikitty;
+
+ public BusinessEntityImpl(Wikitty wi) {
+ setWikitty(wi);
+ }
+
+ public BusinessEntityImpl() {
+ this(new WikittyImpl());
+ }
+
+ protected PropertyChangeSupport getPropertyChangeSupport() {
+ if (propertyChangeSupport == null) {
+ propertyChangeSupport = new PropertyChangeSupport(this);
+ }
+ return propertyChangeSupport;
+ }
+
+ @Override
+ public String getWikittyId() {
+ String result = getWikitty().getId();
+ return result;
+ }
+
+ @Override
+ public String getWikittyVersion() {
+ String result = getWikitty().getVersion();
+ return result;
+ }
+
+ @Override
+ public void setWikittyVersion(String version) {
+ getWikitty().setVersion(version);
+ }
+
+ public void setWikitty(Wikitty wikitty) {
+ if(wikitty != null) {
+ for (WikittyExtension ext : getStaticExtensions()) {
+ wikitty.addExtension(ext);
+ }
+ }
+ this.wikitty = wikitty;
+ }
+
+ /**
+ * @see BusinessEntity#getWikitty()
+ */
+ @Override
+ public Wikitty getWikitty() {
+ return wikitty;
+ }
+
+ @Override
+ public Collection<String> getExtensionNames() {
+ Collection<String> result = getWikitty().getExtensionNames();
+ return result;
+ }
+
+ @Override
+ public Collection<String> getExtensionFields(String ext) {
+ Collection<String> result = getWikitty().getExtension(ext).getFieldNames();
+ return result;
+ }
+
+ @Override
+ public FieldType getFieldType(String ext, String fieldName) {
+ FieldType result = getWikitty().getExtension(ext).getFieldType(fieldName);
+ return result;
+ }
+
+ @Override
+ public Object getField(String ext, String fieldName) {
+ Object result = getWikitty().getFieldAsObject(ext, fieldName);
+ return result;
+ }
+
+ @Override
+ public void setField(String ext, String fieldName, Object value) {
+ getWikitty().setField(ext, fieldName, value);
+ }
+
+ public Collection<WikittyExtension> getStaticExtensions() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (!BusinessEntityImpl.class.isAssignableFrom(obj.getClass())) {
+ return false;
+ }
+ BusinessEntityImpl w = (BusinessEntityImpl) obj;
+ return getWikittyId().equals(w.getWikittyId());
+ }
+
+ @Override
+ public int hashCode() {
+ return getWikittyId().hashCode();
+ }
+
+ /*
+ * @see org.nuiton.wikitty.BusinessEntity#addPropertyChangeListener(java.beans.PropertyChangeListener)
+ */
+ @Override
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ getPropertyChangeSupport().addPropertyChangeListener(listener);
+ }
+
+ /*
+ * @see org.nuiton.wikitty.BusinessEntity#removePropertyChangeListener(java.beans.PropertyChangeListener)
+ */
+ @Override
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ getPropertyChangeSupport().removePropertyChangeListener(listener);
+ }
+
+ /*
+ * @see org.nuiton.wikitty.BusinessEntity#addPropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
+ */
+ @Override
+ public void addPropertyChangeListener(String propertyName,
+ PropertyChangeListener listener) {
+ getPropertyChangeSupport().addPropertyChangeListener(propertyName, listener);
+ }
+
+ /*
+ * @see org.nuiton.wikitty.BusinessEntity#removePropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
+ */
+ @Override
+ public void removePropertyChangeListener(String propertyName,
+ PropertyChangeListener listener) {
+ getPropertyChangeSupport().removePropertyChangeListener(propertyName, listener);
+ }
+}
Deleted: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityWikitty.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityWikitty.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityWikitty.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -1,179 +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.entities;
-
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-import java.util.Collection;
-import java.util.Collections;
-
-/**
- *
- * @author poussin
- * @version $Revision$
- *
- * Each business object will inherit of this class.
- *
- * Last update: $Date$
- * by : $Author$
- */
-public class BusinessEntityWikitty implements BusinessEntity {
-
- /** serialVersionUID. */
- private static final long serialVersionUID = -4399752739887114180L;
-
- /**
- * Property change support.
- *
- * Warning, this transient field is null after deserialization.
- */
- protected transient PropertyChangeSupport propertyChangeSupport;
-
- protected Wikitty wikitty;
-
- public BusinessEntityWikitty(Wikitty wi) {
- setWikitty(wi);
- }
-
- public BusinessEntityWikitty() {
- this(new WikittyImpl());
- }
-
- protected PropertyChangeSupport getPropertyChangeSupport() {
- if (propertyChangeSupport == null) {
- propertyChangeSupport = new PropertyChangeSupport(this);
- }
- return propertyChangeSupport;
- }
-
- public String getWikittyId() {
- String result = getWikitty().getId();
- return result;
- }
-
- public String getWikittyVersion() {
- String result = getWikitty().getVersion();
- return result;
- }
-
- public void setWikittyVersion(String version) {
- getWikitty().setVersion(version);
- }
-
- public void setWikitty(Wikitty wikitty) {
- if(wikitty != null) {
- for (WikittyExtension ext : getStaticExtensions()) {
- wikitty.addExtension(ext);
- }
- }
- this.wikitty = wikitty;
- }
-
- /**
- * @see BusinessEntity#getWikitty()
- */
- public Wikitty getWikitty() {
- return wikitty;
- }
-
- public Collection<String> getExtensionNames() {
- Collection<String> result = getWikitty().getExtensionNames();
- return result;
- }
-
- public Collection<String> getExtensionFields(String ext) {
- Collection<String> result = getWikitty().getExtension(ext).getFieldNames();
- return result;
- }
-
- public FieldType getFieldType(String ext, String fieldName) {
- FieldType result = getWikitty().getExtension(ext).getFieldType(fieldName);
- return result;
- }
-
- public Object getField(String ext, String fieldName) {
- Object result = getWikitty().getFieldAsObject(ext, fieldName);
- return result;
- }
-
- public void setField(String ext, String fieldName, Object value) {
- getWikitty().setField(ext, fieldName, value);
- }
-
- public Collection<WikittyExtension> getStaticExtensions() {
- return Collections.emptyList();
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj == null) {
- return false;
- }
- if (!BusinessEntityWikitty.class.isAssignableFrom(obj.getClass())) {
- return false;
- }
- BusinessEntityWikitty wikitty = (BusinessEntityWikitty) obj;
- return getWikittyId().equals(wikitty.getWikittyId());
- }
-
- @Override
- public int hashCode() {
- return getWikittyId().hashCode();
- }
-
- /*
- * @see org.nuiton.wikitty.BusinessEntity#addPropertyChangeListener(java.beans.PropertyChangeListener)
- */
- @Override
- public void addPropertyChangeListener(PropertyChangeListener listener) {
- getPropertyChangeSupport().addPropertyChangeListener(listener);
- }
-
- /*
- * @see org.nuiton.wikitty.BusinessEntity#removePropertyChangeListener(java.beans.PropertyChangeListener)
- */
- @Override
- public void removePropertyChangeListener(PropertyChangeListener listener) {
- getPropertyChangeSupport().removePropertyChangeListener(listener);
- }
-
- /*
- * @see org.nuiton.wikitty.BusinessEntity#addPropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
- */
- @Override
- public void addPropertyChangeListener(String propertyName,
- PropertyChangeListener listener) {
- getPropertyChangeSupport().addPropertyChangeListener(propertyName, listener);
- }
-
- /*
- * @see org.nuiton.wikitty.BusinessEntity#removePropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
- */
- @Override
- public void removePropertyChangeListener(String propertyName,
- PropertyChangeListener listener) {
- getPropertyChangeSupport().removePropertyChangeListener(propertyName, listener);
- }
-}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyCopyOnWrite.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyCopyOnWrite.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyCopyOnWrite.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -102,15 +102,21 @@
}
}
+ /**
+ * ATTENTION, la condition d'egalite n'est pas faire sur le type d'objet,
+ * mais seulement sur le contenu des donnees. Le equals repond a la question
+ * "Est-ce qu'on represente le meme wikitty ?".
+ *
+ * @param obj
+ * @return
+ */
@Override
public boolean equals(Object obj) {
- // FIXME 20100804 bleny side-effect ?
return target.equals(obj);
}
@Override
public int hashCode() {
- // FIXME 20100804 bleny side-effect ?
return target.hashCode();
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyExtension.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyExtension.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyExtension.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -68,7 +68,6 @@
*
* Warning : Multiples extensions are not supported yet.
*
- * FIXME EC-20100420 multiples extensions need to work
*/
protected String requires;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/PagedResult.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/PagedResult.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/PagedResult.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -35,7 +35,7 @@
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.wikitty.entities.BusinessEntityWikitty;
+import org.nuiton.wikitty.entities.BusinessEntityImpl;
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.entities.WikittyExtension;
@@ -100,7 +100,7 @@
* @return new PagedResult, this result can have less elements that original
* for some reason (security, ...)
*/
- public <E extends BusinessEntityWikitty> PagedResult<E> cast(
+ public <E extends BusinessEntityImpl> PagedResult<E> cast(
WikittyProxy proxy, Class<E> clazz) {
return cast(proxy, clazz, true);
}
@@ -154,7 +154,7 @@
* @return new PagedResult, this result can have less elements that original
* for some reason (security, ...)
*/
- public <E extends BusinessEntityWikitty> PagedResult<E> cast(
+ public <E extends BusinessEntityImpl> PagedResult<E> cast(
WikittyProxy proxy, Class<E> clazz, boolean autoconvert) {
List<E> castedResult;
@@ -175,8 +175,8 @@
Wikitty w = null;
if (t instanceof Wikitty) {
w = (Wikitty) t;
- } else if (t instanceof BusinessEntityWikitty) {
- w = ((BusinessEntityWikitty) t).getWikitty();
+ } else if (t instanceof BusinessEntityImpl) {
+ w = ((BusinessEntityImpl) t).getWikitty();
} else {
throw new WikittyException(String.format(
"Illegal object result class '%s' can't convert it to wikitty",
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -66,6 +66,7 @@
/**
* Create Search query with field in wikitty argument.
+ * Null field are not used in search request.
*
* @param wikitty example use to create query
* @return query
@@ -80,7 +81,7 @@
for (String fqfieldName : wikitty.fieldNames()) {
Object value = wikitty.getFqField(fqfieldName);
- if (value != null) { // FIXME poussin 20090830 how to search for null value in field ?
+ if (value != null) {
FieldType type = wikitty.getFieldType(fqfieldName);
if (type.isCollection()) {
Collection<?> collection = (Collection<?>) value;
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-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -277,7 +277,7 @@
@Override
public Map<WikittyTreeNode, Integer> restoreChildren(
String securityToken, String wikittyId, Criteria filter) {
- // FIXME lookup in cache, and put in cache
+ // TODO lookup in cache, and put in cache
return ws.restoreChildren(securityToken, wikittyId, filter);
}
@@ -304,7 +304,7 @@
@Override
public Entry<WikittyTreeNode, Integer> restoreNode(
String securityToken, String wikittyId, Criteria filter) {
- // FIXME lookup in cache, and put in cache
+ // TODO lookup in cache, and put in cache
return ws.restoreNode(securityToken, wikittyId, filter);
}
@@ -316,7 +316,7 @@
*/
@Override
public WikittyTree restoreTree(String securityToken, String wikittyId) {
- // FIXME lookup in cache, and put in cache
+ // TODO lookup in cache, and put in cache
return ws.restoreTree(securityToken, wikittyId);
}
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-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -82,7 +82,7 @@
protected WikittyStorage wikittyStorage;
/**
- * FIXME poussin 20101027 remove it when all used WikittyServiceHelper.build
+ * TODO poussin 20101027 remove it when all used WikittyServiceHelper.build
*
* Used by specific child
* {@link org.nuiton.wikitty.jdbc.WikittyServiceJDBC}
@@ -529,22 +529,6 @@
}
}
-// @Override
-// public Wikitty restore(String securityToken, String id) {
-// WikittyTransaction transaction = new WikittyTransaction();
-// try {
-// transaction.begin();
-//
-// Wikitty result = restore(securityToken, transaction, id);
-//
-// transaction.commit();
-// return result;
-// } catch (Exception eee) {
-// transaction.rollback();
-// throw new WikittyException("Can't restore wikitty", eee);
-// }
-// }
-
// FIXME poussin 20101029 use WikittyServiceTransaction and remove other transaction
protected Wikitty upgradeData(String securityToken,
WikittyTransaction transaction, Wikitty wikitty) {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceInMemory.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceInMemory.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceInMemory.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -42,7 +42,10 @@
import org.nuiton.wikitty.WikittyConfig;
/**
- * In memory implementation of WikittyService, currently used for test only.
+ * WARNING In memory implementation of WikittyService, currently used for test only.
+ *
+ * If you want in memory wikitty, you must use h2 and solr int inmemory mode
+ * (show configuration sample)
*
* @author poussin
* @version $Revision$
@@ -52,8 +55,8 @@
*/
public class WikittyServiceInMemory extends WikittyServiceImpl {
- //FIXME InMemory implementation is not usable for production. Must be reviewed.
- //FIXME The version increment must be done in 'prepare' method
+ //TODO InMemory implementation is not usable for production. Must be reviewed.
+ //TODO The version increment must be done in 'prepare' method
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(WikittyServiceInMemory.class);
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-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -51,6 +51,8 @@
this.ws = ws;
// create new WikittyServiceInMemory not configured with default config
// this WikittyServiceInMemory must be only in memory
+ // FIXME poussin 20101118 use configuration to retrive transaction
+ // in memory implementation to used. Default must be h2+solr in memory mode
this.tx = new WikittyServiceInMemory(null);
events = new LinkedList<WikittyEvent>();
}
@@ -271,7 +273,7 @@
}
int firstIndice = resultWs.getFirstIndice();
- // FIXME le resultat est faut, le nombre total n'est pas la somme des deux :(
+ // FIXME le resultat est faux, le nombre total n'est pas la somme des deux :(
int numFound = resultTx.getNumFound() + resultWs.getNumFound();
String queryString = resultWs.getQueryString();
// FIXME les facettes sont fausses :(
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-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/XMPPNotifierTransporter.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -55,9 +55,6 @@
* Configuration
* <li>wikitty.xmpp.server = adresse du serveur (ex: im.codelutin.com)
* <li>wikitty.xmpp.room = adresse de la room (ex: wikitty-event(a)im.codelutin.com)
- * <li>wikitty.notification.persistent = [true|false] indique si on doit
- * recevoir tous les messages sans en loupe un seul. Pour cela il faut que la
- * room soit archivee. (FIXME poussin 20101014 pas encore implantee)
*
* @author poussin
* @version $Revision$
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-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorage.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -86,11 +86,12 @@
String ... fqFieldName) throws WikittyException;
/**
- * Delete all object with id argument.
+ * Delete all object with id argument. Delete don't fail if wikitty
+ * don't existe or is already deleted.
*
* @param transaction transaction
* @param idList
- * @return delete response
+ * @return delete response (can be empty if no wikitty are realy deleted
* @throws WikittyException If id is not valid or don't exist.
*/
public WikittyEvent delete(WikittyTransaction transaction, Collection<String> idList) throws WikittyException;
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -43,7 +43,7 @@
public class SearchTest extends AbstractTestConformance {
/*
- * FIXME Will contains all conformance tests to the search features.
+ * TODO Will contains all conformance tests to the search features.
*/
public void testSearch() throws Exception {
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -30,7 +30,6 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.Properties;
import org.junit.Before;
import org.junit.Test;
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -75,7 +75,7 @@
new WikittyServiceSecurity(config, inMemoryService);
/** /
- // FIXME 20101005 bleny implementation should be able to allow
+ // TODO 20101005 bleny implementation should be able to allow
// passing trough two security layers
securityService = new WikittyServiceSecurity(securityService);
/**/
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-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -106,7 +106,7 @@
WikittyTransformerUtil.businessEntityToAbstractName(clazz),
clazz.getPackageName());
processedClasses.put(clazz, abstractClass);
- setSuperClass(abstractClass, "BusinessEntityWikitty");
+ setSuperClass(abstractClass, "BusinessEntityImpl");
addInterface(abstractClass, clazz.getQualifiedName());
}
@@ -187,10 +187,10 @@
}*/);
constructor = addConstructor(clazz, ObjectModelModifier.PUBLIC);
- addParameter(constructor, WikittyTransformerUtil.BUSINESS_ENTITY_WIKITTY_CLASS_FQN, "businessEntityWikitty");
+ addParameter(constructor, WikittyTransformerUtil.BUSINESS_ENTITY_WIKITTY_CLASS_FQN, "businessEntityImpl");
setOperationBody(constructor, ""
/*{
- super(businessEntityWikitty.getWikitty());
+ super(businessEntityImpl.getWikitty());
}*/);
}
Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java
===================================================================
--- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -125,10 +125,10 @@
}*/);
constructor = addConstructor(implementation, ObjectModelModifier.PUBLIC);
- addParameter(constructor, WikittyTransformerUtil.BUSINESS_ENTITY_WIKITTY_CLASS_FQN, "businessEntityWikitty");
+ addParameter(constructor, WikittyTransformerUtil.BUSINESS_ENTITY_WIKITTY_CLASS_FQN, "businessEntityImpl");
setOperationBody(constructor, ""
/*{
- super(businessEntityWikitty.getWikitty());
+ super(businessEntityImpl.getWikitty());
}*/);
}
Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java
===================================================================
--- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -41,7 +41,7 @@
protected static final String BUSINESS_ENTITY_CLASS_FQN =
ENTITY_PACKAGE + ".BusinessEntity";
protected static final String BUSINESS_ENTITY_WIKITTY_CLASS_FQN =
- ENTITY_PACKAGE + ".BusinessEntityWikitty";
+ ENTITY_PACKAGE + ".BusinessEntityImpl";
protected static final String WIKITTY_CLASS_FQN =
ENTITY_PACKAGE + ".Wikitty";
protected static final String WIKITTY_EXTENSION_CLASS_FQN =
Modified: trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceSlave.java
===================================================================
--- trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceSlave.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceSlave.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -43,13 +43,6 @@
* jouer. Car on peut rejouer plusieurs fois l'event sans qu'il y ait de
* probleme. Il faut juste que l'on ne loupe pas d'event.
*
- * (FIXME poussin 20101118 verifier que ca ne pose pas de probleme avec
- * les numeros de version)(en fait il faudrait pour le replay utiliser par le
- * slave avoir un argument force en plus pour que les numeros de version soit
- * identique sur le master et le slave. Il faut verifier pourquoi lorsqu'on
- * demande un force il peut y avoir un "Wikitty is obsolete" ce qui ne permet
- * pas de rejouer plusieurs fois les events)
- *
* @author poussin
* @version $Revision$
*
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-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -91,11 +91,6 @@
/** cache for last extension version; key: extName value: extVersion */
transient protected Map<String, String> lastVersion = null;
-
- // FIXME REMOVE IT
-// public WikittyExtensionStorageJDBC() {
-// this(null);
-// }
public WikittyExtensionStorageJDBC(ApplicationConfig config) {
this.config = config;
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-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -151,17 +151,6 @@
static final public String QUERY_INSERT_EXTENSION_DATA =
"jdbc.queries.insert.extension.data";
-// /** JDBC JDBC_DRIVER property name */
-// static protected String JDBC_DRIVER = "jdbc.con.driver";
-// /** JDBC_HOST property name */
-// static protected String JDBC_HOST = "jdbc.con.host";
-// /** JDBC_USER_NAME property name */
-// static protected String JDBC_USER_NAME = "jdbc.con.userName";
-// /** JDBC_PASSWORD property name */
-// static protected String JDBC_PASSWORD = "jdbc.con.password";
-// /** JDBC_XADATASOURCE property name */
-// static protected String JDBC_XADATASOURCE = "jdbc.xadatasource";
-
/** admin table name */
static protected String TABLE_WIKITTY_ADMIN = "wikitty_admin";
/** data table name */
@@ -180,12 +169,9 @@
*/
public static synchronized Properties loadQuery(ApplicationConfig config) {
Properties result = new Properties();
-// Properties databaseConfig = new Properties(queryConfig);
InputStream streamQuery = null;
-// InputStream streamConfig = null;
try {
- // FIXME poussin 20100112 perhaps used nuitonutil.ApplicationConfig
String wikittyQueryFile = config.getOption(
WikittyConfig.Option.WIKITTY_STORAGE_JDBC_QUERY_FILE.getKey());
@@ -202,39 +188,12 @@
// url can't be null
streamQuery = url.openStream();
result.load(streamQuery);
-
- // FIXME REMOVE IT
-// // config
-// url = ClassLoader.getSystemResource("wikitty-jdbc-config.properties");
-// if (url == null) {
-// ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
-// url = contextClassLoader.getResource("wikitty-jdbc-config.properties");
-// }
-//
-// if (url == null) {
-// if (log.isInfoEnabled()) {
-// log.info("No wikitty-jdbc-config.properties file found in classpath (skip default configuration loading)");
-// }
-// }
-// else {
-// if (log.isInfoEnabled()) {
-// log.info("Reading resource from: " + url);
-// }
-// streamConfig = url.openStream();
-// databaseConfig.load(streamConfig);
-// }
-//
-// // extra config
-// if (properties != null) {
-// databaseConfig.putAll(properties);
-// }
} catch (IOException eee) {
throw new WikittyException("Unable to load property file", eee);
}
finally {
IOUtils.closeQuietly(streamQuery);
-// IOUtils.closeQuietly(streamConfig);
}
return result;
@@ -261,7 +220,7 @@
WikittyConfig.Option.WIKITTY_STORAGE_JDBC_PASSWORD.getKey());
String xaDataSourceClassName = conf.getOption(
- WikittyConfig.Option.WIKITTY_STORAGE_JDBC_XADATASOURCE.getKey());;
+ WikittyConfig.Option.WIKITTY_STORAGE_JDBC_XADATASOURCE.getKey());
try {
TransactionManager transactionManager =
com.arjuna.ats.jta.TransactionManager.transactionManager();
Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyServiceJDBC.java
===================================================================
--- trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyServiceJDBC.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyServiceJDBC.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -43,13 +43,6 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(WikittyServiceJDBC.class);
- // FIXME REMOVE IT
-// public WikittyServiceJDBC() {
-// extensionStorage = new WikittyExtensionStorageJDBC();
-// wikittyStorage = new WikittyStorageJDBC(extensionStorage);
-// searchEngin = new WikittySearchEnginSolr(extensionStorage);
-// }
-
public WikittyServiceJDBC(ApplicationConfig config) {
extensionStorage = new WikittyExtensionStorageJDBC(config);
wikittyStorage = new WikittyStorageJDBC(config, extensionStorage);
Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java
===================================================================
--- trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -106,11 +106,6 @@
protected WikittyExtensionStorage extensionStorage;
- // FIXME REMOVE IT
-// public WikittyStorageJDBC(WikittyExtensionStorage extensionStorage) {
-// this(extensionStorage, null);
-// }
-
public WikittyStorageJDBC(ApplicationConfig config, WikittyExtensionStorage extensionStorage) {
this.config = config;
this.extensionStorage = extensionStorage;
@@ -208,6 +203,9 @@
} else if (WikittyUtil.versionGreaterThan(requestedVersion, actualVersion)) { //requested version is newer
newVersion = requestedVersion;
} else { //requested version is obsolete
+// FIXME poussin 20101118 pourquoi lorsqu'on
+// demande un force il peut y avoir un "Wikitty is obsolete" ce qui ne permet
+// pas de rejouer plusieurs fois les events pour les besoins du slave :(
throw new WikittyObsoleteException(String.format(
"Your wikitty '%s' is obsolete (saving: '%s'; existing: '%s')", wikitty.getId(), requestedVersion, actualVersion));
}
@@ -395,20 +393,12 @@
Date now = new Date();
for (String id : ids) {
- // FIXME poussin 20100114 perhaps, it's not necessary to throw exception for that
- // if no exception needed, suppresse problem of tx in tx
- if (!exists(transaction, id)) {
- throw new WikittyException(String.format(
- "Wikitty with id '%s' doesn't exists", id));
- } else if (isDeleted(transaction, id)) {
- throw new WikittyException(String.format(
- "Wikitty with id '%s' is already deleted", id));
+ if (exists(transaction, id) && !isDeleted(transaction, id)) {
+ // addVersionUpdate delete date field
+ WikittyJDBCUtil.doQuery(connection, jdbcQuery.getProperty(
+ QUERY_DELETE_WIKITTY_ADMIN), id);
+ result.addRemoveDate(id, now);
}
- // addVersionUpdate delete date field
- WikittyJDBCUtil.doQuery(connection, jdbcQuery.getProperty(
- QUERY_DELETE_WIKITTY_ADMIN), id);
- result.addRemoveDate(id, now);
-
}
return result;
Modified: trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/Restriction2Solr.java
===================================================================
--- trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/Restriction2Solr.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/Restriction2Solr.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -88,7 +88,7 @@
this(null, dummyFieldModifier);
}
- // FIXME 20101201 jru improve manage transaction and fieldModifeir in helper
+ // TODO 20101201 jru improve manage transaction and fieldModifeir in helper
public Restriction2Solr(WikittyTransaction transaction, WikittySearchEnginSolr.FieldModifier fieldModifer) {
this.transaction = transaction;
this.fieldModifer = fieldModifer;
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-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -475,16 +475,6 @@
/** JTA resource */
protected SolrResource solrResource;
- // FIXME REMOVE IT
-// /**
-// * Init wikitty search engin on solr embedded server.
-// *
-// * @param extensionStorage extension storage
-// */
-// public WikittySearchEnginSolr(WikittyExtensionStorage extensionStorage) {
-// this(extensionStorage, null);
-// }
-
/**
* Init wikitty search engin on solr embedded server.
*
Modified: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrServerTest.java
===================================================================
--- trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrServerTest.java 2010-11-18 11:32:52 UTC (rev 485)
+++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrServerTest.java 2010-11-18 12:16:22 UTC (rev 486)
@@ -158,7 +158,7 @@
SolrDocument result = findById(solrServer, "1");
assertNotNull(result);
- // Normaly the value is null, if SolrServer is thread self
+ // Normaly the value is null, if SolrServer is thread safe
result = findById(solrServer, "2");
assertNotNull(result);
}
1
0
Author: bpoussin
Date: 2010-11-18 12:32:52 +0100 (Thu, 18 Nov 2010)
New Revision: 485
Url: http://nuiton.org/repositories/revision/wikitty/485
Log:
change jettyVersion in jettyMorbayVersion for old jetty 6
Modified:
trunk/pom.xml
trunk/wikitty-jdbc-impl/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-11-18 11:20:36 UTC (rev 484)
+++ trunk/pom.xml 2010-11-18 11:32:52 UTC (rev 485)
@@ -298,7 +298,7 @@
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
- <version>${jettyVersion}</version>
+ <version>${jettyMorbayVersion}</version>
<scope>test</scope>
</dependency>
@@ -518,7 +518,7 @@
<!-- common versions used in sub-poms -->
<eugeneVersion>2.2</eugeneVersion>
<springVersion>3.0.1.RELEASE</springVersion>
- <jettyVersion>6.1.22</jettyVersion>
+ <jettyMorbayVersion>6.1.22</jettyMorbayVersion>
<zkVersion>5.0.2</zkVersion>
<jettyVersion>7.2.1.v20101111</jettyVersion>
Modified: trunk/wikitty-jdbc-impl/pom.xml
===================================================================
--- trunk/wikitty-jdbc-impl/pom.xml 2010-11-18 11:20:36 UTC (rev 484)
+++ trunk/wikitty-jdbc-impl/pom.xml 2010-11-18 11:32:52 UTC (rev 485)
@@ -56,6 +56,11 @@
<scope>test</scope>
</dependency>
+ <!--
+ | FIXME poussin 20101118 POURQUOI UNE DEPENDANCE JETTY POUR JDBC ?????
+ | sans plus d'explication je serais tante de le supprime, car maintenant
+ | on utilise plus la version morbay mais la version eclipse
+ +-->
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
1
0
r484 - trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services
by bpoussin@users.nuiton.org 18 Nov '10
by bpoussin@users.nuiton.org 18 Nov '10
18 Nov '10
Author: bpoussin
Date: 2010-11-18 12:20:36 +0100 (Thu, 18 Nov 2010)
New Revision: 484
Url: http://nuiton.org/repositories/revision/wikitty/484
Log:
don't failed if no WikittyServiceNotifier available to register cache as listener
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java
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-18 11:12:04 UTC (rev 483)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java 2010-11-18 11:20:36 UTC (rev 484)
@@ -91,7 +91,11 @@
// register all time, but perhaps Notifier service don't listen for
// remote event and cache can't be notified. But this is normal
// behavior
- addWikittyServiceListener(cache, ServiceListenerType.REMOTE);
+ try {
+ addWikittyServiceListener(cache, ServiceListenerType.REMOTE);
+ } catch(UnsupportedOperationException eee) {
+ log.info("no WikittyServiceNotifier available, cache don't listen event");
+ }
if (config != null) {
// reading configuration and set allwaysRestoreCopies accordingly
1
0
18 Nov '10
Author: bpoussin
Date: 2010-11-18 12:12:04 +0100 (Thu, 18 Nov 2010)
New Revision: 483
Url: http://nuiton.org/repositories/revision/wikitty/483
Log:
add default constructor that call (String[] arg) constructor
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java
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-18 10:48:45 UTC (rev 482)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java 2010-11-18 11:12:04 UTC (rev 483)
@@ -45,7 +45,11 @@
/**
* Create WikittyConfig with default value and load wikitty-config.properties
*/
- public WikittyConfig(String ... args) {
+ public WikittyConfig() {
+ this((String[]) null);
+ }
+
+ public WikittyConfig(String [] args) {
super();
init();
try {
1
0
r482 - trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty
by bpoussin@users.nuiton.org 18 Nov '10
by bpoussin@users.nuiton.org 18 Nov '10
18 Nov '10
Author: bpoussin
Date: 2010-11-18 11:48:45 +0100 (Thu, 18 Nov 2010)
New Revision: 482
Url: http://nuiton.org/repositories/revision/wikitty/482
Log:
add classe with main method to permit to start WikittyService server easily (juste configuration needed)
Added:
trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/WikittyServerStart.java
Added: trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/WikittyServerStart.java
===================================================================
--- trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/WikittyServerStart.java (rev 0)
+++ trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/WikittyServerStart.java 2010-11-18 10:48:45 UTC (rev 482)
@@ -0,0 +1,28 @@
+package org.nuiton.wikitty;
+
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Read wikitty config file and create WikittyService as asked in config.
+ * WikittyServiceHessianServer must be declared in config file otherwize server
+ * don't start
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class WikittyServerStart {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(WikittyServerStart.class);
+
+ static public void main(String ... args) {
+ WikittyConfig config = new WikittyConfig(args);
+ WikittyService ws = WikittyServiceFactory.buildWikittyService(config);
+ }
+
+}
1
0
r481 - in trunk: wikitty-api/src/main/java/org/nuiton/wikitty wikitty-api/src/main/java/org/nuiton/wikitty/services wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services
by bpoussin@users.nuiton.org 18 Nov '10
by bpoussin@users.nuiton.org 18 Nov '10
18 Nov '10
Author: bpoussin
Date: 2010-11-18 11:47:41 +0100 (Thu, 18 Nov 2010)
New Revision: 481
Url: http://nuiton.org/repositories/revision/wikitty/481
Log:
- WikittyServiceSlave implementation finished (state saved and read to know last event received from master)
- add force argument to replay WikittyService method
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.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-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceSlave.java
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-18 10:05:29 UTC (rev 480)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java 2010-11-18 10:47:41 UTC (rev 481)
@@ -45,11 +45,11 @@
/**
* Create WikittyConfig with default value and load wikitty-config.properties
*/
- public WikittyConfig() {
+ public WikittyConfig(String ... args) {
super();
init();
try {
- parse(null);
+ parse(args);
} catch (ArgumentsParserException eee) {
if (log.isErrorEnabled()) {
log.error("Can't load wikitty configuration", eee);
@@ -57,13 +57,14 @@
}
}
- /**
- * Create WikittyConfig and load particular configuration filename
- * @param configFilename
- */
- public WikittyConfig(String configFilename) {
- setDefaultOption(Option.WIKITTY_CONFIG_FILE.getKey(), configFilename);
- }
+ // REMOVE IT poussin 20101118, bad constructor. It not initialize correctly config
+// /**
+// * Create WikittyConfig and load particular configuration filename
+// * @param configFilename
+// */
+// public WikittyConfig(String configFilename) {
+// setDefaultOption(Option.WIKITTY_CONFIG_FILE.getKey(), configFilename);
+// }
/**
* Create WikittyConfig and use props as default value
@@ -117,7 +118,7 @@
WIKITTY_STORAGE_JDBC_URL(
"wikitty.storage.jdbc.host",
_("JDBC url"),
- "jdbc:h2:file:./target/data/data", String.class, false, false),
+ "jdbc:h2:file:./target/data/db", String.class, false, false),
WIKITTY_STORAGE_JDBC_LOGIN(
"wikitty.storage.jdbc.login",
_("JDBC login name"),
@@ -133,7 +134,7 @@
WIKITTY_STORAGE_JDBC_XADATASOURCE_H2_URL(
"wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.URL",
_("JDBC xadatasource property h2 url"),
- "jdbc:h2:file:./target/data/data", String.class, false, false),
+ "jdbc:h2:file:./target/data/db", String.class, false, false),
WIKITTY_STORAGE_JDBC_XADATASOURCE_H2_USER(
"wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.user",
_("JDBC xadatasource property h2 username"),
@@ -234,11 +235,15 @@
_("Room to use for XMPP transporter"),
"test(a)conference.im.codelutin.com", String.class, false, false),
- WIKITTY_SLAVE_ASYNC_STORE(
- "wikitty.service.slave.async.store",
- _("Slave service use asyncrhonous method to send modification"
- + " to master"),
- "false", Boolean.class, false, false),
+ WIKITTY_SLAVE_SYNC_STATE_INTERVALE(
+ "wikitty.service.slave.sync.state.intervale",
+ _("Intervale in second where slave service save state"
+ + " synchronisation time"),
+ "300", Integer.class, false, false),
+ WIKITTY_SLAVE_SYNC_STATE_FILE(
+ "wikitty.service.slave.sync.state.file",
+ _("File path to store synchronisation state"),
+ "./target/data/syncState", String.class, false, false),
WIKITTY_SLAVE_MASTER_URL(
"wikitty.service.slave.master.hessian.endpoint",
_("Master url service, where to delegate modification action"),
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-18 10:05:29 UTC (rev 480)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2010-11-18 10:47:41 UTC (rev 481)
@@ -191,6 +191,8 @@
*
* @param securityToken security token
* @param events event to replay
+ * @param force for to not change wikitty version (use version in wikitty
+ * present in event)
* @return new event that represent all event passed in argument.
* if arguement have: store, store, delete, clear, store. Return event
* resume all by only one clear + store, because all action before clear is
@@ -199,7 +201,7 @@
* two serveur must have same history ?)
*/
public WikittyEvent replay(
- String securityToken, List<WikittyEvent> events);
+ String securityToken, List<WikittyEvent> events, boolean force);
/**
* Manage Update and creation.
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-18 10:05:29 UTC (rev 480)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java 2010-11-18 10:47:41 UTC (rev 481)
@@ -392,8 +392,9 @@
}
@Override
- public WikittyEvent replay(String securityToken, List<WikittyEvent> events) {
- return ws.replay(securityToken, events);
+ public WikittyEvent replay(
+ String securityToken, List<WikittyEvent> events, boolean force) {
+ return ws.replay(securityToken, events, force);
}
@Override
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-18 10:05:29 UTC (rev 480)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java 2010-11-18 10:47:41 UTC (rev 481)
@@ -103,8 +103,9 @@
}
@Override
- public WikittyEvent replay(String securityToken, List<WikittyEvent> events) {
- return delegate.replay(securityToken, events);
+ public WikittyEvent replay(
+ String securityToken, List<WikittyEvent> events, boolean force) {
+ return delegate.replay(securityToken, events, force);
}
@Override
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-18 10:05:29 UTC (rev 480)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java 2010-11-18 10:47:41 UTC (rev 481)
@@ -1048,7 +1048,8 @@
* @return
*/
@Override
- public WikittyEvent replay(String securityToken, List<WikittyEvent> events) {
+ public WikittyEvent replay(
+ String securityToken, List<WikittyEvent> events, boolean force) {
// indique qu'il faut vider la base avant de faire les ajouts
boolean mustClear = false;
@@ -1118,7 +1119,7 @@
result.add(eventDeleteExtension);
WikittyEvent eventStoreWikitty =
- store(securityToken, tx, toAddWikitty.values(), false);
+ store(securityToken, tx, toAddWikitty.values(), force);
result.add(eventStoreWikitty);
WikittyEvent eventDeleteWikitty =
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-18 10:05:29 UTC (rev 480)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java 2010-11-18 10:47:41 UTC (rev 481)
@@ -366,8 +366,9 @@
}
@Override
- public WikittyEvent replay(String securityToken, List<WikittyEvent> events) {
- WikittyEvent result = ws.replay(securityToken, events);
+ public WikittyEvent replay(
+ String securityToken, List<WikittyEvent> events, boolean force) {
+ WikittyEvent result = ws.replay(securityToken, events, force);
// notify listeners
fireEvent(result);
return result;
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-18 10:05:29 UTC (rev 480)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java 2010-11-18 10:47:41 UTC (rev 481)
@@ -142,7 +142,8 @@
}
@Override
- public WikittyEvent replay(String securityToken, List<WikittyEvent> events) {
+ public WikittyEvent replay(
+ String securityToken, List<WikittyEvent> events, boolean force) {
String userId = getUserId(securityToken);
for (WikittyEvent e : events) {
if (e.getType().contains(
@@ -171,7 +172,7 @@
checkDeleteExtension(securityToken, e.getDeletedExtensions());
}
}
- WikittyEvent result = ws.replay(securityToken, events);
+ WikittyEvent result = ws.replay(securityToken, events, force);
return result;
}
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-18 10:05:29 UTC (rev 480)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java 2010-11-18 10:47:41 UTC (rev 481)
@@ -71,7 +71,7 @@
}
public void commit(String securityToken) {
- ws.replay(securityToken, events);
+ ws.replay(securityToken, events, false);
this.tx.clear(null);
events.clear();
}
@@ -142,8 +142,9 @@
}
@Override
- public WikittyEvent replay(String securityToken, List<WikittyEvent> events) {
- WikittyEvent e = tx.replay(securityToken, events);
+ public WikittyEvent replay(
+ String securityToken, List<WikittyEvent> events, boolean force) {
+ WikittyEvent e = tx.replay(securityToken, events, force);
events.add(e);
return e;
}
Modified: trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceSlave.java
===================================================================
--- trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceSlave.java 2010-11-18 10:05:29 UTC (rev 480)
+++ trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceSlave.java 2010-11-18 10:47:41 UTC (rev 481)
@@ -1,9 +1,15 @@
package org.nuiton.wikitty.services;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.RandomAccessFile;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jivesoftware.smack.PacketListener;
@@ -14,14 +20,10 @@
import org.nuiton.util.ApplicationConfig;
import org.nuiton.wikitty.WikittyConfig;
import org.nuiton.wikitty.WikittyException;
-import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.WikittyUtil;
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyExtension;
-import org.nuiton.wikitty.services.WikittyEvent;
-import org.nuiton.wikitty.services.WikittyServiceDelegator;
-import org.nuiton.wikitty.services.XMPPNotifierTransporter;
import org.wikitty.hessian.WikittyHessianFactory;
/**
@@ -32,12 +34,22 @@
* received
*
* Configuration:
- * <li> slave login
- * <li> slave passwd
* <li> master service url
* <li> master service xmpp room
- * <li> async store
+ * <li> sync state file
+ * <li> sync state intervale
*
+ * Il n'est pas necessaire que l'on sache exactement quel est le dernier event
+ * jouer. Car on peut rejouer plusieurs fois l'event sans qu'il y ait de
+ * probleme. Il faut juste que l'on ne loupe pas d'event.
+ *
+ * (FIXME poussin 20101118 verifier que ca ne pose pas de probleme avec
+ * les numeros de version)(en fait il faudrait pour le replay utiliser par le
+ * slave avoir un argument force en plus pour que les numeros de version soit
+ * identique sur le master et le slave. Il faut verifier pourquoi lorsqu'on
+ * demande un force il peut y avoir un "Wikitty is obsolete" ce qui ne permet
+ * pas de rejouer plusieurs fois les events)
+ *
* @author poussin
* @version $Revision$
*
@@ -56,15 +68,34 @@
protected WikittyService master;
protected ApplicationConfig config;
- protected boolean useAsync = false;
+ protected long lastState = -1;
+
+ protected RandomAccessFile syncStateFile = null;
+ protected int syncIntervale = 300;
+ protected long lastStateSaveDate = -1;
+
public WikittyServiceSlave(ApplicationConfig config, WikittyService ws) {
super(ws);
this.config = config;
- useAsync = config.getOptionAsBoolean(WikittyConfig.Option.
- WIKITTY_SLAVE_ASYNC_STORE.getKey());
+ File file = config.getOptionAsFile(WikittyConfig.Option.
+ WIKITTY_SLAVE_SYNC_STATE_FILE.getKey());
+ if (!file.exists()) {
+ throw new WikittyException(String.format(
+ "File state %s doesn't exists. You must initialise data"
+ + " correctly and create state file after that before used"
+ + " WikittyServiceSlave", file));
+ }
+ try {
+ syncStateFile = new RandomAccessFile(file, "rwd"); // d to force sync
+ } catch (FileNotFoundException eee) {
+ throw new WikittyException("Can't create file to store slave state", eee);
+ }
+ syncIntervale = config.getOptionAsInt(WikittyConfig.Option.
+ WIKITTY_SLAVE_SYNC_STATE_INTERVALE.getKey());
+
String masterURL = config.getOption(WikittyConfig.Option.
WIKITTY_SLAVE_MASTER_URL.getKey());
@@ -75,8 +106,37 @@
initXMPP(config);
}
+ protected long getLastState() {
+ if (lastState == -1) {
+ try {
+ // read state from file
+ syncStateFile.seek(0);
+ lastState = syncStateFile.readLong();
+ } catch (IOException eee) {
+ throw new WikittyException("Can't read state file", eee);
+ }
+ }
+ return lastState;
+ }
+
+ protected void setLastState(long date) {
+ lastState = date;
+ // save state in file if necessary
+ long now = System.currentTimeMillis();
+ if (lastStateSaveDate + syncIntervale < now) {
+ try {
+ // write state to file
+ syncStateFile.seek(0);
+ syncStateFile.writeLong(lastState);
+ lastStateSaveDate = now;
+ } catch (IOException eee) {
+ log.error("Can't write state file", eee);
+ }
+ }
+ }
+
/**
- * FIXME poussin 20101117 reutilise le transporter plutot que de dupliquer le code.
+ * TODO poussin 20101117 reutilise le transporter plutot que de dupliquer le code.
* Le probleme est de passer de la meilleur facon possible le xmpp server et la room
* qui ne sont pas donnes par les memes cles de config. Il y a aussi l'historique
* qu'il faut recuperer ici alors que dans le transporter qui est utilise pour les
@@ -105,9 +165,9 @@
connection.loginAnonymously();
DiscussionHistory history = new DiscussionHistory();
- // FIXME poussin 20101113 compute amount of log history to retrieve
// MUC must be archived
- Date date = new Date();
+ long lastDate = getLastState();
+ Date date = new Date(lastDate);
history.setSince(date);
// connection to the volatile room
@@ -143,15 +203,16 @@
protected void processRemoteEvent(WikittyEvent event) {
// rejoue l'event en local
- replay(null, Collections.singletonList(event));
+ replay(null, Collections.singletonList(event), true);
- // FIXME poussin 20101117 marquer cet event comme etant le dernier recu et rejouer
+ // marque cet event comme etant le dernier recu et rejouer
+ setLastState(event.getTime());
}
//////////////////////////////////////////////////////
//
// W I K I T T Y S E R V I C E M E T H O D S
- //
+ // method that must be done on master
//////////////////////////////////////////////////////
@Override
1
0
Author: jcouteau
Date: 2010-11-18 11:05:29 +0100 (Thu, 18 Nov 2010)
New Revision: 480
Url: http://nuiton.org/repositories/revision/wikitty/480
Log:
Add sites for modules
Added:
trunk/wikitty-api/src/site/en/
trunk/wikitty-api/src/site/en/rst/
trunk/wikitty-api/src/site/en/rst/index.rst
trunk/wikitty-api/src/site/rst/
trunk/wikitty-api/src/site/rst/index.rst
trunk/wikitty-api/src/site/site_en.xml
trunk/wikitty-api/src/site/site_fr.xml
trunk/wikitty-generators/src/site/
trunk/wikitty-generators/src/site/en/
trunk/wikitty-generators/src/site/en/rst/
trunk/wikitty-generators/src/site/en/rst/index.rst
trunk/wikitty-generators/src/site/rst/
trunk/wikitty-generators/src/site/rst/index.rst
trunk/wikitty-generators/src/site/site_en.xml
trunk/wikitty-generators/src/site/site_fr.xml
trunk/wikitty-hessian-client/src/site/
trunk/wikitty-hessian-client/src/site/en/
trunk/wikitty-hessian-client/src/site/en/rst/
trunk/wikitty-hessian-client/src/site/en/rst/index.rst
trunk/wikitty-hessian-client/src/site/rst/
trunk/wikitty-hessian-client/src/site/rst/index.rst
trunk/wikitty-hessian-client/src/site/site_en.xml
trunk/wikitty-hessian-client/src/site/site_fr.xml
trunk/wikitty-jdbc-impl/src/site/
trunk/wikitty-jdbc-impl/src/site/en/
trunk/wikitty-jdbc-impl/src/site/en/rst/
trunk/wikitty-jdbc-impl/src/site/en/rst/index.rst
trunk/wikitty-jdbc-impl/src/site/rst/
trunk/wikitty-jdbc-impl/src/site/rst/index.rst
trunk/wikitty-jdbc-impl/src/site/site_en.xml
trunk/wikitty-jdbc-impl/src/site/site_fr.xml
trunk/wikitty-solr-impl/src/site/
trunk/wikitty-solr-impl/src/site/en/
trunk/wikitty-solr-impl/src/site/en/rst/
trunk/wikitty-solr-impl/src/site/en/rst/index.rst
trunk/wikitty-solr-impl/src/site/rst/
trunk/wikitty-solr-impl/src/site/rst/index.rst
trunk/wikitty-solr-impl/src/site/site_en.xml
trunk/wikitty-solr-impl/src/site/site_fr.xml
trunk/wikitty-ui-zk/src/site/
trunk/wikitty-ui-zk/src/site/en/
trunk/wikitty-ui-zk/src/site/en/rst/
trunk/wikitty-ui-zk/src/site/en/rst/index.rst
trunk/wikitty-ui-zk/src/site/rst/
trunk/wikitty-ui-zk/src/site/rst/index.rst
trunk/wikitty-ui-zk/src/site/site_en.xml
trunk/wikitty-ui-zk/src/site/site_fr.xml
Added: trunk/wikitty-api/src/site/en/rst/index.rst
===================================================================
--- trunk/wikitty-api/src/site/en/rst/index.rst (rev 0)
+++ trunk/wikitty-api/src/site/en/rst/index.rst 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,4 @@
+Wikitty API
+===========
+
+This is the API module
\ No newline at end of file
Added: trunk/wikitty-api/src/site/rst/index.rst
===================================================================
--- trunk/wikitty-api/src/site/rst/index.rst (rev 0)
+++ trunk/wikitty-api/src/site/rst/index.rst 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,4 @@
+Wikitty API
+===========
+
+Le module d'API de Wikitty
\ No newline at end of file
Added: trunk/wikitty-api/src/site/site_en.xml
===================================================================
--- trunk/wikitty-api/src/site/site_en.xml (rev 0)
+++ trunk/wikitty-api/src/site/site_en.xml 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,59 @@
+<?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 ref="parent"/>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html"/>
+ </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="User">
+ <item name="Home" href="index.html"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+
+</project>
\ No newline at end of file
Added: trunk/wikitty-api/src/site/site_fr.xml
===================================================================
--- trunk/wikitty-api/src/site/site_fr.xml (rev 0)
+++ trunk/wikitty-api/src/site/site_fr.xml 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,59 @@
+<?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 ref="parent"/>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html"/>
+ </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="Utilisateur">
+ <item name="Accueil" href="index.html"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+
+</project>
\ No newline at end of file
Added: trunk/wikitty-generators/src/site/en/rst/index.rst
===================================================================
--- trunk/wikitty-generators/src/site/en/rst/index.rst (rev 0)
+++ trunk/wikitty-generators/src/site/en/rst/index.rst 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,8 @@
+Wikitty Generators
+==================
+
+This module provides generator templates for Wikitty. The code generator used is
+EUGene_ . This generator allow you to modelise the business using different UML
+modellers, such as ArgoUML or TopCased.
+
+.. _EUGene::http://maven-site.nuiton.org/eugene/
\ No newline at end of file
Added: trunk/wikitty-generators/src/site/rst/index.rst
===================================================================
--- trunk/wikitty-generators/src/site/rst/index.rst (rev 0)
+++ trunk/wikitty-generators/src/site/rst/index.rst 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,8 @@
+Wikitty Generators
+==================
+
+Ce module fourni les templates de génération pour Wikitty. Le générateur de code
+utilisé est EUGene_ . Cela permet de modéliser le métier en utilisant différents
+logiciels comme ArgoUML ou TopCased.
+
+.. _EUGene::http://maven-site.nuiton.org/eugene/
\ No newline at end of file
Added: trunk/wikitty-generators/src/site/site_en.xml
===================================================================
--- trunk/wikitty-generators/src/site/site_en.xml (rev 0)
+++ trunk/wikitty-generators/src/site/site_en.xml 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,59 @@
+<?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 ref="parent"/>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html"/>
+ </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="User">
+ <item name="Home" href="index.html"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+
+</project>
\ No newline at end of file
Added: trunk/wikitty-generators/src/site/site_fr.xml
===================================================================
--- trunk/wikitty-generators/src/site/site_fr.xml (rev 0)
+++ trunk/wikitty-generators/src/site/site_fr.xml 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,59 @@
+<?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 ref="parent"/>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html"/>
+ </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="Utilisateur">
+ <item name="Accueil" href="index.html"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+
+</project>
\ No newline at end of file
Added: trunk/wikitty-hessian-client/src/site/en/rst/index.rst
===================================================================
--- trunk/wikitty-hessian-client/src/site/en/rst/index.rst (rev 0)
+++ trunk/wikitty-hessian-client/src/site/en/rst/index.rst 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,4 @@
+Wikitty Hessian Client
+======================
+
+This module provides a Hessian client for Wikitty services.
\ No newline at end of file
Added: trunk/wikitty-hessian-client/src/site/rst/index.rst
===================================================================
--- trunk/wikitty-hessian-client/src/site/rst/index.rst (rev 0)
+++ trunk/wikitty-hessian-client/src/site/rst/index.rst 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,4 @@
+Wikitty Hessian Client
+======================
+
+Ce module fournit un client Hessian pour les services Wikitty.
\ No newline at end of file
Added: trunk/wikitty-hessian-client/src/site/site_en.xml
===================================================================
--- trunk/wikitty-hessian-client/src/site/site_en.xml (rev 0)
+++ trunk/wikitty-hessian-client/src/site/site_en.xml 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,59 @@
+<?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 ref="parent"/>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html"/>
+ </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="User">
+ <item name="Home" href="index.html"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+
+</project>
\ No newline at end of file
Added: trunk/wikitty-hessian-client/src/site/site_fr.xml
===================================================================
--- trunk/wikitty-hessian-client/src/site/site_fr.xml (rev 0)
+++ trunk/wikitty-hessian-client/src/site/site_fr.xml 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,59 @@
+<?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 ref="parent"/>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html"/>
+ </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="Utilisateur">
+ <item name="Accueil" href="index.html"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+
+</project>
\ No newline at end of file
Added: trunk/wikitty-jdbc-impl/src/site/en/rst/index.rst
===================================================================
--- trunk/wikitty-jdbc-impl/src/site/en/rst/index.rst (rev 0)
+++ trunk/wikitty-jdbc-impl/src/site/en/rst/index.rst 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,4 @@
+Wikitty JDBC Implementation
+===========================
+
+This module provides a JDBC implementation of Wikitty specifications.
\ No newline at end of file
Added: trunk/wikitty-jdbc-impl/src/site/rst/index.rst
===================================================================
--- trunk/wikitty-jdbc-impl/src/site/rst/index.rst (rev 0)
+++ trunk/wikitty-jdbc-impl/src/site/rst/index.rst 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,4 @@
+Wikitty JDBC Implementation
+===========================
+
+Ce module fournit une implémentation JDBC des spécifications Wikitty.
\ No newline at end of file
Added: trunk/wikitty-jdbc-impl/src/site/site_en.xml
===================================================================
--- trunk/wikitty-jdbc-impl/src/site/site_en.xml (rev 0)
+++ trunk/wikitty-jdbc-impl/src/site/site_en.xml 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,59 @@
+<?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 ref="parent"/>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html"/>
+ </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="User">
+ <item name="Home" href="index.html"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+
+</project>
\ No newline at end of file
Added: trunk/wikitty-jdbc-impl/src/site/site_fr.xml
===================================================================
--- trunk/wikitty-jdbc-impl/src/site/site_fr.xml (rev 0)
+++ trunk/wikitty-jdbc-impl/src/site/site_fr.xml 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,59 @@
+<?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 ref="parent"/>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html"/>
+ </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="Utilisateur">
+ <item name="Accueil" href="index.html"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+
+</project>
\ No newline at end of file
Added: trunk/wikitty-solr-impl/src/site/en/rst/index.rst
===================================================================
--- trunk/wikitty-solr-impl/src/site/en/rst/index.rst (rev 0)
+++ trunk/wikitty-solr-impl/src/site/en/rst/index.rst 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,4 @@
+Wikitty SolR Implementation
+===========================
+
+This module provides an implementation of Wikitty search engine based on SolR.
\ No newline at end of file
Added: trunk/wikitty-solr-impl/src/site/rst/index.rst
===================================================================
--- trunk/wikitty-solr-impl/src/site/rst/index.rst (rev 0)
+++ trunk/wikitty-solr-impl/src/site/rst/index.rst 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,5 @@
+Wikitty SolR implementation
+===========================
+
+Ce module fournit une implémentation du moteur de recherche Wikitty basé sur
+SolR.
\ No newline at end of file
Added: trunk/wikitty-solr-impl/src/site/site_en.xml
===================================================================
--- trunk/wikitty-solr-impl/src/site/site_en.xml (rev 0)
+++ trunk/wikitty-solr-impl/src/site/site_en.xml 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,59 @@
+<?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 ref="parent"/>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html"/>
+ </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="User">
+ <item name="Home" href="index.html"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+
+</project>
\ No newline at end of file
Added: trunk/wikitty-solr-impl/src/site/site_fr.xml
===================================================================
--- trunk/wikitty-solr-impl/src/site/site_fr.xml (rev 0)
+++ trunk/wikitty-solr-impl/src/site/site_fr.xml 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,59 @@
+<?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 ref="parent"/>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html"/>
+ </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="Utilisateur">
+ <item name="Accueil" href="index.html"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+
+</project>
\ No newline at end of file
Added: trunk/wikitty-ui-zk/src/site/en/rst/index.rst
===================================================================
--- trunk/wikitty-ui-zk/src/site/en/rst/index.rst (rev 0)
+++ trunk/wikitty-ui-zk/src/site/en/rst/index.rst 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,7 @@
+Wikitty-UI-ZK
+=============
+
+This module provides a module to visually manage you Wikitty database. This
+graphical interface is web-based and written using ZK_ technology.
+
+.. _ZK::http://www.zkoss.org/
\ No newline at end of file
Added: trunk/wikitty-ui-zk/src/site/rst/index.rst
===================================================================
--- trunk/wikitty-ui-zk/src/site/rst/index.rst (rev 0)
+++ trunk/wikitty-ui-zk/src/site/rst/index.rst 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,7 @@
+Wikitty-UI-ZK
+=============
+
+Ce module fournit une interface graphique web pour gérer une base Wikitty. Cette
+interface est écrite en utilisant le framework ZK_ .
+
+.. _ZK::http://www.zkoss.org/
\ No newline at end of file
Added: trunk/wikitty-ui-zk/src/site/site_en.xml
===================================================================
--- trunk/wikitty-ui-zk/src/site/site_en.xml (rev 0)
+++ trunk/wikitty-ui-zk/src/site/site_en.xml 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,59 @@
+<?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 ref="parent"/>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html"/>
+ </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="User">
+ <item name="Home" href="index.html"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+
+</project>
\ No newline at end of file
Added: trunk/wikitty-ui-zk/src/site/site_fr.xml
===================================================================
--- trunk/wikitty-ui-zk/src/site/site_fr.xml (rev 0)
+++ trunk/wikitty-ui-zk/src/site/site_fr.xml 2010-11-18 10:05:29 UTC (rev 480)
@@ -0,0 +1,59 @@
+<?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 ref="parent"/>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html"/>
+ </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="Utilisateur">
+ <item name="Accueil" href="index.html"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+
+</project>
\ No newline at end of file
1
0
r479 - in trunk/wikitty-hessian-client/src/main/java/org: . nuiton nuiton/wikitty 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 19:11:44 +0100 (Wed, 17 Nov 2010)
New Revision: 479
Url: http://nuiton.org/repositories/revision/wikitty/479
Log:
add WikittyServiceSlave and WikittyServiceHessianClient that can be used as WikittyService
Added:
trunk/wikitty-hessian-client/src/main/java/org/nuiton/
trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/
trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/
trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceHessianClient.java
trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceSlave.java
Added: trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceHessianClient.java
===================================================================
--- trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceHessianClient.java (rev 0)
+++ trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceHessianClient.java 2010-11-17 18:11:44 UTC (rev 479)
@@ -0,0 +1,31 @@
+package org.nuiton.wikitty.services;
+
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.ApplicationConfig;
+import org.nuiton.wikitty.WikittyConfig;
+import org.nuiton.wikitty.WikittyService;
+import org.wikitty.hessian.WikittyHessianFactory;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class WikittyServiceHessianClient extends WikittyServiceDelegator {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(WikittyServiceHessianClient.class);
+
+ public WikittyServiceHessianClient(ApplicationConfig config) {
+ String url = config.getOption(WikittyConfig.Option.
+ WIKITTY_SERVER_URL.getKey());
+ WikittyService ws = WikittyHessianFactory.getWikittyService(url);
+ setDelegate(ws);
+ }
+
+}
Added: trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceSlave.java
===================================================================
--- trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceSlave.java (rev 0)
+++ trunk/wikitty-hessian-client/src/main/java/org/nuiton/wikitty/services/WikittyServiceSlave.java 2010-11-17 18:11:44 UTC (rev 479)
@@ -0,0 +1,197 @@
+package org.nuiton.wikitty.services;
+
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jivesoftware.smack.PacketListener;
+import org.jivesoftware.smack.XMPPConnection;
+import org.jivesoftware.smack.packet.Packet;
+import org.jivesoftware.smackx.muc.DiscussionHistory;
+import org.jivesoftware.smackx.muc.MultiUserChat;
+import org.nuiton.util.ApplicationConfig;
+import org.nuiton.wikitty.WikittyConfig;
+import org.nuiton.wikitty.WikittyException;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.WikittyService;
+import org.nuiton.wikitty.WikittyUtil;
+import org.nuiton.wikitty.entities.Wikitty;
+import org.nuiton.wikitty.entities.WikittyExtension;
+import org.nuiton.wikitty.services.WikittyEvent;
+import org.nuiton.wikitty.services.WikittyServiceDelegator;
+import org.nuiton.wikitty.services.XMPPNotifierTransporter;
+import org.wikitty.hessian.WikittyHessianFactory;
+
+/**
+ * This classe override all modification method (store, delete, clear) to send
+ * modification to master. All read method are directly done localy.
+ *
+ * Slave is listener of master event and synchronize local data when event are
+ * received
+ *
+ * Configuration:
+ * <li> slave login
+ * <li> slave passwd
+ * <li> master service url
+ * <li> master service xmpp room
+ * <li> async store
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class WikittyServiceSlave
+ extends WikittyServiceDelegator implements PacketListener {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(WikittyServiceSlave.class);
+
+ // Keep room addresse and pseudo to verify that messages event are not send by us
+ protected String room;
+ protected String pseudo;
+
+ protected WikittyService master;
+ protected ApplicationConfig config;
+ protected boolean useAsync = false;
+
+ public WikittyServiceSlave(ApplicationConfig config, WikittyService ws) {
+ super(ws);
+ this.config = config;
+
+ useAsync = config.getOptionAsBoolean(WikittyConfig.Option.
+ WIKITTY_SLAVE_ASYNC_STORE.getKey());
+
+ String masterURL = config.getOption(WikittyConfig.Option.
+ WIKITTY_SLAVE_MASTER_URL.getKey());
+
+ // creation du WikittyService master
+ master = WikittyHessianFactory.getWikittyService(masterURL);
+
+ // enregistrement en tant que listener sur le master
+ initXMPP(config);
+ }
+
+ /**
+ * FIXME poussin 20101117 reutilise le transporter plutot que de dupliquer le code.
+ * Le probleme est de passer de la meilleur facon possible le xmpp server et la room
+ * qui ne sont pas donnes par les memes cles de config. Il y a aussi l'historique
+ * qu'il faut recuperer ici alors que dans le transporter qui est utilise pour les
+ * client, il n'y a pas besoin d'historique. Le but est de pouvoir creer facilement
+ * de nouveau transporter sans devoir modifier cette classe.
+ *
+ * Si persistent est vrai alors il faut toujours utilise le meme user id
+ *
+ * @param props
+ */
+ protected void initXMPP(ApplicationConfig config) {
+ String server = config.getOption(WikittyConfig.Option.
+ WIKITTY_SLAVE_MASTER_XMPP_SERVER.getKey());
+
+ // Keep them to verify that is not us notifications
+ room = config.getOption(WikittyConfig.Option.
+ WIKITTY_SLAVE_MASTER_XMPP_ROOM.getKey());
+ pseudo = WikittyUtil.getUniqueLoginName();
+ try {
+ if (log.isInfoEnabled()) {
+ log.info("Try to connect to xmpp serveur " + server +
+ " with pseudo " + pseudo + " in room " + room);
+ }
+ XMPPConnection connection = new XMPPConnection(server);
+ connection.connect();
+ connection.loginAnonymously();
+
+ DiscussionHistory history = new DiscussionHistory();
+ // FIXME poussin 20101113 compute amount of log history to retrieve
+ // MUC must be archived
+ Date date = new Date();
+ history.setSince(date);
+
+ // connection to the volatile room
+ MultiUserChat muc = new MultiUserChat(connection, room);
+ muc.join(pseudo, "", history, 4000);
+ muc.addMessageListener(this);
+ } catch (Exception eee) {
+ throw new WikittyException("Can't connect to xmpp serveur", eee);
+ }
+ }
+ /**
+ * used for MUC message
+ * @param packet
+ */
+ @Override
+ public void processPacket(Packet packet) {
+
+ // Dont listen own events
+ String name = room + "/" + pseudo;
+ if (!name.equals(packet.getFrom())) {
+
+ Object event = packet.getProperty(XMPPNotifierTransporter.PROPERTY_EVENT_NAME);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Receive message : " + event);
+ }
+
+ if (event instanceof WikittyEvent) {
+ processRemoteEvent((WikittyEvent)event);
+ }
+ }
+ }
+
+ protected void processRemoteEvent(WikittyEvent event) {
+ // rejoue l'event en local
+ replay(null, Collections.singletonList(event));
+
+ // FIXME poussin 20101117 marquer cet event comme etant le dernier recu et rejouer
+ }
+
+ //////////////////////////////////////////////////////
+ //
+ // W I K I T T Y S E R V I C E M E T H O D S
+ //
+ //////////////////////////////////////////////////////
+
+ @Override
+ public String login(String login, String password) {
+ return master.login(login, password);
+ }
+
+ @Override
+ public void logout(String securityToken) {
+ master.logout(securityToken);
+ }
+
+ @Override
+ public WikittyEvent store(String securityToken, Collection<Wikitty> wikitties, boolean force) {
+ return master.store(securityToken, wikitties, force);
+ }
+
+ @Override
+ public WikittyEvent storeExtension(String securityToken, Collection<WikittyExtension> exts) {
+ return master.storeExtension(securityToken, exts);
+ }
+
+ @Override
+ public WikittyEvent delete(String securityToken, Collection<String> ids) {
+ return master.delete(securityToken, ids);
+ }
+
+ @Override
+ public WikittyEvent deleteExtension(String securityToken, Collection<String> extNames) {
+ return master.deleteExtension(securityToken, extNames);
+ }
+
+ @Override
+ public WikittyEvent deleteTree(String securityToken, String wikittyId) {
+ return master.deleteTree(securityToken, wikittyId);
+ }
+
+ @Override
+ public WikittyEvent clear(String securityToken) {
+ return master.clear(securityToken);
+ }
+
+}
1
0
r478 - in trunk/wikitty-api/src: main/java/org/nuiton/wikitty main/java/org/nuiton/wikitty/services main/resources test/java/org/nuiton/wikitty/notification
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:58:42 +0100 (Wed, 17 Nov 2010)
New Revision: 478
Url: http://nuiton.org/repositories/revision/wikitty/478
Log:
Config:
- add WikittyServiceSlave configuration
- rename some configuration
Notifier:
- permit listen and/or propagate
sample:
add sample configuration for differents wikitty usage
Added:
trunk/wikitty-api/src/main/resources/wikitty-config-sample-client.properties
trunk/wikitty-api/src/main/resources/wikitty-config-sample-inmemory.properties
trunk/wikitty-api/src/main/resources/wikitty-config-sample-server-slave.properties
trunk/wikitty-api/src/main/resources/wikitty-config-sample-server.properties
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceFactory.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/XMPPNotifierTransporter.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java
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-17 17:55:25 UTC (rev 477)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java 2010-11-17 17:58:42 UTC (rev 478)
@@ -179,6 +179,16 @@
+ "org.nuiton.wikitty.jdbc.WikittyStorageJDBC,"
+ "org.nuiton.wikitty.solr.WikittySearchEnginSolr", String.class, false, false),
+ WIKITTY_SERVER_CONFIG(
+ "wikitty.service.server.config",
+ _("Jetty server configuration file name"),
+ "wikitty-server-config.xml", String.class, false, false),
+ WIKITTY_SERVER_URL(
+ "wikitty.service.server.url",
+ _("Hessian server url, use by server to know path and port to bind"
+ + " servlet and client to contact server"),
+ "http://service.codelutin.com/wikitty", String.class, false, false),
+
WIKITTY_EXPORT_THREADNUMBER(
"wikitty.addon.export.threadnumber",
_("number of thread used to export task"),
@@ -192,10 +202,6 @@
_("url used by client to retrieve export file when job is ended"),
"file:///tmp/", String.class, false, false),
- WIKITTY_CACHE_LISTEN_REMOTEEVENTS(
- "wikitty.service.cache.listenevents",
- _("Indique si le service de cache ecoute les events reseaux"),
- "false", Boolean.class, false, false),
WIKITTY_CACHE_RESTORE_COPIES(
"wikitty.service.cache.allwaysRestoreCopies",
_("Indique si le cache retourne des copies des objets ou des proxies"),
@@ -205,7 +211,11 @@
"wikitty.service.event.propagate",
_("Indique si le service d'event propage sur le reseau les evenements"),
"false", Boolean.class, false, false),
- WIKITTY_EVENT_PROPAGATE_TRANSPORTER(
+ WIKITTY_EVENT_LISTEN(
+ "wikitty.service.event.listen",
+ _("Indique si le service d'event ecoute sur le reseau les evenements"),
+ "false", Boolean.class, false, false),
+ WIKITTY_EVENT_TRANSPORTER(
"wikitty.service.event.propagate.transporter",
_("La classe du transporter a utiliser pour la propagation reseau"),
XMPPNotifierTransporter.class.getName(), Class.class, false, false),
@@ -216,25 +226,33 @@
null, String.class, false, false),
WIKITTY_EVENT_TRANSPORTER_XMPP_SERVER(
- "wiktty.service.event.transporter.xmpp.server",
+ "wikitty.service.event.transporter.xmpp.server",
_("XMPP server to use for XMPP transporter"),
"im.codelutin.com", String.class, false, false),
WIKITTY_EVENT_TRANSPORTER_XMPP_ROOM(
"wikitty.service.event.transporter.xmpp.room",
_("Room to use for XMPP transporter"),
"test(a)conference.im.codelutin.com", String.class, false, false),
- WIKITTY_EVENT_TRANSPORTER_XMPP_NOTIFICATION_PERSISTENT(
- "wikitty.service.event.transporter.xmpp.notification.persistent",
- _("If true client try to retrieve missed message during client"
- + "stopped. For that room must have history activated"),
+
+ WIKITTY_SLAVE_ASYNC_STORE(
+ "wikitty.service.slave.async.store",
+ _("Slave service use asyncrhonous method to send modification"
+ + " to master"),
"false", Boolean.class, false, false),
+ WIKITTY_SLAVE_MASTER_URL(
+ "wikitty.service.slave.master.hessian.endpoint",
+ _("Master url service, where to delegate modification action"),
+ null, String.class, false, false),
+ WIKITTY_SLAVE_MASTER_XMPP_SERVER(
+ "wikitty.service.slave.master.xmpp.server",
+ _("XMPP server to use for synchronization with master"),
+ "im.codelutin.com", String.class, false, false),
+ WIKITTY_SLAVE_MASTER_XMPP_ROOM(
+ "wikitty.service.slave.master.xmpp.room",
+ _("Room to use for synchronization with master,"
+ + " this room must have history activated"),
+ "test(a)conference.im.codelutin.com", String.class, false, false);
- // achitecture client serveur
- WIKITTY_SERVER_HESSIAN_ENDPOINT(
- "wikitty.server.hessian.endpoint",
- _("Hessian serveur URL"),
- null, String.class, false, false);
-
public String key;
public String description;
public String defaultValue;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceFactory.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceFactory.java 2010-11-17 17:55:25 UTC (rev 477)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceFactory.java 2010-11-17 17:58:42 UTC (rev 478)
@@ -4,7 +4,6 @@
import org.nuiton.wikitty.services.WikittyServiceNotifier;
import java.util.Arrays;
import java.util.List;
-import java.util.Properties;
import org.apache.commons.lang.ClassUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -28,24 +27,6 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(WikittyServiceFactory.class);
- // FIXME REMOVE IT
-// /**
-// * Construit l'enchainement des differents WikittyService comme decrit
-// * dans le fichier de configuration via la cle:
-// * wikitty.WikittyService.components
-// * <p>
-// * Chaque composant de l'enchainement peut avoir lui aussi ses propres
-// * composants dans une cle:
-// * wikitty.[nom simple de la classe].components *
-// *
-// * @param props
-// * @return
-// */
-// static public WikittyService buildWikittyService(Properties props) {
-// WikittyConfig config = new WikittyConfig(props);
-// return buildWikittyService(config);
-// }
-
/**
* Construit l'enchainement des differents WikittyService comme decrit
* dans le fichier de configuration via la cle:
@@ -84,7 +65,7 @@
ApplicationConfig config, WikittyServiceNotifier notifier) {
Class<WikittyServiceNotifier.RemoteNotifierTransporter> transporterClass =
(Class<WikittyServiceNotifier.RemoteNotifierTransporter>)config.getOptionAsClass(
- WikittyConfig.Option.WIKITTY_EVENT_PROPAGATE_TRANSPORTER.getKey());
+ WikittyConfig.Option.WIKITTY_EVENT_TRANSPORTER.getKey());
MutablePicoContainer pico = new TransientPicoContainer();
pico.addComponent(config);
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-11-17 17:55:25 UTC (rev 477)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-11-17 17:58:42 UTC (rev 478)
@@ -34,12 +34,17 @@
import org.nuiton.wikitty.services.WikittyServiceEnhanced;
import java.lang.reflect.Constructor;
import java.math.BigDecimal;
+import java.net.Inet4Address;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
+import java.util.Enumeration;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
@@ -876,4 +881,51 @@
String metaFieldName = getFQFieldName(actualExtensionName, fieldName);
return metaFieldName;
}
+
+ /**
+ * Recherche le meilleur nom a utiliser comme pseudo pour cette machine.
+ * Un UUID est toujours ajouter en debut, pour potentiellement lancer
+ * plusieurs application en meme temps sur la meme machine et etre sur que
+ * le pseudo soit bien unique.
+ *
+ * Le pseudo, n'est pas seulement un UUID, pour pouvoir facilement faire
+ * du debug en entrant dans le channel et voir les ip des machiens connectees
+ *
+ * @return
+ */
+ static public String getUniqueLoginName() {
+ String result = UUID.randomUUID().toString();
+ try {
+ String ipv4 = null;
+ String ipv6 = null;
+ for (Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces(); e.hasMoreElements();) {
+ NetworkInterface netint = e.nextElement();
+
+ for (Enumeration<InetAddress> a = netint.getInetAddresses(); a.hasMoreElements();) {
+ InetAddress ip = a.nextElement();
+ if (ip instanceof Inet4Address) {
+ if ((ipv4 == null || "127.0.0.1".equals(ipv4))) {
+ ipv4 = ip.getHostAddress();
+ }
+ } else if (ip instanceof Inet6Address) {
+ if (ipv6 == null) {
+ ipv6 = ip.getHostAddress();
+ }
+ } else {
+ log.error("Can't get ip from no ipv4 and no ipv6: " + ip);
+ }
+ }
+ }
+
+ if (ipv4 != null) {
+ result = ipv4 + "=" + result;
+ } else if (ipv6 != null) {
+ result = ipv6 + "=" + result;
+ }
+ } catch (Exception eee) {
+ log.error("Can't compute unique name from network interface", eee);
+ }
+ return result;
+ }
+
}
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-17 17:55:25 UTC (rev 477)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java 2010-11-17 17:58:42 UTC (rev 478)
@@ -86,8 +86,13 @@
public WikittyServiceCached(ApplicationConfig config, WikittyService ws) {
this.ws = ws;
cache = new WikittyCache(config);
- registerWikittyServiceListener(config);
+ // add service listener for synchronisation listener for remote event
+ // register all time, but perhaps Notifier service don't listen for
+ // remote event and cache can't be notified. But this is normal
+ // behavior
+ addWikittyServiceListener(cache, ServiceListenerType.REMOTE);
+
if (config != null) {
// reading configuration and set allwaysRestoreCopies accordingly
allwaysRestoreCopies =
@@ -119,28 +124,6 @@
return result;
}
- /**
- * Add cache as service listener if configuration request it.
- *
- * @param props properties (can be null)
- */
- protected void registerWikittyServiceListener(ApplicationConfig config) {
- if (config != null) {
- // add notifier as listener
- boolean listenEvents = config.getOptionAsBoolean(
- WikittyConfig.Option.WIKITTY_CACHE_LISTEN_REMOTEEVENTS.getKey());
- if (listenEvents) {
- // add service listener for synchronisation
- // listener des remote event
- addWikittyServiceListener(cache, ServiceListenerType.REMOTE);
-
- if (log.isDebugEnabled()) {
- log.debug("Listen remote event on service");
- }
- }
- }
- }
-
@Override
public String login(String login, String password) {
return ws.login(login, password);
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-17 17:55:25 UTC (rev 477)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java 2010-11-17 17:58:42 UTC (rev 478)
@@ -319,7 +319,7 @@
* @param event event to fire
*/
protected void fireEvent(final WikittyEvent event) {
- // ajout d'un thread, car si les listener doit
+ // ajout d'un thread, car si les listeners doivent
// ouvrir une transaction WikittyTransaction
// alors que celui qui lance l'event en a une ouverte
// cela cause une exception JTA
@@ -587,31 +587,15 @@
/** Notifier service reference reference. */
protected WikittyServiceNotifier ws;
- /**
- * Indique si les objects sont propages (true) vers les autres caches ou
- * simplement supprimes des autres caches (false).
- *
- * @see WikittyServiceCached#WIKITTY_PROPAGATE_CACHE_OPTION
- */
- protected boolean propagateEvent = false;
protected RemoteNotifierTransporter transporter;
public RemoteNotifier(ApplicationConfig config, WikittyServiceNotifier ws) {
// can be null according to default constructor
if (config != null) {
this.ws = ws;
-
- propagateEvent = config.getOptionAsBoolean(
- WikittyConfig.Option.WIKITTY_EVENT_PROPAGATE.getKey());
- if (log.isDebugEnabled()) {
- log.debug("Set propagateEvent option to " + propagateEvent);
- }
-
- if (propagateEvent) {
- transporter = WikittyServiceFactory.buildTransporter(config, ws);
- // add this as listener when transporter is created without error
- ws.addWikittyServiceListener(this, WikittyService.ServiceListenerType.ALL); // weak reference
- }
+ transporter = WikittyServiceFactory.buildTransporter(config, ws);
+ // add this as listener when transporter is created without error
+ ws.addWikittyServiceListener(this, WikittyService.ServiceListenerType.ALL); // weak reference
}
if (log.isInfoEnabled()) {
if (transporter == null) {
@@ -650,13 +634,7 @@
*/
@Override
public void putWikitty(WikittyEvent event) {
- if (propagateEvent) {
- sendMessage(event);
- } else {
- if (log.isDebugEnabled()) {
- log.debug("Not master cache, do not propagate putWikitty event");
- }
- }
+ sendMessage(event);
}
/*
@@ -664,13 +642,7 @@
*/
@Override
public void removeWikitty(WikittyEvent event) {
- if (propagateEvent) {
- sendMessage(event);
- } else {
- if (log.isDebugEnabled()) {
- log.debug("Not master cache, do not propagate removeWikitty event");
- }
- }
+ sendMessage(event);
}
/*
@@ -678,13 +650,7 @@
*/
@Override
public void clearWikitty(WikittyEvent event) {
- if (propagateEvent) {
- sendMessage(event);
- } else {
- if (log.isDebugEnabled()) {
- log.debug("Not master cache, do not propagate clearWikitty event");
- }
- }
+ sendMessage(event);
}
/*
@@ -692,24 +658,12 @@
*/
@Override
public void putExtension(WikittyEvent event) {
- if (propagateEvent) {
- sendMessage(event);
- } else {
- if (log.isDebugEnabled()) {
- log.debug("Not master cache, do not propagate putExtension event");
- }
- }
+ sendMessage(event);
}
@Override
public void removeExtension(WikittyEvent event) {
- if (propagateEvent) {
- sendMessage(event);
- } else {
- if (log.isDebugEnabled()) {
- log.debug("Not master cache, do not propagate putExtension event");
- }
- }
+ sendMessage(event);
}
/*
@@ -717,13 +671,7 @@
*/
@Override
public void clearExtension(WikittyEvent event) {
- if (propagateEvent) {
- sendMessage(event);
- } else {
- if (log.isDebugEnabled()) {
- log.debug("Not master cache, do not propagate clearExtension event");
- }
- }
+ sendMessage(event);
}
}
}
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-17 17:55:25 UTC (rev 477)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/XMPPNotifierTransporter.java 2010-11-17 17:58:42 UTC (rev 478)
@@ -46,6 +46,7 @@
import org.nuiton.util.ApplicationConfig;
import org.nuiton.wikitty.WikittyConfig;
import org.nuiton.wikitty.WikittyException;
+import org.nuiton.wikitty.WikittyUtil;
/**
* Transporter d'event via xmpp. Pour que ca fonctionne il faut un serveur
@@ -72,13 +73,14 @@
static final public String PROPERTY_EVENT_NAME = "wikitty-event";
+ /** Indique si les events sont propages (true) via le transporter */
+ protected boolean propagateEvent = false;
+ /** Indique si les events sont ecoutes (true) via le transporter */
+ protected boolean listenEvent = false;
+
/** Notifier service reference reference. */
protected WikittyServiceNotifier ws;
- /** if persistent is true use Chat otherwize use MUC. Chat permit to
- received event missed after deconnection */
- protected boolean persistent = false;
-
// Keep room addresse and pseudo to verify that messages event are not send by us
protected String room;
protected String pseudo;
@@ -92,60 +94,72 @@
* @param props
*/
public XMPPNotifierTransporter(ApplicationConfig config, WikittyServiceNotifier ws) {
- this.ws = ws;
+ propagateEvent = config.getOptionAsBoolean(WikittyConfig.Option.
+ WIKITTY_EVENT_PROPAGATE.getKey());
+ listenEvent = config.getOptionAsBoolean(WikittyConfig.Option.
+ WIKITTY_EVENT_LISTEN.getKey());
+
+ setWikittyServiceNotifier(ws);
initXMPP(config);
}
+ public WikittyServiceNotifier getWikittyServiceNotifier() {
+ return ws;
+ }
+
+ public void setWikittyServiceNotifier(WikittyServiceNotifier ws) {
+ this.ws = ws;
+ }
+
/**
* Si persistent est vrai alors il faut toujours utilise le meme user id
*
* @param props
*/
protected void initXMPP(ApplicationConfig config) {
- persistent = config.getOptionAsBoolean(
- WikittyConfig.Option.WIKITTY_EVENT_TRANSPORTER_XMPP_NOTIFICATION_PERSISTENT.getKey());
- String server = config.getOption(
- WikittyConfig.Option.WIKITTY_EVENT_TRANSPORTER_XMPP_SERVER.getKey());
+ // on verifie qu'on a besoin reellement de faire l'init
+ if (propagateEvent || listenEvent) {
+ String server = config.getOption(
+ WikittyConfig.Option.WIKITTY_EVENT_TRANSPORTER_XMPP_SERVER.getKey());
- // Keep them to verify that is not us notifications
- room = config.getOption(WikittyConfig.Option.WIKITTY_EVENT_TRANSPORTER_XMPP_ROOM.getKey());
- pseudo = getUniqueLoginName();
- try {
- if (log.isInfoEnabled()) {
- log.info("Try to connect to xmpp serveur " + server +
- " with pseudo " + pseudo + " in room " + room +
- " persistent " + persistent);
- }
- connection = new XMPPConnection(server);
- connection.connect();
- connection.loginAnonymously();
+ // Keep them to verify that is not us notifications
+ room = config.getOption(WikittyConfig.Option.
+ WIKITTY_EVENT_TRANSPORTER_XMPP_ROOM.getKey());
+ pseudo = WikittyUtil.getUniqueLoginName();
+ try {
+ if (log.isInfoEnabled()) {
+ log.info("Try to connect to xmpp serveur " + server
+ + " with pseudo " + pseudo + " in room " + room);
+ }
+ connection = new XMPPConnection(server);
+ connection.connect();
+ connection.loginAnonymously();
- DiscussionHistory history = new DiscussionHistory();
- if (persistent) {
- // FIXME poussin 20101113 compute amount of log history to retrieve
- // MUC must be archived
- Date date = new Date();
- history.setSince(date);
- } else {
+ DiscussionHistory history = new DiscussionHistory();
history.setMaxChars(0);
- }
- // connection to the volatile room
- muc = new MultiUserChat(connection, room);
- muc.join(pseudo, "", history, 4000);
- muc.addMessageListener(this);
- } catch (Exception eee) {
- throw new WikittyException("Can't connect to xmpp serveur", eee);
+ // connection to the volatile room
+ muc = new MultiUserChat(connection, room);
+ muc.join(pseudo, "", history, 4000);
+
+ if (listenEvent) {
+ muc.addMessageListener(this);
+ }
+ } catch (Exception eee) {
+ throw new WikittyException("Can't connect to xmpp serveur", eee);
+ }
}
}
@Override
public void sendMessage(WikittyEvent event) throws Exception {
- Message message = muc.createMessage();
- message.setBody(event.getType().toString());
- message.setProperty(PROPERTY_EVENT_NAME, event);
+ if (propagateEvent) {
+ Message message = muc.createMessage();
+ message.setBody(event.getType().toString());
+ message.setProperty(PROPERTY_EVENT_NAME, event);
- muc.sendMessage(message);
+ muc.sendMessage(message);
+ }
}
/**
@@ -171,50 +185,4 @@
}
}
- /**
- * Recherche le meilleur nom a utiliser comme pseudo pour cette machine.
- * Un UUID est toujours ajouter en debut, pour potentiellement lancer
- * plusieurs application en meme temps sur la meme machine et etre sur que
- * le pseudo soit bien unique.
- *
- * Le pseudo, n'est pas seulement un UUID, pour pouvoir facilement faire
- * du debug en entrant dans le channel et voir les ip des machiens connectees
- *
- * @return
- */
- static public String getUniqueLoginName() {
- String result = UUID.randomUUID().toString();
- try {
- String ipv4 = null;
- String ipv6 = null;
- for (Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces(); e.hasMoreElements();) {
- NetworkInterface netint = e.nextElement();
-
- for (Enumeration<InetAddress> a = netint.getInetAddresses(); a.hasMoreElements();) {
- InetAddress ip = a.nextElement();
- if (ip instanceof Inet4Address) {
- if ((ipv4 == null || "127.0.0.1".equals(ipv4))) {
- ipv4 = ip.getHostAddress();
- }
- } else if (ip instanceof Inet6Address) {
- if (ipv6 == null) {
- ipv6 = ip.getHostAddress();
- }
- } else {
- log.error("Can't get ip from no ipv4 and no ipv6: " + ip);
- }
- }
- }
-
- if (ipv4 != null) {
- result = ipv4 + "=" + result;
- } else if (ipv6 != null) {
- result = ipv6 + "=" + result;
- }
- } catch (Exception eee) {
- log.error("Can't compute unique name from network interface", eee);
- }
- return result;
- }
-
}
Added: trunk/wikitty-api/src/main/resources/wikitty-config-sample-client.properties
===================================================================
--- trunk/wikitty-api/src/main/resources/wikitty-config-sample-client.properties (rev 0)
+++ trunk/wikitty-api/src/main/resources/wikitty-config-sample-client.properties 2010-11-17 17:58:42 UTC (rev 478)
@@ -0,0 +1,11 @@
+wikitty.WikittyService.components=org.nuiton.wikitty.services.WikittyServiceHessianClient,\
+org.nuiton.wikitty.services.WikittyServiceNotifier,\
+org.nuiton.wikitty.services.WikittyServiceCached,\
+org.nuiton.wikitty.services.WikittyServiceSecurity
+wikitty.service.cache.allwaysRestoreCopies=false
+wikitty.service.event.propagate=false
+wikitty.service.event.listen=true
+wikitty.service.event.transporter=org.nuiton.wikitty.services.XMPPNotifierTransporter
+wikitty.service.event.transporter.xmpp.server=im.codelutin.com
+wikitty.service.event.transporter.xmpp.room=master(a)conference.im.codelutin.com
+wikitty.service.server.url=http://services.codelutin.com/wikitty
Added: trunk/wikitty-api/src/main/resources/wikitty-config-sample-inmemory.properties
===================================================================
--- trunk/wikitty-api/src/main/resources/wikitty-config-sample-inmemory.properties (rev 0)
+++ trunk/wikitty-api/src/main/resources/wikitty-config-sample-inmemory.properties 2010-11-17 17:58:42 UTC (rev 478)
@@ -0,0 +1,23 @@
+wikitty.storage.jdbc.queryfile=wikitty-jdbc-query.properties
+wikitty.storage.jdbc.driver=org.h2.Driver
+wikitty.storage.jdbc.host=jdbc:h2:mem:db
+wikitty.storage.jdbc.login=sa
+wikitty.storage.jdbc.password=
+wikitty.storage.jdbc.xadatasource=org.h2.jdbcx.JdbcDataSource
+wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.URL=${wikitty.storage.jdbc.host}
+wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.user=${wikitty.storage.jdbc.login}
+wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.password=${wikitty.storage.jdbc.password}
+wikitty.searchengine.solr.directory.factory=solr.RAMDirectoryFactory
+wikitty.WikittyService.components=org.nuiton.wikitty.services.WikittyServiceImpl,\
+org.nuiton.wikitty.services.WikittyServiceNotifier,\
+org.nuiton.wikitty.services.WikittyServiceCached,\
+org.nuiton.wikitty.services.WikittyServiceSecurity
+wikitty.WikittyServiceImpl.components=org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC,\
+org.nuiton.wikitty.jdbc.WikittyStorageJDBC,\
+org.nuiton.wikitty.solr.WikittySearchEnginSolr
+wikitty.addon.export.threadnumber=1
+wikitty.addon.export.directory=/tmp/wikitty
+wikitty.addon.export.publicurl=file:///tmp/wikitty/
+wikitty.service.cache.allwaysRestoreCopies=false
+wikitty.service.event.propagate=false
+wikitty.service.event.listen=false
Added: trunk/wikitty-api/src/main/resources/wikitty-config-sample-server-slave.properties
===================================================================
--- trunk/wikitty-api/src/main/resources/wikitty-config-sample-server-slave.properties (rev 0)
+++ trunk/wikitty-api/src/main/resources/wikitty-config-sample-server-slave.properties 2010-11-17 17:58:42 UTC (rev 478)
@@ -0,0 +1,34 @@
+wikitty.storage.jdbc.queryfile=wikitty-jdbc-query.properties
+wikitty.storage.jdbc.driver=org.h2.Driver
+wikitty.storage.jdbc.host=jdbc:h2:file:/var/lib/wikitty/data/db
+wikitty.storage.jdbc.login=sa
+wikitty.storage.jdbc.password=
+wikitty.storage.jdbc.xadatasource=org.h2.jdbcx.JdbcDataSource
+wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.URL=${wikitty.storage.jdbc.host}
+wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.user=${wikitty.storage.jdbc.login}
+wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.password=${wikitty.storage.jdbc.password}
+wikitty.searchengine.solr.directory.data=/var/lib/wikitty/data/solr
+wikitty.searchengine.solr.directory.factory=solr.StandardDirectoryFactory
+wikitty.WikittyService.components=org.nuiton.wikitty.services.WikittyServiceImpl,\
+org.nuiton.wikitty.services.WikittyServiceSlave,\
+org.nuiton.wikitty.services.WikittyServiceNotifier,\
+org.nuiton.wikitty.services.WikittyServiceCached,\
+org.nuiton.wikitty.services.WikittyServiceSecurity,\
+org.nuiton.wikitty.services.WikittyServiceHessianServer
+wikitty.WikittyServiceImpl.components=org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC,\
+org.nuiton.wikitty.jdbc.WikittyStorageJDBC,\
+org.nuiton.wikitty.solr.WikittySearchEnginSolr
+wikitty.service.server.url=http://services-slave.codelutin.com/wikitty
+wikitty.service.cache.allwaysRestoreCopies=false
+wikitty.service.event.propagate=true
+wikitty.service.event.listen=false
+wikitty.service.event.transporter=org.nuiton.wikitty.services.XMPPNotifierTransporter
+wikitty.service.event.transporter.xmpp.server=im.codelutin.com
+wikitty.service.event.transporter.xmpp.room=slave(a)conference.im.codelutin.com
+wikitty.service.slave.async.store=false
+wikitty.service.slave.master.url=http://wikitty.codelutin.com/services
+wikitty.service.slave.master.xmpp.server=im.codelutin.com
+wikitty.service.slave.master.xmpp.room=master(a)conference.im.codelutin.com
+wikitty.addon.export.threadnumber=1
+wikitty.addon.export.directory=/tmp/wikitty
+wikitty.addon.export.publicurl=file:///tmp/wikitty/
Added: trunk/wikitty-api/src/main/resources/wikitty-config-sample-server.properties
===================================================================
--- trunk/wikitty-api/src/main/resources/wikitty-config-sample-server.properties (rev 0)
+++ trunk/wikitty-api/src/main/resources/wikitty-config-sample-server.properties 2010-11-17 17:58:42 UTC (rev 478)
@@ -0,0 +1,30 @@
+wikitty.storage.jdbc.queryfile=wikitty-jdbc-query.properties
+wikitty.storage.jdbc.driver=org.h2.Driver
+wikitty.storage.jdbc.host=jdbc:h2:file:/var/lib/wikitty/data/db
+wikitty.storage.jdbc.login=sa
+wikitty.storage.jdbc.password=
+wikitty.storage.jdbc.xadatasource=org.h2.jdbcx.JdbcDataSource
+wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.URL=${wikitty.storage.jdbc.host}
+wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.user=${wikitty.storage.jdbc.login}
+wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.password=${wikitty.storage.jdbc.password}
+wikitty.searchengine.solr.directory.data=/var/lib/wikitty/data/solr
+wikitty.searchengine.solr.directory.factory=solr.StandardDirectoryFactory
+wikitty.WikittyService.components=org.nuiton.wikitty.services.WikittyServiceImpl,\
+org.nuiton.wikitty.services.WikittyServiceNotifier,\
+org.nuiton.wikitty.services.WikittyServiceCached,\
+org.nuiton.wikitty.services.WikittyServiceSecurity,\
+org.nuiton.wikitty.services.WikittyServiceHessianServer
+wikitty.WikittyServiceImpl.components=org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC,\
+org.nuiton.wikitty.jdbc.WikittyStorageJDBC,\
+org.nuiton.wikitty.solr.WikittySearchEnginSolr
+wikitty.service.server.url=http://services.codelutin.com/wikitty
+wikitty.service.cache.listenevents=false
+wikitty.service.cache.allwaysRestoreCopies=false
+wikitty.service.event.propagate=true
+wikitty.service.event.listen=false
+wikitty.service.event.transporter=org.nuiton.wikitty.services.XMPPNotifierTransporter
+wikitty.service.event.transporter.xmpp.server=im.codelutin.com
+wikitty.service.event.transporter.xmpp.room=master(a)conference.im.codelutin.com
+wikitty.addon.export.threadnumber=1
+wikitty.addon.export.directory=/tmp/wikitty
+wikitty.addon.export.publicurl=file:///tmp/wikitty
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-17 17:55:25 UTC (rev 477)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java 2010-11-17 17:58:42 UTC (rev 478)
@@ -26,7 +26,6 @@
import java.util.Date;
-import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jivesoftware.smack.PacketListener;
@@ -36,6 +35,7 @@
import org.jivesoftware.smackx.muc.MultiUserChat;
import org.junit.Test;
import org.nuiton.wikitty.WikittyConfig;
+import org.nuiton.wikitty.WikittyUtil;
import org.nuiton.wikitty.services.WikittyEvent;
import org.nuiton.wikitty.services.XMPPNotifierTransporter;
@@ -76,7 +76,7 @@
connection.loginAnonymously();
MultiUserChat muc = new MultiUserChat(connection, room);
- String pseudo = XMPPNotifierTransporter.getUniqueLoginName();
+ String pseudo = WikittyUtil.getUniqueLoginName();
System.out.println("pseudo: " + pseudo);
DiscussionHistory history = new DiscussionHistory();
1
0
Author: bpoussin
Date: 2010-11-17 18:55:25 +0100 (Wed, 17 Nov 2010)
New Revision: 477
Url: http://nuiton.org/repositories/revision/wikitty/477
Log:
add jetty dependency
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-11-17 17:54:13 UTC (rev 476)
+++ trunk/pom.xml 2010-11-17 17:55:25 UTC (rev 477)
@@ -26,7 +26,7 @@
<module>wikitty-ui-zk</module>
<module>wikitty-hessian-client</module>
-<!-- REMOVE use WikittyServiceHelper.build now <module>wikitty-hessian-server</module> -->
+ <module>wikitty-hessian-server</module>
</modules>
@@ -39,6 +39,27 @@
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-server</artifactId>
+ <version>${jettyVersion}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-servlet</artifactId>
+ <version>${jettyVersion}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-util</artifactId>
+ <version>${jettyVersion}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-xml</artifactId>
+ <version>${jettyVersion}</version>
+ </dependency>
+
<!--dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
@@ -500,6 +521,7 @@
<jettyVersion>6.1.22</jettyVersion>
<zkVersion>5.0.2</zkVersion>
+ <jettyVersion>7.2.1.v20101111</jettyVersion>
<hbaseVersion>0.89.0-SNAPSHOT</hbaseVersion>
1
0