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
r276 - in branches/wikitty-eugene-migration/wikitty-api/src: main/java/org/nuiton/wikitty test/java/org/nuiton/wikitty test/java/org/nuiton/wikitty/layers test/resources
by bleny@users.nuiton.org 27 Aug '10
by bleny@users.nuiton.org 27 Aug '10
27 Aug '10
Author: bleny
Date: 2010-08-27 17:16:41 +0200 (Fri, 27 Aug 2010)
New Revision: 276
Url: http://nuiton.org/repositories/revision/wikitty/276
Log:
security layer ; bugfixes in WikittyServiceInMemory ; refactoring tests
Added:
branches/wikitty-eugene-migration/wikitty-api/src/test/java/org/nuiton/wikitty/layers/
branches/wikitty-eugene-migration/wikitty-api/src/test/java/org/nuiton/wikitty/layers/AbstractWikittyServiceTest.java
branches/wikitty-eugene-migration/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java
Removed:
branches/wikitty-eugene-migration/wikitty-api/src/test/java/org/nuiton/wikitty/cache/
Modified:
branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java
branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCopyOnWrite.java
branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java
branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java
branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java
branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
branches/wikitty-eugene-migration/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java
branches/wikitty-eugene-migration/wikitty-api/src/test/resources/log4j.properties
Modified: branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java 2010-08-27 15:13:40 UTC (rev 275)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java 2010-08-27 15:16:41 UTC (rev 276)
@@ -39,6 +39,8 @@
boolean hasExtension(String extName);
boolean hasField(String extName, String fieldName);
+
+ boolean hasField(String fqFieldName);
WikittyExtension getExtension(String ext);
Modified: branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCopyOnWrite.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCopyOnWrite.java 2010-08-27 15:13:40 UTC (rev 275)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCopyOnWrite.java 2010-08-27 15:16:41 UTC (rev 276)
@@ -131,6 +131,10 @@
return target.hasField(extName, fieldName);
}
+ public boolean hasField(String fqFieldName) {
+ return target.hasField(fqFieldName);
+ }
+
public WikittyExtension getExtension(String ext) {
return target.getExtension(ext);
}
Modified: branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java 2010-08-27 15:13:40 UTC (rev 275)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java 2010-08-27 15:16:41 UTC (rev 276)
@@ -239,6 +239,17 @@
return result;
}
+ @Override
+ public boolean hasField(String fqFieldName) {
+ String[] field = fqFieldName.split("\\.");
+ String fieldName = field[1];
+ int crochet = fieldName.indexOf("[");
+ if (crochet != -1) {
+ fieldName = fieldName.substring(0, crochet);
+ }
+ return hasField(field[0], fieldName);
+ }
+
/* (non-Javadoc)
* @see org.nuiton.wikitty.IWikitty#getExtension(java.lang.String)
*/
@@ -640,6 +651,7 @@
} else {
if (col.remove(value)) {
// field is dirty only if remove is done
+ setFieldDirty(ext, fieldName, null, col);
setField(ext, fieldName, col); // no call dirty, because already done in setField
}
}
Modified: branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java 2010-08-27 15:13:40 UTC (rev 275)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceInMemory.java 2010-08-27 15:16:41 UTC (rev 276)
@@ -68,7 +68,16 @@
for (Wikitty wikitty : wikitties) {
wikitty.setVersion(WikittyUtil.incrementMajorRevision(wikitty.getVersion()));
wikitty.clearDirty();
- this.wikitties.put(wikitty.getId(), wikitty);
+ try {
+ this.wikitties.put(wikitty.getId(), wikitty.clone());
+ } catch (CloneNotSupportedException e) {
+ log.error(String.format("unable to clone wikitty %s", wikitty));
+
+ // modification of the given wikitty out of this method will modify the stored wikitty : side effect !!
+ log.warn(String.format("%s store a wikitty with a shared reference %s", this, wikitty));
+
+ this.wikitties.put(wikitty.getId(), wikitty);
+ }
result.addVersionUpdate(wikitty.getId(), wikitty.getVersion());
}
return result;
@@ -254,6 +263,11 @@
return true; // FIXME: 20091104 jru manage search on extension and id
}
Object o = w.getFqField( fqfieldName );
+
+ if (!w.hasField(fqfieldName)) {
+ return false;
+ }
+
FieldType t = w.getFieldType(fqfieldName);
Object value = t.getValidValue( binOp.getValue() );
boolean checked = false;
Modified: branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java 2010-08-27 15:13:40 UTC (rev 275)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java 2010-08-27 15:16:41 UTC (rev 276)
@@ -19,14 +19,16 @@
import static org.nuiton.i18n.I18n._;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
-import java.util.Iterator;
-import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import javax.sql.rowset.serial.SerialException;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.wikitty.search.Search;
@@ -52,9 +54,45 @@
/** cache de l'id du groupe AppAdmin */
transient protected String appAdminGroupId = null;
+ public static final String APPADMIN_LOGIN = "root";
+ // TODO 20100826 bleny look for password in a config file
+ public static final String APPADMIN_PASSWORD = "toto";
+
public WikittyServiceSecurity(WikittyService ws) {
this.ws = ws;
+
+ Wikitty appAdminGroup = getAppAdminGroup(null);
+ if (WikittyGroupHelper.getMembers(appAdminGroup) == null) {
+ // first time boot
+ ws.storeExtension(null, WikittyUserAbstract.extensions);
+ ws.storeExtension(null, SecurityTokenAbstract.extensions);
+ ws.storeExtension(null, WikittyGroupAbstract.extensions);
+
+ // create the appAdmin account
+ Wikitty appAdmin = new WikittyImpl();
+ WikittyUserHelper.addExtension(appAdmin);
+ WikittyUserHelper.setLogin(appAdmin, APPADMIN_LOGIN);
+ WikittyUserHelper.setPassword(appAdmin, APPADMIN_PASSWORD);
+ ws.store(null, appAdmin);
+
+ // add APPADMIN_LOGIN to AppAdmin group
+ WikittyGroupHelper.addMembers(appAdminGroup, appAdmin.getId());
+ ws.store(null, appAdminGroup);
+
+ // login as admin to add some security polices
+ String adminToken = login(APPADMIN_LOGIN, APPADMIN_PASSWORD);
+
+ // making all tokens unwritable, except for app admin
+ addWikittyAuthorisation(adminToken, SecurityTokenAbstract.extensionSecurityToken);
+ Wikitty authorizationOnTokens = restoreExtensionAuthorisation(adminToken, SecurityTokenAbstract.extensionSecurityToken);
+ WikittyAuthorisationHelper.clearWriter(authorizationOnTokens);
+ WikittyAuthorisationHelper.clearAdmin(authorizationOnTokens);
+ WikittyAuthorisationHelper.setOwner(authorizationOnTokens, APPADMIN_LOGIN);
+ store(adminToken, authorizationOnTokens);
+
+ logout(adminToken);
+ }
}
@Override
@@ -69,21 +107,71 @@
@Override
public String login(String login, String password) {
- String token = WikittyUtil.genSecurityToken();
- Wikitty wToken = new WikittyImpl(token);
- // force add extension to wikitty
- SecurityTokenHelper.addExtension(wToken);
- // on passe token comme securityToken, mais il ne me semble pas
- // que ce soit tres utile, mais comme ca c'est uniform
- ws.store(null, wToken);
- return token;
+ Wikitty user = ws.findByCriteria(null, Search.query().eq(
+ WikittyUser.FQ_FIELD_WIKITTYUSER_LOGIN, login).criteria());
+ if (user == null) {
+ throw new IllegalArgumentException(String.format("no such account '%s'", login));
+ } else {
+ // check password is valid
+ if (WikittyUserHelper.getPassword(user).equals(password)) {
+ String tokenId = WikittyUtil.genSecurityTokenId();
+ Wikitty wikittyToken = new WikittyImpl(tokenId);
+ // force add extension to wikitty
+ SecurityTokenHelper.addExtension(wikittyToken);
+ SecurityTokenHelper.setUser(wikittyToken, user.getId());
+ ws.store(null, wikittyToken);
+
+ log.debug(String.format("token '%s' is for login '%s'",
+ tokenId, login));
+
+ return tokenId;
+ } else {
+ throw new SecurityException("bad password");
+ }
+ }
}
+
+ public void createAccount(String securityToken, String login, String password) {
+ String userId = getUserId(securityToken);
+ if (isAppAdmin(securityToken, userId)) {
+ Wikitty user = ws.findByCriteria(securityToken, Search.query().eq(
+ WikittyUser.FQ_FIELD_WIKITTYUSER_LOGIN, login).criteria());
+ if (user == null) {
+ user = new WikittyImpl();
+ WikittyUserHelper.addExtension(user);
+ WikittyUserHelper.setLogin(user, login);
+ WikittyUserHelper.setPassword(user, password);
+ ws.store(null, user);
+ log.debug(String.format("login '%s' has userId '%s'", login, user.getId()));
+ } else {
+ throw new IllegalArgumentException(
+ String.format("account already exists '%s'",
+ login));
+ }
+ } else {
+ throw new SecurityException("only admin can create accounts");
+ }
+ }
+
+ public String getUserWikittyId(String securityToken, String login) {
+ String userId = getUserId(securityToken);
+ String userWikittyId = null;
+// if (isAppAdmin(securityToken, userId)) {
+ Wikitty user = ws.findByCriteria(null, Search.query().eq(
+ WikittyUser.FQ_FIELD_WIKITTYUSER_LOGIN, login).criteria());
+ if (user != null) {
+ userWikittyId = user.getId();
+ }
+// } else {
+// throw new SecurityException("Only admin can do that");
+// }
+ return userWikittyId;
+ }
@Override
public void logout(String securityToken) {
- // on passe securityToken comme token, mais il ne me semble pas
- // que ce soit tres utile, mais comme ca c'est uniform
- ws.delete(null, securityToken);
+ getUserId(securityToken); // will throw exception if token is not valid
+ ws.delete(securityToken, securityToken);
}
@Override
@@ -93,175 +181,300 @@
// seul les AppAdmin on le droit a cette method
ws.clear(securityToken);
} else {
- throw new SecurityException(_("user %s can't clear data",
- getUserId(securityToken)));
+ throw new SecurityException(_("user %s can't clear data", userId));
}
}
-
- /**
- * Prepare l'ecriture en ajoutant s'il le faut l'extension
- * WikittyAuthorisation et en fixant l'owner a l'utilisateur courant
+
+ protected String extensionToWikittySecurityId(WikittyExtension extension) {
+ return String.format("WikittySecurity'%s'", extension.getName());
+ }
+
+ /** */
+ public Wikitty addWikittyAuthorisation(String securityToken,
+ WikittyExtension extension) {
+ String userId = getUserId(securityToken);
+ if (isAppAdmin(securityToken, userId)) {
+ if (restoreExtensionAuthorisation(securityToken, extension) == null) {
+ String wikittyAuthorisationId = extensionToWikittySecurityId(extension);
+ Wikitty wikittyAuthorisation = new WikittyImpl(wikittyAuthorisationId);
+ WikittyAuthorisationHelper.addExtension(wikittyAuthorisation);
+ WikittyAuthorisationHelper.setOwner(wikittyAuthorisation, userId);
+ ws.store(securityToken, wikittyAuthorisation);
+ return wikittyAuthorisation;
+ } else {
+ throw new SecurityException(String.format(
+ "extension %s already has an security extension attached",
+ extension.getName()));
+ }
+ } else {
+ throw new SecurityException(String.format(
+ "Only members of %s group can add authorisation",
+ WIKITTY_APPADMIN_GROUP_NAME));
+ }
+ }
+
+ /** restore the wikitty authorisation attached to given extension
*
- * @param securityToken le token de securite qui permet de retrouver
- * l'utilisateur
- * @param wikitty le wikitty a sauver
+ * @return a wikitty with WikittyAuthorisation extension, or null if given
+ * extension has no security policy attached
+ * @throws SecurityException if user don't have rights required
*/
- protected void prepareWrite(String securityToken, Wikitty wikitty) {
- Wikitty oldVersion = ws.restore(securityToken, wikitty.getId());
- if (oldVersion == null) {
- // creation d'une nouvelle entity, on a des choses a faire
+ public Wikitty restoreExtensionAuthorisation(String securityToken,
+ WikittyExtension extension) {
+ String userId = getUserId(securityToken);
+ String wikittyAuthorisationId = extensionToWikittySecurityId(extension);
+ Wikitty wikittyAuthorisation = restore(securityToken, wikittyAuthorisationId);
+ if (wikittyAuthorisation == null) {
+ log.debug(extension + " has no authorization attached");
+ } else {
+ /*
+ if ( ! canAdmin(securityToken, userId, wikittyAuthorisation)) {
+ throw new SecurityException(String.format(
+ "user %s doesn't have admin rights on extension %s",
+ userId, extension.getName()));
+ }
+ */
+ }
+ return wikittyAuthorisation;
+ }
- // recuperation de l'utilisateur associe au securityToken
- String userId = getUserId(securityToken);
+ /** true if userId has the right to write on extension */
+ protected boolean canRead(String securityToken, String userId, Wikitty extensionRights) {
+ boolean canRead = isReader(securityToken, userId, extensionRights)
+ || canWrite(securityToken, userId, extensionRights);
+ return canRead;
+ }
- // on ajoute et on fixe les droits par defaut
- WikittyAuthorisationHelper.addExtension(wikitty);
- WikittyAuthorisationHelper.setOwner(wikitty, userId);
+ /** true if userId has the right to write on extension */
+ protected boolean canWrite(String securityToken, String userId, Wikitty extensionRights) {
+ boolean canWrite = isWriter(securityToken, userId, extensionRights)
+ || isOwner(securityToken, userId, extensionRights)
+ || isAppAdmin(securityToken, userId);
+ return canWrite;
+ }
+
+ /** true if userId has the right to admin on extension */
+ protected boolean canAdmin(String securityToken, String userId, Wikitty extensionRights) {
+ boolean canWrite = isAdmin(securityToken, userId, extensionRights)
+ || isOwner(securityToken, userId, extensionRights)
+ || isAppAdmin(securityToken, userId);
+ return canWrite;
+ }
+
+ /** true if userId has the right is owner of all the extensions of the given wikitty */
+ protected boolean canDelete(String securityToken, String userId, Wikitty wikitty) {
+ if (isAppAdmin(securityToken, userId)) {
+ return true;
}
+
+ // now read all extensions for this wikitty, and return false
+ // if user is not owner on one of those extensions
+ for (WikittyExtension extension : wikitty.getExtensions()) {
+ Wikitty extensionRights = restoreExtensionAuthorisation(securityToken, extension);
+ boolean canDelete = extensionRights == null
+ || isOwner(securityToken, userId, extensionRights);
+ if (! canDelete) {
+ return false;
+ }
+ }
+ return true;
}
@Override
- public boolean canWrite(String securityToken, Wikitty wikitty) {
- boolean result = false;
+ public UpdateResponse store(String securityToken, Wikitty wikitty) {
+ Collection<Wikitty> wikitties = Arrays.asList(wikitty);
+ return store(securityToken, wikitties);
+ }
+ @Override
+ public UpdateResponse store(String securityToken, Collection<Wikitty> wikitties) {
+ return store(securityToken, wikitties, false);
+ }
+
+ @Override
+ public UpdateResponse store(String securityToken, Collection<Wikitty> wikitties, boolean disableAutoVersionIncrement) {
String userId = getUserId(securityToken);
- //
- // check security
- //
- // recuperation de l'ancienne version de l'objet pour verifier les droits
- Wikitty oldVersion = ws.restore(securityToken, wikitty.getId());
- if (oldVersion == null) {
- // creation d'une nouvelle entity
+ List<Wikitty> wikittiesToStore = new ArrayList<Wikitty>(wikitties);
+
+ for (Wikitty wikitty : wikitties) {
+
+ Wikitty oldVersion = ws.restore(securityToken, wikitty.getId());
+
+ // check that the wikitty does not have
+ if (WikittyAuthorisationHelper.isExtension(wikitty)) {
+
+ if (oldVersion == null) {
+ // if this exception is raised, you should use addWikittyAuthorisation()
+ throw new IllegalArgumentException("you can't store an authorisation for the fist time");
+ } else {
+
+ if ( canAdmin(securityToken, userId, oldVersion)) {
+
+ System.out.println("!!!" + oldVersion);
+
+ // admin can't change owner, admin or parent
+ // putting back old values
+ Object oldValue;
- // on verifie que l'on a le droit de creer une entity avec cette extension
- // TODO poussin 20100607 trouver ou mettre l'autorisation qui retient l'information de qui a le droit de cree une extension
- result = true;
- } else {
- // modification d'une entity existante
-
- // si c'est le owner il a tous les droits, a defaut les admins
- // peuvent aussi le modifier
- result =
- // owner et admin peuvent tout modifier
- isOwner(securityToken, userId, oldVersion)
- || isAppAdmin(securityToken, userId)
- || isAdmin(securityToken, userId, oldVersion)
- // un writer ne peut pas modifier l'extension d'autorisation
- || (WikittyAuthorisationHelper.equals(oldVersion, wikitty)
- && isWriter(securityToken, userId, oldVersion));
+ oldValue = oldVersion.getFieldAsObject(
+ WikittyAuthorisation.EXT_WIKITTYAUTHORISATION,
+ WikittyAuthorisation.FIELD_WIKITTYAUTHORISATION_OWNER);
+ wikitty.setField(WikittyAuthorisation.EXT_WIKITTYAUTHORISATION,
+ WikittyAuthorisation.FIELD_WIKITTYAUTHORISATION_OWNER,
+ oldValue);
+ /*
+ oldValue = oldVersion.getFieldAsObject(
+ WikittyAuthorisation.EXT_WIKITTYAUTHORISATION,
+ WikittyAuthorisation.FIELD_WIKITTYAUTHORISATION_ADMIN);
+ System.out.println("will preserve" + oldValue);
+ wikitty.setField(WikittyAuthorisation.EXT_WIKITTYAUTHORISATION,
+ WikittyAuthorisation.FIELD_WIKITTYAUTHORISATION_ADMIN,
+ oldValue);
+ /*
+ oldValue = oldVersion.getFieldAsObject(
+ WikittyAuthorisation.EXT_WIKITTYAUTHORISATION,
+ WikittyAuthorisation.FIELD_WIKITTYAUTHORISATION_PARENT);
+ wikitty.setField(WikittyAuthorisation.EXT_WIKITTYAUTHORISATION,
+ WikittyAuthorisation.FIELD_WIKITTYAUTHORISATION_PARENT,
+ oldValue);*/
+
+ } else {
+ // if not admin, ignore this wikitty, this user has no right to modify rights
+ wikittiesToStore.remove(wikitty);
+ }
+ }
+ } else {
+
+ if (oldVersion == null) {
+ // it's a creation
+
+ // check that **reader** right on Security for all extension
+ } else {
+ // it's an update
+ for (WikittyExtension extension : wikitty.getExtensions()) {
+
+ Wikitty extensionRights = restoreExtensionAuthorisation(securityToken, extension);
+
+ if (extensionRights != null) {
+ if ( ! canWrite(securityToken, userId, extensionRights)) {
+
+ for (String fieldName : extension.getFieldNames()) {
+ if (oldVersion == null) {
+ wikitty.setField(extension.getName(), fieldName, null);
+ } else {
+ Object oldValue = oldVersion.getFieldAsObject(extension.getName(), fieldName);
+ wikitty.setField(extension.getName(), fieldName, oldValue);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
+ UpdateResponse result = ws.store(securityToken, wikittiesToStore, disableAutoVersionIncrement);
return result;
}
@Override
- public boolean canDelete(String securityToken, String wikittyId) {
- boolean result = false;
+ public UpdateResponse store(String securityToken, WikittyTransaction transaction, Collection<Wikitty> wikitties, boolean disableAutoVersionIncrement) {
+ // FIXME 20100825 bleny implement it without copy/paste code
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Wikitty restore(String securityToken, String id) {
+ List<String> ids = Arrays.asList(id);
+ List<Wikitty> wikitties = restore(securityToken, ids);
+ Wikitty wikitty = null;
+ if (! wikitties.isEmpty()) {
+ wikitty = wikitties.get(0);
+ }
+ return wikitty;
+ }
- //
- // check security
- //
+ @Override
+ public List<Wikitty> restore(String securityToken, List<String> ids) {
+ List<Wikitty> wikitties = new ArrayList<Wikitty>();
+ for (String id : ids) {
+ // do it first, will throw an exception if security token is invalid
- // recuperation de l'ancienne version de l'objet pour verifier les droits
- Wikitty oldVersion = ws.restore(securityToken, wikittyId);
- if (oldVersion == null) {
- // l'objet n'existe pas donc la suppression retourne true
- result = true;
- } else {
- // suppresion d'une entity existante
String userId = getUserId(securityToken);
- // si c'est le owner il a tous les droits, a defaut les admins
- // peuvent aussi le supprimer
- result =
- // owner et admin peuvent tout modifier
- isOwner(securityToken, userId, oldVersion)
- || isAppAdmin(securityToken, userId)
- || isAdmin(securityToken, userId, oldVersion);
+ Wikitty wikitty = ws.restore(securityToken, id);
+ if (wikitty != null) {
+ // FIXME 20100827 bleny copy on write is done because setting some field to null below modify stored wikitty if WikittyServiceInMemory is used
+ wikitty = new WikittyCopyOnWrite(wikitty);
+
+ for (WikittyExtension extension : wikitty.getExtensions()) {
+ Wikitty extensionRights = restoreExtensionAuthorisation(securityToken, extension);
+
+ // field of extension can be read if no policy attached
+ // if a policy is attached, check that user has right to read
+ boolean canRead = extensionRights == null || canRead(securityToken, userId, extensionRights);
+ if ( ! canRead) {
+ for (String fieldName : extension.getFieldNames()) {
+ wikitty.setField(extension.getName(), fieldName, null);
+ }
+ }
+ }
+ wikitties.add(wikitty);
+ }
}
- return result;
+ return wikitties;
}
+
+ @Override
+ public List<Wikitty> restore(String securityToken, WikittyTransaction transaction, List<String> ids) {
+ throw new UnsupportedOperationException();
+ // ws.restore(securityToken, transaction, ids);
+ }
@Override
- public boolean canRead(String securityToken, String wikittyId) {
- // recuperation de l'utilisateur associe au securityToken
- Wikitty securityTokenWikitty = ws.restore(securityToken, securityToken);
- String userId = SecurityTokenHelper.getUser(securityTokenWikitty);
-
- //
- // check security
- //
-
- // recuperation de l'objet pour verifier les droits
- Wikitty w = ws.restore(securityToken, wikittyId);
- boolean result = isReader(securityToken, userId, w)
- || isOwner(securityToken, userId, w)
- || isAppAdmin(securityToken, userId)
- || isAdmin(securityToken, userId, w)
- || isWriter(securityToken, userId, w);
- return result;
+ public void delete(String securityToken, String id) {
+ Collection<String> ids = Arrays.asList(id);
+ delete(securityToken, ids);
}
@Override
- public UpdateResponse store(String securityToken, Wikitty wikitty) {
- if (canWrite(securityToken, wikitty)) {
- prepareWrite(securityToken, wikitty);
- UpdateResponse result = ws.store(securityToken, wikitty);
- return result;
- } else {
- throw new SecurityException(_("user %s can't modify object %s",
- getUserId(securityToken), wikitty.getId()));
- }
+ public void delete(String securityToken, Collection<String> ids) {
+ List<String> idsAsList = new ArrayList<String>(ids);
+ secureDelete(securityToken, idsAsList);
}
- @Override
- public UpdateResponse store(String securityToken, Collection<Wikitty> wikitties) {
- for (Wikitty w : wikitties) {
- if (!canWrite(securityToken, w)) {
- throw new SecurityException(_("user %s can't modify object %s",
- getUserId(securityToken), w.getId()));
+ protected void secureDelete(String securityToken, List<String> ids) {
+ String userId = getUserId(securityToken);
+
+ List<Wikitty> wikitties = ws.restore(securityToken, ids);
+ List<String> idsToRemove = new ArrayList<String>();
+
+ for (Wikitty wikitty : wikitties) {
+ if ( canDelete(securityToken, userId, wikitty)) {
+ idsToRemove.add(wikitty.getId());
}
}
- for (Wikitty w : wikitties) {
- prepareWrite(securityToken, w);
- }
- UpdateResponse result = ws.store(securityToken, wikitties);
- return result;
+
+ ws.delete(securityToken, idsToRemove);
}
@Override
- public UpdateResponse store(String securityToken, Collection<Wikitty> wikitties, boolean disableAutoVersionIncrement) {
- for (Wikitty w : wikitties) {
- if (!canWrite(securityToken, w)) {
- throw new SecurityException(_("user %s can't modify object %s",
- getUserId(securityToken), w.getId()));
- }
- }
- for (Wikitty w : wikitties) {
- prepareWrite(securityToken, w);
- }
- UpdateResponse result = ws.store(securityToken, wikitties, disableAutoVersionIncrement);
- return result;
+ @Deprecated
+ public boolean canWrite(String securityToken, Wikitty wikitty) {
+ throw new UnsupportedOperationException();
}
@Override
- public UpdateResponse store(String securityToken, WikittyTransaction transaction,
- Collection<Wikitty> wikitties, boolean disableAutoVersionIncrement) {
- for (Wikitty w : wikitties) {
- if (!canWrite(securityToken, w)) {
- throw new SecurityException(_("user %s can't modify object %s",
- getUserId(securityToken), w.getId()));
- }
- }
- for (Wikitty w : wikitties) {
- // preparation des wikitty pour la sauvegarde
- // - ajout extension d'autorisation si necessaire
- prepareWrite(securityToken, w);
- }
- UpdateResponse result = ws.store(securityToken, transaction, wikitties,
- disableAutoVersionIncrement);
- return result;
- }
+ @Deprecated
+ public boolean canDelete(String securityToken, String wikittyId) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ @Deprecated
+ public boolean canRead(String securityToken, String wikittyId) {
+ throw new UnsupportedOperationException();
+ }
@Override
public List<String> getAllExtensionIds(String securityToken) {
@@ -279,8 +492,8 @@
@Override
public UpdateResponse storeExtension(
String securityToken, WikittyExtension ext) {
- // TODO poussin 20100607 check security, mais qui a le droit ?
- return ws.storeExtension(securityToken, ext);
+ Collection<WikittyExtension> exts = Arrays.asList(ext);
+ return storeExtension(securityToken, exts);
}
@Override
@@ -293,8 +506,12 @@
@Override
public UpdateResponse storeExtension(String securityToken,
WikittyTransaction transaction, Collection<WikittyExtension> exts) {
- // TODO poussin 20100607 check security, mais qui a le droit ?
- return ws.storeExtension(securityToken, transaction, exts);
+ String userId = getUserId(securityToken);
+ UpdateResponse response = null;
+ if (isAppAdmin(securityToken, userId)) {
+ response = ws.storeExtension(securityToken, transaction, exts);
+ }
+ return response;
}
@Override
@@ -325,75 +542,6 @@
}
@Override
- public Wikitty restore(String securityToken, String id) {
- Wikitty result = null;
- if (canRead(securityToken, id)) {
- result = ws.restore(securityToken, id);
- } else {
- if (log.isDebugEnabled()) {
- log.debug(_("user %s can't read object %s",
- getUserId(securityToken), id));
- }
- }
- return result;
- }
-
- @Override
- public List<Wikitty> restore(String securityToken, List<String> ids) {
- List<String> authorizedIds = new LinkedList<String>(ids);
- for (Iterator<String> i=authorizedIds.iterator(); i.hasNext();) {
- String id = i.next();
- if (!canRead(securityToken, id)) {
- if (log.isDebugEnabled()) {
- log.debug(_(
- "user %s can't read object %s, remove it in restore list",
- getUserId(securityToken), id));
- }
- i.remove();
- }
- }
-
- return ws.restore(securityToken, authorizedIds);
- }
-
- @Override
- public List<Wikitty> restore(String securityToken, WikittyTransaction transaction, List<String> ids) {
- List<String> authorizedIds = new LinkedList<String>(ids);
- for (Iterator<String> i=authorizedIds.iterator(); i.hasNext();) {
- String id = i.next();
- if (!canRead(securityToken, id)) {
- if (log.isDebugEnabled()) {
- log.debug(_(
- "user %s can't read object %s, remove it in restore list",
- getUserId(securityToken), id));
- }
- i.remove();
- }
- }
-
- return ws.restore(securityToken, transaction, authorizedIds);
- }
-
- @Override
- public void delete(String securityToken, String id) {
- if (canDelete(securityToken, id)) {
- ws.delete(securityToken, id);
- }
- }
-
- @Override
- public void delete(String securityToken, Collection<String> ids) {
- for (String id : ids) {
- if (!canDelete(securityToken, id)) {
- throw new SecurityException(_("user %s can't delete object %s",
- getUserId(securityToken), id));
- }
- }
-
- ws.delete(securityToken, ids);
- }
-
- @Override
public PagedResult<String> findAllByCriteria(String securityToken, Criteria criteria) {
// All people can read PagedResult that contains only id
PagedResult<String> result = ws.findAllByCriteria(securityToken, criteria);
@@ -488,7 +636,7 @@
// seul les AppAdmin on le droit a cette method
return ws.syncEngin(securityToken);
} else {
- throw new SecurityException(_("user %s can't sync sear engine",
+ throw new SecurityException(_("user %s can't sync search engine",
getUserId(securityToken)));
}
}
@@ -522,56 +670,71 @@
// recuperation de l'utilisateur associe au securityToken
// le securityToken est aussi l'id de l'objet
Wikitty securityTokenWikitty = ws.restore(securityToken, securityToken);
- if (securityTokenWikitty != null) {
+ if (securityTokenWikitty == null) {
+ throw new SecurityException(_("trying to use an invalidate security token %s", securityToken));
+ } else {
result = SecurityTokenHelper.getUser(securityTokenWikitty);
}
return result;
}
-
/**
- * Verifie que l'utilisateur est bien le proprietaire de l'objet
+ * verifie que l'utilisateur est dans la liste des admin
*
* @param userId
* @param w
- * @return
+ * @return vrai si et seulement si l'utilisateur est dans la liste des
+ * admin
*/
- protected boolean isOwner(String securityToken, String userId, Wikitty w) {
- boolean result = false;
- if (WikittyAuthorisationHelper.isExtension(w)) {
- String owner = WikittyAuthorisationHelper.getOwner(w);
- result = userId.equals(owner);
- }
+ protected boolean isAdmin(String securityToken, String userId, Wikitty extensionRights) {
+ boolean result = isMember(
+ securityToken, userId, extensionRights, WikittyAuthorisation.FIELD_WIKITTYAUTHORISATION_ADMIN);
return result;
}
/**
- * verifie que l'utilisateur est dans la liste des admin
+ * verifie que l'utilisateur est dans la liste des writer
*
* @param userId
* @param w
* @return vrai si et seulement si l'utilisateur est dans la liste des
- * admin
+ * writers
*/
- protected boolean isAdmin(String securityToken, String userId, Wikitty w) {
+ protected boolean isWriter(String securityToken, String userId, Wikitty extensionRights) {
boolean result = isMember(
- securityToken, userId, w, WikittyAuthorisation.FIELD_WIKITTYAUTHORISATION_ADMIN);
+ securityToken, userId, extensionRights, WikittyAuthorisation.FIELD_WIKITTYAUTHORISATION_WRITER);
return result;
}
/**
- * verifie que l'utilisateur est dans la liste des writer
+ * Verifie que l'utilisateur est bien le proprietaire de l'objet
*
* @param userId
* @param w
- * @return vrai si et seulement si l'utilisateur est dans la liste des
- * writers
+ * @return
*/
- protected boolean isWriter(String securityToken, String userId, Wikitty w) {
- boolean result = isMember(
- securityToken, userId, w, WikittyAuthorisation.FIELD_WIKITTYAUTHORISATION_WRITER);
+ protected boolean isOwner(String securityToken, String userId, Wikitty extensionRights) {
+ String owner = WikittyAuthorisationHelper.getOwner(extensionRights);
+ boolean result = userId.equals(owner);
return result;
}
+
+ protected boolean isMember(String securityToken, String userId, Wikitty extensionRights, String fieldName) {
+ Set<String> groupOrUser = extensionRights.getFieldAsSet(
+ WikittyAuthorisation.EXT_WIKITTYAUTHORISATION,
+ fieldName,
+ String.class);
+ boolean result = isMember(securityToken, userId, groupOrUser);
+ if (!result) {
+ // user don't have right on current object, check parent right
+ String parentId = WikittyAuthorisationHelper.getParent(extensionRights);
+ if (parentId != null) {
+ Wikitty parent = ws.restore(securityToken, parentId);
+ result = isMember(securityToken, userId, parent, fieldName);
+ }
+ }
+ return result;
+ }
/**
* Par defaut un objet est lisible par tous, sauf s'il a l'extension
@@ -611,6 +774,13 @@
* @return
*/
protected boolean isAppAdmin(String securityToken, String userId) {
+ Wikitty group = getAppAdminGroup(securityToken);
+ Set<String> ids = WikittyGroupHelper.getMembers(group);
+ boolean result = isMember(securityToken, userId, ids);
+ return result;
+ }
+
+ protected Wikitty getAppAdminGroup(String securityToken) {
Wikitty group;
if (appAdminGroupId == null) {
// 1er fois, on le recherche
@@ -623,48 +793,19 @@
group = ws.restore(securityToken, appAdminGroupId);
// group peut-etre null, si entre temps un admin a supprime le group
}
+
if (group == null) {
// il n'existe pas on le cree.
- WikittyGroup appAdminGroup = new WikittyGroupImpl();
+ WikittyGroupAbstract appAdminGroup = new WikittyGroupImpl();
appAdminGroup.setName(WIKITTY_APPADMIN_GROUP_NAME);
- }
- // on garde l'id pour ne plus faire la recherche,
- // vu que le groupe doit etre unique cela ne pose pas de probleme
- appAdminGroupId = group.getId();
+ ws.store(securityToken, appAdminGroup.getWikitty());
+ group = appAdminGroup.getWikitty();
- Set<String> ids = WikittyGroupHelper.getMembers(group);
- boolean result = isMember(securityToken, userId, ids);
- return result;
- }
-
- /**
- * verifie qu'un utilisateur est membre d'un groupe passe en parametre via
- * l'arguement field
- *
- * @param userId
- * @param w
- * @param field must be WikittyAuthorisation field name: admin, writer, reader
- * @return
- */
- protected boolean isMember(
- String securityToken, String userId, Wikitty w, String field) {
- boolean result = false;
- if (WikittyAuthorisationHelper.isExtension(w)) {
- Set<String> groupOrUser = w.getFieldAsSet(
- WikittyAuthorisation.EXT_WIKITTYAUTHORISATION,
- field,
- String.class);
- result = isMember(securityToken, userId, groupOrUser);
- if (!result) {
- // user don't have right on current object, check parent right
- String parentId = WikittyAuthorisationHelper.getParent(w);
- if (parentId != null) {
- Wikitty parent = ws.restore(securityToken, parentId);
- result = isMember(securityToken, userId, parent, field);
- }
- }
+ // on garde l'id pour ne plus faire la recherche,
+ // vu que le groupe doit etre unique cela ne pose pas de probleme
+ appAdminGroupId = group.getId();
}
- return result;
+ return group;
}
/**
@@ -677,26 +818,20 @@
*/
protected boolean isMember(
String securityToken, String userId, Set<String> groupOrUser) {
- boolean result = false;
if (groupOrUser != null) {
for (String id : groupOrUser) {
if (userId.equals(id)) {
- result = true;
- break;
+ return true;
} else {
- Wikitty w = ws.restore(securityToken, id);
- if (WikittyGroupHelper.isExtension(w)) {
- Set<String> members = WikittyGroupHelper.getMembers(w);
- if (isMember(securityToken, userId, members)) {
- result = true;
- break;
- }
+ Wikitty groupWikitty = ws.restore(securityToken, id);
+ if (WikittyGroupHelper.isExtension(groupWikitty)) {
+ Set<String> members = WikittyGroupHelper.getMembers(groupWikitty);
+ return isMember(securityToken, userId, members);
}
}
}
}
- // not found in groupOrUser
- return result;
+ return false; // not found in groupOrUser
}
}
Modified: branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-08-27 15:13:40 UTC (rev 275)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-08-27 15:16:41 UTC (rev 276)
@@ -774,7 +774,7 @@
*
* @return SecurityToken that can be used like wikitty id
*/
- static public String genSecurityToken() {
+ static public String genSecurityTokenId() {
String result = "_" + Math.abs(Math.random());
result.replace(".", ""); // on supprime le '.' dans le nombre aleatoire
result = genUID() + result;
Added: branches/wikitty-eugene-migration/wikitty-api/src/test/java/org/nuiton/wikitty/layers/AbstractWikittyServiceTest.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/test/java/org/nuiton/wikitty/layers/AbstractWikittyServiceTest.java (rev 0)
+++ branches/wikitty-eugene-migration/wikitty-api/src/test/java/org/nuiton/wikitty/layers/AbstractWikittyServiceTest.java 2010-08-27 15:16:41 UTC (rev 276)
@@ -0,0 +1,40 @@
+package org.nuiton.wikitty.layers;
+
+import org.junit.Before;
+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.WikittyService;
+
+public class AbstractWikittyServiceTest {
+
+ /** a wikitty service (in memory) with a cache */
+ protected WikittyService service;
+
+ protected static final String EXT_NAME = "myextension";
+ protected static final String FIELD_NAME = "myfield";
+ protected static final String VALUE = "myvalue";
+
+ /** an extension */
+ protected WikittyExtension extension;
+
+ /** a wikitty with extension */
+ protected Wikitty aWikitty;
+
+ protected String token;
+
+ /** create a service, an extension, a wikitty, login, and store wikitty */
+ @Before
+ public void setUp() throws Exception {
+
+ extension = ExtensionFactory.create(EXT_NAME, "1")
+ .addField(FIELD_NAME, TYPE.STRING)
+ .extension();
+ aWikitty = new WikittyImpl();
+ aWikitty.addExtension(extension);
+ aWikitty.setField(EXT_NAME, FIELD_NAME, VALUE);
+ }
+
+}
Modified: branches/wikitty-eugene-migration/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/test/java/org/nuiton/wikitty/cache/WikittyServiceCachedTest.java 2010-08-18 15:40:40 UTC (rev 269)
+++ branches/wikitty-eugene-migration/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceCachedTest.java 2010-08-27 15:16:41 UTC (rev 276)
@@ -1,9 +1,7 @@
-package org.nuiton.wikitty.cache;
+package org.nuiton.wikitty.layers;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
@@ -11,43 +9,15 @@
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.WikittyService;
import org.nuiton.wikitty.WikittyServiceCached;
import org.nuiton.wikitty.WikittyServiceInMemory;
-/** check that the cache */
-public class WikittyServiceCachedTest {
-
- /** a wikitty service (in memory) with a cache */
- protected WikittyService service;
-
- protected static final String EXT_NAME = "myextension";
- protected static final String FIELD_NAME = "myfield";
-
- /** an extension */
- protected WikittyExtension extension;
-
- /** a wikitty with extension */
- protected Wikitty aWikitty;
-
- protected String token;
+/** test {@link WikittyServiceCached} */
+public class WikittyServiceCachedTest extends AbstractWikittyServiceTest {
- /** create a service, an extension, a wikitty, login, and store wikitty */
@Before
- public void setUp() throws Exception {
-
- extension = ExtensionFactory.create(EXT_NAME, "1")
- .addField(FIELD_NAME, TYPE.STRING)
- .extension();
- aWikitty = new WikittyImpl();
- aWikitty.addExtension(extension);
- aWikitty.setField(EXT_NAME, FIELD_NAME, "myvalue");
-
+ public void setUpWikittyServiceCachedTest() {
service = new WikittyServiceCached(new WikittyServiceInMemory());
token = service.login(null, null);
service.store(token, aWikitty);
Added: branches/wikitty-eugene-migration/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java (rev 0)
+++ branches/wikitty-eugene-migration/wikitty-api/src/test/java/org/nuiton/wikitty/layers/WikittyServiceSecurityTest.java 2010-08-27 15:16:41 UTC (rev 276)
@@ -0,0 +1,173 @@
+package org.nuiton.wikitty.layers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.nuiton.wikitty.TreeNodeAbstract;
+import org.nuiton.wikitty.Wikitty;
+import org.nuiton.wikitty.WikittyAuthorisation;
+import org.nuiton.wikitty.WikittyAuthorisationHelper;
+import org.nuiton.wikitty.WikittyService;
+import org.nuiton.wikitty.WikittyServiceInMemory;
+import org.nuiton.wikitty.WikittyServiceSecurity;
+
+/** test {@link org.nuiton.wikitty.WikittyServiceSecurity} */
+public class WikittyServiceSecurityTest extends AbstractWikittyServiceTest {
+
+ protected static final String APPADMIN_LOGIN = WikittyServiceSecurity.APPADMIN_LOGIN;
+ protected static final String APPADMIN_PASSWORD = WikittyServiceSecurity.APPADMIN_PASSWORD;
+
+ protected WikittyServiceSecurity securityService;
+
+ protected String noRightsToken;
+ protected String readerToken;
+ protected String writerToken;
+ protected String adminToken;
+ protected String ownerToken;
+
+ @Before
+ public void setUpWikittyServiceSecurityTest() {
+ WikittyService inMemoryService = new WikittyServiceInMemory();
+
+ securityService = new WikittyServiceSecurity(inMemoryService);
+
+ service = securityService;
+
+ token = service.login(APPADMIN_LOGIN, APPADMIN_PASSWORD);
+
+ securityService.createAccount(token, "i have no rights", "");
+ securityService.createAccount(token, "reader", "");
+ securityService.createAccount(token, "writer", "");
+ securityService.createAccount(token, "admin", "");
+ securityService.createAccount(token, "owner", "");
+
+
+ Wikitty authorizations = securityService.addWikittyAuthorisation(token, extension);
+ WikittyAuthorisationHelper.addReader(authorizations, securityService.getUserWikittyId(token, "reader"));
+ WikittyAuthorisationHelper.addWriter(authorizations, securityService.getUserWikittyId(token, "writer"));
+ WikittyAuthorisationHelper.addAdmin(authorizations, securityService.getUserWikittyId(token, "admin"));
+ WikittyAuthorisationHelper.setOwner(authorizations, securityService.getUserWikittyId(token, "owner"));
+ service.store(token, authorizations);
+
+ service.logout(token);
+ token = null;
+
+ noRightsToken = service.login("i have no rights", "");
+ readerToken = service.login("reader", "");
+ writerToken = service.login("writer", "");
+ adminToken = service.login("admin", "");
+ ownerToken = service.login("owner", "");
+ }
+
+ @Test
+ public void testInvalidToken() {
+ // try to store with invalid token
+ String invalidToken = "INVALID TOKEN";
+ try {
+ service.store(invalidToken, aWikitty);
+ fail();
+ } catch (SecurityException e) {}
+
+ // now storing the wikitty for next tests
+ token = service.login(APPADMIN_LOGIN, APPADMIN_PASSWORD);
+ service.store(token, aWikitty);
+
+ // try to make operations on the stored wikitty with a bad token
+ try {
+ service.restore(invalidToken, aWikitty.getId());
+ fail();
+ } catch (SecurityException e) {}
+
+// try {
+// service.canRead(invalidToken, aWikitty.getId());
+// fail();
+// } catch (SecurityException e) {}
+//
+// try {
+// service.canWrite(invalidToken, aWikitty);
+// fail();
+// } catch (SecurityException e) {}
+//
+// try {
+// service.canDelete(invalidToken, aWikitty.getId());
+// fail();
+// } catch (SecurityException e) {}
+
+ try {
+ service.logout(invalidToken);
+ fail();
+ } catch (SecurityException e) {}
+
+ // now try to make a valid token invalid
+ service.logout(token);
+ try {
+ service.store(token, aWikitty);
+ fail();
+ } catch (SecurityException e) {}
+ }
+
+ /*@Test*/
+ public void testAppAdmin() {
+ token = service.login(APPADMIN_LOGIN, APPADMIN_PASSWORD);
+ assertTrue(service.canWrite(token, aWikitty));
+ service.store(token, aWikitty);
+ assertTrue(service.canRead(token, aWikitty.getId()));
+ assertTrue(service.canDelete(token, aWikitty.getId()));
+ }
+
+ @Test
+ public void addPolicyOnExtension() {
+
+ service.store(ownerToken, aWikitty);
+ String aWikittyId = aWikitty.getId();
+ aWikitty = null;
+
+ // check that people who have the right can read
+ assertNull(service.restore(noRightsToken, aWikittyId)
+ .getFieldAsString(EXT_NAME, FIELD_NAME));
+ assertEquals(VALUE, service.restore(readerToken, aWikittyId)
+ .getFieldAsString(EXT_NAME, FIELD_NAME));
+ assertEquals(VALUE, service.restore(writerToken, aWikittyId)
+ .getFieldAsString(EXT_NAME, FIELD_NAME));
+
+ // check that people who have the right can write
+ aWikitty = service.restore(readerToken, aWikittyId);
+ aWikitty.setField(EXT_NAME, FIELD_NAME, VALUE + VALUE);
+ service.store(writerToken, aWikitty);
+ assertEquals(VALUE + VALUE, service.restore(readerToken, aWikittyId)
+ .getFieldAsString(EXT_NAME, FIELD_NAME));
+
+ // now check that reader can't write
+ aWikitty = service.restore(readerToken, aWikittyId);
+ aWikitty.setField(EXT_NAME, FIELD_NAME, VALUE);
+ // this store should not update field value (only reader access)
+ service.store(readerToken, aWikitty);
+ // check that field value remains the same after as before the store call
+ assertEquals(VALUE + VALUE, service.restore(readerToken, aWikittyId)
+ .getFieldAsString(EXT_NAME, FIELD_NAME));
+ }
+
+ @Test
+ public void testAdmin() {
+
+ // FIXME 20108027 assertions missing, test fail
+
+ Wikitty extensionAuthorisation = securityService.restoreExtensionAuthorisation(adminToken, extension);
+
+ System.out.println("before " + extensionAuthorisation);
+
+ WikittyAuthorisationHelper.clearReader(extensionAuthorisation);
+ WikittyAuthorisationHelper.clearWriter(extensionAuthorisation);
+ WikittyAuthorisationHelper.addWriter(extensionAuthorisation, "ID1"); // securityService.getUserWikittyId(adminToken, "admin"));
+ WikittyAuthorisationHelper.setOwner(extensionAuthorisation, "ID2"); // securityService.getUserWikittyId(adminToken, "admin"));
+
+ service.store(adminToken, extensionAuthorisation);
+
+ System.out.println("after " + service.restore(adminToken, extensionAuthorisation.getId()));
+ }
+
+}
Modified: branches/wikitty-eugene-migration/wikitty-api/src/test/resources/log4j.properties
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/test/resources/log4j.properties 2010-08-27 15:13:40 UTC (rev 275)
+++ branches/wikitty-eugene-migration/wikitty-api/src/test/resources/log4j.properties 2010-08-27 15:16:41 UTC (rev 276)
@@ -1,8 +1,11 @@
# Appender and Layout
log4j.appender.logConsole=org.apache.log4j.ConsoleAppender
log4j.appender.logConsole.layout=org.apache.log4j.PatternLayout
-log4j.appender.logConsole.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
+# log4j.appender.logConsole.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
+log4j.appender.logConsole.layout.ConversionPattern=%d %5p [%t] (%F:%L) %M - %m%n
# Configuration by components
log4j.rootLogger=ERROR, logConsole
-log4j.category.org.nuiton.wikitty=DEBUG
+
+log4j.logger.org.nuiton.wikitty=WARN
+log4j.logger.org.nuiton.wikitty.WikittyServiceSecurity=TRACE
1
0
r275 - branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator
by bleny@users.nuiton.org 27 Aug '10
by bleny@users.nuiton.org 27 Aug '10
27 Aug '10
Author: bleny
Date: 2010-08-27 17:13:40 +0200 (Fri, 27 Aug 2010)
New Revision: 275
Url: http://nuiton.org/repositories/revision/wikitty/275
Log:
add missing import in abstract
Modified:
branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java
Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-08-23 09:48:32 UTC (rev 274)
+++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-08-27 15:13:40 UTC (rev 275)
@@ -353,6 +353,13 @@
// other business entities
for (ObjectModelClass superClass : businessEntity.getSuperclasses()) {
+
+ // if super class is not in the same package, import it Helper
+ if (! businessEntity.getPackageName().equals(superClass.getPackageName())) {
+ addImport(abstractClass, superClass.getPackageName() + "." +
+ WikittyTransformerUtil.businessEntityToHelperName(superClass));
+ }
+
if (WikittyTransformerUtil.isBusinessEntity(superClass)) {
addInterface(abstractClass, WikittyTransformerUtil.businessEntityToContractName(superClass)); // extends
// getting the signatures and bodies of those operations
1
0
r274 - branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator
by bleny@users.nuiton.org 23 Aug '10
by bleny@users.nuiton.org 23 Aug '10
23 Aug '10
Author: bleny
Date: 2010-08-23 11:48:32 +0200 (Mon, 23 Aug 2010)
New Revision: 274
Url: http://nuiton.org/repositories/revision/wikitty/274
Log:
better documentation support ; generating toString #783
Modified:
branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java
branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java
branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java
Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-08-20 08:16:37 UTC (rev 273)
+++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-08-23 09:48:32 UTC (rev 274)
@@ -1,11 +1,12 @@
package org.nuiton.wikitty.generator;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
@@ -15,7 +16,6 @@
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
-import org.nuiton.eugene.models.object.ObjectModelClassifier;
import org.nuiton.eugene.models.object.ObjectModelModifier;
import org.nuiton.eugene.models.object.ObjectModelOperation;
@@ -29,15 +29,25 @@
public class WikittyAbstractGenerator extends ObjectModelTransformerToJava {
private static final Log log = LogFactory.getLog(WikittyAbstractGenerator.class);
+
+ /** map busines entity from source model to generated abstract class */
+ protected Map<ObjectModelClass, ObjectModelClass> processedClasses =
+ new HashMap<ObjectModelClass, ObjectModelClass>();
+ /** pattern to parse toString tagValue
+ * for the string "abc{foo|bar}defrzeg{uvw|xyz}oeira"
+ * will match {foo|bar} and {uvw|xyz} with groups for foo, bar, uvw and xyz
+ */
+ protected Pattern p = Pattern.compile("\\{(([^|}])*)(?:\\|([^}]*))?\\}");
+
+ /** map "Client.name" to "getName()" or any getter to read this attribute */
+ protected Map<String, String> attributeToGetterName = new HashMap<String, String>();
+
@Override
protected Transformer<ObjectModel, ObjectModel> initPreviousTransformer() {
return new WikittyPurifierTransformer();
}
-
- protected Map<ObjectModelClass, ObjectModelClass> processedClasses =
- new HashMap<ObjectModelClass, ObjectModelClass>();
-
+
@Override
public void transformFromModel(ObjectModel model) {
@@ -75,6 +85,7 @@
addImports(abstractClassForThisEntity);
addConstructors(abstractClassForThisEntity);
addConstants(businessEntity, abstractClassForThisEntity);
+ addToString(businessEntity, abstractClassForThisEntity);
}
processedClasses.clear();
@@ -192,7 +203,7 @@
// finishing static block
String extensionVersion = businessEntity.getTagValue("version");
if (extensionVersion == null || "".equals(extensionVersion)) {
- extensionVersion = "0.1";
+ extensionVersion = "1.0";
log.warn("no version specified in model for " + businessEntity.getQualifiedName() + " using " + extensionVersion);
}
@@ -252,7 +263,9 @@
// there is a conflict, purifier transformer give as the right name to use
attributeName = attribute.getTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME);
}
-
+
+ String getterName = null;
+
if (WikittyTransformerUtil.isAttributeCollection(attribute)) {
// attributed is a collection, we will generate operations get, add, remove and clear
@@ -261,7 +274,7 @@
// now, for this attribute, we will generate add, remove and clear methods
// adding operations to contract
- String getterName = "get" + StringUtils.capitalize(attributeName);
+ getterName = "get" + StringUtils.capitalize(attributeName);
ObjectModelOperation getter = addOperation(abstractClass, getterName, attributeTypeSimpleNameInSet);
addAnnotation(abstractClass, getter, "Override");
String getterBody = ""
@@ -308,7 +321,7 @@
String getFieldMethodName = WikittyTransformerUtil.generateGetFieldAsCall(attribute);
// adding getter and setter to contract
- String getterName = "get" + StringUtils.capitalize(attributeName);
+ getterName = "get" + StringUtils.capitalize(attributeName);
ObjectModelOperation getter = addOperation(abstractClass, getterName, attributeType);
addAnnotation(abstractClass, getter, "Override");
setOperationBody(getter, ""
@@ -328,6 +341,9 @@
return oldValue;
}*/);
}
+
+ // save the getter name for this attribute
+ attributeToGetterName.put(businessEntity.getName() + "." + attributeName, getterName);
}
}
}
@@ -351,7 +367,65 @@
addInterface(abstractClass, superClass.getQualifiedName()); // extends
}
}
+ }
+
+ /** add a toString method
+ * if a toString is tagValue is attached to businessEntity, it will be used
+ * to generate a toString as this :
+ *
+ * given "hello {Person.name|unknow}"
+ *
+ * will try to replace first {...} by name field value for extension Person.
+ * if this information is not available, will do unknow.
+ */
+ protected void addToString(ObjectModelClass businessEntity, ObjectModelClass abstractClass) {
+ String toStringOperationBody = null;
+ if (businessEntity.hasTagValue(WikittyTransformerUtil.TAG_TO_STRING)) {
+ String toStringPattern = businessEntity.getTagValue(WikittyTransformerUtil.TAG_TO_STRING);
+
+ // toStringPattern is something like
+ // "hello {Person.name|unknow} employe of {Company.name|unknow}"
+ //
+
+ Matcher matcher = p.matcher(toStringPattern);
+
+ while (matcher.find()) {
+ String wholeMatch = matcher.group(0); // "{foo|bar}"
+ String variableName = matcher.group(1); // "foo"
+ String defaultValue = matcher.group(3); // "bar", may be null
+
+ if (defaultValue == null) {
+ defaultValue = "";
+ }
+
+ if (attributeToGetterName.containsKey(variableName)) {
+ String getterName = attributeToGetterName.get(variableName);
+ toStringPattern = toStringPattern.replace(wholeMatch, ""
+/*{"
+ + <%=getterName%>().toString() +
+ "}*/);
+ } else {
+ log.warn("no field " + variableName + " in " + businessEntity.getQualifiedName());
+ toStringPattern = toStringPattern.replace(wholeMatch, defaultValue);
+ }
+ }
+
+ toStringOperationBody = ""
+/*{
+ return "<%=toStringPattern%>";
+}*/;
+ } else {
+ // no toString tagValue provided, generating a default toString
+ toStringOperationBody = ""
+/*{
+ return getWikitty().toString();
+}*/;
+ }
+
+ ObjectModelOperation toString = addOperation(abstractClass, "toString", "String");
+ addAnnotation(abstractClass, toString, "Override");
+ setOperationBody(toString, toStringOperationBody);
}
}
Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2010-08-20 08:16:37 UTC (rev 273)
+++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2010-08-23 09:48:32 UTC (rev 274)
@@ -1,9 +1,7 @@
package org.nuiton.wikitty.generator;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
@@ -14,11 +12,9 @@
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
-import org.nuiton.eugene.models.object.ObjectModelClassifier;
import org.nuiton.eugene.models.object.ObjectModelInterface;
import org.nuiton.eugene.models.object.ObjectModelModifier;
import org.nuiton.eugene.models.object.ObjectModelOperation;
-import org.nuiton.util.StringUtil;
/*{generator option: writeString = }*/
/*{generator option: parentheses = false}*/
@@ -81,7 +77,12 @@
addImport(contract, java.util.Date.class);
addImport(contract, java.util.LinkedHashSet.class);
- setDocumentation(contract, businessEntity.getDocumentation());
+ String documentation = businessEntity.getDocumentation();
+ if (businessEntity.hasTagValue(WikittyTransformerUtil.TAG_DOCUMENTATION)) {
+ documentation += "\n\n";
+ documentation += businessEntity.getTagValue(WikittyTransformerUtil.TAG_DOCUMENTATION);
+ }
+ setDocumentation(contract, documentation);
// adding public static final String EXT_CLIENT = "Client";
addConstant(contract,
@@ -168,7 +169,7 @@
for (ObjectModelClass superClass : superClasses) {
addInterface(contract, superClass.getQualifiedName()); // extends ?
if (WikittyTransformerUtil.isBusinessEntity(superClass)) {
- // superclass must have benn processed first to have its operations set
+ // superclass must have been processed first to have its operations set
if (! processedClasses.containsKey(superClass)) {
processEntity(superClass);
}
Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java 2010-08-20 08:16:37 UTC (rev 273)
+++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java 2010-08-23 09:48:32 UTC (rev 274)
@@ -19,6 +19,8 @@
protected static final String TAG_VERSION = "version";
protected static final String TAG_ALTERNATIVE_NAME = "alternativeName";
+ protected static final String TAG_TO_STRING = "toString";
+ protected static final String TAG_DOCUMENTATION = "documentation";
/** @deprecated name change : see ticket #798. use BUSINESS_ENTITY_STEREOTYPE_NAME */
@Deprecated
1
0
r273 - branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty
by bleny@users.nuiton.org 20 Aug '10
by bleny@users.nuiton.org 20 Aug '10
20 Aug '10
Author: bleny
Date: 2010-08-20 10:16:37 +0200 (Fri, 20 Aug 2010)
New Revision: 273
Url: http://nuiton.org/repositories/revision/wikitty/273
Log:
fixing a bug in removeFromField that make solr TreeTest fail
Modified:
branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java
Modified: branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java 2010-08-18 16:23:37 UTC (rev 272)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyImpl.java 2010-08-20 08:16:37 UTC (rev 273)
@@ -640,7 +640,7 @@
} else {
if (col.remove(value)) {
// field is dirty only if remove is done
- setFieldDirty(ext, fieldName, null, col);
+ setField(ext, fieldName, col); // no call dirty, because already done in setField
}
}
}
1
0
r272 - branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty
by bleny@users.nuiton.org 18 Aug '10
by bleny@users.nuiton.org 18 Aug '10
18 Aug '10
Author: bleny
Date: 2010-08-18 18:23:37 +0200 (Wed, 18 Aug 2010)
New Revision: 272
Url: http://nuiton.org/repositories/revision/wikitty/272
Log:
fixing transformers modification impacts (equals is no longer in Abstract but in Helper)
Modified:
branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java
Modified: branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java 2010-08-18 16:18:44 UTC (rev 271)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java 2010-08-18 16:23:37 UTC (rev 272)
@@ -148,7 +148,7 @@
|| isAppAdmin(securityToken, userId)
|| isAdmin(securityToken, userId, oldVersion)
// un writer ne peut pas modifier l'extension d'autorisation
- || (WikittyAuthorisationAbstract.equals(oldVersion, wikitty)
+ || (WikittyAuthorisationHelper.equals(oldVersion, wikitty)
&& isWriter(securityToken, userId, oldVersion));
}
return result;
1
0
r271 - branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator
by bleny@users.nuiton.org 18 Aug '10
by bleny@users.nuiton.org 18 Aug '10
18 Aug '10
Author: bleny
Date: 2010-08-18 18:18:44 +0200 (Wed, 18 Aug 2010)
New Revision: 271
Url: http://nuiton.org/repositories/revision/wikitty/271
Log:
adding missing methods in helpers (equals, hasExtension, addExtension), centralizing generation of classses names in util
Modified:
branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java
branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java
branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java
branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java
branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java
Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-08-18 15:56:12 UTC (rev 270)
+++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-08-18 16:18:44 UTC (rev 271)
@@ -52,7 +52,8 @@
for (ObjectModelClass businessEntity : modelBusinessEntities) {
- ObjectModelClass abstractClass = createAbstractClass(businessEntity.getName() + "Abstract", businessEntity.getPackageName());
+ ObjectModelClass abstractClass = createAbstractClass(WikittyTransformerUtil.businessEntityToAbstractName(businessEntity),
+ businessEntity.getPackageName());
processedClasses.put(businessEntity, abstractClass);
setSuperClass(abstractClass, "BusinessEntityWikitty");
addInterface(abstractClass, businessEntity.getQualifiedName());
@@ -237,7 +238,7 @@
protected void addOperations(ObjectModelClass businessEntity, ObjectModelClass abstractClass) {
String extensionVariableName = WikittyTransformerUtil.classToExtensionVariableName(businessEntity, true);
- String helperClassName = businessEntity.getName() + "Helper";
+ String helperClassName = WikittyTransformerUtil.businessEntityToHelperName(businessEntity);
// generating operations with bodies to realize contract
for (ObjectModelAttribute attribute : businessEntity.getAttributes()) {
@@ -336,9 +337,8 @@
// other business entities
for (ObjectModelClass superClass : businessEntity.getSuperclasses()) {
- addInterface(abstractClass, superClass.getQualifiedName()); // extends ?
- // setSuperClass(abstractClass, superClass.getQualifiedName() + "Impl");
if (WikittyTransformerUtil.isBusinessEntity(superClass)) {
+ addInterface(abstractClass, WikittyTransformerUtil.businessEntityToContractName(superClass)); // extends
// getting the signatures and bodies of those operations
for (ObjectModelOperation operation : processedClasses.get(superClass).getOperations()) {
@@ -347,6 +347,8 @@
// XXX 20100816 bleny should be a call to cloneOperation(operation, abstractClass, true);
}
+ } else {
+ addInterface(abstractClass, superClass.getQualifiedName()); // extends
}
}
Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2010-08-18 15:56:12 UTC (rev 270)
+++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2010-08-18 16:18:44 UTC (rev 271)
@@ -57,7 +57,8 @@
protected void processEntity(ObjectModelClass businessEntity) {
log.info("will process " + businessEntity.getPackageName() + ".." + businessEntity.getName());
- ObjectModelInterface contract = createInterface(businessEntity.getName(), businessEntity.getPackageName());
+ ObjectModelInterface contract = createInterface(WikittyTransformerUtil.businessEntityToContractName(businessEntity),
+ businessEntity.getPackageName());
addInterface(contract, WikittyTransformerUtil.BUSINESS_ENTITY_CLASS_FQN);
// TODO 20100811 bleny remove unused imports
Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java 2010-08-18 15:56:12 UTC (rev 270)
+++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java 2010-08-18 16:18:44 UTC (rev 271)
@@ -23,7 +23,8 @@
return ;
}
- ObjectModelClass helper = createClass(clazz.getName() + "Helper", clazz.getPackageName());
+ ObjectModelClass helper = createClass(WikittyTransformerUtil.businessEntityToHelperName(clazz),
+ clazz.getPackageName());
// TODO 20100811 bleny remove unused imports
addImport(helper, WikittyTransformerUtil.BUSINESS_ENTITY_CLASS_FQN);
@@ -139,5 +140,59 @@
}
}
}
+
+
+ ObjectModelOperation equals = addOperation(helper, "equals", "boolean", ObjectModelModifier.STATIC);
+ addParameter(equals, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "w1");
+ addParameter(equals, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "w2");
+
+ // the body of the equals method, will be assembled while reading attributes
+ String equalsBody = ""
+/*{
+ boolean result = true;
+}*/;
+
+ for(ObjectModelAttribute attribute : clazz.getAttributes()) {
+ if (attribute.isNavigable()) {
+ // two variables needed below
+ String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute, true);
+
+ // considering field in equals body
+ equalsBody += ""
+/*{
+ if (result) {
+ Object f1 = w1.getFieldAsObject(<%= extensionVariableName %>, <%= fieldVariableName %>);
+ Object f2 = w2.getFieldAsObject(<%= extensionVariableName %>, <%= fieldVariableName %>);
+ result = f1 == f2 || (f1 != null && f1.equals(f2));
+ };
+}*/;
+ }
+ }
+
+ // finishing equals body
+ equalsBody += ""
+/*{
+ return result;
+}*/;
+ setOperationBody(equals, equalsBody);
+
+ ObjectModelOperation isExtension = addOperation(helper, "isExtension", "boolean", ObjectModelModifier.STATIC);
+ addParameter(isExtension, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "wikitty");
+ setDocumentation(isExtension, "Check if wikitty has current extension");
+ setOperationBody(isExtension, ""
+/*{
+ return wikitty.hasExtension(<%=extensionVariableName%>);
+}*/);
+
+ ObjectModelOperation addExtension = addOperation(helper, "addExtension", "void", ObjectModelModifier.STATIC);
+ addParameter(addExtension, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "wikitty");
+ setDocumentation(addExtension, "ajout les extensions static de cette classe au wikitty en argument");
+ String contractName = WikittyTransformerUtil.businessEntityToAbstractName(clazz);
+ setOperationBody(addExtension, ""
+/*{
+ for (WikittyExtension ext : <%=contractName%>.extensions) {
+ wikitty.addExtension(ext);
+ }
+}*/);
}
}
Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java 2010-08-18 15:56:12 UTC (rev 270)
+++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java 2010-08-18 16:18:44 UTC (rev 271)
@@ -23,7 +23,8 @@
return ;
}
- ObjectModelClass implementation = createClass(clazz.getName() + "Impl", clazz.getPackageName());
+ ObjectModelClass implementation = createClass(WikittyTransformerUtil.businessEntityToImplementationName(clazz),
+ clazz.getPackageName());
// TODO 20100811 bleny remove unused imports
addImport(implementation, WikittyTransformerUtil.BUSINESS_ENTITY_CLASS_FQN);
@@ -45,7 +46,7 @@
addImport(implementation, java.util.Date.class);
addImport(implementation, java.util.LinkedHashSet.class);
- setSuperClass(implementation, clazz.getQualifiedName() + "Abstract");
+ setSuperClass(implementation, WikittyTransformerUtil.businessEntityToAbstractName(clazz));
// adding constructor
ObjectModelOperation constructor = addConstructor(implementation, ObjectModelModifier.PUBLIC);
Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java 2010-08-18 15:56:12 UTC (rev 270)
+++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java 2010-08-18 16:18:44 UTC (rev 271)
@@ -170,4 +170,20 @@
commonTypes.add("Boolean");
commonTypes.add("Date");
}
+
+ public static String businessEntityToContractName(ObjectModelClass clazz) {
+ return clazz.getName();
+ }
+
+ public static String businessEntityToAbstractName(ObjectModelClass clazz) {
+ return clazz.getName() + "Abstract";
+ }
+
+ public static String businessEntityToImplementationName(ObjectModelClass clazz) {
+ return clazz.getName() + "Impl";
+ }
+
+ public static String businessEntityToHelperName(ObjectModelClass clazz) {
+ return clazz.getName() + "Helper";
+ }
}
1
0
r270 - branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator
by bleny@users.nuiton.org 18 Aug '10
by bleny@users.nuiton.org 18 Aug '10
18 Aug '10
Author: bleny
Date: 2010-08-18 17:56:12 +0200 (Wed, 18 Aug 2010)
New Revision: 270
Url: http://nuiton.org/repositories/revision/wikitty/270
Log:
do not generate from classes that are not stereotyped as business entities
Modified:
branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java
branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java
branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java
branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java
Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-08-18 15:40:40 UTC (rev 269)
+++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-08-18 15:56:12 UTC (rev 270)
@@ -40,25 +40,36 @@
@Override
public void transformFromModel(ObjectModel model) {
- for (ObjectModelClass businessEntity : model.getClasses()) {
+
+ List<ObjectModelClass> modelBusinessEntities = new ArrayList<ObjectModelClass>();
+
+ // fill modelBusinessEntities with entities found in model
+ for (ObjectModelClass clazz : model.getClasses()) {
+ if (WikittyTransformerUtil.isBusinessEntity(clazz)) {
+ modelBusinessEntities.add(clazz);
+ }
+ }
+
+
+ for (ObjectModelClass businessEntity : modelBusinessEntities) {
ObjectModelClass abstractClass = createAbstractClass(businessEntity.getName() + "Abstract", businessEntity.getPackageName());
processedClasses.put(businessEntity, abstractClass);
setSuperClass(abstractClass, "BusinessEntityWikitty");
addInterface(abstractClass, businessEntity.getQualifiedName());
}
- for (ObjectModelClass businessEntity : model.getClasses()) {
+ for (ObjectModelClass businessEntity : modelBusinessEntities) {
addOperations(businessEntity, processedClasses.get(businessEntity));
}
// at this time, all operations in generated abstracts are just the operations
// like get/set etc. we will copy all operations of a given class to all children
// that's why constructors and others operations are not yet added
- for (ObjectModelClass businessEntity : model.getClasses()) {
+ for (ObjectModelClass businessEntity : modelBusinessEntities) {
addInheritedOperations(businessEntity, processedClasses.get(businessEntity));
}
- for (ObjectModelClass businessEntity : model.getClasses()) {
+ for (ObjectModelClass businessEntity : modelBusinessEntities) {
ObjectModelClass abstractClassForThisEntity = processedClasses.get(businessEntity);
addImports(abstractClassForThisEntity);
addConstructors(abstractClassForThisEntity);
Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2010-08-18 15:40:40 UTC (rev 269)
+++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2010-08-18 15:56:12 UTC (rev 270)
@@ -46,16 +46,18 @@
log.info(model.getClasses().size() + " classes to process");
for (ObjectModelClass clazz : model.getClasses()) {
- processClass(clazz);
+ if (WikittyTransformerUtil.isBusinessEntity(clazz)) {
+ processEntity(clazz);
+ }
}
processedClasses.clear();
}
- protected void processClass(ObjectModelClass clazz) {
- log.info("will process " + clazz.getPackageName() + ".." + clazz.getName());
- ObjectModelInterface contract = createInterface(clazz.getName(), clazz.getPackageName());
+ protected void processEntity(ObjectModelClass businessEntity) {
+ log.info("will process " + businessEntity.getPackageName() + ".." + businessEntity.getName());
+ ObjectModelInterface contract = createInterface(businessEntity.getName(), businessEntity.getPackageName());
addInterface(contract, WikittyTransformerUtil.BUSINESS_ENTITY_CLASS_FQN);
// TODO 20100811 bleny remove unused imports
@@ -78,18 +80,18 @@
addImport(contract, java.util.Date.class);
addImport(contract, java.util.LinkedHashSet.class);
- setDocumentation(contract, clazz.getDocumentation());
+ setDocumentation(contract, businessEntity.getDocumentation());
// adding public static final String EXT_CLIENT = "Client";
addConstant(contract,
- "EXT_" + clazz.getName().toUpperCase(),
+ "EXT_" + businessEntity.getName().toUpperCase(),
"String",
- "\"" + clazz.getName() + "\"",
+ "\"" + businessEntity.getName() + "\"",
ObjectModelModifier.PUBLIC);
- String extensionVariableName = WikittyTransformerUtil.classToExtensionVariableName(clazz, false);
+ String extensionVariableName = WikittyTransformerUtil.classToExtensionVariableName(businessEntity, false);
- for(ObjectModelAttribute attribute : clazz.getAttributes()) {
+ for(ObjectModelAttribute attribute : businessEntity.getAttributes()) {
if (attribute.isNavigable()) {
// two variables needed below
String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute, false);
@@ -109,7 +111,7 @@
}
}
- for (ObjectModelAttribute attribute : clazz.getAttributes()) {
+ for (ObjectModelAttribute attribute : businessEntity.getAttributes()) {
if (attribute.isNavigable()) {
// needed below, in templates
String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute, true);
@@ -161,13 +163,13 @@
// now, add to this contract all operation due to inheritence from
// other business entities
- Collection<ObjectModelClass> superClasses = clazz.getSuperclasses();
+ Collection<ObjectModelClass> superClasses = businessEntity.getSuperclasses();
for (ObjectModelClass superClass : superClasses) {
addInterface(contract, superClass.getQualifiedName()); // extends ?
if (WikittyTransformerUtil.isBusinessEntity(superClass)) {
// superclass must have benn processed first to have its operations set
if (! processedClasses.containsKey(superClass)) {
- processClass(superClass);
+ processEntity(superClass);
}
// getting the signatures of thoses operation
@@ -177,6 +179,6 @@
}
}
- processedClasses.put(clazz, contract);
+ processedClasses.put(businessEntity, contract);
}
}
Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java 2010-08-18 15:40:40 UTC (rev 269)
+++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java 2010-08-18 15:56:12 UTC (rev 270)
@@ -18,6 +18,10 @@
@Override
public void transformFromClass(ObjectModelClass clazz) {
+
+ if (! WikittyTransformerUtil.isBusinessEntity(clazz)) {
+ return ;
+ }
ObjectModelClass helper = createClass(clazz.getName() + "Helper", clazz.getPackageName());
Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java 2010-08-18 15:40:40 UTC (rev 269)
+++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java 2010-08-18 15:56:12 UTC (rev 270)
@@ -18,6 +18,11 @@
@Override
public void transformFromClass(ObjectModelClass clazz) {
+
+ if (! WikittyTransformerUtil.isBusinessEntity(clazz)) {
+ return ;
+ }
+
ObjectModelClass implementation = createClass(clazz.getName() + "Impl", clazz.getPackageName());
// TODO 20100811 bleny remove unused imports
1
0
Author: bleny
Date: 2010-08-18 17:40:40 +0200 (Wed, 18 Aug 2010)
New Revision: 269
Url: http://nuiton.org/repositories/revision/wikitty/269
Log:
presentation wikitty v3
Added:
trunk/src/site/schema_wikitty_architecture_client_serveur.svg
Modified:
trunk/src/site/presentation_Wikitty_2010-08-20.odp
trunk/src/site/schema_wikitty_architecture.svg
Modified: trunk/src/site/presentation_Wikitty_2010-08-20.odp
===================================================================
(Binary files differ)
Modified: trunk/src/site/schema_wikitty_architecture.svg
===================================================================
--- trunk/src/site/schema_wikitty_architecture.svg 2010-08-18 14:41:13 UTC (rev 268)
+++ trunk/src/site/schema_wikitty_architecture.svg 2010-08-18 15:40:40 UTC (rev 269)
@@ -10,8 +10,8 @@
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="714.0625"
- height="252.14418"
+ width="378.56122"
+ height="244.17543"
id="svg2"
version="1.1"
inkscape:version="0.47 r22583"
@@ -99,7 +99,7 @@
xlink:href="#linearGradient3934"
id="linearGradient3911"
gradientUnits="userSpaceOnUse"
- gradientTransform="translate(217.00317,33.528902)"
+ gradientTransform="translate(-58.314079,33.528902)"
x1="-15.395237"
y1="1.6637709"
x2="226.55714"
@@ -109,101 +109,51 @@
xlink:href="#linearGradient3940"
id="linearGradient3918"
gradientUnits="userSpaceOnUse"
- gradientTransform="translate(217.00317,66.64888)"
+ gradientTransform="translate(-58.314079,66.64888)"
x1="-15.395237"
y1="1.6637709"
x2="226.55714"
y2="103.30186" />
<linearGradient
inkscape:collect="always"
- xlink:href="#linearGradient3946"
- id="linearGradient3952"
+ xlink:href="#linearGradient4069"
+ id="linearGradient4051"
gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0,99.301587)"
+ gradientTransform="translate(-58.314079,132.88889)"
x1="-15.395237"
y1="1.6637709"
x2="226.55714"
y2="103.30186" />
<linearGradient
inkscape:collect="always"
- xlink:href="#linearGradient3594"
- id="linearGradient4015"
+ xlink:href="#linearGradient4075"
+ id="linearGradient4063"
gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-61.333338,0.40887451)"
+ gradientTransform="translate(45.368461,166.24253)"
x1="-15.395237"
y1="1.6637709"
x2="226.55714"
y2="103.30186" />
<linearGradient
inkscape:collect="always"
- xlink:href="#linearGradient3934"
- id="linearGradient4017"
+ xlink:href="#linearGradient3594"
+ id="linearGradient4081"
gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-61.333338,33.528902)"
+ gradientTransform="translate(217.00317,0.40887451)"
x1="-15.395237"
y1="1.6637709"
x2="226.55714"
y2="103.30186" />
<linearGradient
inkscape:collect="always"
- xlink:href="#linearGradient3940"
- id="linearGradient4019"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-61.333338,66.64888)"
- x1="-15.395237"
- y1="1.6637709"
- x2="226.55714"
- y2="103.30186" />
- <linearGradient
- inkscape:collect="always"
xlink:href="#linearGradient3946"
- id="linearGradient4021"
+ id="linearGradient2913"
gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-278.3365,99.301587)"
+ gradientTransform="translate(-58.314079,99.768872)"
x1="-15.395237"
y1="1.6637709"
x2="226.55714"
y2="103.30186" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3594"
- id="linearGradient4025"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0,-32.711111)"
- x1="-15.395237"
- y1="1.6637709"
- x2="226.55714"
- y2="103.30186" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4069"
- id="linearGradient4051"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(217.00317,132.88889)"
- x1="-15.395237"
- y1="1.6637709"
- x2="226.55714"
- y2="103.30186" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4075"
- id="linearGradient4063"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(320.68571,166.24253)"
- x1="-15.395237"
- y1="1.6637709"
- x2="226.55714"
- y2="103.30186" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3594"
- id="linearGradient4081"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(217.00317,0.40887451)"
- x1="-15.395237"
- y1="1.6637709"
- x2="226.55714"
- y2="103.30186" />
</defs>
<sodipodi:namedview
id="base"
@@ -213,10 +163,10 @@
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.8596728"
- inkscape:cx="345.0223"
- inkscape:cy="122.08773"
+ inkscape:cx="326.93923"
+ inkscape:cy="122.08772"
inkscape:document-units="px"
- inkscape:current-layer="layer2"
+ inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1680"
inkscape:window-height="975"
@@ -231,7 +181,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
+ <dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@@ -239,9 +189,10 @@
inkscape:label="couches"
inkscape:groupmode="layer"
id="layer1"
- transform="translate(247.11814,-10.102128)">
+ transform="translate(247.11814,-18.070878)">
<g
- id="g4040">
+ id="g4040"
+ transform="translate(-275.31725,0)">
<rect
ry="4.9650793"
style="fill:url(#linearGradient4081);fill-opacity:1;stroke:#000000;stroke-opacity:1"
@@ -266,186 +217,79 @@
ry="4.9650793"
style="fill:url(#linearGradient3911);fill-opacity:1;stroke:#000000;stroke-opacity:1"
y="77.103783"
- x="256.13968"
+ x="-19.17757"
height="28.914286"
width="150.12064"
id="rect3641" />
<text
id="text3637"
y="96.274796"
- x="306.32693"
+ x="31.009686"
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:12px"
y="96.274796"
- x="306.32693"
+ x="31.009686"
sodipodi:role="line"
id="tspan3782">Sécurité</tspan></text>
<rect
id="rect3651"
width="150.12064"
height="28.914286"
- x="256.13968"
+ x="-19.17757"
y="110.22376"
style="fill:url(#linearGradient3918);fill-opacity:1;stroke:#000000;stroke-opacity:1"
ry="4.9650793" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="312.50272"
+ x="37.185467"
y="129.15454"
id="text3647"><tspan
sodipodi:role="line"
id="tspan3649"
- x="312.50272"
+ x="37.185467"
y="129.15454"
style="font-size:12px">Cache</tspan></text>
- <g
- id="g3816"
- transform="translate(217.00317,0.46728516)">
- <rect
- id="rect3661"
- width="150.12064"
- height="28.914286"
- x="39.136509"
- y="142.87646"
- style="fill:url(#linearGradient3952);fill-opacity:1;stroke:#000000;stroke-opacity:1"
- ry="4.9650793" />
- <text
- xml:space="preserve"
- style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="79.682175"
- y="160.64417"
- id="text3657"><tspan
- sodipodi:role="line"
- id="tspan3659"
- x="79.682175"
- y="160.64417"
- style="font-size:12px">Notification</tspan></text>
- <rect
- ry="4.9650793"
- style="fill:url(#linearGradient4021);fill-opacity:1;stroke:#000000;stroke-opacity:1"
- y="142.87646"
- x="-239.2"
- height="28.914286"
- width="150.12064"
- id="rect3993" />
- <text
- id="text3995"
- y="160.64417"
- x="-198.65433"
- style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- style="font-size:12px"
- y="160.64417"
- x="-198.65433"
- id="tspan3997"
- sodipodi:role="line">Notification</tspan></text>
- </g>
<rect
+ ry="4.9650793"
+ style="fill:url(#linearGradient2913);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ y="143.34375"
+ x="-19.17757"
+ height="28.914286"
+ width="150.12064"
+ id="rect3661" />
+ <text
+ id="text3657"
+ y="161.11145"
+ x="21.368084"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px"
+ y="161.11145"
+ x="21.368084"
+ id="tspan3659"
+ sodipodi:role="line">Notification</tspan></text>
+ <rect
id="rect3828"
width="150.12064"
height="85.282539"
- x="256.13968"
+ x="-19.17757"
y="176.46378"
style="fill:url(#linearGradient4051);fill-opacity:1;stroke:#000000;stroke-opacity:1"
ry="4.9650793" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="296.59454"
+ x="21.277294"
y="194.23146"
id="text3830"><tspan
sodipodi:role="line"
id="tspan3832"
- x="296.59454"
+ x="21.277294"
y="194.23146"
style="font-size:12px">Persistance</tspan></text>
- <rect
- ry="4.9650793"
- style="fill:url(#linearGradient4015);fill-opacity:1;stroke:#000000;stroke-opacity:1"
- y="43.983757"
- x="-22.196829"
- height="28.914286"
- width="150.12064"
- id="rect3975" />
- <text
- id="text3977"
- y="61.751446"
- x="8.0187464"
- style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- style="font-size:12px"
- y="61.751446"
- x="8.0187464"
- id="tspan3979"
- sodipodi:role="line">Wikitty Service</tspan></text>
- <rect
- id="rect3981"
- width="150.12064"
- height="28.914286"
- x="-22.196829"
- y="77.103783"
- style="fill:url(#linearGradient4017);fill-opacity:1;stroke:#000000;stroke-opacity:1"
- ry="4.9650793" />
- <text
- xml:space="preserve"
- style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="27.990425"
- y="96.274796"
- id="text3983"><tspan
- id="tspan3985"
- sodipodi:role="line"
- x="27.990425"
- y="96.274796"
- style="font-size:12px">Sécurité</tspan></text>
- <rect
- ry="4.9650793"
- style="fill:url(#linearGradient4019);fill-opacity:1;stroke:#000000;stroke-opacity:1"
- y="110.22376"
- x="-22.196829"
- height="28.914286"
- width="150.12064"
- id="rect3987" />
- <text
- id="text3989"
- y="129.15454"
- x="34.166206"
- style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- style="font-size:12px"
- y="129.15454"
- x="34.166206"
- id="tspan3991"
- sodipodi:role="line">Cache</tspan></text>
- <g
- transform="translate(-61.333338,165.6)"
- id="g4007">
- <rect
- id="rect4009"
- width="150.12064"
- height="28.914286"
- x="39.136509"
- y="10.863771"
- style="fill:url(#linearGradient4025);fill-opacity:1;stroke:#000000;stroke-opacity:1"
- ry="4.9650793" />
- <text
- xml:space="preserve"
- style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="69.352097"
- y="28.63146"
- id="text4011"><tspan
- sodipodi:role="line"
- id="tspan4013"
- x="69.352097"
- y="28.63146"
- style="font-size:12px">Wikitty Service</tspan></text>
- </g>
<path
- style="fill:#ececec;stroke:#000000;stroke-opacity:1"
- d="m 232.6875,49.15625 c -0.19234,-0.01054 -0.33803,0.03632 -0.4375,0.09375 -0.5357,0.309289 -0.88742,2.43629 -1.0625,5.09375 l -49.53125,0 c -2.26524,0 -4.09375,1.828505 -4.09375,4.09375 0,0.05295 0.0293,0.103831 0.0312,0.15625 -0.002,0.05469 -0.0312,0.100967 -0.0312,0.15625 l 0,127.65625 -38.375,0 c -1.87039,0 -3.375,1.50461 -3.375,3.375 l 0,1.40625 c 0,1.87039 1.50461,3.375 3.375,3.375 l 43.1875,0 c 1.87039,0 3.375,-1.50461 3.375,-3.375 l 0,-1.28125 0,-0.125 0,-127.28125 45.4375,0 c 0.17485,2.662148 0.52614,4.81533 1.0625,5.125 1.59155,0.91888 15.90625,-7.349739 15.90625,-9.1875 0,-1.722901 -12.58368,-9.123093 -15.46875,-9.28125 z"
- id="rect4027" />
- <path
d="m 488.03811,153.09869 c 0,4.51647 -11.89928,8.17778 -26.57778,8.17778 -14.6785,0 -26.57778,-3.66131 -26.57778,-8.17778 0,-4.51646 11.89928,-8.17777 26.57778,-8.17777 14.6785,0 26.57778,3.66131 26.57778,8.17777 z"
sodipodi:ry="8.1777782"
sodipodi:rx="26.577778"
@@ -454,9 +298,9 @@
id="path4059"
style="fill:#ececec;stroke:#000000;stroke-opacity:1"
sodipodi:type="arc"
- transform="translate(-169.39683,91.707937)" />
+ transform="translate(-444.71408,91.707937)" />
<path
- transform="translate(-169.39683,82.751288)"
+ transform="translate(-444.71408,82.751288)"
sodipodi:type="arc"
style="fill:#ececec;stroke:#000000;stroke-opacity:1"
id="path4057"
@@ -474,7 +318,7 @@
id="path4055"
style="fill:#ececec;stroke:#000000;stroke-opacity:1"
sodipodi:type="arc"
- transform="translate(-169.39683,73.794682)" />
+ transform="translate(-444.71408,73.794682)" />
<path
sodipodi:type="arc"
style="fill:#ececec;stroke:#000000;stroke-opacity:1"
@@ -484,24 +328,24 @@
sodipodi:rx="26.577778"
sodipodi:ry="8.1777782"
d="m 488.03811,153.09869 c 0,4.51647 -11.89928,8.17778 -26.57778,8.17778 -14.6785,0 -26.57778,-3.66131 -26.57778,-8.17778 0,-4.51646 11.89928,-8.17777 26.57778,-8.17777 14.6785,0 26.57778,3.66131 26.57778,8.17777 z"
- transform="translate(-169.39683,64.838095)" />
+ transform="translate(-444.71408,64.838095)" />
<rect
ry="4.9650793"
style="fill:url(#linearGradient4063);fill-opacity:1;stroke:#000000;stroke-opacity:1"
y="209.81741"
- x="327.11108"
+ x="51.793835"
height="28.914286"
width="71.555511"
id="rect4061" />
<text
id="text4065"
y="227.81876"
- x="331.11639"
+ x="55.799145"
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:12px"
y="227.81876"
- x="331.11639"
+ x="55.799145"
id="tspan4067"
sodipodi:role="line">Indexation</tspan></text>
<g
@@ -534,93 +378,4 @@
transform="translate(-22.696829,43.483757)"
id="path4106" />
</g>
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="technos"
- style="display:inline"
- transform="translate(-1e-6,7.96875)">
- <path
- style="fill:#ffffff;stroke:#999999;stroke-opacity:1"
- d="m 179.59375,126.9375 c -16.33387,0 -29.5625,6.87983 -29.5625,15.34375 0,8.46392 13.22863,15.3125 29.5625,15.3125 14.73964,0 26.97351,-5.56469 29.21875,-12.875 l 19.71875,-5.40625 -19.90625,0 c -2.66028,-7.04819 -14.65054,-12.375 -29.03125,-12.375 z"
- id="path4123" />
- <text
- xml:space="preserve"
- style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="160.79045"
- y="144.94669"
- id="text4119"><tspan
- sodipodi:role="line"
- id="tspan4121"
- x="160.79045"
- y="144.94669"
- style="font-size:10px;fill:#666666">JGroups</tspan></text>
- <path
- style="fill:#ffffff;stroke:#999999;stroke-opacity:1"
- d="m 457.625,187.71875 c -14.9527,0 -27.32896,5.75306 -29.3125,13.21875 -2.64058,-4.1889 -7.79772,-7.03125 -13.71875,-7.03125 -8.61241,0 -15.59375,6.01301 -15.59375,13.4375 0,7.06948 6.33458,12.83747 14.375,13.375 -2.87507,2.10833 -4.5,4.52399 -4.5,7.0625 0,8.46392 18.03904,15.3125 40.3125,15.3125 22.27346,0 40.34375,-6.84858 40.34375,-15.3125 0,-4.8782 -6.02863,-9.22455 -15.375,-12.03125 5.49509,-1.9237 9.66863,-4.77201 11.6875,-8.125 l 22.84375,0 -21.5625,-3.6875 c 0.0348,-0.30491 0.0625,-0.59687 0.0625,-0.90625 0,-8.46392 -13.22863,-15.3125 -29.5625,-15.3125 z m -27.53125,20.9375 c 1.32768,1.74748 3.28859,3.32236 5.6875,4.6875 -2.92858,0.39347 -5.70756,0.90484 -8.28125,1.53125 1.42887,-1.81064 2.33543,-3.92161 2.59375,-6.21875 z"
- id="path4125" />
- <text
- id="text4127"
- y="211.05193"
- x="407.65793"
- style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- style="font-size:10px;fill:#666666"
- y="211.05193"
- x="407.65793"
- id="tspan4129"
- sodipodi:role="line">H2</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="420.15561"
- y="230.44559"
- id="text4133"><tspan
- sodipodi:role="line"
- id="tspan4135"
- x="420.15561"
- y="230.44559"
- style="font-size:10px;fill:#666666">PostgreSQL</tspan></text>
- <text
- id="text4139"
- y="206.61336"
- x="441.44528"
- style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- style="font-size:10px;fill:#666666"
- y="206.61336"
- x="441.44528"
- id="tspan4141"
- sodipodi:role="line">HBase</tspan></text>
- <path
- style="fill:#ffffff;stroke:#999999;stroke-opacity:1"
- d="m 691.53125,199 c -10.18105,0 -18.74639,3.28902 -21.28125,7.75 l -27.125,-2.90625 26.46875,6.71875 c 1.12902,5.28749 10.52235,9.40625 21.9375,9.40625 12.17616,0 22.03125,-4.67765 22.03125,-10.46875 0,-5.7911 -9.85509,-10.5 -22.03125,-10.5 z"
- id="path4143" />
- <text
- xml:space="preserve"
- style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="680.24261"
- y="213.21994"
- id="text4145"><tspan
- sodipodi:role="line"
- id="tspan4147"
- x="680.24261"
- y="213.21994"
- style="font-size:10px;fill:#666666">SolR</tspan></text>
- <path
- style="fill:#ffffff;stroke:#999999;stroke-opacity:1"
- d="m 418.90625,-7.46875 c -16.33387,0 -29.59375,6.84858357 -29.59375,15.3125 0,8.463916 13.25988,15.3125 29.59375,15.3125 0.54232,0 1.05862,-0.01631 1.59375,-0.03125 l 10.75,17.25 -4.625,-17.78125 c 12.57449,-1.764711 21.84375,-7.675786 21.84375,-14.75 0,-8.46391643 -13.22863,-15.3125 -29.5625,-15.3125 z"
- id="path4157" />
- <text
- id="text4159"
- y="10.514438"
- x="400.07986"
- style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- style="font-size:10px;fill:#666666"
- y="10.514438"
- x="400.07986"
- id="tspan4161"
- sodipodi:role="line">Hessian</tspan></text>
- </g>
</svg>
Copied: trunk/src/site/schema_wikitty_architecture_client_serveur.svg (from rev 268, trunk/src/site/schema_wikitty_architecture.svg)
===================================================================
--- trunk/src/site/schema_wikitty_architecture_client_serveur.svg (rev 0)
+++ trunk/src/site/schema_wikitty_architecture_client_serveur.svg 2010-08-18 15:40:40 UTC (rev 269)
@@ -0,0 +1,626 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="714.0625"
+ height="252.14418"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="schema_wikitty_architecture.svg"
+ inkscape:export-filename="/home/bleny/Bureau/schema_wikitty_architecture_technos.png"
+ inkscape:export-xdpi="281.88724"
+ inkscape:export-ydpi="281.88724">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient4075">
+ <stop
+ style="stop-color:#12ebe7;stop-opacity:0.57647061;"
+ offset="0"
+ id="stop4077" />
+ <stop
+ style="stop-color:#12ebe7;stop-opacity:0.08627451;"
+ offset="1"
+ id="stop4079" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4069">
+ <stop
+ id="stop4071"
+ offset="0"
+ style="stop-color:#3eb43e;stop-opacity:0.57647061;" />
+ <stop
+ id="stop4073"
+ offset="1"
+ style="stop-color:#3eb43e;stop-opacity:0.08627451;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3946">
+ <stop
+ id="stop3948"
+ offset="0"
+ style="stop-color:#fdff2e;stop-opacity:0.57647061;" />
+ <stop
+ id="stop3950"
+ offset="1"
+ style="stop-color:#fdff2e;stop-opacity:0.08627451;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3940">
+ <stop
+ id="stop3942"
+ offset="0"
+ style="stop-color:#c154e7;stop-opacity:0.57647061;" />
+ <stop
+ id="stop3944"
+ offset="1"
+ style="stop-color:#c154e7;stop-opacity:0.08627451;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3934">
+ <stop
+ id="stop3936"
+ offset="0"
+ style="stop-color:#ef595e;stop-opacity:0.57647061;" />
+ <stop
+ id="stop3938"
+ offset="1"
+ style="stop-color:#ef595e;stop-opacity:0.08627451;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3594">
+ <stop
+ style="stop-color:#668ad3;stop-opacity:0.57480317;"
+ offset="0"
+ id="stop3596" />
+ <stop
+ style="stop-color:#668ad3;stop-opacity:0.08661418;"
+ offset="1"
+ id="stop3598" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3934"
+ id="linearGradient3911"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(217.00317,33.528902)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3940"
+ id="linearGradient3918"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(217.00317,66.64888)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3946"
+ id="linearGradient3952"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,99.301587)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3594"
+ id="linearGradient4015"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-61.333338,0.40887451)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3934"
+ id="linearGradient4017"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-61.333338,33.528902)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3940"
+ id="linearGradient4019"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-61.333338,66.64888)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3946"
+ id="linearGradient4021"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-278.3365,99.301587)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3594"
+ id="linearGradient4025"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-32.711111)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4069"
+ id="linearGradient4051"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(217.00317,132.88889)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4075"
+ id="linearGradient4063"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(320.68571,166.24253)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3594"
+ id="linearGradient4081"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(217.00317,0.40887451)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.8596728"
+ inkscape:cx="326.93923"
+ inkscape:cy="122.08771"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ showgrid="false"
+ inkscape:window-width="1680"
+ inkscape:window-height="975"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="couches"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(247.11814,-10.102128)">
+ <g
+ id="g4040">
+ <rect
+ ry="4.9650793"
+ style="fill:url(#linearGradient4081);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ y="43.983757"
+ x="256.13968"
+ height="28.914286"
+ width="150.12064"
+ id="rect2820" />
+ <text
+ id="text2816"
+ y="61.751446"
+ x="286.35526"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px"
+ y="61.751446"
+ x="286.35526"
+ id="tspan2818"
+ sodipodi:role="line">Wikitty Service</tspan></text>
+ </g>
+ <rect
+ ry="4.9650793"
+ style="fill:url(#linearGradient3911);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ y="77.103783"
+ x="256.13968"
+ height="28.914286"
+ width="150.12064"
+ id="rect3641" />
+ <text
+ id="text3637"
+ y="96.274796"
+ x="306.32693"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px"
+ y="96.274796"
+ x="306.32693"
+ sodipodi:role="line"
+ id="tspan3782">Sécurité</tspan></text>
+ <rect
+ id="rect3651"
+ width="150.12064"
+ height="28.914286"
+ x="256.13968"
+ y="110.22376"
+ style="fill:url(#linearGradient3918);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ ry="4.9650793" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="312.50272"
+ y="129.15454"
+ id="text3647"><tspan
+ sodipodi:role="line"
+ id="tspan3649"
+ x="312.50272"
+ y="129.15454"
+ style="font-size:12px">Cache</tspan></text>
+ <g
+ id="g3816"
+ transform="translate(217.00317,0.46728516)">
+ <rect
+ id="rect3661"
+ width="150.12064"
+ height="28.914286"
+ x="39.136509"
+ y="142.87646"
+ style="fill:url(#linearGradient3952);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ ry="4.9650793" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="79.682175"
+ y="160.64417"
+ id="text3657"><tspan
+ sodipodi:role="line"
+ id="tspan3659"
+ x="79.682175"
+ y="160.64417"
+ style="font-size:12px">Notification</tspan></text>
+ <rect
+ ry="4.9650793"
+ style="fill:url(#linearGradient4021);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ y="142.87646"
+ x="-239.2"
+ height="28.914286"
+ width="150.12064"
+ id="rect3993" />
+ <text
+ id="text3995"
+ y="160.64417"
+ x="-198.65433"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px"
+ y="160.64417"
+ x="-198.65433"
+ id="tspan3997"
+ sodipodi:role="line">Notification</tspan></text>
+ </g>
+ <rect
+ id="rect3828"
+ width="150.12064"
+ height="85.282539"
+ x="256.13968"
+ y="176.46378"
+ style="fill:url(#linearGradient4051);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ ry="4.9650793" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="296.59454"
+ y="194.23146"
+ id="text3830"><tspan
+ sodipodi:role="line"
+ id="tspan3832"
+ x="296.59454"
+ y="194.23146"
+ style="font-size:12px">Persistance</tspan></text>
+ <rect
+ ry="4.9650793"
+ style="fill:url(#linearGradient4015);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ y="43.983757"
+ x="-22.196829"
+ height="28.914286"
+ width="150.12064"
+ id="rect3975" />
+ <text
+ id="text3977"
+ y="61.751446"
+ x="8.0187464"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px"
+ y="61.751446"
+ x="8.0187464"
+ id="tspan3979"
+ sodipodi:role="line">Wikitty Service</tspan></text>
+ <rect
+ id="rect3981"
+ width="150.12064"
+ height="28.914286"
+ x="-22.196829"
+ y="77.103783"
+ style="fill:url(#linearGradient4017);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ ry="4.9650793" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="27.990425"
+ y="96.274796"
+ id="text3983"><tspan
+ id="tspan3985"
+ sodipodi:role="line"
+ x="27.990425"
+ y="96.274796"
+ style="font-size:12px">Sécurité</tspan></text>
+ <rect
+ ry="4.9650793"
+ style="fill:url(#linearGradient4019);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ y="110.22376"
+ x="-22.196829"
+ height="28.914286"
+ width="150.12064"
+ id="rect3987" />
+ <text
+ id="text3989"
+ y="129.15454"
+ x="34.166206"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px"
+ y="129.15454"
+ x="34.166206"
+ id="tspan3991"
+ sodipodi:role="line">Cache</tspan></text>
+ <g
+ transform="translate(-61.333338,165.6)"
+ id="g4007">
+ <rect
+ id="rect4009"
+ width="150.12064"
+ height="28.914286"
+ x="39.136509"
+ y="10.863771"
+ style="fill:url(#linearGradient4025);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ ry="4.9650793" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="69.352097"
+ y="28.63146"
+ id="text4011"><tspan
+ sodipodi:role="line"
+ id="tspan4013"
+ x="69.352097"
+ y="28.63146"
+ style="font-size:12px">Wikitty Service</tspan></text>
+ </g>
+ <path
+ style="fill:#ececec;stroke:#000000;stroke-opacity:1"
+ d="m 232.6875,49.15625 c -0.19234,-0.01054 -0.33803,0.03632 -0.4375,0.09375 -0.5357,0.309289 -0.88742,2.43629 -1.0625,5.09375 l -49.53125,0 c -2.26524,0 -4.09375,1.828505 -4.09375,4.09375 0,0.05295 0.0293,0.103831 0.0312,0.15625 -0.002,0.05469 -0.0312,0.100967 -0.0312,0.15625 l 0,127.65625 -38.375,0 c -1.87039,0 -3.375,1.50461 -3.375,3.375 l 0,1.40625 c 0,1.87039 1.50461,3.375 3.375,3.375 l 43.1875,0 c 1.87039,0 3.375,-1.50461 3.375,-3.375 l 0,-1.28125 0,-0.125 0,-127.28125 45.4375,0 c 0.17485,2.662148 0.52614,4.81533 1.0625,5.125 1.59155,0.91888 15.90625,-7.349739 15.90625,-9.1875 0,-1.722901 -12.58368,-9.123093 -15.46875,-9.28125 z"
+ id="rect4027" />
+ <path
+ d="m 488.03811,153.09869 c 0,4.51647 -11.89928,8.17778 -26.57778,8.17778 -14.6785,0 -26.57778,-3.66131 -26.57778,-8.17778 0,-4.51646 11.89928,-8.17777 26.57778,-8.17777 14.6785,0 26.57778,3.66131 26.57778,8.17777 z"
+ sodipodi:ry="8.1777782"
+ sodipodi:rx="26.577778"
+ sodipodi:cy="153.09869"
+ sodipodi:cx="461.46033"
+ id="path4059"
+ style="fill:#ececec;stroke:#000000;stroke-opacity:1"
+ sodipodi:type="arc"
+ transform="translate(-169.39683,91.707937)" />
+ <path
+ transform="translate(-169.39683,82.751288)"
+ sodipodi:type="arc"
+ style="fill:#ececec;stroke:#000000;stroke-opacity:1"
+ id="path4057"
+ sodipodi:cx="461.46033"
+ sodipodi:cy="153.09869"
+ sodipodi:rx="26.577778"
+ sodipodi:ry="8.1777782"
+ d="m 488.03811,153.09869 c 0,4.51647 -11.89928,8.17778 -26.57778,8.17778 -14.6785,0 -26.57778,-3.66131 -26.57778,-8.17778 0,-4.51646 11.89928,-8.17777 26.57778,-8.17777 14.6785,0 26.57778,3.66131 26.57778,8.17777 z" />
+ <path
+ d="m 488.03811,153.09869 c 0,4.51647 -11.89928,8.17778 -26.57778,8.17778 -14.6785,0 -26.57778,-3.66131 -26.57778,-8.17778 0,-4.51646 11.89928,-8.17777 26.57778,-8.17777 14.6785,0 26.57778,3.66131 26.57778,8.17777 z"
+ sodipodi:ry="8.1777782"
+ sodipodi:rx="26.577778"
+ sodipodi:cy="153.09869"
+ sodipodi:cx="461.46033"
+ id="path4055"
+ style="fill:#ececec;stroke:#000000;stroke-opacity:1"
+ sodipodi:type="arc"
+ transform="translate(-169.39683,73.794682)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#ececec;stroke:#000000;stroke-opacity:1"
+ id="path4053"
+ sodipodi:cx="461.46033"
+ sodipodi:cy="153.09869"
+ sodipodi:rx="26.577778"
+ sodipodi:ry="8.1777782"
+ d="m 488.03811,153.09869 c 0,4.51647 -11.89928,8.17778 -26.57778,8.17778 -14.6785,0 -26.57778,-3.66131 -26.57778,-8.17778 0,-4.51646 11.89928,-8.17777 26.57778,-8.17777 14.6785,0 26.57778,3.66131 26.57778,8.17777 z"
+ transform="translate(-169.39683,64.838095)" />
+ <rect
+ ry="4.9650793"
+ style="fill:url(#linearGradient4063);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ y="209.81741"
+ x="327.11108"
+ height="28.914286"
+ width="71.555511"
+ id="rect4061" />
+ <text
+ id="text4065"
+ y="227.81876"
+ x="331.11639"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px"
+ y="227.81876"
+ x="331.11639"
+ id="tspan4067"
+ sodipodi:role="line">Indexation</tspan></text>
+ <g
+ id="g4109"
+ transform="translate(30.372791,-27.900587)">
+ <path
+ id="path4083"
+ d="m -225.58468,46.471515 c -16.68438,0 -30.61989,6.194421 -34,14.46875 -10.46987,4.690678 -17.40625,12.80906 -17.40625,22.0625 0,8.071994 5.29836,15.298526 13.59375,20.124995 -0.002,0.01 0.002,0.0213 0,0.0312 -0.10912,0.62925 -0.15625,1.2914 -0.15625,1.9375 0,10.33773 14.31659,18.71875 31.96875,18.71875 10.44893,0 19.69924,-2.95942 25.53125,-7.5 4.3808,1.38215 9.47106,2.1875 14.90625,2.1875 15.83384,0 28.77358,-6.72597 29.625,-15.1875 18.38337,-0.0827 33.21875,-7.329033 33.21875,-16.249995 0,-5.619342 -5.88789,-10.551604 -14.84375,-13.46875 0.003,-0.103705 0.0312,-0.208457 0.0312,-0.3125 0,-12.288245 -20.01349,-22.25 -44.6875,-22.25 -4.47883,0 -8.79573,0.357956 -12.875,0.96875 -6.31832,-3.421172 -15.14045,-5.53125 -24.90625,-5.53125 z"
+ style="fill:#e3dbdb;stroke:#000000;stroke-opacity:1" />
+ <text
+ id="text4100"
+ y="76.368225"
+ x="-209.19235"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#483737;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px;font-weight:bold;text-align:center;text-anchor:middle;fill:#483737;-inkscape-font-specification:Bitstream Charter Bold"
+ y="76.368225"
+ x="-209.19235"
+ id="tspan4102"
+ sodipodi:role="line">Application</tspan><tspan
+ id="tspan4104"
+ style="font-size:12px;font-weight:bold;text-align:center;text-anchor:middle;fill:#483737;-inkscape-font-specification:Bitstream Charter Bold"
+ y="91.368225"
+ x="-209.19235"
+ sodipodi:role="line">Utilisateur</tspan></text>
+ </g>
+ <path
+ style="fill:#ececec;stroke:#000000;stroke-opacity:1"
+ d="m -24.59375,5.6875 c -0.0729,0.017576 -0.106515,0.065035 -0.15625,0.09375 -0.5357,0.309289 -0.88742,2.43629 -1.0625,5.09375 l -38.8125,0 0,8.15625 38.8125,0 c 0.17485,2.662148 0.52614,4.81533 1.0625,5.125 1.59155,0.91888 15.90625,-7.349739 15.90625,-9.1875 0,-1.722901 -12.58368,-9.123093 -15.46875,-9.28125 -0.09617,-0.00527 -0.208351,-0.017576 -0.28125,0 z"
+ transform="translate(-22.696829,43.483757)"
+ id="path4106" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="technos"
+ style="display:inline"
+ transform="translate(-1e-6,7.96875)">
+ <path
+ style="fill:#ffffff;stroke:#999999;stroke-opacity:1"
+ d="m 179.59375,126.9375 c -16.33387,0 -29.5625,6.87983 -29.5625,15.34375 0,8.46392 13.22863,15.3125 29.5625,15.3125 14.73964,0 26.97351,-5.56469 29.21875,-12.875 l 19.71875,-5.40625 -19.90625,0 c -2.66028,-7.04819 -14.65054,-12.375 -29.03125,-12.375 z"
+ id="path4123" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="160.79045"
+ y="144.94669"
+ id="text4119"><tspan
+ sodipodi:role="line"
+ id="tspan4121"
+ x="160.79045"
+ y="144.94669"
+ style="font-size:10px;fill:#666666">JGroups</tspan></text>
+ <path
+ style="fill:#ffffff;stroke:#999999;stroke-opacity:1"
+ d="m 457.625,187.71875 c -14.9527,0 -27.32896,5.75306 -29.3125,13.21875 -2.64058,-4.1889 -7.79772,-7.03125 -13.71875,-7.03125 -8.61241,0 -15.59375,6.01301 -15.59375,13.4375 0,7.06948 6.33458,12.83747 14.375,13.375 -2.87507,2.10833 -4.5,4.52399 -4.5,7.0625 0,8.46392 18.03904,15.3125 40.3125,15.3125 22.27346,0 40.34375,-6.84858 40.34375,-15.3125 0,-4.8782 -6.02863,-9.22455 -15.375,-12.03125 5.49509,-1.9237 9.66863,-4.77201 11.6875,-8.125 l 22.84375,0 -21.5625,-3.6875 c 0.0348,-0.30491 0.0625,-0.59687 0.0625,-0.90625 0,-8.46392 -13.22863,-15.3125 -29.5625,-15.3125 z m -27.53125,20.9375 c 1.32768,1.74748 3.28859,3.32236 5.6875,4.6875 -2.92858,0.39347 -5.70756,0.90484 -8.28125,1.53125 1.42887,-1.81064 2.33543,-3.92161 2.59375,-6.21875 z"
+ id="path4125" />
+ <text
+ id="text4127"
+ y="211.05193"
+ x="407.65793"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:10px;fill:#666666"
+ y="211.05193"
+ x="407.65793"
+ id="tspan4129"
+ sodipodi:role="line">H2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="420.15561"
+ y="230.44559"
+ id="text4133"><tspan
+ sodipodi:role="line"
+ id="tspan4135"
+ x="420.15561"
+ y="230.44559"
+ style="font-size:10px;fill:#666666">PostgreSQL</tspan></text>
+ <text
+ id="text4139"
+ y="206.61336"
+ x="441.44528"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:10px;fill:#666666"
+ y="206.61336"
+ x="441.44528"
+ id="tspan4141"
+ sodipodi:role="line">HBase</tspan></text>
+ <path
+ style="fill:#ffffff;stroke:#999999;stroke-opacity:1"
+ d="m 691.53125,199 c -10.18105,0 -18.74639,3.28902 -21.28125,7.75 l -27.125,-2.90625 26.46875,6.71875 c 1.12902,5.28749 10.52235,9.40625 21.9375,9.40625 12.17616,0 22.03125,-4.67765 22.03125,-10.46875 0,-5.7911 -9.85509,-10.5 -22.03125,-10.5 z"
+ id="path4143" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="680.24261"
+ y="213.21994"
+ id="text4145"><tspan
+ sodipodi:role="line"
+ id="tspan4147"
+ x="680.24261"
+ y="213.21994"
+ style="font-size:10px;fill:#666666">SolR</tspan></text>
+ <path
+ style="fill:#ffffff;stroke:#999999;stroke-opacity:1"
+ d="m 418.90625,-7.46875 c -16.33387,0 -29.59375,6.84858357 -29.59375,15.3125 0,8.463916 13.25988,15.3125 29.59375,15.3125 0.54232,0 1.05862,-0.01631 1.59375,-0.03125 l 10.75,17.25 -4.625,-17.78125 c 12.57449,-1.764711 21.84375,-7.675786 21.84375,-14.75 0,-8.46391643 -13.22863,-15.3125 -29.5625,-15.3125 z"
+ id="path4157" />
+ <text
+ id="text4159"
+ y="10.514438"
+ x="400.07986"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:10px;fill:#666666"
+ y="10.514438"
+ x="400.07986"
+ id="tspan4161"
+ sodipodi:role="line">Hessian</tspan></text>
+ </g>
+</svg>
1
0
Author: bleny
Date: 2010-08-18 16:41:13 +0200 (Wed, 18 Aug 2010)
New Revision: 268
Url: http://nuiton.org/repositories/revision/wikitty/268
Log:
draft presentation wikitty v2
Added:
trunk/src/site/schema_wikitty_architecture.svg
Modified:
trunk/src/site/presentation_Wikitty_2010-08-20.odp
Modified: trunk/src/site/presentation_Wikitty_2010-08-20.odp
===================================================================
(Binary files differ)
Added: trunk/src/site/schema_wikitty_architecture.svg
===================================================================
--- trunk/src/site/schema_wikitty_architecture.svg (rev 0)
+++ trunk/src/site/schema_wikitty_architecture.svg 2010-08-18 14:41:13 UTC (rev 268)
@@ -0,0 +1,626 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="714.0625"
+ height="252.14418"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="schema_wikitty_architecture.svg"
+ inkscape:export-filename="/home/bleny/Bureau/schema_wikitty_architecture_technos.png"
+ inkscape:export-xdpi="281.88724"
+ inkscape:export-ydpi="281.88724">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient4075">
+ <stop
+ style="stop-color:#12ebe7;stop-opacity:0.57647061;"
+ offset="0"
+ id="stop4077" />
+ <stop
+ style="stop-color:#12ebe7;stop-opacity:0.08627451;"
+ offset="1"
+ id="stop4079" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4069">
+ <stop
+ id="stop4071"
+ offset="0"
+ style="stop-color:#3eb43e;stop-opacity:0.57647061;" />
+ <stop
+ id="stop4073"
+ offset="1"
+ style="stop-color:#3eb43e;stop-opacity:0.08627451;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3946">
+ <stop
+ id="stop3948"
+ offset="0"
+ style="stop-color:#fdff2e;stop-opacity:0.57647061;" />
+ <stop
+ id="stop3950"
+ offset="1"
+ style="stop-color:#fdff2e;stop-opacity:0.08627451;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3940">
+ <stop
+ id="stop3942"
+ offset="0"
+ style="stop-color:#c154e7;stop-opacity:0.57647061;" />
+ <stop
+ id="stop3944"
+ offset="1"
+ style="stop-color:#c154e7;stop-opacity:0.08627451;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3934">
+ <stop
+ id="stop3936"
+ offset="0"
+ style="stop-color:#ef595e;stop-opacity:0.57647061;" />
+ <stop
+ id="stop3938"
+ offset="1"
+ style="stop-color:#ef595e;stop-opacity:0.08627451;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3594">
+ <stop
+ style="stop-color:#668ad3;stop-opacity:0.57480317;"
+ offset="0"
+ id="stop3596" />
+ <stop
+ style="stop-color:#668ad3;stop-opacity:0.08661418;"
+ offset="1"
+ id="stop3598" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3934"
+ id="linearGradient3911"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(217.00317,33.528902)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3940"
+ id="linearGradient3918"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(217.00317,66.64888)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3946"
+ id="linearGradient3952"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,99.301587)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3594"
+ id="linearGradient4015"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-61.333338,0.40887451)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3934"
+ id="linearGradient4017"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-61.333338,33.528902)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3940"
+ id="linearGradient4019"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-61.333338,66.64888)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3946"
+ id="linearGradient4021"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-278.3365,99.301587)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3594"
+ id="linearGradient4025"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-32.711111)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4069"
+ id="linearGradient4051"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(217.00317,132.88889)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4075"
+ id="linearGradient4063"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(320.68571,166.24253)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3594"
+ id="linearGradient4081"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(217.00317,0.40887451)"
+ x1="-15.395237"
+ y1="1.6637709"
+ x2="226.55714"
+ y2="103.30186" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.8596728"
+ inkscape:cx="345.0223"
+ inkscape:cy="122.08773"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ showgrid="false"
+ inkscape:window-width="1680"
+ inkscape:window-height="975"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="couches"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(247.11814,-10.102128)">
+ <g
+ id="g4040">
+ <rect
+ ry="4.9650793"
+ style="fill:url(#linearGradient4081);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ y="43.983757"
+ x="256.13968"
+ height="28.914286"
+ width="150.12064"
+ id="rect2820" />
+ <text
+ id="text2816"
+ y="61.751446"
+ x="286.35526"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px"
+ y="61.751446"
+ x="286.35526"
+ id="tspan2818"
+ sodipodi:role="line">Wikitty Service</tspan></text>
+ </g>
+ <rect
+ ry="4.9650793"
+ style="fill:url(#linearGradient3911);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ y="77.103783"
+ x="256.13968"
+ height="28.914286"
+ width="150.12064"
+ id="rect3641" />
+ <text
+ id="text3637"
+ y="96.274796"
+ x="306.32693"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px"
+ y="96.274796"
+ x="306.32693"
+ sodipodi:role="line"
+ id="tspan3782">Sécurité</tspan></text>
+ <rect
+ id="rect3651"
+ width="150.12064"
+ height="28.914286"
+ x="256.13968"
+ y="110.22376"
+ style="fill:url(#linearGradient3918);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ ry="4.9650793" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="312.50272"
+ y="129.15454"
+ id="text3647"><tspan
+ sodipodi:role="line"
+ id="tspan3649"
+ x="312.50272"
+ y="129.15454"
+ style="font-size:12px">Cache</tspan></text>
+ <g
+ id="g3816"
+ transform="translate(217.00317,0.46728516)">
+ <rect
+ id="rect3661"
+ width="150.12064"
+ height="28.914286"
+ x="39.136509"
+ y="142.87646"
+ style="fill:url(#linearGradient3952);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ ry="4.9650793" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="79.682175"
+ y="160.64417"
+ id="text3657"><tspan
+ sodipodi:role="line"
+ id="tspan3659"
+ x="79.682175"
+ y="160.64417"
+ style="font-size:12px">Notification</tspan></text>
+ <rect
+ ry="4.9650793"
+ style="fill:url(#linearGradient4021);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ y="142.87646"
+ x="-239.2"
+ height="28.914286"
+ width="150.12064"
+ id="rect3993" />
+ <text
+ id="text3995"
+ y="160.64417"
+ x="-198.65433"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px"
+ y="160.64417"
+ x="-198.65433"
+ id="tspan3997"
+ sodipodi:role="line">Notification</tspan></text>
+ </g>
+ <rect
+ id="rect3828"
+ width="150.12064"
+ height="85.282539"
+ x="256.13968"
+ y="176.46378"
+ style="fill:url(#linearGradient4051);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ ry="4.9650793" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="296.59454"
+ y="194.23146"
+ id="text3830"><tspan
+ sodipodi:role="line"
+ id="tspan3832"
+ x="296.59454"
+ y="194.23146"
+ style="font-size:12px">Persistance</tspan></text>
+ <rect
+ ry="4.9650793"
+ style="fill:url(#linearGradient4015);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ y="43.983757"
+ x="-22.196829"
+ height="28.914286"
+ width="150.12064"
+ id="rect3975" />
+ <text
+ id="text3977"
+ y="61.751446"
+ x="8.0187464"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px"
+ y="61.751446"
+ x="8.0187464"
+ id="tspan3979"
+ sodipodi:role="line">Wikitty Service</tspan></text>
+ <rect
+ id="rect3981"
+ width="150.12064"
+ height="28.914286"
+ x="-22.196829"
+ y="77.103783"
+ style="fill:url(#linearGradient4017);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ ry="4.9650793" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="27.990425"
+ y="96.274796"
+ id="text3983"><tspan
+ id="tspan3985"
+ sodipodi:role="line"
+ x="27.990425"
+ y="96.274796"
+ style="font-size:12px">Sécurité</tspan></text>
+ <rect
+ ry="4.9650793"
+ style="fill:url(#linearGradient4019);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ y="110.22376"
+ x="-22.196829"
+ height="28.914286"
+ width="150.12064"
+ id="rect3987" />
+ <text
+ id="text3989"
+ y="129.15454"
+ x="34.166206"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px"
+ y="129.15454"
+ x="34.166206"
+ id="tspan3991"
+ sodipodi:role="line">Cache</tspan></text>
+ <g
+ transform="translate(-61.333338,165.6)"
+ id="g4007">
+ <rect
+ id="rect4009"
+ width="150.12064"
+ height="28.914286"
+ x="39.136509"
+ y="10.863771"
+ style="fill:url(#linearGradient4025);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ ry="4.9650793" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="69.352097"
+ y="28.63146"
+ id="text4011"><tspan
+ sodipodi:role="line"
+ id="tspan4013"
+ x="69.352097"
+ y="28.63146"
+ style="font-size:12px">Wikitty Service</tspan></text>
+ </g>
+ <path
+ style="fill:#ececec;stroke:#000000;stroke-opacity:1"
+ d="m 232.6875,49.15625 c -0.19234,-0.01054 -0.33803,0.03632 -0.4375,0.09375 -0.5357,0.309289 -0.88742,2.43629 -1.0625,5.09375 l -49.53125,0 c -2.26524,0 -4.09375,1.828505 -4.09375,4.09375 0,0.05295 0.0293,0.103831 0.0312,0.15625 -0.002,0.05469 -0.0312,0.100967 -0.0312,0.15625 l 0,127.65625 -38.375,0 c -1.87039,0 -3.375,1.50461 -3.375,3.375 l 0,1.40625 c 0,1.87039 1.50461,3.375 3.375,3.375 l 43.1875,0 c 1.87039,0 3.375,-1.50461 3.375,-3.375 l 0,-1.28125 0,-0.125 0,-127.28125 45.4375,0 c 0.17485,2.662148 0.52614,4.81533 1.0625,5.125 1.59155,0.91888 15.90625,-7.349739 15.90625,-9.1875 0,-1.722901 -12.58368,-9.123093 -15.46875,-9.28125 z"
+ id="rect4027" />
+ <path
+ d="m 488.03811,153.09869 c 0,4.51647 -11.89928,8.17778 -26.57778,8.17778 -14.6785,0 -26.57778,-3.66131 -26.57778,-8.17778 0,-4.51646 11.89928,-8.17777 26.57778,-8.17777 14.6785,0 26.57778,3.66131 26.57778,8.17777 z"
+ sodipodi:ry="8.1777782"
+ sodipodi:rx="26.577778"
+ sodipodi:cy="153.09869"
+ sodipodi:cx="461.46033"
+ id="path4059"
+ style="fill:#ececec;stroke:#000000;stroke-opacity:1"
+ sodipodi:type="arc"
+ transform="translate(-169.39683,91.707937)" />
+ <path
+ transform="translate(-169.39683,82.751288)"
+ sodipodi:type="arc"
+ style="fill:#ececec;stroke:#000000;stroke-opacity:1"
+ id="path4057"
+ sodipodi:cx="461.46033"
+ sodipodi:cy="153.09869"
+ sodipodi:rx="26.577778"
+ sodipodi:ry="8.1777782"
+ d="m 488.03811,153.09869 c 0,4.51647 -11.89928,8.17778 -26.57778,8.17778 -14.6785,0 -26.57778,-3.66131 -26.57778,-8.17778 0,-4.51646 11.89928,-8.17777 26.57778,-8.17777 14.6785,0 26.57778,3.66131 26.57778,8.17777 z" />
+ <path
+ d="m 488.03811,153.09869 c 0,4.51647 -11.89928,8.17778 -26.57778,8.17778 -14.6785,0 -26.57778,-3.66131 -26.57778,-8.17778 0,-4.51646 11.89928,-8.17777 26.57778,-8.17777 14.6785,0 26.57778,3.66131 26.57778,8.17777 z"
+ sodipodi:ry="8.1777782"
+ sodipodi:rx="26.577778"
+ sodipodi:cy="153.09869"
+ sodipodi:cx="461.46033"
+ id="path4055"
+ style="fill:#ececec;stroke:#000000;stroke-opacity:1"
+ sodipodi:type="arc"
+ transform="translate(-169.39683,73.794682)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#ececec;stroke:#000000;stroke-opacity:1"
+ id="path4053"
+ sodipodi:cx="461.46033"
+ sodipodi:cy="153.09869"
+ sodipodi:rx="26.577778"
+ sodipodi:ry="8.1777782"
+ d="m 488.03811,153.09869 c 0,4.51647 -11.89928,8.17778 -26.57778,8.17778 -14.6785,0 -26.57778,-3.66131 -26.57778,-8.17778 0,-4.51646 11.89928,-8.17777 26.57778,-8.17777 14.6785,0 26.57778,3.66131 26.57778,8.17777 z"
+ transform="translate(-169.39683,64.838095)" />
+ <rect
+ ry="4.9650793"
+ style="fill:url(#linearGradient4063);fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ y="209.81741"
+ x="327.11108"
+ height="28.914286"
+ width="71.555511"
+ id="rect4061" />
+ <text
+ id="text4065"
+ y="227.81876"
+ x="331.11639"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px"
+ y="227.81876"
+ x="331.11639"
+ id="tspan4067"
+ sodipodi:role="line">Indexation</tspan></text>
+ <g
+ id="g4109"
+ transform="translate(30.372791,-27.900587)">
+ <path
+ id="path4083"
+ d="m -225.58468,46.471515 c -16.68438,0 -30.61989,6.194421 -34,14.46875 -10.46987,4.690678 -17.40625,12.80906 -17.40625,22.0625 0,8.071994 5.29836,15.298526 13.59375,20.124995 -0.002,0.01 0.002,0.0213 0,0.0312 -0.10912,0.62925 -0.15625,1.2914 -0.15625,1.9375 0,10.33773 14.31659,18.71875 31.96875,18.71875 10.44893,0 19.69924,-2.95942 25.53125,-7.5 4.3808,1.38215 9.47106,2.1875 14.90625,2.1875 15.83384,0 28.77358,-6.72597 29.625,-15.1875 18.38337,-0.0827 33.21875,-7.329033 33.21875,-16.249995 0,-5.619342 -5.88789,-10.551604 -14.84375,-13.46875 0.003,-0.103705 0.0312,-0.208457 0.0312,-0.3125 0,-12.288245 -20.01349,-22.25 -44.6875,-22.25 -4.47883,0 -8.79573,0.357956 -12.875,0.96875 -6.31832,-3.421172 -15.14045,-5.53125 -24.90625,-5.53125 z"
+ style="fill:#e3dbdb;stroke:#000000;stroke-opacity:1" />
+ <text
+ id="text4100"
+ y="76.368225"
+ x="-209.19235"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#483737;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:12px;font-weight:bold;text-align:center;text-anchor:middle;fill:#483737;-inkscape-font-specification:Bitstream Charter Bold"
+ y="76.368225"
+ x="-209.19235"
+ id="tspan4102"
+ sodipodi:role="line">Application</tspan><tspan
+ id="tspan4104"
+ style="font-size:12px;font-weight:bold;text-align:center;text-anchor:middle;fill:#483737;-inkscape-font-specification:Bitstream Charter Bold"
+ y="91.368225"
+ x="-209.19235"
+ sodipodi:role="line">Utilisateur</tspan></text>
+ </g>
+ <path
+ style="fill:#ececec;stroke:#000000;stroke-opacity:1"
+ d="m -24.59375,5.6875 c -0.0729,0.017576 -0.106515,0.065035 -0.15625,0.09375 -0.5357,0.309289 -0.88742,2.43629 -1.0625,5.09375 l -38.8125,0 0,8.15625 38.8125,0 c 0.17485,2.662148 0.52614,4.81533 1.0625,5.125 1.59155,0.91888 15.90625,-7.349739 15.90625,-9.1875 0,-1.722901 -12.58368,-9.123093 -15.46875,-9.28125 -0.09617,-0.00527 -0.208351,-0.017576 -0.28125,0 z"
+ transform="translate(-22.696829,43.483757)"
+ id="path4106" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="technos"
+ style="display:inline"
+ transform="translate(-1e-6,7.96875)">
+ <path
+ style="fill:#ffffff;stroke:#999999;stroke-opacity:1"
+ d="m 179.59375,126.9375 c -16.33387,0 -29.5625,6.87983 -29.5625,15.34375 0,8.46392 13.22863,15.3125 29.5625,15.3125 14.73964,0 26.97351,-5.56469 29.21875,-12.875 l 19.71875,-5.40625 -19.90625,0 c -2.66028,-7.04819 -14.65054,-12.375 -29.03125,-12.375 z"
+ id="path4123" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="160.79045"
+ y="144.94669"
+ id="text4119"><tspan
+ sodipodi:role="line"
+ id="tspan4121"
+ x="160.79045"
+ y="144.94669"
+ style="font-size:10px;fill:#666666">JGroups</tspan></text>
+ <path
+ style="fill:#ffffff;stroke:#999999;stroke-opacity:1"
+ d="m 457.625,187.71875 c -14.9527,0 -27.32896,5.75306 -29.3125,13.21875 -2.64058,-4.1889 -7.79772,-7.03125 -13.71875,-7.03125 -8.61241,0 -15.59375,6.01301 -15.59375,13.4375 0,7.06948 6.33458,12.83747 14.375,13.375 -2.87507,2.10833 -4.5,4.52399 -4.5,7.0625 0,8.46392 18.03904,15.3125 40.3125,15.3125 22.27346,0 40.34375,-6.84858 40.34375,-15.3125 0,-4.8782 -6.02863,-9.22455 -15.375,-12.03125 5.49509,-1.9237 9.66863,-4.77201 11.6875,-8.125 l 22.84375,0 -21.5625,-3.6875 c 0.0348,-0.30491 0.0625,-0.59687 0.0625,-0.90625 0,-8.46392 -13.22863,-15.3125 -29.5625,-15.3125 z m -27.53125,20.9375 c 1.32768,1.74748 3.28859,3.32236 5.6875,4.6875 -2.92858,0.39347 -5.70756,0.90484 -8.28125,1.53125 1.42887,-1.81064 2.33543,-3.92161 2.59375,-6.21875 z"
+ id="path4125" />
+ <text
+ id="text4127"
+ y="211.05193"
+ x="407.65793"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:10px;fill:#666666"
+ y="211.05193"
+ x="407.65793"
+ id="tspan4129"
+ sodipodi:role="line">H2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="420.15561"
+ y="230.44559"
+ id="text4133"><tspan
+ sodipodi:role="line"
+ id="tspan4135"
+ x="420.15561"
+ y="230.44559"
+ style="font-size:10px;fill:#666666">PostgreSQL</tspan></text>
+ <text
+ id="text4139"
+ y="206.61336"
+ x="441.44528"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:10px;fill:#666666"
+ y="206.61336"
+ x="441.44528"
+ id="tspan4141"
+ sodipodi:role="line">HBase</tspan></text>
+ <path
+ style="fill:#ffffff;stroke:#999999;stroke-opacity:1"
+ d="m 691.53125,199 c -10.18105,0 -18.74639,3.28902 -21.28125,7.75 l -27.125,-2.90625 26.46875,6.71875 c 1.12902,5.28749 10.52235,9.40625 21.9375,9.40625 12.17616,0 22.03125,-4.67765 22.03125,-10.46875 0,-5.7911 -9.85509,-10.5 -22.03125,-10.5 z"
+ id="path4143" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="680.24261"
+ y="213.21994"
+ id="text4145"><tspan
+ sodipodi:role="line"
+ id="tspan4147"
+ x="680.24261"
+ y="213.21994"
+ style="font-size:10px;fill:#666666">SolR</tspan></text>
+ <path
+ style="fill:#ffffff;stroke:#999999;stroke-opacity:1"
+ d="m 418.90625,-7.46875 c -16.33387,0 -29.59375,6.84858357 -29.59375,15.3125 0,8.463916 13.25988,15.3125 29.59375,15.3125 0.54232,0 1.05862,-0.01631 1.59375,-0.03125 l 10.75,17.25 -4.625,-17.78125 c 12.57449,-1.764711 21.84375,-7.675786 21.84375,-14.75 0,-8.46391643 -13.22863,-15.3125 -29.5625,-15.3125 z"
+ id="path4157" />
+ <text
+ id="text4159"
+ y="10.514438"
+ x="400.07986"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:10px;fill:#666666"
+ y="10.514438"
+ x="400.07986"
+ id="tspan4161"
+ sodipodi:role="line">Hessian</tspan></text>
+ </g>
+</svg>
1
0
Author: bleny
Date: 2010-08-18 15:46:07 +0200 (Wed, 18 Aug 2010)
New Revision: 267
Url: http://nuiton.org/repositories/revision/wikitty/267
Log:
merging into branch changes done in trunk
Added:
branches/wikitty-eugene-migration/src/site/presentation_Wikitty_2010-08-20.odp
branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/
branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/
branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/deserializers
branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/serializers
branches/wikitty-eugene-migration/wikitty-hessian-server/src/test/java/HessianTest.java
Removed:
branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/
branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/deserializers
branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/serializers
Modified:
branches/wikitty-eugene-migration/
branches/wikitty-eugene-migration/pom.xml
branches/wikitty-eugene-migration/wikitty-api/pom.xml
branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityWikitty.java
branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java
branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java
branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java
branches/wikitty-eugene-migration/wikitty-hbase-impl/
branches/wikitty-eugene-migration/wikitty-hbase-impl/pom.xml
branches/wikitty-eugene-migration/wikitty-hessian-server/pom.xml
branches/wikitty-eugene-migration/wikitty-jdbc-impl/pom.xml
branches/wikitty-eugene-migration/wikitty-jms-impl/
branches/wikitty-eugene-migration/wikitty-jms-impl/pom.xml
branches/wikitty-eugene-migration/wikitty-jpa-impl/
branches/wikitty-eugene-migration/wikitty-jpa-impl/pom.xml
branches/wikitty-eugene-migration/wikitty-multistorage-impl/pom.xml
branches/wikitty-eugene-migration/wikitty-solr-impl/pom.xml
branches/wikitty-eugene-migration/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrSearchTest.java
branches/wikitty-eugene-migration/wikitty-ui-zk/pom.xml
Property changes on: branches/wikitty-eugene-migration
___________________________________________________________________
Modified: svn:mergeinfo
- /branches/2.0-eugene2:164-179
+ /branches/2.0-eugene2:164-179
/trunk:239-266
Modified: branches/wikitty-eugene-migration/pom.xml
===================================================================
--- branches/wikitty-eugene-migration/pom.xml 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/pom.xml 2010-08-18 13:46:07 UTC (rev 267)
@@ -1,5 +1,7 @@
<?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">
+<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">
<modelVersion>4.0.0</modelVersion>
@@ -104,7 +106,7 @@
<dependency>
<groupId>com.caucho</groupId>
<artifactId>hessian</artifactId>
- <version>3.1.5</version>
+ <version>4.0.6</version>
<scope>compile</scope>
</dependency>
@@ -113,7 +115,7 @@
<artifactId>solr-core</artifactId>
<version>1.4.1</version>
</dependency>
-
+
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
@@ -192,7 +194,129 @@
<version>${zk.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.hbase</groupId>
+ <artifactId>hbase</artifactId>
+ <version>${hbase.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.hbase</groupId>
+ <artifactId>hbase</artifactId>
+ <classifier>tests</classifier>
+ <version>${hbase.version}</version>
+ <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>
+
+ <dependency>
+ <groupId>commons-cli</groupId>
+ <artifactId>commons-cli</artifactId>
+ <version>1.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>${jetty.version}</version>
+ <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-aop</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>${spring.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-orm</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ <version>3.5.1-Final</version>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>4.0.2.GA</version>
+ </dependency>
+ <dependency>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-common-core</artifactId>
+ <version>2.2.0.GA</version>
+ </dependency>
+ <dependency>
+ <groupId>dom4j</groupId>
+ <artifactId>dom4j</artifactId>
+ <version>1.6.1</version>
+ </dependency>
+ <dependency>
+ <groupId>javassist</groupId>
+ <artifactId>javassist</artifactId>
+ <version>3.6.0.GA</version>
+ </dependency>
+ <dependency>
+ <groupId>antlr</groupId>
+ <artifactId>antlr</artifactId>
+ <version>2.7.7</version>
+ </dependency>
+ <dependency>
+ <groupId>cglib</groupId>
+ <artifactId>cglib</artifactId>
+ <version>2.1_3</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate.javax.persistence</groupId>
+ <artifactId>hibernate-jpa-2.0-api</artifactId>
+ <version>1.0.0.Final</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-core</artifactId>
+ <version>5.3.1</version>
+ </dependency>
+
</dependencies>
</dependencyManagement>
@@ -200,7 +324,8 @@
<!-- Source control management. -->
<scm>
<connection>scm:svn:http://svn.nuiton.org/svn/wikitty/trunk</connection>
- <developerConnection>scm:svn:http://svn.nuiton.org/svn/wikitty/trunk</developerConnection>
+ <developerConnection>scm:svn:http://svn.nuiton.org/svn/wikitty/trunk
+ </developerConnection>
<url>http://www.nuiton.org/repositories/browse/wikitty/trunk</url>
</scm>
@@ -228,6 +353,8 @@
<jetty.version>6.1.22</jetty.version>
<zk.version>5.0.2</zk.version>
+
+ <hbase.version>0.89.0-SNAPSHOT</hbase.version>
</properties>
<!-- ************************************************************* -->
@@ -262,7 +389,7 @@
<profiles>
<profile>
- <id>extra-modules</id>
+ <id>wikitty-extra-modules</id>
<modules>
<module>wikitty-hbase-impl</module>
<module>wikitty-jpa-impl</module>
@@ -271,5 +398,5 @@
</modules>
</profile>
</profiles>
-
+
</project>
Copied: branches/wikitty-eugene-migration/src/site/presentation_Wikitty_2010-08-20.odp (from rev 266, trunk/src/site/presentation_Wikitty_2010-08-20.odp)
===================================================================
(Binary files differ)
Modified: branches/wikitty-eugene-migration/wikitty-api/pom.xml
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/pom.xml 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-api/pom.xml 2010-08-18 13:46:07 UTC (rev 267)
@@ -25,21 +25,18 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</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>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
- <version>${spring.version}</version>
<scope>test</scope>
</dependency>
@@ -111,12 +108,6 @@
<!-- *** Build Settings ****************************************** -->
<!-- ************************************************************* -->
- <packaging>jar</packaging>
-
- <properties>
-
- </properties>
-
<build>
<pluginManagement>
@@ -200,8 +191,4 @@
</build>
- <!-- ************************************************************* -->
- <!-- *** Build Environment ************************************** -->
- <!-- ************************************************************* -->
-
</project>
Modified: branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityWikitty.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityWikitty.java 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityWikitty.java 2010-08-18 13:46:07 UTC (rev 267)
@@ -116,9 +116,26 @@
return Collections.emptyList();
}
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (!BusinessEntityWikitty.class.isAssignableFrom(obj.getClass())) {
+ return false;
+ }
+ BusinessEntityWikitty wikitty = (BusinessEntityWikitty) obj;
+ return getWikittyId().equals(wikitty.getWikittyId());
+ }
+
+ @Override
+ public int hashCode() {
+ return getWikittyId().hashCode();
+ }
+
/*
- * @see org.nuiton.wikitty.BusinessEntity#addPropertyChangeListener(java.beans.PropertyChangeListener)
- */
+ * @see org.nuiton.wikitty.BusinessEntity#addPropertyChangeListener(java.beans.PropertyChangeListener)
+ */
@Override
public void addPropertyChangeListener(PropertyChangeListener listener) {
getPropertyChangeSupport().addPropertyChangeListener(listener);
Modified: branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java 2010-08-18 13:46:07 UTC (rev 267)
@@ -87,6 +87,9 @@
* @param e
*/
public void putWikitty(Wikitty e) {
+ if (e == null) {
+ return;
+ }
Wikitty old = getWikitty(e.getId());
if (old == null
|| WikittyUtil.versionGreaterThan(e.getVersion(), old.getVersion())) {
Modified: branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2010-08-18 13:46:07 UTC (rev 267)
@@ -151,6 +151,17 @@
/**
* Restore wikitty entity with specified id or {@code null} if entity can't be found.
*
+ * @param id entity id
+ * @return wikitty entity with specified id or {@code null} if entity can't be found
+ */
+ public Wikitty restore(String id) {
+ Wikitty wikitty = wikittyService.restore(securityToken, id);
+ return wikitty;
+ }
+
+ /**
+ * Restore wikitty entity with specified id or {@code null} if entity can't be found.
+ *
* @param <E> object type
* @param clazz entity class
* @param id entity id
Modified: branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java 2010-08-18 13:46:07 UTC (rev 267)
@@ -101,6 +101,12 @@
/** wrap the wikitty or copy it according to allwaysRestoreCopies value */
protected Wikitty wrapWikitty(Wikitty wikitty) {
+
+ // Restored wikitty can be null
+ if (wikitty == null) {
+ return null;
+ }
+
Wikitty result = null;
if (allwaysRestoreCopies) {
try {
@@ -366,8 +372,10 @@
cache.putAllWikitty(missingInCache);
for (Wikitty w : missingInCache) {
- // add missing object
- fromCache.put(w.getId(), w);
+ if (w != null) {
+ // add missing object
+ fromCache.put(w.getId(), w);
+ }
}
Collection<Wikitty> tmp = fromCache.values();
Modified: branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-08-18 13:46:07 UTC (rev 267)
@@ -52,7 +52,7 @@
public static final String DEFAULT_VERSION = "0.0";
- public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'Z";
+ public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ'Z'";
public static final String[] DATE_FORMAT_ALLOWED = {
DATE_FORMAT,
new SimpleDateFormat().toPattern(),
Modified: branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java 2010-08-18 13:46:07 UTC (rev 267)
@@ -128,6 +128,19 @@
}
/**
+ * Contains.
+ *
+ * @param element
+ * @param value
+ * @return
+ */
+ public Search contains(String element, String value) {
+ restrictions.add(RestrictionHelper.contains(elt(element),
+ value));
+ return this;
+ }
+
+ /**
* Equals.
*
* @param element
Deleted: branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/deserializers
===================================================================
--- trunk/wikitty-api/src/main/resources/META-INF/hessian/deserializers 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/deserializers 2010-08-18 13:46:07 UTC (rev 267)
@@ -1 +0,0 @@
-java.math.BigDecimal=com.caucho.hessian.io.BigDecimalDeserializer
\ No newline at end of file
Copied: branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/deserializers (from rev 266, trunk/wikitty-api/src/main/resources/META-INF/hessian/deserializers)
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/deserializers (rev 0)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/deserializers 2010-08-18 13:46:07 UTC (rev 267)
@@ -0,0 +1 @@
+java.math.BigDecimal=com.caucho.hessian.io.BigDecimalDeserializer
\ No newline at end of file
Deleted: branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/serializers
===================================================================
--- trunk/wikitty-api/src/main/resources/META-INF/hessian/serializers 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/serializers 2010-08-18 13:46:07 UTC (rev 267)
@@ -1 +0,0 @@
-java.math.BigDecimal=com.caucho.hessian.io.StringValueSerializer
\ No newline at end of file
Copied: branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/serializers (from rev 266, trunk/wikitty-api/src/main/resources/META-INF/hessian/serializers)
===================================================================
--- branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/serializers (rev 0)
+++ branches/wikitty-eugene-migration/wikitty-api/src/main/resources/META-INF/hessian/serializers 2010-08-18 13:46:07 UTC (rev 267)
@@ -0,0 +1 @@
+java.math.BigDecimal=com.caucho.hessian.io.StringValueSerializer
\ No newline at end of file
Property changes on: branches/wikitty-eugene-migration/wikitty-hbase-impl
___________________________________________________________________
Modified: svn:ignore
- .settings
target
.classpath
.project
build
PutObjectStoreDirHere
+ .settings
target
.classpath
.project
build
PutObjectStoreDirHere
*.ipr
*.iml
*.iws
Modified: branches/wikitty-eugene-migration/wikitty-hbase-impl/pom.xml
===================================================================
--- branches/wikitty-eugene-migration/wikitty-hbase-impl/pom.xml 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-hbase-impl/pom.xml 2010-08-18 13:46:07 UTC (rev 267)
@@ -1,6 +1,7 @@
<?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">
+<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">
<modelVersion>4.0.0</modelVersion>
@@ -17,69 +18,70 @@
<artifactId>wikitty-hbase-impl</artifactId>
<dependencies>
- <!-- TEST -->
+
+ <!-- sibling depedencies -->
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
+ <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>${project.groupId}</groupId>
<artifactId>wikitty-api</artifactId>
<version>${project.version}</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
+
<dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </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>
<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>
- <!-- HBASE -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
+
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
@@ -113,29 +115,28 @@
<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>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
- <version>1.1</version>
<scope>test</scope>
</dependency>
+
</dependencies>
<!-- ************************************************************* -->
@@ -154,8 +155,10 @@
<packaging>jar</packaging>
<properties>
- <!-- Test don't run in hudson due to port restriction -->
- <maven.test.skip>false</maven.test.skip>
+ <!-- FIXME tchemit 20010-08-12 : Find a nice way to do it in test :
+ Must brefore test to detect if test can be executed otherwise ignore it
+ -->
+ <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>
<!-- ************************************************************* -->
@@ -179,5 +182,21 @@
</plugins>
</build>
+ <!-- FIXME tchemit 2010-08-12 Must be removed as soon as a stable version is available -->
+ <repositories>
+ <repository>
+ <id>apache-snapshots</id>
+ <url>
+ http://nexus.nuiton.org/nexus/content/repositories/apache-snapshots/
+ </url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ </repository>
+ </repositories>
+
</project>
Modified: branches/wikitty-eugene-migration/wikitty-hessian-server/pom.xml
===================================================================
--- branches/wikitty-eugene-migration/wikitty-hessian-server/pom.xml 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-hessian-server/pom.xml 2010-08-18 13:46:07 UTC (rev 267)
@@ -1,5 +1,7 @@
<?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">
+<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">
<modelVersion>4.0.0</modelVersion>
@@ -16,46 +18,47 @@
<artifactId>wikitty-hessian-server</artifactId>
<dependencies>
+
+ <!-- sibling dependencies -->
+
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>wikitty-api</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
-
- <!-- webapp can manage every things -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>wikitty-jdbc-impl</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
- <!--dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>wikitty-multistorage-impl</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>com.caucho</groupId>
<artifactId>hessian</artifactId>
</dependency>
<dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <scope>runtime</scope>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>runtime</scope>
</dependency>
<dependency>
- <groupId>postgresql</groupId>
- <artifactId>postgresql</artifactId>
- <scope>runtime</scope>
+ <groupId>postgresql</groupId>
+ <artifactId>postgresql</artifactId>
+ <scope>runtime</scope>
</dependency>
+ <!-- TEST -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
</dependencies>
<!-- ************************************************************* -->
@@ -67,4 +70,38 @@
<description>Wikitty hessian server</description>
<inceptionYear>2010</inceptionYear>
+
+ <profiles>
+ <!-- use this profile to add all impl dependencies -->
+ <profile>
+ <id>wikitty-extra-modules</id>
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>wikitty-hbase-impl</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>wikitty-jpa-impl</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>wikitty-jms-impl</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>wikitty-multistorage-impl</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+ </profile>
+ </profiles>
+
</project>
Copied: branches/wikitty-eugene-migration/wikitty-hessian-server/src/test/java/HessianTest.java (from rev 266, trunk/wikitty-hessian-server/src/test/java/HessianTest.java)
===================================================================
--- branches/wikitty-eugene-migration/wikitty-hessian-server/src/test/java/HessianTest.java (rev 0)
+++ branches/wikitty-eugene-migration/wikitty-hessian-server/src/test/java/HessianTest.java 2010-08-18 13:46:07 UTC (rev 267)
@@ -0,0 +1,34 @@
+import com.caucho.hessian.io.Hessian2Input;
+import com.caucho.hessian.io.Hessian2Output;
+import com.caucho.hessian.io.SerializerFactory;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.math.BigDecimal;
+
+/**
+ * @author sletellier <letellier(a)codelutin.com>
+ */
+public class HessianTest {
+
+ @Test
+ public void testHessianBigDecimal() throws Exception {
+ BigDecimal object = new BigDecimal("12474639.945458954");
+ Hessian2Output os = new Hessian2Output(null);
+ SerializerFactory factory = new SerializerFactory();
+ os.setSerializerFactory(factory);
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ os.init(buffer);
+ os.writeObject(object);
+ os.close();
+ byte[] bytes = buffer.toByteArray();
+
+ Hessian2Input is = new Hessian2Input(new ByteArrayInputStream(bytes));
+ BigDecimal newObject = (BigDecimal) is.readObject();
+ is.close();
+
+ Assert.assertEquals(object, newObject);
+ }
+}
Modified: branches/wikitty-eugene-migration/wikitty-jdbc-impl/pom.xml
===================================================================
--- branches/wikitty-eugene-migration/wikitty-jdbc-impl/pom.xml 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-jdbc-impl/pom.xml 2010-08-18 13:46:07 UTC (rev 267)
@@ -13,7 +13,29 @@
<artifactId>wikitty-jdbc-impl</artifactId>
<dependencies>
+
+ <!-- sibling dependencies -->
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>wikitty-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>wikitty-solr-impl</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>wikitty-api</artifactId>
+ <version>${project.version}</version>
+ <classifier>tests</classifier>
+ <scope>test</scope>
+ </dependency>
+
<!-- TEST -->
+
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
@@ -21,45 +43,22 @@
<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>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>wikitty-api</artifactId>
- <version>${project.version}</version>
- <classifier>tests</classifier>
- <scope>test</scope>
- </dependency>
- <!-- WIKITTY -->
<dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>wikitty-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>wikitty-solr-impl</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
- <version>${jetty.version}</version>
<scope>provided</scope>
</dependency>
Property changes on: branches/wikitty-eugene-migration/wikitty-jms-impl
___________________________________________________________________
Modified: svn:ignore
- .settings
target
.classpath
.project
PutObjectStoreDirHere
+ .settings
target
.classpath
.project
PutObjectStoreDirHere
*.ipr
*.iws
*.iml
Modified: branches/wikitty-eugene-migration/wikitty-jms-impl/pom.xml
===================================================================
--- branches/wikitty-eugene-migration/wikitty-jms-impl/pom.xml 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-jms-impl/pom.xml 2010-08-18 13:46:07 UTC (rev 267)
@@ -1,59 +1,56 @@
<?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">
- <modelVersion>4.0.0</modelVersion>
+<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">
+ <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.nuiton</groupId>
- <artifactId>wikitty</artifactId>
- <version>2.1-SNAPSHOT</version>
- </parent>
+ <parent>
+ <groupId>org.nuiton</groupId>
+ <artifactId>wikitty</artifactId>
+ <version>2.1-SNAPSHOT</version>
+ </parent>
- <groupId>org.nuiton.wikitty</groupId>
- <artifactId>wikitty-jms-impl</artifactId>
+ <groupId>org.nuiton.wikitty</groupId>
+ <artifactId>wikitty-jms-impl</artifactId>
- <dependencies>
- <!-- WIKITTY -->
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>wikitty-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>wikitty-solr-impl</artifactId>
- <version>${project.version}</version>
- </dependency>
+ <dependencies>
- <!-- JMS -->
- <dependency>
- <groupId>org.apache.activemq</groupId>
- <artifactId>activemq-core</artifactId>
- <version>5.3.1</version>
- </dependency>
+ <!-- sibling dependencies -->
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <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>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
+ <!-- JMS -->
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-core</artifactId>
+ </dependency>
- </dependencies>
+ <!-- TEST -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
- <!-- ************************************************************* -->
- <!-- *** Project Information ************************************* -->
- <!-- ************************************************************* -->
+ </dependencies>
- <name>Wikitty :: wikitty-jms-impl</name>
+ <!-- ************************************************************* -->
+ <!-- *** Project Information ************************************* -->
+ <!-- ************************************************************* -->
- <description>jms storage implementation</description>
- <inceptionYear>2010</inceptionYear>
+ <name>Wikitty :: wikitty-jms-impl</name>
- <!-- ************************************************************* -->
- <!-- *** Build Settings ****************************************** -->
- <!-- ************************************************************* -->
+ <description>jms storage implementation</description>
+ <inceptionYear>2010</inceptionYear>
- <packaging>jar</packaging>
-
</project>
Property changes on: branches/wikitty-eugene-migration/wikitty-jpa-impl
___________________________________________________________________
Modified: svn:ignore
- .settings
target
.classpath
.project
PutObjectStoreDirHere
solr
+ .settings
target
.classpath
.project
PutObjectStoreDirHere
solr
*.ipr
*.iws
*.iml
Modified: branches/wikitty-eugene-migration/wikitty-jpa-impl/pom.xml
===================================================================
--- branches/wikitty-eugene-migration/wikitty-jpa-impl/pom.xml 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-jpa-impl/pom.xml 2010-08-18 13:46:07 UTC (rev 267)
@@ -1,175 +1,170 @@
<?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">
+<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">
- <modelVersion>4.0.0</modelVersion>
+ <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.nuiton</groupId>
- <artifactId>wikitty</artifactId>
- <version>2.1-SNAPSHOT</version>
- </parent>
+ <parent>
+ <groupId>org.nuiton</groupId>
+ <artifactId>wikitty</artifactId>
+ <version>2.1-SNAPSHOT</version>
+ </parent>
- <!-- ************************************************************* -->
- <!-- *** POM Relationships *************************************** -->
- <!-- ************************************************************* -->
+ <!-- ************************************************************* -->
+ <!-- *** POM Relationships *************************************** -->
+ <!-- ************************************************************* -->
- <groupId>org.nuiton.wikitty</groupId>
- <artifactId>wikitty-jpa-impl</artifactId>
+ <groupId>org.nuiton.wikitty</groupId>
+ <artifactId>wikitty-jpa-impl</artifactId>
- <dependencies>
- <!-- TEST -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
+ <dependencies>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>wikitty-api</artifactId>
- <version>${project.version}</version>
- <classifier>tests</classifier>
- <scope>test</scope>
- </dependency>
+ <!-- sibling dependencies -->
- <!-- LOG -->
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>wikitty-api</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ </dependency>
- <!-- SPRING -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>${spring.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-aop</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-orm</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-jdbc</artifactId>
- <version>${spring.version}</version>
- </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>${project.groupId}</groupId>
+ <artifactId>wikitty-api</artifactId>
+ <version>${project.version}</version>
+ <classifier>tests</classifier>
+ <scope>test</scope>
+ </dependency>
- <!-- Hibernate -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- <version>3.5.1-Final</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-validator</artifactId>
- <version>4.0.2.GA</version>
- </dependency>
- <dependency>
- <groupId>jboss</groupId>
- <artifactId>jboss-common-core</artifactId>
- <version>2.2.0.GA</version>
- </dependency>
- <dependency>
- <groupId>dom4j</groupId>
- <artifactId>dom4j</artifactId>
- <version>1.6.1</version>
- </dependency>
- <dependency>
- <groupId>javassist</groupId>
- <artifactId>javassist</artifactId>
- <version>3.6.0.GA</version>
- </dependency>
- <dependency>
- <groupId>antlr</groupId>
- <artifactId>antlr</artifactId>
- <version>2.7.7</version>
- </dependency>
- <dependency>
- <groupId>cglib</groupId>
- <artifactId>cglib</artifactId>
- <version>2.1_3</version>
- </dependency>
- <dependency>
- <groupId>com.experlog</groupId>
- <artifactId>xapool</artifactId>
- <version>1.5.0</version>
- </dependency>
- <dependency>
- <groupId>javax.transaction</groupId>
- <artifactId>jta</artifactId>
- <version>1.1</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate.javax.persistence</groupId>
- <artifactId>hibernate-jpa-2.0-api</artifactId>
- <version>1.0.0.Final</version>
- </dependency>
+ <!-- TEST -->
- <!-- H2 -->
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
- </dependencies>
+ <!-- LOG -->
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
- <!-- ************************************************************* -->
- <!-- *** Project Information ************************************* -->
- <!-- ************************************************************* -->
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
- <name>Wikitty :: wikitty-jpa-impl</name>
+ <!-- SPRING -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <scope>test</scope>
+ </dependency>
- <description>jpa impl of wikitty</description>
- <inceptionYear>2009</inceptionYear>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aop</artifactId>
+ <scope>test</scope>
+ </dependency>
- <!-- ************************************************************* -->
- <!-- *** Build Settings ****************************************** -->
- <!-- ************************************************************* -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <scope>compile</scope>
+ </dependency>
- <packaging>jar</packaging>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <scope>test</scope>
+ </dependency>
- <properties>
- <maven.test.failure.ignore>false</maven.test.failure.ignore>
- </properties>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-orm</artifactId>
+ <scope>compile</scope>
+ </dependency>
- <!-- ************************************************************* -->
- <!-- *** Build Environment ************************************** -->
- <!-- ************************************************************* -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!-- Hibernate -->
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-common-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>dom4j</groupId>
+ <artifactId>dom4j</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javassist</groupId>
+ <artifactId>javassist</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>antlr</groupId>
+ <artifactId>antlr</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>cglib</groupId>
+ <artifactId>cglib</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.experlog</groupId>
+ <artifactId>xapool</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.transaction</groupId>
+ <artifactId>jta</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate.javax.persistence</groupId>
+ <artifactId>hibernate-jpa-2.0-api</artifactId>
+ </dependency>
+
+ <!-- H2 -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ </dependency>
+
+ </dependencies>
+
+ <!-- ************************************************************* -->
+ <!-- *** Project Information ************************************* -->
+ <!-- ************************************************************* -->
+
+ <name>Wikitty :: wikitty-jpa-impl</name>
+ <description>jpa impl of wikitty</description>
+ <inceptionYear>2009</inceptionYear>
+
+ <!-- ************************************************************* -->
+ <!-- *** Build Settings ****************************************** -->
+ <!-- ************************************************************* -->
+
+ <properties>
+
+ <maven.test.failure.ignore>true</maven.test.failure.ignore>
+ </properties>
+
</project>
Modified: branches/wikitty-eugene-migration/wikitty-multistorage-impl/pom.xml
===================================================================
--- branches/wikitty-eugene-migration/wikitty-multistorage-impl/pom.xml 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-multistorage-impl/pom.xml 2010-08-18 13:46:07 UTC (rev 267)
@@ -14,28 +14,15 @@
<artifactId>wikitty-multistorage-impl</artifactId>
<dependencies>
- <!-- WIKITTY -->
+
+ <!-- sibling dependencies -->
+
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>wikitty-api</artifactId>
<version>${project.version}</version>
</dependency>
-
- <!-- TEST -->
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
-
- <dependency>
<groupId>${project.groupId}</groupId>
<artifactId>wikitty-jdbc-impl</artifactId>
<version>${project.version}</version>
@@ -53,6 +40,21 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
+
+ <!-- TEST -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+
</dependencies>
<!-- ************************************************************* -->
@@ -67,12 +69,10 @@
<!-- *** Build Settings ****************************************** -->
<!-- ************************************************************* -->
- <packaging>jar</packaging>
-
<properties>
- <!-- maven conventionnal variables doesn't work ?
- <maven.test.failure.ignore>true</maven.test.failure.ignore> -->
- <maven.test.testFailureIgnore>true</maven.test.testFailureIgnore>
+ <!-- maven conventionnal variables doesn't work ? -->
+ <maven.test.failure.ignore>true</maven.test.failure.ignore>
+ <!--maven.test.testFailureIgnore>true</maven.test.testFailureIgnore-->
</properties>
<build>
Modified: branches/wikitty-eugene-migration/wikitty-solr-impl/pom.xml
===================================================================
--- branches/wikitty-eugene-migration/wikitty-solr-impl/pom.xml 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-solr-impl/pom.xml 2010-08-18 13:46:07 UTC (rev 267)
@@ -17,13 +17,20 @@
<artifactId>wikitty-solr-impl</artifactId>
<dependencies>
- <!-- COMPILE -->
+
+ <!-- sibling dependencies -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>wikitty-api</artifactId>
<version>${project.version}</version>
- <scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>wikitty-api</artifactId>
+ <version>${project.version}</version>
+ <classifier>tests</classifier>
+ <scope>test</scope>
+ </dependency>
<!-- SOLR -->
<dependency>
@@ -56,28 +63,19 @@
<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>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>wikitty-api</artifactId>
- <version>${project.version}</version>
- <classifier>tests</classifier>
- <scope>test</scope>
- </dependency>
+
</dependencies>
<!-- ************************************************************* -->
Modified: branches/wikitty-eugene-migration/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrSearchTest.java
===================================================================
--- branches/wikitty-eugene-migration/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrSearchTest.java 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrSearchTest.java 2010-08-18 13:46:07 UTC (rev 267)
@@ -4,6 +4,8 @@
import static junit.framework.Assert.assertTrue;
import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
import java.util.List;
import org.apache.commons.logging.Log;
@@ -410,4 +412,31 @@
list = result.getAll();
assertEquals(0, list.size());
}
+
+ /** test that doing a search with a date criteria is possible */
+ @Test
+ public void testSearchByDate() throws Exception {
+ Calendar cal = Calendar.getInstance();
+ cal.set(Calendar.DAY_OF_MONTH, 20);
+ cal.set(Calendar.MONTH, 9);
+ cal.set(Calendar.YEAR, 2009);
+
+ // this must return a date in a format understandable for solr
+ // pattern in WikittyUtil has to be compatible
+ String dateString = WikittyUtil.formatDate(cal.getTime());
+
+ Criteria criteria = Search.query()
+ .gt("Test.buildDate", dateString)
+ .criteria()
+ .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS);
+
+ // If an exception is thrown, check that the pattern in WikittyUtil
+ // is compatible with solr, in particular that the trailing Z
+ // is present and respect http://wiki.apache.org/solr/IndexingDates
+ PagedResult<String> result = ws.findAllByCriteria(null, criteria);
+
+
+ List<String> list = result.getAll();
+ assertEquals(1, list.size());
+ }
}
Modified: branches/wikitty-eugene-migration/wikitty-ui-zk/pom.xml
===================================================================
--- branches/wikitty-eugene-migration/wikitty-ui-zk/pom.xml 2010-08-17 16:19:53 UTC (rev 266)
+++ branches/wikitty-eugene-migration/wikitty-ui-zk/pom.xml 2010-08-18 13:46:07 UTC (rev 267)
@@ -17,12 +17,13 @@
<dependencies>
+ <!-- sibling dependencies -->
+
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>wikitty-api</artifactId>
<version>${project.version}</version>
</dependency>
-
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>wikitty-jdbc-impl</artifactId>
1
0