Wikitty-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- 1653 discussions
04 Aug '10
Author: bleny
Date: 2010-08-04 14:42:17 +0200 (Wed, 04 Aug 2010)
New Revision: 226
Url: http://nuiton.org/repositories/revision/wikitty/226
Log:
#788 d?\195?\169placement du fichier de conf jBoss utile seulement dans les tests
Added:
trunk/wikitty-api/src/test/resources/jbossts-properties.xml
Removed:
trunk/wikitty-api/src/main/resources/default-jbosstm-properties.xml
Deleted: trunk/wikitty-api/src/main/resources/default-jbosstm-properties.xml
===================================================================
--- trunk/wikitty-api/src/main/resources/default-jbosstm-properties.xml 2010-08-04 11:17:48 UTC (rev 225)
+++ trunk/wikitty-api/src/main/resources/default-jbosstm-properties.xml 2010-08-04 12:42:17 UTC (rev 226)
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
-<!--
- JBoss, Home of Professional Open Source
- Copyright 2009, Red Hat Middleware LLC, and individual contributors
- as indicated by the @author tags.
- See the copyright.txt in the distribution for a
- full listing of individual contributors.
- This copyrighted material is made available to anyone wishing to use,
- modify, copy, or redistribute it subject to the terms and conditions
- of the GNU Lesser General Public License, v. 2.1.
- This program is distributed in the hope that it will be useful, but WITHOUT A
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser General Public License,
- v.2.1 along with this distribution; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA.
-
- (C) 2009,
- @author JBoss, a division of Red Hat.
--->
-<properties>
- <!--
- This is the JBossTS configuration file for running ArjunaJTA.
- It should be called jbossts-properties.xml.
- You need a different version for ArjunaCore or JTS usage.
-
- ***************************
-
- Property values may be literals or be tokens of the form ${p1[,p2][:v]}
- in which case the token values are substituted for the values of the corresponding system
- properties as follows:
-
- - Any occurance of ${p} with the System.getProperty(p) value.
- If there is no such property p defined, then the ${p} reference will remain unchanged.
-
- - If the property reference is of the form ${p:v} and there is no such property p,
- then the default value v will be returned.
-
- - If the property reference is of the form ${p1,p2} or ${p1,p2:v} then
- the primary and the secondary properties will be tried in turn, before
- returning either the unchanged input, or the default value.
-
- The property ${/} is replaced with System.getProperty("file.separator")
- value and the property ${:} is replaced with System.getProperty("path.separator").
-
- Note this substitution applies to property values only at the point they are read from
- the config file. Tokens in system properties won't be substituted.
- -->
-
- <!-- (default is 0x00000000 i.e. no logging. Set to 0xffffffff for full logging) -->
- <entry key="LoggingEnvironmentBean.debugLevel">0x00000000</entry>
-
- <!-- (default is YES) -->
- <entry key="CoordinatorEnvironmentBean.commitOnePhase">YES</entry>
-
- <!-- default is under user.home - must be writeable!) -->
- <entry key="ObjectStoreEnvironmentBean.objectStoreDir">target/jbosstm</entry>
-
- <!-- (default is ON) -->
- <entry key="ObjectStoreEnvironmentBean.transactionSync">ON</entry>
-
- <!-- (Must be unique across all Arjuna instances.) -->
- <entry key="CoreEnvironmentBean.nodeIdentifier">1</entry>
-
- <!-- Which Xid types to recover -->
- <entry key="JTAEnvironmentBean.xaRecoveryNodes">1</entry>
-
- <!--
- Base port number for determining a unique number to associate with an instance of the transaction service
- (which is needed in order to support multiple instances on the same machine).
- Use the value 0 to allow the system to select the first available port number.
- If the port number is non-zero and the port is in use then the value will be incremented until either a successful binding
- to the loopback address is created or until the the maximum number of ports (specified by the
- CoreEnvironmentBean.socketProcessIdMaxPorts property) have been tried or until the port number
- reaches the maximum possible port number.
- -->
- <entry key="CoreEnvironmentBean.socketProcessIdPort">0</entry>
-
-
-
- <!--
- Periodic recovery modules to use. Invoked in the order they appear in the list.
- Check http://www.jboss.org/community/docs/DOC-10788 for more information
- on recovery modules and their configuration when running in various
- deployments.
- -->
- <entry key="RecoveryEnvironmentBean.recoveryExtensions">
- com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule
- com.arjuna.ats.internal.txoj.recovery.TORecoveryModule
- com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule
- </entry>
-
- <!-- Expiry scanners to use (order of invocation is random). -->
- <entry key="RecoveryEnvironmentBean.expiryScanners">
- com.arjuna.ats.internal.arjuna.recovery.ExpiredTransactionStatusManagerScanner
- </entry>
-
- <!--
- Add the following to the set of expiryScanners above to move logs that cannot be completed by failure recovery.
- But be sure you know what you are doing and why!
- com.arjuna.ats.internal.arjuna.recovery.AtomicActionExpiryScanner
- -->
-
- <!--
- The address and port number on which the recovery manager listens
- If running within an AS then the address the AS is bound to (jboss.bind.address) takes precedence
- -->
- <entry key="RecoveryEnvironmentBean.recoveryPort">4712</entry>
-
- <entry key="RecoveryEnvironmentBean.recoveryAddress"></entry>
-
- <!--
- Use this to fix the port on which the TransactionStatusManager listens,
- The default behaviour is to use any free port.
- -->
- <entry key="RecoveryEnvironmentBean.transactionStatusManagerPort">0</entry>
-
- <!--
- Use this to fix the address on which the TransactionStatusManager binds,
- The default behaviour is to use the loopback address (ie localhost).
- If running within an AS then the address the AS is bound to (jboss.bind.address) takes precedence
- -->
- <entry key="RecoveryEnvironmentBean.transactionStatusManagerAddress"></entry>
-
- <!--
- For cases where the recovery manager is in process with the transaction manager and nothing else uses
- the ObjectStore, it is possible to disable the socket based recovery listener by setting this to NO.
- Caution: use of this property can allow multiple recovery processes to run on the same ObjectStore
- if you are not careful. That in turn can lead to incorrect transaction processing. Use with care.
- -->
- <entry key="RecoveryEnvironmentBean.recoveryListener">YES</entry>
-
-</properties>
Copied: trunk/wikitty-api/src/test/resources/jbossts-properties.xml (from rev 225, trunk/wikitty-api/src/main/resources/default-jbosstm-properties.xml)
===================================================================
--- trunk/wikitty-api/src/test/resources/jbossts-properties.xml (rev 0)
+++ trunk/wikitty-api/src/test/resources/jbossts-properties.xml 2010-08-04 12:42:17 UTC (rev 226)
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<!--
+ JBoss, Home of Professional Open Source
+ Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ as indicated by the @author tags.
+ See the copyright.txt in the distribution for a
+ full listing of individual contributors.
+ This copyrighted material is made available to anyone wishing to use,
+ modify, copy, or redistribute it subject to the terms and conditions
+ of the GNU Lesser General Public License, v. 2.1.
+ This program is distributed in the hope that it will be useful, but WITHOUT A
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ You should have received a copy of the GNU Lesser General Public License,
+ v.2.1 along with this distribution; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ MA 02110-1301, USA.
+
+ (C) 2009,
+ @author JBoss, a division of Red Hat.
+-->
+<properties>
+ <!--
+ This is the JBossTS configuration file for running ArjunaJTA.
+ It should be called jbossts-properties.xml.
+ You need a different version for ArjunaCore or JTS usage.
+
+ ***************************
+
+ Property values may be literals or be tokens of the form ${p1[,p2][:v]}
+ in which case the token values are substituted for the values of the corresponding system
+ properties as follows:
+
+ - Any occurance of ${p} with the System.getProperty(p) value.
+ If there is no such property p defined, then the ${p} reference will remain unchanged.
+
+ - If the property reference is of the form ${p:v} and there is no such property p,
+ then the default value v will be returned.
+
+ - If the property reference is of the form ${p1,p2} or ${p1,p2:v} then
+ the primary and the secondary properties will be tried in turn, before
+ returning either the unchanged input, or the default value.
+
+ The property ${/} is replaced with System.getProperty("file.separator")
+ value and the property ${:} is replaced with System.getProperty("path.separator").
+
+ Note this substitution applies to property values only at the point they are read from
+ the config file. Tokens in system properties won't be substituted.
+ -->
+
+ <!-- (default is 0x00000000 i.e. no logging. Set to 0xffffffff for full logging) -->
+ <entry key="LoggingEnvironmentBean.debugLevel">0x00000000</entry>
+
+ <!-- (default is YES) -->
+ <entry key="CoordinatorEnvironmentBean.commitOnePhase">YES</entry>
+
+ <!-- default is under user.home - must be writeable!) -->
+ <entry key="ObjectStoreEnvironmentBean.objectStoreDir">target${/}jbosstm</entry>
+
+ <!-- (default is ON) -->
+ <entry key="ObjectStoreEnvironmentBean.transactionSync">ON</entry>
+
+ <!-- (Must be unique across all Arjuna instances.) -->
+ <entry key="CoreEnvironmentBean.nodeIdentifier">1</entry>
+
+ <!-- Which Xid types to recover -->
+ <entry key="JTAEnvironmentBean.xaRecoveryNodes">1</entry>
+
+ <!--
+ Base port number for determining a unique number to associate with an instance of the transaction service
+ (which is needed in order to support multiple instances on the same machine).
+ Use the value 0 to allow the system to select the first available port number.
+ If the port number is non-zero and the port is in use then the value will be incremented until either a successful binding
+ to the loopback address is created or until the the maximum number of ports (specified by the
+ CoreEnvironmentBean.socketProcessIdMaxPorts property) have been tried or until the port number
+ reaches the maximum possible port number.
+ -->
+ <entry key="CoreEnvironmentBean.socketProcessIdPort">0</entry>
+
+
+
+ <!--
+ Periodic recovery modules to use. Invoked in the order they appear in the list.
+ Check http://www.jboss.org/community/docs/DOC-10788 for more information
+ on recovery modules and their configuration when running in various
+ deployments.
+ -->
+ <entry key="RecoveryEnvironmentBean.recoveryExtensions">
+ com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule
+ com.arjuna.ats.internal.txoj.recovery.TORecoveryModule
+ com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule
+ </entry>
+
+ <!-- Expiry scanners to use (order of invocation is random). -->
+ <entry key="RecoveryEnvironmentBean.expiryScanners">
+ com.arjuna.ats.internal.arjuna.recovery.ExpiredTransactionStatusManagerScanner
+ </entry>
+
+ <!--
+ Add the following to the set of expiryScanners above to move logs that cannot be completed by failure recovery.
+ But be sure you know what you are doing and why!
+ com.arjuna.ats.internal.arjuna.recovery.AtomicActionExpiryScanner
+ -->
+
+ <!--
+ The address and port number on which the recovery manager listens
+ If running within an AS then the address the AS is bound to (jboss.bind.address) takes precedence
+ -->
+ <entry key="RecoveryEnvironmentBean.recoveryPort">4712</entry>
+
+ <entry key="RecoveryEnvironmentBean.recoveryAddress"></entry>
+
+ <!--
+ Use this to fix the port on which the TransactionStatusManager listens,
+ The default behaviour is to use any free port.
+ -->
+ <entry key="RecoveryEnvironmentBean.transactionStatusManagerPort">0</entry>
+
+ <!--
+ Use this to fix the address on which the TransactionStatusManager binds,
+ The default behaviour is to use the loopback address (ie localhost).
+ If running within an AS then the address the AS is bound to (jboss.bind.address) takes precedence
+ -->
+ <entry key="RecoveryEnvironmentBean.transactionStatusManagerAddress"></entry>
+
+ <!--
+ For cases where the recovery manager is in process with the transaction manager and nothing else uses
+ the ObjectStore, it is possible to disable the socket based recovery listener by setting this to NO.
+ Caution: use of this property can allow multiple recovery processes to run on the same ObjectStore
+ if you are not careful. That in turn can lead to incorrect transaction processing. Use with care.
+ -->
+ <entry key="RecoveryEnvironmentBean.recoveryListener">YES</entry>
+
+</properties>
1
0
r225 - in trunk/wikitty-multistorage-impl: . src/test/java/org/nuiton/wikitty/multistorage/test
by bleny@users.nuiton.org 04 Aug '10
by bleny@users.nuiton.org 04 Aug '10
04 Aug '10
Author: bleny
Date: 2010-08-04 13:17:48 +0200 (Wed, 04 Aug 2010)
New Revision: 225
Url: http://nuiton.org/repositories/revision/wikitty/225
Log:
wikitty-multistorage-impl : fixing import and dependencies
Modified:
trunk/wikitty-multistorage-impl/pom.xml
trunk/wikitty-multistorage-impl/src/test/java/org/nuiton/wikitty/multistorage/test/MultiStorageTest.java
Modified: trunk/wikitty-multistorage-impl/pom.xml
===================================================================
--- trunk/wikitty-multistorage-impl/pom.xml 2010-08-04 11:09:42 UTC (rev 224)
+++ trunk/wikitty-multistorage-impl/pom.xml 2010-08-04 11:17:48 UTC (rev 225)
@@ -20,11 +20,6 @@
<artifactId>wikitty-api</artifactId>
<version>${project.version}</version>
</dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>wikitty-solr-impl</artifactId>
- <version>${project.version}</version>
- </dependency>
<!-- TEST -->
<dependency>
@@ -46,13 +41,18 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
- <!-- not used actually -->
- <!--dependency>
+ <dependency>
<groupId>${project.groupId}</groupId>
<artifactId>wikitty-jms-impl</artifactId>
<version>${project.version}</version>
<scope>test</scope>
- </dependency-->
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>wikitty-solr-impl</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<!-- ************************************************************* -->
Modified: trunk/wikitty-multistorage-impl/src/test/java/org/nuiton/wikitty/multistorage/test/MultiStorageTest.java
===================================================================
--- trunk/wikitty-multistorage-impl/src/test/java/org/nuiton/wikitty/multistorage/test/MultiStorageTest.java 2010-08-04 11:09:42 UTC (rev 224)
+++ trunk/wikitty-multistorage-impl/src/test/java/org/nuiton/wikitty/multistorage/test/MultiStorageTest.java 2010-08-04 11:17:48 UTC (rev 225)
@@ -20,6 +20,7 @@
import java.net.URL;
import java.util.Properties;
+import org.apache.activemq.broker.BrokerFactory;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
@@ -31,6 +32,9 @@
import org.nuiton.wikitty.WikittyStorage;
import org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC;
import org.nuiton.wikitty.jdbc.WikittyStorageJDBC;
+import org.nuiton.wikitty.jms.WikittyExtensionStorageJMS;
+import org.nuiton.wikitty.jms.WikittyJMSUtil;
+import org.nuiton.wikitty.jms.WikittyStorageJMS;
import org.nuiton.wikitty.multistorage.MultiStorageConfiguration;
import org.nuiton.wikitty.multistorage.MultiStorageConfiguration.BasicConfiguration;
import org.nuiton.wikitty.multistorage.WikittyServiceMultiStorage;
1
0
r224 - in trunk/wikitty-jpa-impl: . src/test/java/org/nuiton/wikitty/jpa/test
by bleny@users.nuiton.org 04 Aug '10
by bleny@users.nuiton.org 04 Aug '10
04 Aug '10
Author: bleny
Date: 2010-08-04 13:09:42 +0200 (Wed, 04 Aug 2010)
New Revision: 224
Url: http://nuiton.org/repositories/revision/wikitty/224
Log:
jpa module : fixing pom and import
Modified:
trunk/wikitty-jpa-impl/pom.xml
trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/StorageJPATest.java
trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTA.java
trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTAWithSync.java
Modified: trunk/wikitty-jpa-impl/pom.xml
===================================================================
--- trunk/wikitty-jpa-impl/pom.xml 2010-08-04 10:57:59 UTC (rev 223)
+++ trunk/wikitty-jpa-impl/pom.xml 2010-08-04 11:09:42 UTC (rev 224)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.0-SNAPSHOT</version>
+ <version>2.1-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/StorageJPATest.java
===================================================================
--- trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/StorageJPATest.java 2010-08-04 10:57:59 UTC (rev 223)
+++ trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/StorageJPATest.java 2010-08-04 11:09:42 UTC (rev 224)
@@ -19,8 +19,8 @@
import org.junit.Before;
import org.junit.runner.RunWith;
+import org.nuiton.wikitty.conform.StorageTest;
import org.nuiton.wikitty.jpa.WikittyServiceJPA;
-import org.nuiton.wikitty.conform.StorageTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
Modified: trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTA.java
===================================================================
--- trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTA.java 2010-08-04 10:57:59 UTC (rev 223)
+++ trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTA.java 2010-08-04 11:09:42 UTC (rev 224)
@@ -36,6 +36,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.nuiton.wikitty.Wikitty;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.jpa.WikittyExtensionStorageJPA;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
Modified: trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTAWithSync.java
===================================================================
--- trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTAWithSync.java 2010-08-04 10:57:59 UTC (rev 223)
+++ trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTAWithSync.java 2010-08-04 11:09:42 UTC (rev 224)
@@ -31,6 +31,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.nuiton.wikitty.Wikitty;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.jpa.WikittyExtensionStorageJPA;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
1
0
04 Aug '10
Author: bleny
Date: 2010-08-04 12:57:59 +0200 (Wed, 04 Aug 2010)
New Revision: 223
Url: http://nuiton.org/repositories/revision/wikitty/223
Log:
fixing import WikittyImpl ; centralized date format in wikitty make tests pass
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java
trunk/wikitty-jms-impl/pom.xml
trunk/wikitty-jms-impl/src/test/java/org/nuiton/wikitty/jms/test/TopicSendReceiveTestSupport.java
trunk/wikitty-multistorage-impl/pom.xml
trunk/wikitty-multistorage-impl/src/test/java/org/nuiton/wikitty/multistorage/test/MultiStorageTest.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-08-04 10:27:48 UTC (rev 222)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-08-04 10:57:59 UTC (rev 223)
@@ -67,8 +67,7 @@
protected static final Locale CANONICAL_LOCALE = Locale.US;
// FastDateFormat is thread-safe
- // FIXME 20100804 bleny should be protected, other module should use parseDate(), below
- static final public FastDateFormat solrDateFormat = FastDateFormat.getInstance(
+ static final protected FastDateFormat solrDateFormat = FastDateFormat.getInstance(
DATE_FORMAT, CANONICAL_TZ, CANONICAL_LOCALE);
@@ -81,6 +80,10 @@
static public Date parseDate(String dateAsString) throws ParseException {
return DateUtils.parseDate(dateAsString, DATE_FORMAT_ALLOWED);
}
+
+ static public String formatDate(Date date) throws ParseException {
+ return solrDateFormat.format(date);
+ }
// TODO poussin 20090902 use spring configuration to add mapping in this
// variable
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java 2010-08-04 10:27:48 UTC (rev 222)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java 2010-08-04 10:57:59 UTC (rev 223)
@@ -198,7 +198,7 @@
// test String => Date
Calendar cal = Calendar.getInstance(Locale.ROOT);
cal.set(1982, 0, 23, 0, 0, 0); cal.set( Calendar.MILLISECOND, 0 );
- w.setField( StorageTest.EXTNAME, "fieldName2", WikittyUtil.solrDateFormat.format(cal.getTime()) );
+ w.setField( StorageTest.EXTNAME, "fieldName2", WikittyUtil.formatDate(cal.getTime()) );
assertEquals(cal.getTime(), w.getFieldAsDate(StorageTest.EXTNAME, "fieldName2") );
}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java 2010-08-04 10:27:48 UTC (rev 222)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java 2010-08-04 10:57:59 UTC (rev 223)
@@ -425,12 +425,12 @@
public void testDateConsistency() throws Exception {
Date date = WikittyUtil.parseDate( "30/01/2009" );
Date dateFormatedAndParsed = WikittyUtil.parseDate(
- WikittyUtil.solrDateFormat.format(date));
+ WikittyUtil.formatDate(date));
assertEquals(date, dateFormatedAndParsed);
date = new Date();
dateFormatedAndParsed = WikittyUtil.parseDate(
- WikittyUtil.solrDateFormat.format(date));
+ WikittyUtil.formatDate(date));
assertEquals(date, dateFormatedAndParsed);
}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java 2010-08-04 10:27:48 UTC (rev 222)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java 2010-08-04 10:57:59 UTC (rev 223)
@@ -86,17 +86,27 @@
public static String format(String dateTestFormat) {
try {
- return WikittyUtil.solrDateFormat.format(
+ return WikittyUtil.formatDate(
dateTestFormat == null || dateTestFormat.isEmpty()
? new Date()
- : WikittyUtil.parseDate(dateTestFormat)
+ : parse(dateTestFormat)
);
} catch (ParseException e) {
- Assert.fail( "Error parsing date : " + dateTestFormat );
+ Assert.fail( "Error format date : " + dateTestFormat );
e.printStackTrace();
return null;
}
}
+
+ public static Date parse(String dateAsString) {
+ try {
+ return WikittyUtil.parseDate(dateAsString);
+ } catch (ParseException e) {
+ Assert.fail( "Error parsing date : " + dateAsString );
+ e.printStackTrace();
+ return null;
+ }
+ }
protected static ArrayList<Wikitty> createSampleWikitty( WikittyService ws ) {
ArrayList<Wikitty> result = new ArrayList<Wikitty>();
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2010-08-04 10:27:48 UTC (rev 222)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2010-08-04 10:57:59 UTC (rev 223)
@@ -50,7 +50,7 @@
Wikitty w = createWikitty(
"MyExtName.fieldName0 = 123," +
"MyExtName.fieldName1 = 12.3," +
- "MyExtName.fieldName2 = " + WikittyUtil.solrDateFormat.format(date),
+ "MyExtName.fieldName2 = " + WikittyUtil.formatDate(date),
ext
);
String id = w.getId();
Modified: trunk/wikitty-jms-impl/pom.xml
===================================================================
--- trunk/wikitty-jms-impl/pom.xml 2010-08-04 10:27:48 UTC (rev 222)
+++ trunk/wikitty-jms-impl/pom.xml 2010-08-04 10:57:59 UTC (rev 223)
@@ -5,7 +5,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.0-SNAPSHOT</version>
+ <version>2.1-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.wikitty</groupId>
Modified: trunk/wikitty-jms-impl/src/test/java/org/nuiton/wikitty/jms/test/TopicSendReceiveTestSupport.java
===================================================================
--- trunk/wikitty-jms-impl/src/test/java/org/nuiton/wikitty/jms/test/TopicSendReceiveTestSupport.java 2010-08-04 10:27:48 UTC (rev 222)
+++ trunk/wikitty-jms-impl/src/test/java/org/nuiton/wikitty/jms/test/TopicSendReceiveTestSupport.java 2010-08-04 10:57:59 UTC (rev 223)
@@ -30,6 +30,7 @@
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyExtension;
import org.nuiton.wikitty.WikittyExtensionStorage;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyStorage;
import org.nuiton.wikitty.WikittyTransaction;
import org.nuiton.wikitty.jms.WikittyExtensionStorageJMS;
Modified: trunk/wikitty-multistorage-impl/pom.xml
===================================================================
--- trunk/wikitty-multistorage-impl/pom.xml 2010-08-04 10:27:48 UTC (rev 222)
+++ trunk/wikitty-multistorage-impl/pom.xml 2010-08-04 10:57:59 UTC (rev 223)
@@ -7,7 +7,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>2.0-SNAPSHOT</version>
+ <version>2.1-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.wikitty</groupId>
Modified: trunk/wikitty-multistorage-impl/src/test/java/org/nuiton/wikitty/multistorage/test/MultiStorageTest.java
===================================================================
--- trunk/wikitty-multistorage-impl/src/test/java/org/nuiton/wikitty/multistorage/test/MultiStorageTest.java 2010-08-04 10:27:48 UTC (rev 222)
+++ trunk/wikitty-multistorage-impl/src/test/java/org/nuiton/wikitty/multistorage/test/MultiStorageTest.java 2010-08-04 10:57:59 UTC (rev 223)
@@ -26,6 +26,7 @@
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyExtension;
import org.nuiton.wikitty.WikittyExtensionStorage;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.WikittyStorage;
import org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC;
1
0
r222 - in trunk/wikitty-hbase-impl: . src/main/java/org/nuiton/wikitty/hbase src/test/java/org/nuiton/wikitty/hbase/test
by bleny@users.nuiton.org 04 Aug '10
by bleny@users.nuiton.org 04 Aug '10
04 Aug '10
Author: bleny
Date: 2010-08-04 12:27:48 +0200 (Wed, 04 Aug 2010)
New Revision: 222
Url: http://nuiton.org/repositories/revision/wikitty/222
Log:
making wikitty-hbase-impl module buildable ; fix tests
Modified:
trunk/wikitty-hbase-impl/pom.xml
trunk/wikitty-hbase-impl/src/main/java/org/nuiton/wikitty/hbase/WikittyStorageHBase.java
trunk/wikitty-hbase-impl/src/test/java/org/nuiton/wikitty/hbase/test/HBaseConnectorTest.java
Modified: trunk/wikitty-hbase-impl/pom.xml
===================================================================
--- trunk/wikitty-hbase-impl/pom.xml 2010-08-04 10:26:33 UTC (rev 221)
+++ trunk/wikitty-hbase-impl/pom.xml 2010-08-04 10:27:48 UTC (rev 222)
@@ -1,170 +1,183 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
+ <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.nuiton</groupId>
- <artifactId>wikitty</artifactId>
- <version>2.0-SNAPSHOT</version>
- </parent>
+ <parent>
+ <groupId>org.nuiton</groupId>
+ <artifactId>wikitty</artifactId>
+ <version>2.1-SNAPSHOT</version>
+ </parent>
- <!-- ************************************************************* -->
- <!-- *** POM Relationships *************************************** -->
- <!-- ************************************************************* -->
- <groupId>org.nuiton.wikitty</groupId>
- <artifactId>wikitty-hbase-impl</artifactId>
+ <!-- ************************************************************* -->
+ <!-- *** POM Relationships *************************************** -->
+ <!-- ************************************************************* -->
+ <groupId>org.nuiton.wikitty</groupId>
+ <artifactId>wikitty-hbase-impl</artifactId>
- <dependencies>
- <!-- TEST -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>wikitty-api</artifactId>
- <version>${project.version}</version>
- <classifier>tests</classifier>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>${spring.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- <version>${spring.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${spring.version}</version>
- <scope>test</scope>
- </dependency>
+ <dependencies>
+ <!-- TEST -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>wikitty-api</artifactId>
+ <version>${project.version}</version>
+ <classifier>tests</classifier>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <version>${spring.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>${spring.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>${spring.version}</version>
+ <scope>test</scope>
+ </dependency>
- <!-- COMPILE -->
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>wikitty-api</artifactId>
- <version>${project.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>wikitty-solr-impl</artifactId>
- <version>${project.version}</version>
- <scope>compile</scope>
- </dependency>
+ <!-- COMPILE -->
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>wikitty-api</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>wikitty-solr-impl</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ </dependency>
- <dependency>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>jetty</artifactId>
- <version>${jetty.version}</version>
- <scope>test</scope>
- </dependency>
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>${jetty.version}</version>
+ <scope>test</scope>
+ </dependency>
- <dependency>
- <groupId>xpp3</groupId>
- <artifactId>xpp3</artifactId>
- <version>1.1.4c</version>
- </dependency>
+ <dependency>
+ <groupId>xpp3</groupId>
+ <artifactId>xpp3</artifactId>
+ <version>1.1.4c</version>
+ </dependency>
- <!-- HBASE -->
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.hadoop.zookeeper</groupId>
- <artifactId>zookeeper</artifactId>
- <version>r785019-hbase-1329</version>
- <!--version>3.3.0</version-->
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.hadoop</groupId>
- <artifactId>hadoop</artifactId>
- <version>0.20.0-plus4681-core</version>
- <!--version>0.20.2</version -->
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.hadoop</groupId>
- <artifactId>hbase</artifactId>
- <version>0.20.0</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.hadoop</groupId>
- <artifactId>hbase-test</artifactId>
- <version>0.20.0</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hadoop</groupId>
- <artifactId>hadoop-test</artifactId>
- <version>0.20.0</version>
- <!--version>0.20.2</version-->
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>commons-cli</groupId>
- <artifactId>commons-cli</artifactId>
- <version>1.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
+ <!-- HBASE -->
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
- <!-- ************************************************************* -->
- <!-- *** Project Information ************************************* -->
- <!-- ************************************************************* -->
+ <!--
+ Those dependencies was available on ShareAndGo repository and are
+ not available from central
+ -->
+ <!--
+ <dependency> <groupId>org.apache.hadoop.zookeeper</groupId>
+ <artifactId>zookeeper</artifactId>
+ <version>r785019-hbase-1329</version> <!-
+ -<version>3.3.0</version> - -> <scope>compile</scope>
+ </dependency> <dependency> <groupId>org.hadoop</groupId>
+ <artifactId>hadoop</artifactId>
+ <version>0.20.0-plus4681-core</version> <!-
+ -<version>0.20.2</version> - -> <scope>compile</scope>
+ </dependency> <dependency> <groupId>org.hadoop</groupId>
+ <artifactId>hbase</artifactId> <version>0.20.0</version>
+ <scope>compile</scope> </dependency> <dependency>
+ <groupId>org.hadoop</groupId> <artifactId>hbase-test</artifactId>
+ <version>0.20.0</version> <scope>test</scope> </dependency>
+ <dependency> <groupId>org.hadoop</groupId>
+ <artifactId>hadoop-test</artifactId> <version>0.20.0</version> <!-
+ -<version>0.20.2</version>- -> <scope>test</scope> </dependency>
+ -->
- <name>Wikitty :: wikitty-hbase-impl</name>
- <description>hbase impl of wikitty</description>
- <inceptionYear>2009</inceptionYear>
+ <!-- using dependencies provided by Apache Snapshot repository -->
+ <dependency>
+ <groupId>org.apache.hbase</groupId>
+ <artifactId>hbase</artifactId>
+ <version>0.89.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.hbase</groupId>
+ <artifactId>hbase</artifactId>
+ <version>0.89.0-SNAPSHOT</version>
+ <classifier>tests</classifier>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <!-- needed at runtime for tests -->
+ <groupId>org.apache.hadoop</groupId>
+ <artifactId>hadoop-test</artifactId>
+ <version>0.20.3-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
- <!-- ************************************************************* -->
- <!-- *** Build Settings ****************************************** -->
- <!-- ************************************************************* -->
+ <dependency>
+ <groupId>commons-cli</groupId>
+ <artifactId>commons-cli</artifactId>
+ <version>1.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
- <packaging>jar</packaging>
+ <!-- ************************************************************* -->
+ <!-- *** Project Information ************************************* -->
+ <!-- ************************************************************* -->
- <properties>
- <!-- Test don't run in hudson due to port restriction -->
- <maven.test.skip>true</maven.test.skip>
- </properties>
+ <name>Wikitty :: wikitty-hbase-impl</name>
- <!-- ************************************************************* -->
- <!-- *** Build Environment ************************************** -->
- <!-- ************************************************************* -->
+ <description>hbase impl of wikitty</description>
+ <inceptionYear>2009</inceptionYear>
- <build>
- <plugins>
- <!-- Create a jar that includes all tests -->
- <plugin>
- <artifactId>maven-jar-plugin</artifactId>
- <executions>
- <execution>
- <id>attach-test</id>
- <goals>
- <goal>test-jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
+ <!-- ************************************************************* -->
+ <!-- *** Build Settings ****************************************** -->
+ <!-- ************************************************************* -->
+ <packaging>jar</packaging>
+
+ <properties>
+ <!-- Test don't run in hudson due to port restriction -->
+ <maven.test.skip>false</maven.test.skip>
+ </properties>
+
+ <!-- ************************************************************* -->
+ <!-- *** Build Environment ************************************** -->
+ <!-- ************************************************************* -->
+
+ <build>
+ <plugins>
+ <!-- Create a jar that includes all tests -->
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-test</id>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
</project>
Modified: trunk/wikitty-hbase-impl/src/main/java/org/nuiton/wikitty/hbase/WikittyStorageHBase.java
===================================================================
--- trunk/wikitty-hbase-impl/src/main/java/org/nuiton/wikitty/hbase/WikittyStorageHBase.java 2010-08-04 10:26:33 UTC (rev 221)
+++ trunk/wikitty-hbase-impl/src/main/java/org/nuiton/wikitty/hbase/WikittyStorageHBase.java 2010-08-04 10:27:48 UTC (rev 222)
@@ -44,6 +44,7 @@
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyExtension;
import org.nuiton.wikitty.WikittyExtensionStorage;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyStorage;
import org.nuiton.wikitty.WikittyTransaction;
import org.nuiton.wikitty.WikittyUtil;
Modified: trunk/wikitty-hbase-impl/src/test/java/org/nuiton/wikitty/hbase/test/HBaseConnectorTest.java
===================================================================
--- trunk/wikitty-hbase-impl/src/test/java/org/nuiton/wikitty/hbase/test/HBaseConnectorTest.java 2010-08-04 10:26:33 UTC (rev 221)
+++ trunk/wikitty-hbase-impl/src/test/java/org/nuiton/wikitty/hbase/test/HBaseConnectorTest.java 2010-08-04 10:27:48 UTC (rev 222)
@@ -99,7 +99,7 @@
for (int j = 0; j < 10; j++) {
Put put = new Put(rowId);
- put.setTimeStamp(getTime());
+ // put.setTimeStamp(getTime());
put.add(Bytes.toBytes("data"), Bytes.toBytes("1:" + j), Bytes.toBytes(j));
hTable.put(put);
}
@@ -119,7 +119,7 @@
for (int j = 0; j < 10; j++) {
Put put = new Put(rowId);
- put.setTimeStamp(getTime());
+ // put.setTimeStamp(getTime());
put.add(Bytes.toBytes("data"), Bytes.toBytes("2:" + j), Bytes.toBytes(j));
hTable.put(put);
}
1
0
r221 - in trunk/wikitty-api/src: main/java/org/nuiton/wikitty test/java/org/nuiton/wikitty/api test/java/org/nuiton/wikitty/conform
by bleny@users.nuiton.org 04 Aug '10
by bleny@users.nuiton.org 04 Aug '10
04 Aug '10
Author: bleny
Date: 2010-08-04 12:26:33 +0200 (Wed, 04 Aug 2010)
New Revision: 221
Url: http://nuiton.org/repositories/revision/wikitty/221
Log:
fixing date issues
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-08-04 08:04:58 UTC (rev 220)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-08-04 10:26:33 UTC (rev 221)
@@ -67,6 +67,7 @@
protected static final Locale CANONICAL_LOCALE = Locale.US;
// FastDateFormat is thread-safe
+ // FIXME 20100804 bleny should be protected, other module should use parseDate(), below
static final public FastDateFormat solrDateFormat = FastDateFormat.getInstance(
DATE_FORMAT, CANONICAL_TZ, CANONICAL_LOCALE);
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java 2010-08-04 08:04:58 UTC (rev 220)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java 2010-08-04 10:26:33 UTC (rev 221)
@@ -427,5 +427,11 @@
Date dateFormatedAndParsed = WikittyUtil.parseDate(
WikittyUtil.solrDateFormat.format(date));
assertEquals(date, dateFormatedAndParsed);
+
+ date = new Date();
+ dateFormatedAndParsed = WikittyUtil.parseDate(
+ WikittyUtil.solrDateFormat.format(date));
+ assertEquals(date, dateFormatedAndParsed);
+
}
}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java 2010-08-04 08:04:58 UTC (rev 220)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java 2010-08-04 10:26:33 UTC (rev 221)
@@ -84,12 +84,12 @@
return new WikittyExtension(extName, "1", requires, fieldsMap);
}
- public static SimpleDateFormat dateFormater = new SimpleDateFormat("d/M/y");
public static String format(String dateTestFormat) {
try {
return WikittyUtil.solrDateFormat.format(
dateTestFormat == null || dateTestFormat.isEmpty()
- ? new Date() : dateFormater.parse(dateTestFormat)
+ ? new Date()
+ : WikittyUtil.parseDate(dateTestFormat)
);
} catch (ParseException e) {
Assert.fail( "Error parsing date : " + dateTestFormat );
@@ -97,15 +97,6 @@
return null;
}
}
- public static Date parse(String date) {
- try {
- return dateFormater.parse(date);
- } catch (ParseException e) {
- Assert.fail( "Error parsing date : " + date);
- e.printStackTrace();
- return null;
- }
- }
protected static ArrayList<Wikitty> createSampleWikitty( WikittyService ws ) {
ArrayList<Wikitty> result = new ArrayList<Wikitty>();
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2010-08-04 08:04:58 UTC (rev 220)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2010-08-04 10:26:33 UTC (rev 221)
@@ -124,7 +124,7 @@
break;
case 2: // check fieldName2
assertEquals( errorMsg,
- WikittyUtil.solrDateFormat.parseObject(keyValuePair.getValue()),
+ WikittyUtil.parseDate(keyValuePair.getValue()),
w.getFieldAsDate(EXTNAME, fieldName) );
break;
default:
1
0
r220 - in trunk/wikitty-api/src: main/java/org/nuiton/wikitty test/java/org/nuiton/wikitty/api test/java/org/nuiton/wikitty/conform test/java/org/nuiton/wikitty/memory
by bleny@users.nuiton.org 04 Aug '10
by bleny@users.nuiton.org 04 Aug '10
04 Aug '10
Author: bleny
Date: 2010-08-04 10:04:58 +0200 (Wed, 04 Aug 2010)
New Revision: 220
Url: http://nuiton.org/repositories/revision/wikitty/220
Log:
#780 adding parseDate and formatDate with tests
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-08-03 13:37:36 UTC (rev 219)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-08-04 08:04:58 UTC (rev 220)
@@ -19,7 +19,6 @@
import java.lang.reflect.Constructor;
import java.math.BigDecimal;
-import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
@@ -36,6 +35,8 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.commons.lang.time.DateUtils;
+import org.apache.commons.lang.time.FastDateFormat;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -51,7 +52,12 @@
public static final String DEFAULT_VERSION = "0.0";
- public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
+ public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'Z";
+ public static final String[] DATE_FORMAT_ALLOWED = {
+ DATE_FORMAT,
+ new SimpleDateFormat().toPattern(),
+ "dd/MM/yy"
+ };
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(WikittyUtil.class);
@@ -60,24 +66,21 @@
protected static TimeZone CANONICAL_TZ = TimeZone.getTimeZone("UTC");
protected static final Locale CANONICAL_LOCALE = Locale.US;
- static final public SimpleDateFormat solrDateFormat = new SolrDateFormat();
+ // FastDateFormat is thread-safe
+ static final public FastDateFormat solrDateFormat = FastDateFormat.getInstance(
+ DATE_FORMAT, CANONICAL_TZ, CANONICAL_LOCALE);
- public static class SolrDateFormat extends SimpleDateFormat {
- /** serialVersionUID. */
- private static final long serialVersionUID = 8840047015546468704L;
+
+// /** All date format parser used to convert string to date */
+// static final protected DateFormat[] parserDateFormats = new DateFormat[] {
+// solrDateFormat, DateFormat.getInstance(),
+// // TODO poussin 20090813: add other date syntax
+// };
- public SolrDateFormat() {
- super(DATE_FORMAT, CANONICAL_LOCALE);
- setTimeZone(CANONICAL_TZ);
- }
+ static public Date parseDate(String dateAsString) throws ParseException {
+ return DateUtils.parseDate(dateAsString, DATE_FORMAT_ALLOWED);
}
-
- /** All date format parser used to convert string to date */
- static final protected DateFormat[] parserDateFormats = new DateFormat[] {
- solrDateFormat, DateFormat.getInstance(),
- // TODO poussin 20090813: add other date syntax
- };
-
+
// TODO poussin 20090902 use spring configuration to add mapping in this
// variable
/** contains mapping between interface and concret class that must be used */
@@ -432,7 +435,7 @@
if (value != null) {
if (value instanceof String) {
result = (String) value;
- } else if (value instanceof Wikitty) {
+ } else if (value instanceof WikittyImpl) {
result = ((Wikitty) value).getId();
} else if (value instanceof BusinessEntity) {
result = ((BusinessEntity) value).getWikittyId();
@@ -454,7 +457,7 @@
} else {
// try to convert to Date
try {
- result = solrDateFormat.parse(value.toString());
+ result = parseDate(value.toString());
} catch (ParseException eee) {
if (log.isDebugEnabled()) {
log.debug("Can't parse date, i try with next parser", eee);
@@ -484,7 +487,7 @@
if (value != null) {
if (value instanceof String) {
result = (String) value;
- } else if (value instanceof Wikitty) {
+ } else if (value instanceof WikittyImpl) {
result = ((Wikitty) value).getId();
} else if (value instanceof BusinessEntity) {
result = ((BusinessEntity) value).getWikittyId();
@@ -625,10 +628,10 @@
}
/**
- * Create new instance of WikittyDto with Wikitty object passed in argument.
- * If arguement is Interface try to add 'Impl' to find instanciable class.
+ * Create new instance of BusinessEntity from Wikitty object passed in argument.
+ * If argument is Interface try to add 'Impl' to find instanciable class.
* <p>
- * clazz parameter must be child of WikittyDto or business interface
+ * clazz parameter must be child of Business interface
*
*
* @param <E> entity type
@@ -665,7 +668,7 @@
try {
// try to find constructor with wikitty argument
Constructor<?> cons = clazzInstanciable
- .getConstructor(Wikitty.class);
+ .getConstructor(WikittyImpl.class);
Object[] parms = { null };
result = (E) cons.newInstance(parms);
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java 2010-08-03 13:37:36 UTC (rev 219)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java 2010-08-04 08:04:58 UTC (rev 220)
@@ -419,4 +419,13 @@
assertNull(label);
}
*/
+
+ /** check that a date is the same after parse and format */
+ @Test
+ public void testDateConsistency() throws Exception {
+ Date date = WikittyUtil.parseDate( "30/01/2009" );
+ Date dateFormatedAndParsed = WikittyUtil.parseDate(
+ WikittyUtil.solrDateFormat.format(date));
+ assertEquals(date, dateFormatedAndParsed);
+ }
}
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-08-03 13:37:36 UTC (rev 219)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java 2010-08-04 08:04:58 UTC (rev 220)
@@ -41,6 +41,7 @@
WikittyExtension ext = ExtensionFactory.create("testExt", "1")
.addField("name", TYPE.STRING)
.addField("age", TYPE.NUMERIC)
+ .addField("birth", TYPE.DATE)
.extension();
List<Wikitty> wikitties = new LinkedList<Wikitty>();
@@ -48,23 +49,45 @@
w.addExtension(ext);
w.setField(ext.getName(), "name", "Guillaume");
w.setField(ext.getName(), "age", "27");
+ w.setField(ext.getName(), "birth", "19/04/1968");
wikitties.add( w );
w = new WikittyImpl();
w.addExtension(ext);
w.setField(ext.getName(), "name", "Toto");
w.setField(ext.getName(), "age", "125");
+ w.setField(ext.getName(), "birth", "19/04/1968 15:12");
wikitties.add( w );
ws.store(null, wikitties);
-
+
+ // Testing search on a date criteria
Criteria criteria = Search.query()
- .eq("testExt.name", "Guillaume")
- .criteria();
+ .gt("testExt.birth", "19/04/1968 15:00")
+ .criteria();
PagedResult<String> result = ws.findAllByCriteria(null, criteria);
List<String> found = result.getAll();
assertEquals(1, found.size());
Wikitty wikittyFound = ws.restore(null, found.get(0));
+ log.info( wikittyFound.getFieldAsString(ext.getName(), "birth") );
+
+ // Testing search on a date criteria
+ criteria = Search.query()
+ .ge("testExt.birth", "19/04/1968")
+ .criteria();
+ result = ws.findAllByCriteria(null, criteria);
+ found = result.getAll();
+ assertEquals(2, found.size());
+ wikittyFound = ws.restore(null, found.get(0));
+ log.info( wikittyFound.getFieldAsString(ext.getName(), "birth") );
+
+ criteria = Search.query()
+ .eq("testExt.name", "Guillaume")
+ .criteria();
+ result = ws.findAllByCriteria(null, criteria);
+ found = result.getAll();
+ assertEquals(1, found.size());
+ wikittyFound = ws.restore(null, found.get(0));
log.info( wikittyFound.getFieldAsString(ext.getName(), "name") );
criteria = Search.query()
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2010-08-03 13:37:36 UTC (rev 219)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2010-08-04 08:04:58 UTC (rev 220)
@@ -35,6 +35,7 @@
@Test
public void testFilePersistance() throws Exception {
File tempPersistFile = File.createTempFile(InMemoryStorageTest.class.getName(), ".tmp");
+ tempPersistFile.delete();
tempPersistFile.deleteOnExit();
wikittyService = new WikittyServiceInMemory( tempPersistFile );
@@ -45,6 +46,7 @@
.addField("fieldName2", TYPE.DATE)
.extension();
Date date = dateFormater.parse( "30/01/2009" );
+
Wikitty w = createWikitty(
"MyExtName.fieldName0 = 123," +
"MyExtName.fieldName1 = 12.3," +
1
0
Author: bleny
Date: 2010-08-03 15:37:36 +0200 (Tue, 03 Aug 2010)
New Revision: 219
Url: http://nuiton.org/repositories/revision/wikitty/219
Log:
#793 extracted a Wikitty interface, main implementation is WikittyImpl
Added:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityWikitty.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyExtensionMigrationRename.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportCSV.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportXML.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/PerformanceTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java
trunk/wikitty-hbase-impl/src/main/java/org/nuiton/wikitty/hbase/WikittyStorageHBase.java
trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java
trunk/wikitty-jms-impl/src/test/java/org/nuiton/wikitty/jms/test/TopicSendReceiveTestSupport.java
trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTA.java
trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTAWithSync.java
trunk/wikitty-multistorage-impl/src/test/java/org/nuiton/wikitty/multistorage/test/MultiStorageTest.java
trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrSearchTest.java
trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/TreeTest.java
trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyController.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityWikitty.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityWikitty.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityWikitty.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -51,7 +51,7 @@
}
public BusinessEntityWikitty() {
- this(new Wikitty());
+ this(new WikittyImpl());
}
protected PropertyChangeSupport getPropertyChangeSupport() {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -1,399 +1,80 @@
-/* *##%
- * Copyright (c) 2009 Sharengo, Guillaume Dufrene, Benjamin POUSSIN.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 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 Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *##%*/
-
package org.nuiton.wikitty;
import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-import java.io.Serializable;
import java.math.BigDecimal;
-import java.util.AbstractList;
-import java.util.AbstractSet;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
import java.util.List;
-import java.util.Map;
import java.util.Set;
-/**
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-public class Wikitty implements Serializable {
+public interface Wikitty {
- /** serialVersionUID. */
- private static final long serialVersionUID = 4910886672760691052L;
+ void addPropertyChangeListener(PropertyChangeListener listener);
- /** Technical id for this wikitty object. id must be never null. */
- protected String id;
+ void removePropertyChangeListener(PropertyChangeListener listener);
- /** Current version of this wikitty object. */
- protected String version = WikittyUtil.DEFAULT_VERSION;
+ void addPropertyChangeListener(String propertyName,
+ PropertyChangeListener listener);
- /** If not null, date of deletion, if date this object is marked as deleted. */
- protected Date deleteDate = null;
+ void removePropertyChangeListener(String propertyName,
+ PropertyChangeListener listener);
- /**
- * Used to add property change support to wikitty object.
- *
- * Warning, this field can be null after deserialization.
- */
- private transient PropertyChangeSupport propertyChange;
+ String getId();
- /**
- * key: field name prefixed by extension name (dot separator)
- * value: value of field
- */
- protected HashMap<String, Object> fieldValue = new HashMap<String, Object>();
+ boolean isDeleted();
- /**
- * all field name currently modified (field name = extension . fieldname)
- */
- protected Set<String> fieldDirty = new HashSet<String>();
+ Date getDeleteDate();
/**
- * Map is LinkedHashMap to maintains order like user want
- * key: extension name
- * value: extension definition
- */
- protected Map<String, WikittyExtension> extensions =
- new LinkedHashMap<String, WikittyExtension>();
-
-
- public Wikitty() {
- this(null);
- }
-
- public Wikitty(String id) {
- if(id == null) {
- this.id = WikittyUtil.genUID();
- } else {
- this.id = id;
- }
- }
-
- /**
- * Always call this method because field is transient.
- *
- * @return
- */
- protected PropertyChangeSupport getPropertyChangeSupport() {
- if (propertyChange == null) {
- propertyChange = new PropertyChangeSupport(this);
- }
- return propertyChange;
- }
-
- public synchronized void addPropertyChangeListener(
- PropertyChangeListener listener) {
- getPropertyChangeSupport().addPropertyChangeListener(listener);
- }
-
-
- public synchronized void removePropertyChangeListener(
- PropertyChangeListener listener) {
- getPropertyChangeSupport().removePropertyChangeListener(listener);
- }
-
-
- public synchronized void addPropertyChangeListener(String propertyName,
- PropertyChangeListener listener) {
- getPropertyChangeSupport().addPropertyChangeListener(propertyName, listener);
- }
-
-
- public synchronized void removePropertyChangeListener(String propertyName,
- PropertyChangeListener listener) {
- getPropertyChangeSupport().removePropertyChangeListener(propertyName, listener);
- }
-
- public String getId() {
- return id;
- }
-
- public boolean isDeleted() {
- boolean result = deleteDate != null;
- return result;
- }
-
- public Date getDeleteDate() {
- return deleteDate;
- }
-
- /**
* Server only used
* @param delete
*/
- public void setDeleteDate(Date delete) {
- this.deleteDate = delete;
- }
+ void setDeleteDate(Date delete);
- /**
- * mark field as dirty
- * @param ext
- * @param fieldName
- */
- protected void setFieldDirty(String ext, String fieldName,
- Object oldValue, Object newValue) {
- String key = ext + "." + fieldName;
- fieldDirty.add(key);
- version = WikittyUtil.incrementMinorRevision(version);
- getPropertyChangeSupport().firePropertyChange(key, oldValue, newValue);
- }
+ void addExtension(WikittyExtension ext);
- public void addExtension(WikittyExtension ext) {
- String required = ext.getRequires();
- if (required != null && !required.isEmpty() &&
- !extensions.containsKey(required)) {
- throw new WikittyException(String.format(
- "You try to add extension '%s' that" +
- " required not available extension '%s' in this wikitty",
- ext.getName(), required));
- }
- extensions.put(ext.name, ext);
- }
+ void addExtension(List<WikittyExtension> exts);
- public void addExtension(List<WikittyExtension> exts) {
- for (WikittyExtension ext : exts) {
- extensions.put(ext.name, ext);
- }
- }
+ boolean hasExtension(String extName);
- public boolean hasExtension(String extName) {
- return extensions.containsKey(extName);
- }
+ boolean hasField(String extName, String fieldName);
- public boolean hasField(String extName, String fieldName) {
- boolean result = false;
- WikittyExtension ext = extensions.get(extName);
- if (ext != null) {
- result = ext.getFieldType(fieldName) != null;
- }
- return result;
- }
+ WikittyExtension getExtension(String ext);
- public WikittyExtension getExtension(String ext) {
- WikittyExtension result = extensions.get(ext);
- return result;
- }
+ Collection<String> getExtensionNames();
- public Collection<String> getExtensionNames() {
- Collection<String> result = extensions.keySet();
- return result;
- }
+ Collection<WikittyExtension> getExtensions();
- public Collection<WikittyExtension> getExtensions() {
- Collection<WikittyExtension> result = extensions.values();
- return result;
- }
+ Collection<WikittyExtension> getExtensionDependencies(String ext,
+ boolean recursively);
- public Collection<WikittyExtension> getExtensionDependencies(String ext, boolean recursively) {
- Collection<WikittyExtension> result = new HashSet<WikittyExtension>();
- Collection<WikittyExtension> all = extensions.values();
- for (WikittyExtension dependency : all) {
- String requires = dependency.getRequires();
- if(requires != null && !requires.isEmpty() && requires.equals(ext)) {
- result.add(dependency);
- if(recursively) {
- String dependencyName = dependency.getName();
- Collection<WikittyExtension> dependencies = getExtensionDependencies(dependencyName, recursively);
- result.addAll(dependencies);
- }
- }
- }
- return result;
- }
-
/**
* return field type for the given fieldName.
* @param fqfieldName fully qualified fieldName extension.fieldname
* @return field type
*/
- public FieldType getFieldType(String fqfieldName) {
- try {
- String[] field = fqfieldName.split("\\.");
- WikittyExtension ext = getExtension(field[0]);
- if (ext == null) {
- throw new WikittyException(String.format(
- "extension '%s' doesn't exists", field[0]));
- } else {
- String fieldName = field[1];
- int crochet = fieldName.indexOf("[");
- if (crochet != -1) {
- fieldName = fieldName.substring(0, crochet);
- }
- FieldType result = ext.getFieldType(fieldName);
- if (result == null) {
- throw new WikittyException(String.format(
- "field '%s' doesn't exists on extension '%s'", fieldName, field[0]));
+ FieldType getFieldType(String fqfieldName);
- }
- return result;
- }
- } catch (Exception eee) {
- throw new WikittyException(
- String.format("Field %s is not a fully qualified field name", fqfieldName),
- eee
- );
- }
- }
+ void setField(String ext, String fieldName, Object value);
- public void setField(String ext, String fieldName, Object value) {
- if (! hasField(ext, fieldName)) {
- String def = "";
- for ( WikittyExtension extension : extensions.values() ) {
- def += extension.toDefinition() + "\n";
- }
- throw new WikittyException(String.format(
- "field '%s' is not valid, extensions definition : %s", ext + "." + fieldName, def));
- }
- String key = ext + "." + fieldName;
+ Object getFieldAsObject(String ext, String fieldName);
- // take old value if needed
- Object oldValue = null;
- if (getPropertyChangeSupport().hasListeners(key)) {
- oldValue = fieldValue.get(key);
- }
+ boolean getFieldAsBoolean(String ext, String fieldName);
- // put new value
- FieldType fieldType = getExtension(ext).getFieldType(fieldName);
- Object validValue = fieldType.getValidValue(value);
- fieldValue.put(key, validValue);
+ BigDecimal getFieldAsBigDecimal(String ext, String fieldName);
- // mark field dirty and call listener
- setFieldDirty(ext, fieldName, oldValue, validValue);
- }
+ int getFieldAsInt(String ext, String fieldName);
- public Object getFieldAsObject(String ext, String fieldName) {
- if (!hasField(ext, fieldName)) {
- throw new WikittyException(String.format(
- "field '%s' is not a valid field",
- ext + "." + fieldName));
- }
- String key = ext + "." + fieldName;
- Object result = fieldValue.get(key);
- return result;
- }
+ long getFieldAsLong(String ext, String fieldName);
- public boolean getFieldAsBoolean(String ext, String fieldName) {
- Object value = getFieldAsObject(ext, fieldName);
- try {
- boolean result = WikittyUtil.toBoolean(value);
- return result;
- } catch (WikittyException eee) {
- throw new WikittyException(String.format(
- "field '%s' is not a valid boolean",
- ext + "." + fieldName), eee);
- }
- }
+ float getFieldAsFloat(String ext, String fieldName);
- public BigDecimal getFieldAsBigDecimal(String ext, String fieldName) {
- Object value = getFieldAsObject(ext, fieldName);
- try {
- BigDecimal result = WikittyUtil.toBigDecimal(value);
- return result;
- } catch (WikittyException eee) {
- throw new WikittyException(String.format(
- "field '%s' is not a valid numeric",
- ext + "." + fieldName), eee);
- }
- }
+ double getFieldAsDouble(String ext, String fieldName);
- public int getFieldAsInt(String ext, String fieldName) {
- try {
- BigDecimal value = getFieldAsBigDecimal(ext, fieldName);
- int result = value.intValue();
- return result;
- } catch (WikittyException eee) {
- throw new WikittyException(String.format(
- "field '%s' is not a valid int",
- ext + "." + fieldName), eee);
- }
- }
+ String getFieldAsString(String ext, String fieldName);
- public long getFieldAsLong(String ext, String fieldName) {
- try {
- BigDecimal value = getFieldAsBigDecimal(ext, fieldName);
- long result = value.longValue();
- return result;
- } catch (WikittyException eee) {
- throw new WikittyException(String.format(
- "field '%s' is not a valid int",
- ext + "." + fieldName), eee);
- }
- }
+ Date getFieldAsDate(String ext, String fieldName);
- public float getFieldAsFloat(String ext, String fieldName) {
- try {
- BigDecimal value = getFieldAsBigDecimal(ext, fieldName);
- float result = value.floatValue();
- return result;
- } catch (WikittyException eee) {
- throw new WikittyException(String.format(
- "field '%s' is not a valid float",
- ext + "." + fieldName), eee);
- }
- }
-
- public double getFieldAsDouble(String ext, String fieldName) {
- try {
- BigDecimal value = getFieldAsBigDecimal(ext, fieldName);
- double result = value.doubleValue();
- return result;
- } catch (WikittyException eee) {
- throw new WikittyException(String.format(
- "field '%s' is not a valid float",
- ext + "." + fieldName), eee);
- }
- }
-
- public String getFieldAsString(String ext, String fieldName) {
- Object value = getFieldAsObject(ext, fieldName);
- try {
- String result = WikittyUtil.toString(value);
- return result;
- } catch (WikittyException eee) {
- throw new WikittyException(String.format(
- "field '%s' is not a valid String",
- ext + "." + fieldName), eee);
- }
- }
-
- public Date getFieldAsDate(String ext, String fieldName) {
- Object value = getFieldAsObject(ext, fieldName);
- try {
- Date result = WikittyUtil.toDate(value);
- return result;
- } catch (WikittyException eee) {
- throw new WikittyException(String.format(
- "field '%s' is not a valid Date",
- ext + "." + fieldName), eee);
- }
- }
-
/**
* return wikitty id and not wikitty objet because this method can be call
* on server or client side and it's better to keep conversion between id
@@ -403,11 +84,7 @@
* @return id of wikitty object or null
* @throws org.nuiton.wikitty.WikittyException
*/
- public String getFieldAsWikitty(String ext, String fieldName) {
- Object value = getFieldAsObject(ext, fieldName);
- String result = WikittyUtil.toWikitty(value);
- return result;
- }
+ String getFieldAsWikitty(String ext, String fieldName);
/**
* If object is a set, it is automatically transform to list.
@@ -415,28 +92,8 @@
* @param clazz
* @return unmodifiable list
*/
- public <E> List<E> getFieldAsList(String ext, String fieldName, final Class<E> clazz) {
- try {
- final Collection<E> collection = (Collection<E>) getFieldAsObject(ext, fieldName);
- if (collection != null) {
- // return unmodiable collection that check type of element
- return new AbstractList<E>() {
- List<E> contained = new ArrayList<E>(collection);
- @Override public E get(int index) {
- return WikittyUtil.cast( contained.get(index), clazz );
- }
- @Override public int size() {
- return contained.size();
- }
- };
- }
- return null;
- } catch (Exception eee) {
- throw new WikittyException(String.format(
- "Can't add value to field '%s'",
- ext + "." + fieldName), eee);
- }
- }
+ <E> List<E> getFieldAsList(String ext, String fieldName,
+ final Class<E> clazz);
/**
*
@@ -444,212 +101,39 @@
* @param clazz
* @return unmodifiable list
*/
- public <E> Set<E> getFieldAsSet(String ext, String fieldName, final Class<E> clazz) {
- try {
- final Set<E> result = (Set<E>) getFieldAsObject(ext, fieldName);
- if (result != null) {
- // return unmodifable Set
- return new AbstractSet<E>() {
- Set<E> contained = result;
- @Override public int size() {
- return contained.size();
- }
- @Override
- public Iterator<E> iterator() {
- return new Iterator<E>() {
- Iterator containedIterator = contained.iterator();
- public boolean hasNext() {
- return containedIterator.hasNext();
- }
+ <E> Set<E> getFieldAsSet(String ext, String fieldName, final Class<E> clazz);
- public E next() {
- Object o = containedIterator.next();
- return WikittyUtil.cast(o, clazz);
- }
+ void addToField(String ext, String fieldName, Object value);
- public void remove() {
- throw new UnsupportedOperationException("Not supported operation");
- }
- };
+ void removeFromField(String ext, String fieldName, Object value);
- }
- };
- }
- return result;
- } catch (Exception eee) {
- throw new WikittyException(String.format(
- "Can't add value to field '%s'",
- ext + "." + fieldName), eee);
- }
- }
+ void clearField(String ext, String fieldName);
- public void addToField(String ext, String fieldName, Object value) {
- try {
- FieldType fieldType = getExtension(ext).getFieldType(fieldName);
- Collection col = (Collection) getFieldAsObject(ext, fieldName);
- if (col == null) {
- if (fieldType.isUnique()) {
- col = new HashSet();
- } else {
- col = new ArrayList();
- }
- col.add(value);
- setField(ext, fieldName, col);
- // no call dirty, because already done in setField
- } else {
- // check upper bound only if col exists,
- // because ask upper bound == 0 is ridiculous
+ Set<String> fieldNames();
- if (fieldType.isUnique()) {
- if (!col.contains(value)) {
- // only add if not already in collection (unique)
- if (col.size() + 1 > fieldType.getUpperBound()) {
- // if upper bound reached, throw an exception
- throw new WikittyException(String.format(
- "Can't add value for field '%s', upper bound is reached",
- ext + "." + fieldName));
- }
- col.add(value);
- setFieldDirty(ext, fieldName, null, col);
- }
- } else {
- if (col.size() + 1 > fieldType.getUpperBound()) {
- throw new WikittyException(String.format(
- "Can't add value for field '%s', upper bound is reached",
- ext + "." + fieldName));
- }
- col.add(value);
- setFieldDirty(ext, fieldName, null, col);
- }
- }
- } catch (Exception eee) {
- throw new WikittyException(String.format(
- "Can't add value to field '%s'",
- ext + "." + fieldName), eee);
- }
- }
+ Object getFqField(String fqFieldName);
- public void removeFromField(String ext, String fieldName, Object value) {
- try {
- Collection col = (Collection) getFieldAsObject(ext, fieldName);
- if (col != null) {
- FieldType type = getExtension(ext).getFieldType(fieldName);
- if (col.contains(value)) {
- if (col.size() - 1 < type.getLowerBound()) {
- throw new WikittyException(String.format(
- "Can't remove value for field '%s', lower bound is reached",
- ext + "." + fieldName));
- } else {
- if (col.remove(value)) {
- // field is dirty only if remove is done
- setFieldDirty(ext, fieldName, null, col);
- }
- }
- }
- }
- } catch (Exception eee) {
- throw new WikittyException(String.format(
- "Can't remove value for field '%s'",
- ext + "." + fieldName), eee);
- }
- }
+ String getVersion();
- public void clearField(String ext, String fieldName) {
- FieldType type = getExtension(ext).getFieldType(fieldName);
- if (type.getLowerBound() > 0) {
- throw new WikittyException(String.format(
- "Can't clear values for field '%s', lower bound is > 0",
- ext + "." + fieldName));
- }
- try {
- Collection col = (Collection) getFieldAsObject(ext, fieldName);
- if (col != null) {
- col.clear();
- setFieldDirty(ext, fieldName, null, col);
- }
- } catch (Exception eee) {
- throw new WikittyException(String.format(
- "Can't clear value for field '%s'",
- ext + "." + fieldName), eee);
- }
- }
-
- @Override
- public boolean equals(Object obj) {
- boolean result = false;
- if (obj instanceof Wikitty) {
- Wikitty other = (Wikitty) obj;
- result = id.equals(other.id);
- }
- return result;
- }
-
- @Override
- public int hashCode() {
- if (id == null) {
- return super.hashCode();
- } else {
- return id.hashCode();
- }
- }
-
- public Set<String> fieldNames() {
- return fieldValue.keySet();
- }
-
- public Object getFqField(String fqFieldName) {
- return fieldValue.get(fqFieldName);
- }
-
- public String getVersion() {
- return version;
- }
-
/**
* Server only used
* @param version
*/
- public void setVersion(String version) {
- this.version = version;
- }
+ void setVersion(String version);
/**
* Server only used
* @param version
*/
- public void clearDirty() {
- fieldDirty.clear();
- }
+ void clearDirty();
/**
* Server only used
* @param fieldName fqn (ex: extensionName.fieldName)
* @param value new value
*/
- public void setFqField(String fieldName, Object value) {
- FieldType fieldType = getFieldType(fieldName);
- Object validValue = fieldType.getValidValue(value);
- fieldValue.put(fieldName, validValue);
- }
+ void setFqField(String fieldName, Object value);
- public boolean isEmpty() {
- return fieldValue.isEmpty();
- }
-
- @Override
- public String toString() {
- boolean cr = true;
- String str = "[" + getId() + ":" + getVersion() + "] {";
- for ( String extName : getExtensionNames() ) {
- WikittyExtension ext = getExtension(extName);
- str += (cr ? "\n" : "") + "\t<" + extName + ">\n";
- cr = false;
- for ( String fieldName : ext.getFieldNames() ) {
- str += "\t\t" + fieldName + " = " + getFieldAsString(extName, fieldName) + "\n";
- }
- }
- str += "}";
- return str;
- }
+ boolean isEmpty();
-}
+}
\ No newline at end of file
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyExtensionMigrationRename.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyExtensionMigrationRename.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyExtensionMigrationRename.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -74,7 +74,7 @@
String wikittyId = wikitty.getId();
String wikittyVersion = wikitty.getVersion();
- Wikitty result = new Wikitty(wikittyId);
+ Wikitty result = new WikittyImpl(wikittyId);
result.setVersion(wikittyVersion);
// Add all extension and replace old by the new
Copied: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java (from rev 218, trunk/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java)
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -0,0 +1,772 @@
+/* *##%
+ * Copyright (c) 2009 Sharengo, Guillaume Dufrene, Benjamin POUSSIN.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *##%*/
+
+package org.nuiton.wikitty;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.AbstractList;
+import java.util.AbstractSet;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class WikittyImpl implements Serializable, Wikitty {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 4910886672760691052L;
+
+ /** Technical id for this wikitty object. id must be never null. */
+ protected String id;
+
+ /** Current version of this wikitty object. */
+ protected String version = WikittyUtil.DEFAULT_VERSION;
+
+ /** If not null, date of deletion, if date this object is marked as deleted. */
+ protected Date deleteDate = null;
+
+ /**
+ * Used to add property change support to wikitty object.
+ *
+ * Warning, this field can be null after deserialization.
+ */
+ private transient PropertyChangeSupport propertyChange;
+
+ /**
+ * key: field name prefixed by extension name (dot separator)
+ * value: value of field
+ */
+ protected HashMap<String, Object> fieldValue = new HashMap<String, Object>();
+
+ /**
+ * all field name currently modified (field name = extension . fieldname)
+ */
+ protected Set<String> fieldDirty = new HashSet<String>();
+
+ /**
+ * Map is LinkedHashMap to maintains order like user want
+ * key: extension name
+ * value: extension definition
+ */
+ protected Map<String, WikittyExtension> extensions =
+ new LinkedHashMap<String, WikittyExtension>();
+
+
+ public WikittyImpl() {
+ this(null);
+ }
+
+ public WikittyImpl(String id) {
+ if(id == null) {
+ this.id = WikittyUtil.genUID();
+ } else {
+ this.id = id;
+ }
+ }
+
+ /**
+ * Always call this method because field is transient.
+ *
+ * @return
+ */
+ protected PropertyChangeSupport getPropertyChangeSupport() {
+ if (propertyChange == null) {
+ propertyChange = new PropertyChangeSupport(this);
+ }
+ return propertyChange;
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#addPropertyChangeListener(java.beans.PropertyChangeListener)
+ */
+ @Override
+ public synchronized void addPropertyChangeListener(
+ PropertyChangeListener listener) {
+ getPropertyChangeSupport().addPropertyChangeListener(listener);
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#removePropertyChangeListener(java.beans.PropertyChangeListener)
+ */
+ @Override
+ public synchronized void removePropertyChangeListener(
+ PropertyChangeListener listener) {
+ getPropertyChangeSupport().removePropertyChangeListener(listener);
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#addPropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
+ */
+ @Override
+ public synchronized void addPropertyChangeListener(String propertyName,
+ PropertyChangeListener listener) {
+ getPropertyChangeSupport().addPropertyChangeListener(propertyName, listener);
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#removePropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
+ */
+ @Override
+ public synchronized void removePropertyChangeListener(String propertyName,
+ PropertyChangeListener listener) {
+ getPropertyChangeSupport().removePropertyChangeListener(propertyName, listener);
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getId()
+ */
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#isDeleted()
+ */
+ @Override
+ public boolean isDeleted() {
+ boolean result = deleteDate != null;
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getDeleteDate()
+ */
+ @Override
+ public Date getDeleteDate() {
+ return deleteDate;
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#setDeleteDate(java.util.Date)
+ */
+ @Override
+ public void setDeleteDate(Date delete) {
+ this.deleteDate = delete;
+ }
+
+ /**
+ * mark field as dirty
+ * @param ext
+ * @param fieldName
+ */
+ protected void setFieldDirty(String ext, String fieldName,
+ Object oldValue, Object newValue) {
+ String key = ext + "." + fieldName;
+ fieldDirty.add(key);
+ version = WikittyUtil.incrementMinorRevision(version);
+ getPropertyChangeSupport().firePropertyChange(key, oldValue, newValue);
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#addExtension(org.nuiton.wikitty.WikittyExtension)
+ */
+ @Override
+ public void addExtension(WikittyExtension ext) {
+ String required = ext.getRequires();
+ if (required != null && !required.isEmpty() &&
+ !extensions.containsKey(required)) {
+ throw new WikittyException(String.format(
+ "You try to add extension '%s' that" +
+ " required not available extension '%s' in this wikitty",
+ ext.getName(), required));
+ }
+ extensions.put(ext.name, ext);
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#addExtension(java.util.List)
+ */
+ @Override
+ public void addExtension(List<WikittyExtension> exts) {
+ for (WikittyExtension ext : exts) {
+ extensions.put(ext.name, ext);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#hasExtension(java.lang.String)
+ */
+ @Override
+ public boolean hasExtension(String extName) {
+ return extensions.containsKey(extName);
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#hasField(java.lang.String, java.lang.String)
+ */
+ @Override
+ public boolean hasField(String extName, String fieldName) {
+ boolean result = false;
+ WikittyExtension ext = extensions.get(extName);
+ if (ext != null) {
+ result = ext.getFieldType(fieldName) != null;
+ }
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getExtension(java.lang.String)
+ */
+ @Override
+ public WikittyExtension getExtension(String ext) {
+ WikittyExtension result = extensions.get(ext);
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getExtensionNames()
+ */
+ @Override
+ public Collection<String> getExtensionNames() {
+ Collection<String> result = extensions.keySet();
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getExtensions()
+ */
+ @Override
+ public Collection<WikittyExtension> getExtensions() {
+ Collection<WikittyExtension> result = extensions.values();
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getExtensionDependencies(java.lang.String, boolean)
+ */
+ @Override
+ public Collection<WikittyExtension> getExtensionDependencies(String ext, boolean recursively) {
+ Collection<WikittyExtension> result = new HashSet<WikittyExtension>();
+ Collection<WikittyExtension> all = extensions.values();
+ for (WikittyExtension dependency : all) {
+ String requires = dependency.getRequires();
+ if(requires != null && !requires.isEmpty() && requires.equals(ext)) {
+ result.add(dependency);
+ if(recursively) {
+ String dependencyName = dependency.getName();
+ Collection<WikittyExtension> dependencies = getExtensionDependencies(dependencyName, recursively);
+ result.addAll(dependencies);
+ }
+ }
+ }
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getFieldType(java.lang.String)
+ */
+ @Override
+ public FieldType getFieldType(String fqfieldName) {
+ try {
+ String[] field = fqfieldName.split("\\.");
+ WikittyExtension ext = getExtension(field[0]);
+ if (ext == null) {
+ throw new WikittyException(String.format(
+ "extension '%s' doesn't exists", field[0]));
+ } else {
+ String fieldName = field[1];
+ int crochet = fieldName.indexOf("[");
+ if (crochet != -1) {
+ fieldName = fieldName.substring(0, crochet);
+ }
+ FieldType result = ext.getFieldType(fieldName);
+ if (result == null) {
+ throw new WikittyException(String.format(
+ "field '%s' doesn't exists on extension '%s'", fieldName, field[0]));
+
+ }
+ return result;
+ }
+ } catch (Exception eee) {
+ throw new WikittyException(
+ String.format("Field %s is not a fully qualified field name", fqfieldName),
+ eee
+ );
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#setField(java.lang.String, java.lang.String, java.lang.Object)
+ */
+ @Override
+ public void setField(String ext, String fieldName, Object value) {
+ if (! hasField(ext, fieldName)) {
+ String def = "";
+ for ( WikittyExtension extension : extensions.values() ) {
+ def += extension.toDefinition() + "\n";
+ }
+ throw new WikittyException(String.format(
+ "field '%s' is not valid, extensions definition : %s", ext + "." + fieldName, def));
+ }
+ String key = ext + "." + fieldName;
+
+ // take old value if needed
+ Object oldValue = null;
+ if (getPropertyChangeSupport().hasListeners(key)) {
+ oldValue = fieldValue.get(key);
+ }
+
+ // put new value
+ FieldType fieldType = getExtension(ext).getFieldType(fieldName);
+ Object validValue = fieldType.getValidValue(value);
+ fieldValue.put(key, validValue);
+
+ // mark field dirty and call listener
+ setFieldDirty(ext, fieldName, oldValue, validValue);
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getFieldAsObject(java.lang.String, java.lang.String)
+ */
+ @Override
+ public Object getFieldAsObject(String ext, String fieldName) {
+ if (!hasField(ext, fieldName)) {
+ throw new WikittyException(String.format(
+ "field '%s' is not a valid field",
+ ext + "." + fieldName));
+ }
+ String key = ext + "." + fieldName;
+ Object result = fieldValue.get(key);
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getFieldAsBoolean(java.lang.String, java.lang.String)
+ */
+ @Override
+ public boolean getFieldAsBoolean(String ext, String fieldName) {
+ Object value = getFieldAsObject(ext, fieldName);
+ try {
+ boolean result = WikittyUtil.toBoolean(value);
+ return result;
+ } catch (WikittyException eee) {
+ throw new WikittyException(String.format(
+ "field '%s' is not a valid boolean",
+ ext + "." + fieldName), eee);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getFieldAsBigDecimal(java.lang.String, java.lang.String)
+ */
+ @Override
+ public BigDecimal getFieldAsBigDecimal(String ext, String fieldName) {
+ Object value = getFieldAsObject(ext, fieldName);
+ try {
+ BigDecimal result = WikittyUtil.toBigDecimal(value);
+ return result;
+ } catch (WikittyException eee) {
+ throw new WikittyException(String.format(
+ "field '%s' is not a valid numeric",
+ ext + "." + fieldName), eee);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getFieldAsInt(java.lang.String, java.lang.String)
+ */
+ @Override
+ public int getFieldAsInt(String ext, String fieldName) {
+ try {
+ BigDecimal value = getFieldAsBigDecimal(ext, fieldName);
+ int result = value.intValue();
+ return result;
+ } catch (WikittyException eee) {
+ throw new WikittyException(String.format(
+ "field '%s' is not a valid int",
+ ext + "." + fieldName), eee);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getFieldAsLong(java.lang.String, java.lang.String)
+ */
+ @Override
+ public long getFieldAsLong(String ext, String fieldName) {
+ try {
+ BigDecimal value = getFieldAsBigDecimal(ext, fieldName);
+ long result = value.longValue();
+ return result;
+ } catch (WikittyException eee) {
+ throw new WikittyException(String.format(
+ "field '%s' is not a valid int",
+ ext + "." + fieldName), eee);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getFieldAsFloat(java.lang.String, java.lang.String)
+ */
+ @Override
+ public float getFieldAsFloat(String ext, String fieldName) {
+ try {
+ BigDecimal value = getFieldAsBigDecimal(ext, fieldName);
+ float result = value.floatValue();
+ return result;
+ } catch (WikittyException eee) {
+ throw new WikittyException(String.format(
+ "field '%s' is not a valid float",
+ ext + "." + fieldName), eee);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getFieldAsDouble(java.lang.String, java.lang.String)
+ */
+ @Override
+ public double getFieldAsDouble(String ext, String fieldName) {
+ try {
+ BigDecimal value = getFieldAsBigDecimal(ext, fieldName);
+ double result = value.doubleValue();
+ return result;
+ } catch (WikittyException eee) {
+ throw new WikittyException(String.format(
+ "field '%s' is not a valid float",
+ ext + "." + fieldName), eee);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getFieldAsString(java.lang.String, java.lang.String)
+ */
+ @Override
+ public String getFieldAsString(String ext, String fieldName) {
+ Object value = getFieldAsObject(ext, fieldName);
+ try {
+ String result = WikittyUtil.toString(value);
+ return result;
+ } catch (WikittyException eee) {
+ throw new WikittyException(String.format(
+ "field '%s' is not a valid String",
+ ext + "." + fieldName), eee);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getFieldAsDate(java.lang.String, java.lang.String)
+ */
+ @Override
+ public Date getFieldAsDate(String ext, String fieldName) {
+ Object value = getFieldAsObject(ext, fieldName);
+ try {
+ Date result = WikittyUtil.toDate(value);
+ return result;
+ } catch (WikittyException eee) {
+ throw new WikittyException(String.format(
+ "field '%s' is not a valid Date",
+ ext + "." + fieldName), eee);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getFieldAsWikitty(java.lang.String, java.lang.String)
+ */
+ @Override
+ public String getFieldAsWikitty(String ext, String fieldName) {
+ Object value = getFieldAsObject(ext, fieldName);
+ String result = WikittyUtil.toWikitty(value);
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getFieldAsList(java.lang.String, java.lang.String, java.lang.Class)
+ */
+ @Override
+ public <E> List<E> getFieldAsList(String ext, String fieldName, final Class<E> clazz) {
+ try {
+ final Collection<E> collection = (Collection<E>) getFieldAsObject(ext, fieldName);
+ if (collection != null) {
+ // return unmodiable collection that check type of element
+ return new AbstractList<E>() {
+ List<E> contained = new ArrayList<E>(collection);
+ @Override public E get(int index) {
+ return WikittyUtil.cast( contained.get(index), clazz );
+ }
+ @Override public int size() {
+ return contained.size();
+ }
+ };
+ }
+ return null;
+ } catch (Exception eee) {
+ throw new WikittyException(String.format(
+ "Can't add value to field '%s'",
+ ext + "." + fieldName), eee);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getFieldAsSet(java.lang.String, java.lang.String, java.lang.Class)
+ */
+ @Override
+ public <E> Set<E> getFieldAsSet(String ext, String fieldName, final Class<E> clazz) {
+ try {
+ final Set<E> result = (Set<E>) getFieldAsObject(ext, fieldName);
+ if (result != null) {
+ // return unmodifable Set
+ return new AbstractSet<E>() {
+ Set<E> contained = result;
+ @Override public int size() {
+ return contained.size();
+ }
+ @Override
+ public Iterator<E> iterator() {
+ return new Iterator<E>() {
+ Iterator containedIterator = contained.iterator();
+ public boolean hasNext() {
+ return containedIterator.hasNext();
+ }
+
+ public E next() {
+ Object o = containedIterator.next();
+ return WikittyUtil.cast(o, clazz);
+ }
+
+ public void remove() {
+ throw new UnsupportedOperationException("Not supported operation");
+ }
+ };
+
+ }
+ };
+ }
+ return result;
+ } catch (Exception eee) {
+ throw new WikittyException(String.format(
+ "Can't add value to field '%s'",
+ ext + "." + fieldName), eee);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#addToField(java.lang.String, java.lang.String, java.lang.Object)
+ */
+ @Override
+ public void addToField(String ext, String fieldName, Object value) {
+ try {
+ FieldType fieldType = getExtension(ext).getFieldType(fieldName);
+ Collection col = (Collection) getFieldAsObject(ext, fieldName);
+ if (col == null) {
+ if (fieldType.isUnique()) {
+ col = new HashSet();
+ } else {
+ col = new ArrayList();
+ }
+ col.add(value);
+ setField(ext, fieldName, col);
+ // no call dirty, because already done in setField
+ } else {
+ // check upper bound only if col exists,
+ // because ask upper bound == 0 is ridiculous
+
+ if (fieldType.isUnique()) {
+ if (!col.contains(value)) {
+ // only add if not already in collection (unique)
+ if (col.size() + 1 > fieldType.getUpperBound()) {
+ // if upper bound reached, throw an exception
+ throw new WikittyException(String.format(
+ "Can't add value for field '%s', upper bound is reached",
+ ext + "." + fieldName));
+ }
+ col.add(value);
+ setFieldDirty(ext, fieldName, null, col);
+ }
+ } else {
+ if (col.size() + 1 > fieldType.getUpperBound()) {
+ throw new WikittyException(String.format(
+ "Can't add value for field '%s', upper bound is reached",
+ ext + "." + fieldName));
+ }
+ col.add(value);
+ setFieldDirty(ext, fieldName, null, col);
+ }
+ }
+ } catch (Exception eee) {
+ throw new WikittyException(String.format(
+ "Can't add value to field '%s'",
+ ext + "." + fieldName), eee);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#removeFromField(java.lang.String, java.lang.String, java.lang.Object)
+ */
+ @Override
+ public void removeFromField(String ext, String fieldName, Object value) {
+ try {
+ Collection col = (Collection) getFieldAsObject(ext, fieldName);
+ if (col != null) {
+ FieldType type = getExtension(ext).getFieldType(fieldName);
+ if (col.contains(value)) {
+ if (col.size() - 1 < type.getLowerBound()) {
+ throw new WikittyException(String.format(
+ "Can't remove value for field '%s', lower bound is reached",
+ ext + "." + fieldName));
+ } else {
+ if (col.remove(value)) {
+ // field is dirty only if remove is done
+ setFieldDirty(ext, fieldName, null, col);
+ }
+ }
+ }
+ }
+ } catch (Exception eee) {
+ throw new WikittyException(String.format(
+ "Can't remove value for field '%s'",
+ ext + "." + fieldName), eee);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#clearField(java.lang.String, java.lang.String)
+ */
+ @Override
+ public void clearField(String ext, String fieldName) {
+ FieldType type = getExtension(ext).getFieldType(fieldName);
+ if (type.getLowerBound() > 0) {
+ throw new WikittyException(String.format(
+ "Can't clear values for field '%s', lower bound is > 0",
+ ext + "." + fieldName));
+ }
+ try {
+ Collection col = (Collection) getFieldAsObject(ext, fieldName);
+ if (col != null) {
+ col.clear();
+ setFieldDirty(ext, fieldName, null, col);
+ }
+ } catch (Exception eee) {
+ throw new WikittyException(String.format(
+ "Can't clear value for field '%s'",
+ ext + "." + fieldName), eee);
+ }
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ boolean result = false;
+ if (obj instanceof Wikitty) {
+ Wikitty other = (Wikitty) obj;
+ result = id.equals(other.getId());
+ }
+ return result;
+ }
+
+ @Override
+ public int hashCode() {
+ if (id == null) {
+ return super.hashCode();
+ } else {
+ return id.hashCode();
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#fieldNames()
+ */
+ @Override
+ public Set<String> fieldNames() {
+ return fieldValue.keySet();
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getFqField(java.lang.String)
+ */
+ @Override
+ public Object getFqField(String fqFieldName) {
+ return fieldValue.get(fqFieldName);
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#getVersion()
+ */
+ @Override
+ public String getVersion() {
+ return version;
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#setVersion(java.lang.String)
+ */
+ @Override
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#clearDirty()
+ */
+ @Override
+ public void clearDirty() {
+ fieldDirty.clear();
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#setFqField(java.lang.String, java.lang.Object)
+ */
+ @Override
+ public void setFqField(String fieldName, Object value) {
+ FieldType fieldType = getFieldType(fieldName);
+ Object validValue = fieldType.getValidValue(value);
+ fieldValue.put(fieldName, validValue);
+ }
+
+ /* (non-Javadoc)
+ * @see org.nuiton.wikitty.IWikitty#isEmpty()
+ */
+ @Override
+ public boolean isEmpty() {
+ return fieldValue.isEmpty();
+ }
+
+ @Override
+ public String toString() {
+ boolean cr = true;
+ String str = "[" + getId() + ":" + getVersion() + "] {";
+ for ( String extName : getExtensionNames() ) {
+ WikittyExtension ext = getExtension(extName);
+ str += (cr ? "\n" : "") + "\t<" + extName + ">\n";
+ cr = false;
+ for ( String fieldName : ext.getFieldNames() ) {
+ str += "\t\t" + fieldName + " = " + getFieldAsString(extName, fieldName) + "\n";
+ }
+ }
+ str += "}";
+ return str;
+ }
+
+}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -31,8 +31,8 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
-import java.util.Map.Entry;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -66,10 +66,10 @@
public UpdateResponse store(WikittyTransaction transaction, Collection<Wikitty> wikitties, boolean disableAutoVersionIncrement) {
UpdateResponse result = new UpdateResponse();
for (Wikitty wikitty : wikitties) {
- wikitty.version = WikittyUtil.incrementMajorRevision(wikitty.version);
- wikitty.fieldDirty.clear();
- this.wikitties.put(wikitty.id, wikitty);
- result.addVersionUpdate(wikitty.id, wikitty.version);
+ wikitty.setVersion(WikittyUtil.incrementMajorRevision(wikitty.getVersion()));
+ wikitty.clearDirty();
+ this.wikitties.put(wikitty.getId(), wikitty);
+ result.addVersionUpdate(wikitty.getId(), wikitty.getVersion());
}
return result;
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -26,6 +26,7 @@
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.wikitty.search.Search;
@@ -69,7 +70,7 @@
@Override
public String login(String login, String password) {
String token = WikittyUtil.genSecurityToken();
- Wikitty wToken = new Wikitty(token);
+ Wikitty wToken = new WikittyImpl(token);
// force add extension to wikitty
SecurityTokenHelper.addExtension(wToken);
// on passe token comme securityToken, mais il ne me semble pas
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportCSV.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportCSV.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportCSV.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -35,6 +35,7 @@
import org.nuiton.wikitty.PagedResult;
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyExtension;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.WikittyTransaction;
import org.nuiton.wikitty.WikittyUtil;
@@ -95,10 +96,10 @@
String wikittyId = currentLine[wikittyIdIndex];
Wikitty currentWikitty = null;
if (StringUtils.isNotEmpty(wikittyId)) {
- currentWikitty = new Wikitty(wikittyId);
+ currentWikitty = new WikittyImpl(wikittyId);
}
else {
- currentWikitty = new Wikitty();
+ currentWikitty = new WikittyImpl();
}
for (int i = 0; i < header.length ; ++i) {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportXML.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportXML.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportXML.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -35,6 +35,7 @@
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyExtension;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.WikittyTransaction;
import org.nuiton.wikitty.WikittyUtil;
@@ -86,7 +87,7 @@
String id = xpp.getAttributeValue(null, "id");
objectVersion = xpp.getAttributeValue(null, "version");
String extensions = xpp.getAttributeValue(null, "extensions");
- w = new Wikitty(id);
+ w = new WikittyImpl(id);
String[] extensionList = extensions.split(",");
for (String extId : extensionList) {
String extName = WikittyExtension.computeName(extId);
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -17,15 +17,15 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.junit.Before;
import org.junit.Test;
import org.nuiton.wikitty.ExtensionFactory;
import org.nuiton.wikitty.FieldType;
+import org.nuiton.wikitty.FieldType.TYPE;
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyExtension;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyUtil;
-import org.nuiton.wikitty.FieldType.TYPE;
import org.nuiton.wikitty.conform.StorageTest;
/**
@@ -41,11 +41,11 @@
@Test
public void testWikittyId() throws Exception {
- Wikitty w = new Wikitty();
+ Wikitty w = new WikittyImpl();
// as soon as a wikitty object is created, it got an ID.
assertNotNull("Wikitty should got an ID", w.getId() );
- Wikitty w2 = new Wikitty( w.getId() );
+ Wikitty w2 = new WikittyImpl( w.getId() );
// two wikitty with a similar id are equals.
assertEquals("Wikitty with same ID must be equals", w, w2);
}
@@ -53,7 +53,7 @@
@Test
public void testWikittyExtension() throws Exception {
- Wikitty wikitty = new Wikitty();
+ Wikitty wikitty = new WikittyImpl();
// null extension should be ignored
WikittyExtension ext = new WikittyExtension( "invalidExt", "1", null, null );
@@ -92,7 +92,7 @@
.addField("fieldName1", TYPE.STRING)
.addField("fieldName2", TYPE.NUMERIC)
.extension();
- Wikitty w = new Wikitty();
+ Wikitty w = new WikittyImpl();
assertFalse( w.hasExtension(testExtName) );
w.addExtension(ext);
assertTrue( w.hasExtension(testExtName) );
@@ -170,7 +170,7 @@
WikittyExtension ext = ExtensionFactory.create(StorageTest.EXTNAME, "1")
.addField("name", TYPE.STRING)
.extension();
- Wikitty w = new Wikitty();
+ Wikitty w = new WikittyImpl();
w.addExtension(ext);
w.setField(StorageTest.EXTNAME, "name", "foobar");
return w;
@@ -209,7 +209,7 @@
.addField(fieldName, TYPE.NUMERIC)
.maxOccur(FieldType.NOLIMIT)
.extension();
- Wikitty w = new Wikitty();
+ Wikitty w = new WikittyImpl();
w.addExtension(ext);
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -13,11 +13,12 @@
import org.apache.commons.logging.LogFactory;
import org.junit.runner.RunWith;
import org.nuiton.wikitty.FieldType;
+import org.nuiton.wikitty.FieldType.TYPE;
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyExtension;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.WikittyUtil;
-import org.nuiton.wikitty.FieldType.TYPE;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -67,7 +68,7 @@
}
protected static Wikitty createWikitty( WikittyExtension... extensions ) {
- Wikitty w = new Wikitty();
+ Wikitty w = new WikittyImpl();
for ( WikittyExtension ext : extensions ) {
w.addExtension( ext );
}
@@ -135,13 +136,12 @@
public static Wikitty createWikitty( String values, String defaultExtName, WikittyExtension... exts ) {
- Wikitty w = new Wikitty();
+ Wikitty w = new WikittyImpl();
for (WikittyExtension ext : exts) {
w.addExtension(ext);
}
for( Entry<String, String> keyValuePair : getKeyPairs(values) ) {
String[] s = keyValuePair.getKey().split("\\.");
- int i = 0;
String fieldName = null, extName = null;
if ( s.length > 1 ) {
fieldName = s[1].trim();
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/PerformanceTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/PerformanceTest.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/PerformanceTest.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -20,6 +20,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Random;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;
@@ -27,6 +28,7 @@
import org.nuiton.wikitty.FieldType;
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyExtension;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
@@ -67,7 +69,7 @@
Collection<Wikitty> wikitties = new ArrayList<Wikitty>(WIKITTY_SIZE);
for (int i = 0; i < WIKITTY_SIZE; i++) {
- Wikitty wikitty = new Wikitty("Performance" + fieldSize + "id" + i);
+ Wikitty wikitty = new WikittyImpl("Performance" + fieldSize + "id" + i);
wikitty.addExtension(extension);
for (int j = 0; j < fieldSize; j++) {
wikitty.setField("Performance" + fieldSize, "field" + j, "value" + j);
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-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -8,10 +8,11 @@
import org.junit.Test;
import org.nuiton.wikitty.Criteria;
import org.nuiton.wikitty.ExtensionFactory;
+import org.nuiton.wikitty.FieldType.TYPE;
import org.nuiton.wikitty.PagedResult;
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyExtension;
-import org.nuiton.wikitty.FieldType.TYPE;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.search.Search;
public class SearchTest extends AbstractTestConformance {
@@ -43,13 +44,13 @@
.extension();
List<Wikitty> wikitties = new LinkedList<Wikitty>();
- Wikitty w = new Wikitty();
+ Wikitty w = new WikittyImpl();
w.addExtension(ext);
w.setField(ext.getName(), "name", "Guillaume");
w.setField(ext.getName(), "age", "27");
wikitties.add( w );
- w = new Wikitty();
+ w = new WikittyImpl();
w.addExtension(ext);
w.setField(ext.getName(), "name", "Toto");
w.setField(ext.getName(), "age", "125");
@@ -86,7 +87,7 @@
wikittyFound = ws.restore(null, found.get(1));
log.info( wikittyFound.getFieldAsString(ext.getName(), "name") );
- Wikitty exemple = new Wikitty();
+ Wikitty exemple = new WikittyImpl();
exemple.addExtension(ext);
exemple.setField(ext.getName(), "name", "Guillaume");
exemple.setField(ext.getName(), "age", "27");
@@ -96,7 +97,7 @@
wikittyFound = ws.restore(null, found.get(0));
log.info( wikittyFound.getFieldAsString(ext.getName(), "name") );
- exemple = new Wikitty();
+ exemple = new WikittyImpl();
exemple.addExtension(ext);
exemple.setField(ext.getName(), "name", "Guillaume");
exemple.setField(ext.getName(), "age", "125");
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -15,8 +15,8 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
-import java.util.Map.Entry;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -25,15 +25,15 @@
import org.nuiton.wikitty.Criteria;
import org.nuiton.wikitty.PagedResult;
import org.nuiton.wikitty.Tree;
+import org.nuiton.wikitty.TreeNode;
+import org.nuiton.wikitty.TreeNodeImpl;
import org.nuiton.wikitty.UpdateResponse;
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyExtension;
-import org.nuiton.wikitty.WikittyService;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyUtil;
import org.nuiton.wikitty.search.Search;
-import org.nuiton.wikitty.TreeNodeImpl;
-import org.nuiton.wikitty.TreeNode;
public class StorageTest extends AbstractTestConformance {
@@ -147,7 +147,7 @@
// OK !
}
- w = new Wikitty();
+ w = new WikittyImpl();
String id = w.getId();
ws.store(null, w);
w = ws.restore(null, id);
@@ -164,7 +164,7 @@
));
ws.storeExtension(null, Arrays.asList(ext));
- Wikitty w = new Wikitty();
+ Wikitty w = new WikittyImpl();
w.addExtension(ext);
try {
@@ -231,7 +231,7 @@
ws.store(null, wikitties);
// search test
- Wikitty w = new Wikitty();
+ Wikitty w = new WikittyImpl();
w.addExtension(EXT_TEST);
w.setField(EXT_TEST.getName(), "fieldName1", "003309");
Criteria criteria = Search.query(w).criteria()
@@ -272,7 +272,7 @@
ws.store(null, wikitties);
// search test
- Wikitty w = new Wikitty();
+ Wikitty w = new WikittyImpl();
w.addExtension(EXT_TEST);
w.setField(EXT_TEST.getName(), "fieldName1", "663300");
Criteria criteria = Search.query(w).criteria()
@@ -333,7 +333,7 @@
}
// search test
- Wikitty w = new Wikitty();
+ Wikitty w = new WikittyImpl();
w.addExtension(EXT_TEST);
w.setField(EXT_TEST.getName(), "fieldName0", "chaiseICI");
Criteria criteria = Search.query(w).criteria();
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -13,11 +13,12 @@
import org.junit.Before;
import org.junit.Test;
import org.nuiton.wikitty.ExtensionFactory;
+import org.nuiton.wikitty.FieldType.TYPE;
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyExtension;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyServiceInMemory;
import org.nuiton.wikitty.WikittyUtil;
-import org.nuiton.wikitty.FieldType.TYPE;
import org.nuiton.wikitty.api.AbstractTestApi;
public class InMemoryStorageTest extends AbstractTestApi {
@@ -65,7 +66,7 @@
}
private Wikitty createWikitty(String wDef, WikittyExtension... exts) {
- Wikitty w = new Wikitty();
+ Wikitty w = new WikittyImpl();
w.addExtension( Arrays.asList(exts) );
for ( String line : wDef.split(",") ) {
int eqIdx = line.indexOf('=');
Modified: trunk/wikitty-hbase-impl/src/main/java/org/nuiton/wikitty/hbase/WikittyStorageHBase.java
===================================================================
--- trunk/wikitty-hbase-impl/src/main/java/org/nuiton/wikitty/hbase/WikittyStorageHBase.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-hbase-impl/src/main/java/org/nuiton/wikitty/hbase/WikittyStorageHBase.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -308,7 +308,7 @@
protected Wikitty constructWikitty(WikittyTransaction transaction, Result row, String ... fqFieldName) {
Set<String> acceptedField = new HashSet<String>(Arrays.asList(fqFieldName));
String id = Bytes.toString(row.getValue(F_ADMIN, Q_ID));
- Wikitty result = new Wikitty(id);
+ Wikitty result = new WikittyImpl(id);
byte[] version = row.getValue(F_ADMIN, Q_VERSION);
if (version != null) {
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-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -27,10 +27,10 @@
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.COL_VERSION;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.JDBC_DRIVER;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CLEAR_WIKITTY;
+import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CREATION_WIKITTY_ADMIN;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CREATION_WIKITTY_ADMIN_TEST;
-import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CREATION_WIKITTY_ADMIN;
+import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CREATION_WIKITTY_DATA;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CREATION_WIKITTY_DATA_TEST;
-import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CREATION_WIKITTY_DATA;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_DELETE_WIKITTY_ADMIN;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_DELETE_WIKITTY_DATA;
import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_INSERT_WIKITTY_ADMIN;
@@ -74,6 +74,7 @@
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyExtension;
import org.nuiton.wikitty.WikittyExtensionStorage;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyStorage;
import org.nuiton.wikitty.WikittyTransaction;
import org.nuiton.wikitty.WikittyUtil;
@@ -448,7 +449,7 @@
protected Wikitty constructWikitty(WikittyTransaction transaction, String id, String version, String extensionList,
ResultSet resultSet, String... fqFieldName) throws SQLException {
Set<String> acceptedField = new HashSet<String>(Arrays.asList(fqFieldName));
- Wikitty result = new Wikitty(id);
+ Wikitty result = new WikittyImpl(id);
result.setVersion(version);
if (extensionList != null && !"".equals(extensionList)) {
for (String ext : extensionList.split(",")) {
Modified: trunk/wikitty-jms-impl/src/test/java/org/nuiton/wikitty/jms/test/TopicSendReceiveTestSupport.java
===================================================================
--- trunk/wikitty-jms-impl/src/test/java/org/nuiton/wikitty/jms/test/TopicSendReceiveTestSupport.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-jms-impl/src/test/java/org/nuiton/wikitty/jms/test/TopicSendReceiveTestSupport.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -195,11 +195,11 @@
protected Map<String, Wikitty> createWikitties() {
Map<String, Wikitty> map = new HashMap<String, Wikitty>();
- Wikitty wikitty = new Wikitty();
+ Wikitty wikitty = new WikittyImpl();
map.put(wikitty.getId(), wikitty);
- wikitty = new Wikitty();
+ wikitty = new WikittyImpl();
map.put(wikitty.getId(), wikitty);
- wikitty = new Wikitty();
+ wikitty = new WikittyImpl();
map.put(wikitty.getId(), wikitty);
return map;
Modified: trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTA.java
===================================================================
--- trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTA.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTA.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -18,15 +18,10 @@
package org.nuiton.wikitty.jpa.test;
-import com.arjuna.ats.arjuna.coordinator.BasicAction;
-import com.arjuna.ats.arjuna.coordinator.OnePhaseResource;
-import com.arjuna.ats.arjuna.coordinator.TwoPhaseOutcome;
-import com.arjuna.ats.arjuna.state.InputObjectState;
-import com.arjuna.ats.arjuna.state.OutputObjectState;
-import com.arjuna.ats.internal.arjuna.abstractrecords.LastResourceRecord;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.transaction.Transaction;
@@ -35,6 +30,7 @@
import javax.transaction.xa.XAException;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;
@@ -45,6 +41,13 @@
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import com.arjuna.ats.arjuna.coordinator.BasicAction;
+import com.arjuna.ats.arjuna.coordinator.OnePhaseResource;
+import com.arjuna.ats.arjuna.coordinator.TwoPhaseOutcome;
+import com.arjuna.ats.arjuna.state.InputObjectState;
+import com.arjuna.ats.arjuna.state.OutputObjectState;
+import com.arjuna.ats.internal.arjuna.abstractrecords.LastResourceRecord;
+
/**
*
* @author ruchaud
@@ -80,7 +83,7 @@
LastResourceRecord lastResourceRecord = new LastResourceRecord(onePhaseResource);
BasicAction.Current().add(lastResourceRecord);
- Wikitty entity = new Wikitty();
+ Wikitty entity = new WikittyImpl();
entityManager.persist(entity);
userTransaction.commit();
Modified: trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTAWithSync.java
===================================================================
--- trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTAWithSync.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-jpa-impl/src/test/java/org/nuiton/wikitty/jpa/test/TestJTAWithSync.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -66,7 +66,7 @@
Transaction transaction = transactionManager.getTransaction();
transaction.registerSynchronization(new MySync());
- Wikitty entity = new Wikitty();
+ Wikitty entity = new WikittyImpl();
entityManager.persist(entity);
userTransaction.commit();
@@ -83,7 +83,7 @@
Transaction transaction = transactionManager.getTransaction();
transaction.registerSynchronization(new MySync());
- Wikitty entity = new Wikitty();
+ Wikitty entity = new WikittyImpl();
entityManager.persist(entity);
userTransaction.rollback();
Modified: trunk/wikitty-multistorage-impl/src/test/java/org/nuiton/wikitty/multistorage/test/MultiStorageTest.java
===================================================================
--- trunk/wikitty-multistorage-impl/src/test/java/org/nuiton/wikitty/multistorage/test/MultiStorageTest.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-multistorage-impl/src/test/java/org/nuiton/wikitty/multistorage/test/MultiStorageTest.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -20,7 +20,6 @@
import java.net.URL;
import java.util.Properties;
-import org.apache.activemq.broker.BrokerFactory;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
@@ -31,12 +30,9 @@
import org.nuiton.wikitty.WikittyStorage;
import org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC;
import org.nuiton.wikitty.jdbc.WikittyStorageJDBC;
-import org.nuiton.wikitty.jms.WikittyExtensionStorageJMS;
-import org.nuiton.wikitty.jms.WikittyJMSUtil;
-import org.nuiton.wikitty.jms.WikittyStorageJMS;
import org.nuiton.wikitty.multistorage.MultiStorageConfiguration;
-import org.nuiton.wikitty.multistorage.WikittyServiceMultiStorage;
import org.nuiton.wikitty.multistorage.MultiStorageConfiguration.BasicConfiguration;
+import org.nuiton.wikitty.multistorage.WikittyServiceMultiStorage;
/**
* MultiStorageTest build a multi-storage configuration using jdbc and jms
@@ -68,7 +64,7 @@
public void testMultiStorage() throws Exception {
// create and store a simple wikitty
WikittyExtension extension = new WikittyExtension("extension");
- Wikitty wikitty = new Wikitty();
+ Wikitty wikitty = new WikittyImpl();
wikitty.addExtension(extension);
service.store(null, wikitty);
Modified: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrSearchTest.java
===================================================================
--- trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrSearchTest.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrSearchTest.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -8,21 +8,22 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.junit.Before;
import org.junit.Test;
-import org.junit.Before;
import org.nuiton.wikitty.Criteria;
import org.nuiton.wikitty.FacetTopic;
import org.nuiton.wikitty.PagedResult;
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyExtension;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyUtil;
+import org.nuiton.wikitty.conform.AbstractTestConformance;
+import org.nuiton.wikitty.conform.StorageTest;
import org.nuiton.wikitty.search.Element;
import org.nuiton.wikitty.search.Like;
+import org.nuiton.wikitty.search.Like.SearchAs;
import org.nuiton.wikitty.search.RestrictionHelper;
import org.nuiton.wikitty.search.Search;
-import org.nuiton.wikitty.search.Like.SearchAs;
-import org.nuiton.wikitty.conform.AbstractTestConformance;
-import org.nuiton.wikitty.conform.StorageTest;
public class SolrSearchTest extends AbstractTestSolr {
@@ -290,7 +291,7 @@
@Test
public void testFindAllByExample() throws Exception {
- Wikitty example = new Wikitty();
+ Wikitty example = new WikittyImpl();
example.addExtension(extProduct);
example.setField("Product", "price", 20);
Modified: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/TreeTest.java
===================================================================
--- trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/TreeTest.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/TreeTest.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -17,14 +17,14 @@
package org.nuiton.wikitty.solr.test;
-import java.util.Map.Entry;
-import java.util.Set;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -32,14 +32,15 @@
import org.junit.Test;
import org.nuiton.wikitty.Criteria;
import org.nuiton.wikitty.ExtensionFactory;
+import org.nuiton.wikitty.FieldType.TYPE;
import org.nuiton.wikitty.Tree;
+import org.nuiton.wikitty.TreeNode;
+import org.nuiton.wikitty.TreeNodeImpl;
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyExtension;
-import org.nuiton.wikitty.FieldType.TYPE;
+import org.nuiton.wikitty.WikittyImpl;
+import org.nuiton.wikitty.conform.StorageTest;
import org.nuiton.wikitty.search.Search;
-import org.nuiton.wikitty.conform.StorageTest;
-import org.nuiton.wikitty.TreeNodeImpl;
-import org.nuiton.wikitty.TreeNode;
/**
*
@@ -123,7 +124,7 @@
* Attach value in node
*/
protected void addNode(String nodeName, String value) {
- Wikitty leaf = new Wikitty();
+ Wikitty leaf = new WikittyImpl();
leaf.addExtension(extension);
leaf.setField("test", "name", value);
Modified: trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyController.java
===================================================================
--- trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyController.java 2010-08-03 10:25:07 UTC (rev 218)
+++ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyController.java 2010-08-03 13:37:36 UTC (rev 219)
@@ -9,10 +9,13 @@
import java.util.Iterator;
import java.util.List;
import java.util.Set;
+
import javax.servlet.http.HttpSession;
+
import org.nuiton.wikitty.FieldType;
import org.nuiton.wikitty.Wikitty;
import org.nuiton.wikitty.WikittyExtension;
+import org.nuiton.wikitty.WikittyImpl;
import org.nuiton.wikitty.WikittyProxy;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
@@ -90,7 +93,7 @@
}
public void onClick$add() {
- Wikitty newWikitty = _wikittyForm.retriveWikittyInForm(formListBox, new Wikitty());
+ Wikitty newWikitty = _wikittyForm.retriveWikittyInForm(formListBox, new WikittyImpl());
_model.create(newWikitty);
if (_selectedExtension != null) {
List<Wikitty> list = _model.retrieveWikittiesByExtensionName(_selectedExtension.getName());
2
1
Author: bleny
Date: 2010-08-03 12:25:07 +0200 (Tue, 03 Aug 2010)
New Revision: 218
Url: http://nuiton.org/repositories/revision/wikitty/218
Log:
r?\195?\169?\195?\169criture de la spec s?\195?\169curit?\195?\169
Modified:
trunk/src/site/rst/Spec.rst
Modified: trunk/src/site/rst/Spec.rst
===================================================================
--- trunk/src/site/rst/Spec.rst 2010-08-03 09:48:17 UTC (rev 217)
+++ trunk/src/site/rst/Spec.rst 2010-08-03 10:25:07 UTC (rev 218)
@@ -1,24 +1,29 @@
Ce document est fait pour contenir toutes les normalisations autour de Wikitty
-Identifiant
-===========
+Identifiant des wikitties
+=========================
+
Les identifiants sont de la forme UUID[_<specifique extension>]. Donc tous les
-identifiants commence par un UUID et peu etre séparé d'une extension
-specifique pour certain besoin par un '_' (underscore)
+identifiants commence par un UUID et peut être séparé d'une extension
+spécifique pour certain besoin par un '_' (underscore)
-Droits
-======
-Si l'on veut que tout le monde puisse lire un objet, il faut laisser vide la
-liste des readers (vide ou null). Si l'on souhaitent indiquer que personne
-ne peut lire l'objet il faut mettre le owner en tant que reader. Car de
-toute façon l'owner aura toujours le droit en lecture
-Les AppAdmin doivent etre dans le *WikittyGroup* portant le nom
-**WikittyAppAdmin**.
+Gestion des droits
+==================
+
+Utilisateurs et groupes
+-----------------------
+
+Les utilisateurs ont un nom et un mot de passe, les groupes contiennent
+des utilisateurs (d'autres groupes ?)
+
+Par défaut il existe un *WikittyGroup* portant le nom **WikittyAppAdmin**.
Si ce groupe n'existe pas ou qu'il est vide, cela indique que tous les
utilisateurs sont AppAdmin. Cela est nécessaire pour deux choses:
+
- pour permettre d'avoir une authentification, mais que l'on ne souhaite pas de
gestion d'autorisation.
+
- pour servire de bootstrap au lancement de l'application seul les AppAdmin
peuvent modifier le *WikittyGroup* portant le nom **WikittyAppAdmin**, or s'il
est vide il faut pouvoir le remplir.
@@ -26,26 +31,88 @@
Il ne doit donc exister un seul *WikittyGroup* portant le nom
**WikittyAppAdmin**
+Tokens de sécurité
+------------------
+
+À chaque login, un token de sécurité est fourni à l'utilisateur. L'utilisateur
+doit fournir ce token à chaque opération pour montrer qu'il a les droits.
+Pour un token donné, on peut savoir à quel utilisateur il appartient.
+
+Les tokens sont stockés en base et supprimés au logout de l'utilateur.
+
Les SecurityToken ne sont supprimés de la base de données qu'au moment du logout
Si les utilisateurs/applications quittent sans faire le logout le nombre de
SecurityToken ne fera qu'augmenter. Pour éviter cela, il faut prévoir un petit
job qui de temps en temps fait le ménage dans les SecurityToken trop vieux.
-Gestion des droits d'extension
-l'idée c'est de créer un wikitty qui a pour extension WikittySecurity, nommé
-WikittySecurity'ExtensionName'. Les admins peuvent changer les droits, les writers
-peuvent modifier l'extension et les readers peuvent lire l'extension pour en créer
-des instances.
-Si le wikitty n'est pas trouvé, seuls les AppAdmin peuvent créer les instances et
-modifier l'extension.
-Si le reader est vide, tout le monde peut créer. Pour que suls les AppAdmin et le
-owner puissent créer des isntances, il faut mettre le owner en reader.
+Gestion des droits sur un Wikitty
+---------------------------------
+Un wikitty a plusieurs extensions, pour chacune de ces extensions, on a plusieurs
+droits. On distinque quatre niveaux de droits :
-Localisation wikitty
---------------------
+* owner (un utilisateur) donne tous les droits sur un wikitty
+* admin (zéro ou plusieurs utilisateurs / groupes) permet d'ajouter ou de
+ supprimer des éléments dans writer et reader
+
+* writer (zéro ou plusieurs utilisateurs / groupes) permet, pour chacun des
+ champs de cette extension, de modifier la valeur
+
+* reader (zéro ou plusieurs utilisateurs / groupes) permet, pour chacun des
+ champs de cette extension, de lire la valeur
+
+Si on veut que tout le monde puisse lire un wikitty, il faut laisser vide la
+liste des readers (vide ou null).
+
+Si l'on souhaite indiquer que personne ne peut lire l'objet il faut mettre le
+owner en tant que reader. Car de toute façon l'owner aura toujours le droit
+en lecture.
+
+La granularité est donc au niveau des extensions. C'est à dire qu'avoir
+le droit reader de l'extension Ext permet de lire tous les champs de l'extension
+Ext de tous les wikitty qui ont l'extension Ext.
+
+Gestion des droits sur les extensions
+-------------------------------------
+
+Pour chaque extension, on a la même hiérachie de droit qui donnent des
+possibilités différentes :
+
+* owner :
+
+* admin : permet de changer les droits de l'extension. Donc, permet d'ajouter
+ ou de supprimer des éléments dans writer et reader
+
+* writer : permet de modifier l'extension l'extension
+
+* reader : permet de lire l'extension pour en créer des instances. Si le reader
+ est vide, tout le monde peut créer. Pour que seuls les AppAdmin et le owner
+ puissent créer des instances, il faut mettre le owner en reader.
+
+Si une extension ne dispose pas de ces informations, seuls les AppAdmin peuvent
+créer les instances et modifier l'extension.
+
+Comment ces droits sont stockés
+-------------------------------
+
+Pour chaque extension connue, il y aura donc un wikitty dont le seule
+extension sera WikittySecurity. Chacun de ces wikitty aura pour identifiant
+« WikittySecurity'ExtensionName' ».
+
+Pour stoker les droits qui portent sur les extensions, on fait appel
+à des **meta-extensions**. Une
+
+Pseudo extension est portée par les extensions du wikitty. Exemple avec
+WikittySecurity sur un Wikitty Personne qui a une extension Employee et
+Customer. Il y a une extension Employee:WikittySecurity et une extension
+Customer:WikittySecurity. le séparateur de pseudo-extension = ':' comme css
+
+
+Localisation
+============
+
On rajoute une pseudo extension WikittyI18n aux extensions du wikitty.
Cette pseudo-extension a deux champs : langue et translation
@@ -75,15 +142,11 @@
-atetntion au moment de la mmigration
+attention au moment de la migration
au moment du chargement
Pseudo extension
-----------------
+================
-Pseudo extension est portée par les extensions du wikitty. Exemple avec
-WikittySecurity sur un Wikitty Personne qui a une extension Employee et
-Customer. Il y a une extension Employee:WikittySecurity et une extension
-Customer:WikittySecurity. le séparateur de pseudo-extension = ':' comme css
migration : méthode migrate(oldExtension, newExtension, Wikitty, Locale) Locale pouvant etre null.
1
0
03 Aug '10
Author: bleny
Date: 2010-08-03 11:48:17 +0200 (Tue, 03 Aug 2010)
New Revision: 217
Url: http://nuiton.org/repositories/revision/wikitty/217
Log:
a bit of javadoc
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/FieldType.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittySearchEngin.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/FieldType.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/FieldType.java 2010-08-03 09:29:14 UTC (rev 216)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/FieldType.java 2010-08-03 09:48:17 UTC (rev 217)
@@ -145,7 +145,7 @@
result = WikittyUtil.toString(value); break;
default:
// if type is not found then type is business type
- // and is wikity object
+ // and is wikitty object
result = WikittyUtil.toWikitty(value); break;
}
return result;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2010-08-03 09:29:14 UTC (rev 216)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2010-08-03 09:48:17 UTC (rev 217)
@@ -244,7 +244,7 @@
/**
* Search object that correspond to criteria and that have all extension
* needed by BusinessEntity (clazz). If criteria is null, find all extensions
- * else if crtiteria is empty return nothing.
+ * else if criteria is empty return nothing.
*
* @param <E> object type
* @param clazz entity class
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittySearchEngin.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittySearchEngin.java 2010-08-03 09:29:14 UTC (rev 216)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittySearchEngin.java 2010-08-03 09:48:17 UTC (rev 217)
@@ -21,7 +21,7 @@
import java.util.Map;
/**
- * WikittySearchEngin is used to abstract search engin used in WikittyService.
+ * WikittySearchEngin is used to abstract search engine used in WikittyService.
*
*
* @author poussin
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2010-08-03 09:29:14 UTC (rev 216)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2010-08-03 09:48:17 UTC (rev 217)
@@ -24,6 +24,20 @@
/**
* Wikitty service.
+ *
+ * The main implementation for this interface is {@link WikittyServiceImpl}.
+ * It can be used alone but this implementation doesn't deal with all
+ * stuffs described in this interface. Thus, other functionalities are added
+ * to the implementation through objects that decorate WikittyServiceImpl :
+ *
+ * <dl>
+ * <dt>{@link WikittyServiceCached}</dt>
+ * <dd>add a cache for wikitties</dd>
+ * <dt>{@link WikittyServiceSecurity}</dt>
+ * <dd>add user authentication support and right management</dd>
+ * <dt>{@link WikittyServiceNotifier}</dt>
+ * <dd>add notifications between client of the same wikitty service</dd>
+ * </dl>
*
* @author poussin
* @version $Revision$
1
0