r125 - in trunk: wikitty-api/src/main/java/org/nuiton/wikitty wikitty-api/src/main/java/org/nuiton/wikitty/importexport wikitty-api/src/test/java/org/nuiton/wikitty/conform wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test
Author: bpoussin Date: 2010-06-11 19:01:31 +0200 (Fri, 11 Jun 2010) New Revision: 125 Url: http://nuiton.org/repositories/revision/wikitty/125 Log: modification de PagedResult et les methodes de WikittyService pour utiliser des PagedResult avec des Id et non des Wikitty Evolution #678 Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/PagedResult.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceImpl.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ExportTask.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrSearchTest.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/PagedResult.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/PagedResult.java 2010-06-11 14:50:48 UTC (rev 124) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/PagedResult.java 2010-06-11 17:01:31 UTC (rev 125) @@ -17,12 +17,16 @@ package org.nuiton.wikitty; +import static org.nuiton.i18n.I18n._; + import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; /** * Paged result containing result collection and facet topics. @@ -37,6 +41,9 @@ */ public class PagedResult<T> implements Serializable { + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(PagedResult.class); + /** serialVersionUID. */ private static final long serialVersionUID = 8518774558223121855L; @@ -70,6 +77,20 @@ } /** + * Call {@link #cast(String, WikittyService, Class, boolean)} with + * autoconvert = true + * + * @param proxy used to retrieve securityToken and WikittyService + * @param clazz target PagedResult type + * @return new PagedResult, this result can have less elements that original + * for some reason (security, ...) + */ + public <E extends BusinessEntityWikitty> PagedResult<E> cast( + WikittyProxy proxy, Class<E> clazz) { + return cast(proxy, clazz, true); + } + + /** * Convert all result to the wanted type and return new PagedResult with * this new result list. If some result don't have the right extension (clazz) * this extension is automatically added if autoconvert is true. Else @@ -80,44 +101,58 @@ * wikitty object are not uptodate in database. * * @param <E> class to cast into - * @param clazz class - * @param wikittyService wikitty service - * @param autoconvert - * @return new PagedResult + * @param proxy used to retrieve securityToken and WikittyService + * @param autoconvert if autoconvert is false and object don't all needed + * extension, object is not put in the result + * @return new PagedResult, this result can have less elements that original + * for some reason (security, ...) */ public <E extends BusinessEntityWikitty> PagedResult<E> cast( - String securityToken, WikittyService wikittyService, - Class<E> clazz, boolean autoconvert) { - List<E> castedResult = new ArrayList<E>(results.size()); - E sample = WikittyUtil.newInstance(clazz); - Collection<WikittyExtension> wantedExtension = sample.getStaticExtensions(); - for (T t : results) { - if (t == null) { - castedResult.add(null); - } else { - Wikitty w = null; - if (t instanceof Wikitty) { - w = (Wikitty)t; - } else if (t instanceof BusinessEntityWikitty) { - w = ((BusinessEntityWikitty) t).getWikitty(); + WikittyProxy proxy, Class<E> clazz, boolean autoconvert) { + List<E> castedResult; + + if (results.size() > 0 && results.get(0) instanceof String) { + // le pagedresult courant contient des Ids + // Si ce n'est pas le cas, ca veut dire que le developpeur utilisant + // ce PagedResult ne sait pas ce qu'il fait :) + List<String> ids = (List<String>)results; + castedResult = proxy.restore(clazz, ids, !autoconvert); + } else { + castedResult = new ArrayList<E>(results.size()); + E sample = WikittyUtil.newInstance(clazz); + Collection<WikittyExtension> wantedExtension = sample.getStaticExtensions(); + for (T t : results) { + if (t == null) { + castedResult.add(null); } else { - throw new WikittyException(String.format( - "Illegal object result class '%s' can't convert it to wikitty", - t.getClass().getName(), clazz.getName())); + Wikitty w = null; + if (t instanceof Wikitty) { + w = (Wikitty) t; + } else if (t instanceof BusinessEntityWikitty) { + w = ((BusinessEntityWikitty) t).getWikitty(); + } else { + throw new WikittyException(String.format( + "Illegal object result class '%s' can't convert it to wikitty", + t.getClass().getName(), clazz.getName())); + } + + Collection<WikittyExtension> wikittyExtension = w.getExtensions(); + if (autoconvert || wikittyExtension.containsAll(wantedExtension)) { + E e = WikittyUtil.newInstance(proxy.getSecurityToken(), + proxy.getWikittyService(), clazz, (Wikitty) t); + castedResult.add(e); + } else { + // silently pass current object, this object is not put + // in result + if (log.isDebugEnabled()) { + log.debug(_( + "Illegal object result class '%s' can't convert it to '%s'" + + "there is no same extension %s != %s", + t.getClass().getName(), clazz.getName(), + wikittyExtension, wantedExtension)); + } + } } - - Collection<WikittyExtension> wikittyExtension = w.getExtensions(); - if (autoconvert || wikittyExtension.containsAll(wantedExtension)) { - E e = WikittyUtil.newInstance( - securityToken, wikittyService, clazz, (Wikitty) t); - castedResult.add(e); - } else { - throw new WikittyException(String.format( - "Illegal object result class '%s' can't convert it to '%s'" + - "there is no same extension %s != %s", - t.getClass().getName(), clazz.getName(), - wikittyExtension, wantedExtension)); - } } } PagedResult<E> result = new PagedResult<E>( Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2010-06-11 14:50:48 UTC (rev 124) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2010-06-11 17:01:31 UTC (rev 125) @@ -220,12 +220,12 @@ .setFirstIndex(firstIndex).setEndIndex(endIndex) .setFacetField(fieldFacet); - PagedResult<Wikitty> pagedResult = wikittyService.findAllByCriteria( + PagedResult<String> pagedResult = wikittyService.findAllByCriteria( securityToken, criteria); // we can use autoconvert = true because search by example add automaticaly // restriction on extension - PagedResult<E> result = (PagedResult<E>)pagedResult.cast(securityToken, - wikittyService, e.getClass(), true); + PagedResult<E> result = (PagedResult<E>)pagedResult.cast( + this, e.getClass(), true); return result; } @@ -233,8 +233,11 @@ Criteria criteria = Search.query(e.getWikitty()).criteria(); Wikitty w = wikittyService.findByCriteria(securityToken, criteria); - E result = (E)WikittyUtil.newInstance( - securityToken, wikittyService, e.getClass(), w); + E result = null; + if (w != null) { + result = (E) WikittyUtil.newInstance( + securityToken, wikittyService, e.getClass(), w); + } return result; } @@ -297,13 +300,13 @@ } } - PagedResult<Wikitty> pagedResult = wikittyService.findAllByCriteria( + PagedResult<String> pagedResult = wikittyService.findAllByCriteria( securityToken, serviceCriteria); // we can cast with autoconvert true because we have add restriction // on extension - PagedResult<E> result = (PagedResult<E>)pagedResult.cast(securityToken, - wikittyService, sample.getClass(), true); + PagedResult<E> result = (PagedResult<E>)pagedResult.cast( + this, sample.getClass(), true); return result; } @@ -329,8 +332,12 @@ } public PagedResult<Wikitty> findAllByLabel(String label, int firstIndex, int endIndex) { - PagedResult<Wikitty> result = wikittyService.findAllByLabel(securityToken, + PagedResult<String> resultId = wikittyService.findAllByLabel(securityToken, label, firstIndex, endIndex); + List<Wikitty> wikitties = wikittyService.restore(securityToken, resultId.getAll()); + PagedResult<Wikitty> result = new PagedResult<Wikitty>( + resultId.getFirstIndice(), resultId.getNumFound(), + resultId.getQueryString(), resultId.getFacets(), wikitties); return result; } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2010-06-11 14:50:48 UTC (rev 124) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2010-06-11 17:01:31 UTC (rev 125) @@ -253,8 +253,9 @@ /** * * @param id object id to restore - * @return the corresponding object, or null if object doesn't exist or is - * deleted + * @return the corresponding object, or null if object doesn't exist, is + * deleted or you don't have authorisation (you can check authorisation + * before call restore with {@link #canRead(java.lang.String, java.lang.String)} */ public Wikitty restore(String securityToken, String id); @@ -262,8 +263,8 @@ * * @param id list of wikitty ids to restore * @return list of corresponding wikitty, if one id is not valid (no object - * or deleted) this id is skip and result list have less elements than - * collection argument + * or deleted or no authorisation) this id is skip and result list have less + * elements than collection argument */ public List<Wikitty> restore(String securityToken, List<String> id); @@ -284,7 +285,7 @@ * @param criteria * @return */ - public PagedResult<Wikitty> findAllByCriteria( + public PagedResult<String> findAllByCriteria( String securityToken, Criteria criteria); /** @@ -293,13 +294,16 @@ * @param criteria * @return */ - public PagedResult<Wikitty> findAllByCriteria(String securityToken, + public PagedResult<String> findAllByCriteria(String securityToken, WikittyTransaction transaction, Criteria criteria); /** - * Fist lonely (or first one) wikitty object that match criteria, if no wikitty found return null + * Fist lonely (or first one) wikitty object that match criteria, if no + * wikitty found or first retrived is not authorized for the user return + * null + * * @param criteria - * @return + * @return wikitty object or null */ public Wikitty findByCriteria(String securityToken, Criteria criteria); @@ -319,7 +323,7 @@ * @param label * @return */ - public PagedResult<Wikitty> findAllByLabel(String securityToken, + public PagedResult<String> findAllByLabel(String securityToken, String label, int firstIndex, int endIndex); /** @@ -334,7 +338,8 @@ * @param wikittyId * @return */ - public Set<String> findAllAppliedLabels(String securityToken, String wikittyId); + public Set<String> findAllAppliedLabels( + String securityToken, String wikittyId); /* @@ -376,7 +381,8 @@ */ /** - * + * Restore wikitty in specifique version. + * Authorisation is checked on last version even for previous wikitty version */ public Wikitty restoreVersion(String securityToken, String wikittyId, String version); Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java 2010-06-11 14:50:48 UTC (rev 124) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java 2010-06-11 17:01:31 UTC (rev 125) @@ -180,7 +180,7 @@ * @return */ @Override - public PagedResult<Wikitty> findAllByCriteria( + public PagedResult<String> findAllByCriteria( String securityToken, Criteria criteria) { // if we want to add cache for this method, we must clear cache when // addLabel, store, storeExtension are called @@ -194,7 +194,7 @@ * @return */ @Override - public PagedResult<Wikitty> findAllByCriteria(String securityToken, + public PagedResult<String> findAllByCriteria(String securityToken, WikittyTransaction transaction, Criteria criteria) { // if we want to add cache for this method, we must use // transaction.getCache(), and we must clear cache when @@ -212,7 +212,7 @@ * @return */ @Override - public PagedResult<Wikitty> findAllByLabel(String securityToken, + public PagedResult<String> findAllByLabel(String securityToken, String label, int firstIndex, int endIndex) { // if we want to add cache for this method, we must clear cache when // addLabel is called Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceImpl.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceImpl.java 2010-06-11 14:50:48 UTC (rev 124) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceImpl.java 2010-06-11 17:01:31 UTC (rev 125) @@ -499,28 +499,29 @@ } // Store node with have deleted node as parent - Criteria criteria = Search.query().eq(TreeNode.FQ_FIELD_PARENT, id).criteria(); - List<Wikitty> wikittyNodes = findAllByCriteria( + Criteria criteria = + Search.query().eq(TreeNode.FQ_FIELD_PARENT, id).criteria(); + List<String> wikittyNodesId = findAllByCriteria( securityToken, transaction, criteria).getAll(); - for (Wikitty wikittyNode : wikittyNodes) { - String wikittyNodeId = wikittyNode.getId(); + for (String wikittyNodeId : wikittyNodesId) { if(!ids.contains(wikittyNodeId)) { - TreeNode treeNode = new TreeNodeImpl(wikittyNode); - treeNode.setParent(null); - storedWikitties.add(wikittyNode); + Wikitty treeNode = restore( + securityToken, transaction, wikittyNodeId); + TreeNodeHelper.setParent(treeNode, null); + storedWikitties.add(treeNode); } } // Store node with have deleted child criteria = Search.query().eq(TreeNode.FQ_FIELD_CHILDREN, id).criteria(); - wikittyNodes = findAllByCriteria( + wikittyNodesId = findAllByCriteria( securityToken, transaction, criteria).getAll(); - for (Wikitty wikittyNode : wikittyNodes) { - String wikittyNodeId = wikittyNode.getId(); + for (String wikittyNodeId : wikittyNodesId) { if(!ids.contains(wikittyNodeId)) { - TreeNode treeNode = new TreeNodeImpl(wikittyNode); - treeNode.removeChildren(id); - storedWikitties.add(wikittyNode); + Wikitty treeNode = restore( + securityToken, transaction, wikittyNodeId); + TreeNodeHelper.removeChildren(treeNode, id); + storedWikitties.add(treeNode); } } } @@ -588,28 +589,21 @@ * return new PagedResult with Wikitty instance */ @Override - public PagedResult<Wikitty> findAllByCriteria(String securityToken, + public PagedResult<String> findAllByCriteria(String securityToken, WikittyTransaction transaction, Criteria criteria) { - PagedResult<String> resultIds = getSearchEngin().findAllByCriteria(transaction, criteria); - List<String> ids = resultIds.getAll(); - List<Wikitty> wikitties = restore(securityToken, transaction, ids); - PagedResult<Wikitty> result = new PagedResult<Wikitty>( - resultIds.getFirstIndice(), - resultIds.getNumFound(), - resultIds.getQueryString(), - resultIds.getFacets(), - wikitties); + PagedResult<String> result = + getSearchEngin().findAllByCriteria(transaction, criteria); return result; } @Override - public PagedResult<Wikitty> findAllByCriteria( + public PagedResult<String> findAllByCriteria( String securityToken, Criteria criteria) { WikittyTransaction transaction = new WikittyTransaction(); try { transaction.begin(); - PagedResult<Wikitty> result = findAllByCriteria( + PagedResult<String> result = findAllByCriteria( securityToken, transaction, criteria); transaction.commit(); @@ -623,12 +617,13 @@ protected Wikitty findByCriteria(String securityToken, WikittyTransaction transaction, Criteria criteria) { criteria.setFirstIndex(0).setEndIndex(1); - PagedResult<Wikitty> pages = findAllByCriteria( + PagedResult<String> pages = findAllByCriteria( securityToken, transaction, criteria); Wikitty result = null; if (pages.size() > 0) { - result = pages.getFirst(); + String id = pages.getFirst(); + result = restore(securityToken, transaction, id); } return result; @@ -672,7 +667,7 @@ @Override - public PagedResult<Wikitty> findAllByLabel(String securityToken, + public PagedResult<String> findAllByLabel(String securityToken, String label, int firstIndex, int endIndex) { WikittyTransaction transaction = new WikittyTransaction(); try { @@ -682,7 +677,7 @@ l.addLabels(label); Criteria criteria = Search.query(l.getWikitty()).criteria() .setFirstIndex(firstIndex).setEndIndex(endIndex); - PagedResult<Wikitty> result = findAllByCriteria( + PagedResult<String> result = findAllByCriteria( securityToken, transaction, criteria); transaction.commit(); @@ -721,8 +716,7 @@ transaction.begin(); Wikitty w = restore(securityToken, transaction, wikittyId); - LabelImpl l = new LabelImpl(w); - Set<String> result = l.getLabels(); + Set<String> result = LabelHelper.getLabels(w); transaction.commit(); return result; @@ -754,10 +748,10 @@ Criteria criteria = Search.query(exempleNode.getWikitty()).criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<Wikitty> childNodes = findAllByCriteria( + PagedResult<String> childNodesId = findAllByCriteria( securityToken, transaction, criteria); - for( Wikitty childNode : childNodes.getAll() ) { - tree.addChild(restoreTree(securityToken, transaction, childNode.getId())); + for (String childNodeId : childNodesId.getAll()) { + tree.addChild(restoreTree(securityToken, transaction, childNodeId)); } return tree; Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java 2010-06-11 14:50:48 UTC (rev 124) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java 2010-06-11 17:01:31 UTC (rev 125) @@ -326,13 +326,13 @@ } @Override - public PagedResult<Wikitty> findAllByCriteria(String securityToken, Criteria criteria) { + public PagedResult<String> findAllByCriteria(String securityToken, Criteria criteria) { // no notification return ws.findAllByCriteria(securityToken, criteria); } @Override - public PagedResult<Wikitty> findAllByCriteria(String securityToken, + public PagedResult<String> findAllByCriteria(String securityToken, WikittyTransaction transaction, Criteria criteria) { // no notification return ws.findAllByCriteria(securityToken, transaction, criteria); @@ -352,7 +352,7 @@ } @Override - public PagedResult<Wikitty> findAllByLabel(String securityToken, + public PagedResult<String> findAllByLabel(String securityToken, String label, int firstIndex, int endIndex) { // no notification return ws.findAllByLabel(securityToken, label, firstIndex, endIndex); Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java 2010-06-11 14:50:48 UTC (rev 124) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceSecurity.java 2010-06-11 17:01:31 UTC (rev 125) @@ -17,9 +17,12 @@ package org.nuiton.wikitty; +import java.util.ArrayList; import static org.nuiton.i18n.I18n._; 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; @@ -41,10 +44,15 @@ /** to use log facility, just put in your code: log.info(\"...\"); */ static private Log log = LogFactory.getLog(WikittyServiceSecurity.class); + /** nom du groupe des administrateurs de l'application */ static final public String WIKITTY_APPADMIN_GROUP_NAME = "WikittyAppAdmin"; protected WikittyService ws; + /** cache de l'id du groupe AppAdmin */ + transient protected String appAdminGroupId = null; + + public WikittyServiceSecurity(WikittyService ws) { this.ws = ws; } @@ -64,10 +72,10 @@ String token = WikittyUtil.genSecurityToken(); Wikitty wToken = new Wikitty(token); // force add extension to wikitty - SecurityToken securityToken = new SecurityTokenImpl(wToken); + 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(token, wToken); + ws.store(null, wToken); return token; } @@ -75,13 +83,19 @@ 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(securityToken, securityToken); + ws.delete(null, securityToken); } @Override public void clear(String securityToken) { - throw new UnsupportedOperationException("Not supported yet."); - // seul les AppAdmin on le droit a cette method + String userId = getUserId(securityToken); + if (isAppAdmin(securityToken, userId)) { + // seul les AppAdmin on le droit a cette method + ws.clear(securityToken); + } else { + throw new SecurityException(_("user %s can't clear data", + getUserId(securityToken))); + } } /** @@ -98,12 +112,11 @@ // creation d'une nouvelle entity, on a des choses a faire // recuperation de l'utilisateur associe au securityToken - Wikitty securityTokenWikitty = ws.restore(securityToken, securityToken); - String userId = SecurityTokenHelper.getUser(securityTokenWikitty); + String userId = getUserId(securityToken); // on ajoute et on fixe les droits par defaut - WikittyAuthorisation auth = new WikittyAuthorisationImpl(wikitty); - auth.setOwner(userId); + WikittyAuthorisationHelper.addExtension(wikitty); + WikittyAuthorisationHelper.setOwner(wikitty, userId); } } @@ -131,11 +144,12 @@ // peuvent aussi le modifier result = // owner et admin peuvent tout modifier - isOwner(userId, oldVersion) || isAppAdmin(userId) - || isAdmin(userId, oldVersion) + isOwner(securityToken, userId, oldVersion) + || isAppAdmin(securityToken, userId) + || isAdmin(securityToken, userId, oldVersion) // un writer ne peut pas modifier l'extension d'autorisation || (WikittyAuthorisationAbstract.equals(oldVersion, wikitty) - && isWriter(userId, oldVersion)); + && isWriter(securityToken, userId, oldVersion)); } return result; } @@ -161,8 +175,9 @@ // peuvent aussi le supprimer result = // owner et admin peuvent tout modifier - isOwner(userId, oldVersion) || isAppAdmin(userId) - || isAdmin(userId, oldVersion); + isOwner(securityToken, userId, oldVersion) + || isAppAdmin(securityToken, userId) + || isAdmin(securityToken, userId, oldVersion); } return result; } @@ -179,9 +194,11 @@ // recuperation de l'objet pour verifier les droits Wikitty w = ws.restore(securityToken, wikittyId); - boolean result = isReader(userId, w) || isOwner(userId, w) - || isAppAdmin(userId) || isAdmin(userId, w) - || isWriter(userId, w); + boolean result = isReader(securityToken, userId, w) + || isOwner(securityToken, userId, w) + || isAppAdmin(securityToken, userId) + || isAdmin(securityToken, userId, w) + || isWriter(securityToken, userId, w); return result; } @@ -237,6 +254,8 @@ } } 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, @@ -260,21 +279,21 @@ @Override public UpdateResponse storeExtension( String securityToken, WikittyExtension ext) { - // TODO poussin 20100607 check security + // TODO poussin 20100607 check security, mais qui a le droit ? return ws.storeExtension(securityToken, ext); } @Override public UpdateResponse storeExtension(String securityToken, Collection<WikittyExtension> exts) { - // TODO poussin 20100607 check security + // TODO poussin 20100607 check security, mais qui a le droit ? return ws.storeExtension(securityToken, exts); } @Override public UpdateResponse storeExtension(String securityToken, WikittyTransaction transaction, Collection<WikittyExtension> exts) { - // TODO poussin 20100607 check security + // TODO poussin 20100607 check security, mais qui a le droit ? return ws.storeExtension(securityToken, transaction, exts); } @@ -292,14 +311,17 @@ } @Override - public WikittyExtension restoreExtensionLastVersion(String securityToken, String name) { + public WikittyExtension restoreExtensionLastVersion( + String securityToken, String name) { // All people can read extension return ws.restoreExtensionLastVersion(securityToken, name); } @Override - public WikittyExtension restoreExtensionLastVersion(String securityToken, WikittyTransaction transaction, String name) { - throw new UnsupportedOperationException("Not supported yet."); + public WikittyExtension restoreExtensionLastVersion( + String securityToken, WikittyTransaction transaction, String name) { + // All people can read extension + return ws.restoreExtensionLastVersion(securityToken, transaction, name); } @Override @@ -308,22 +330,30 @@ if (canRead(securityToken, id)) { result = ws.restore(securityToken, id); } else { - throw new SecurityException(_("user %s can't read object %s", + 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) { - for (String id : ids) { + List<String> authorizedIds = new LinkedList<String>(ids); + for (Iterator<String> i=authorizedIds.iterator(); i.hasNext();) { + String id = i.next(); if (!canRead(securityToken, id)) { - throw new SecurityException(_("user %s can't read object %s", - getUserId(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, ids); + return ws.restore(securityToken, authorizedIds); } @Override @@ -346,22 +376,29 @@ } @Override - public PagedResult<Wikitty> findAllByCriteria(String securityToken, Criteria criteria) { - // TODO poussin 20100607 check security - return ws.findAllByCriteria(securityToken, criteria); + public PagedResult<String> findAllByCriteria(String securityToken, Criteria criteria) { + // All people can read PagedResult that contains only id + PagedResult<String> result = ws.findAllByCriteria(securityToken, criteria); + return result; } @Override - public PagedResult<Wikitty> findAllByCriteria(String securityToken, + public PagedResult<String> findAllByCriteria(String securityToken, WikittyTransaction transaction, Criteria criteria) { - // TODO poussin 20100607 check security - return ws.findAllByCriteria(securityToken, transaction, criteria); + // All people can read PagedResult that contains only id + PagedResult<String> result = ws.findAllByCriteria( + securityToken, transaction, criteria); + return result; } @Override public Wikitty findByCriteria(String securityToken, Criteria criteria) { - // TODO poussin 20100607 check security - return ws.findByCriteria(securityToken, criteria); + Wikitty result = ws.findByCriteria(securityToken, criteria); + if (!canRead(securityToken, result.getId())) { + // user don't have correct right, return null + result = null; + } + return result; } @Override @@ -371,52 +408,71 @@ } @Override - public PagedResult<Wikitty> findAllByLabel(String securityToken, + public PagedResult<String> findAllByLabel(String securityToken, String label, int firstIndex, int endIndex) { - // TODO poussin 20100607 check security - return ws.findAllByLabel(securityToken, label, firstIndex, endIndex); + // All people can read PagedResult that contains only id + PagedResult<String> result = ws.findAllByLabel( + securityToken, label, firstIndex, endIndex); + return result; } @Override public Wikitty findByLabel(String securityToken, String label) { - // TODO poussin 20100607 check security - return ws.findByLabel(securityToken, label); + Wikitty result = ws.findByLabel(securityToken, label); + if (!canRead(securityToken, result.getId())) { + // user don't have correct right, return null + result = null; + } + return result; } @Override public Set<String> findAllAppliedLabels(String securityToken, String wikittyId) { - // TODO poussin 20100607 check security - return ws.findAllAppliedLabels(securityToken, wikittyId); + Set<String> result = ws.findAllAppliedLabels(securityToken, wikittyId); + return result; } @Override public Tree restoreTree(String securityToken, String wikittyId) { - // TODO poussin 20100607 check security + // FIXME poussin 20100607 check security return ws.restoreTree(securityToken, wikittyId); } @Override - public Entry<TreeNode, Integer> restoreNode(String securityToken, String wikittyId, Criteria filter) { - // TODO poussin 20100607 check security + public Entry<TreeNode, Integer> restoreNode( + String securityToken, String wikittyId, Criteria filter) { + // FIXME poussin 20100607 check security return ws.restoreNode(securityToken, wikittyId, filter); } @Override - public Map<TreeNode, Integer> restoreChildren(String securityToken, String wikittyId, Criteria filter) { - // TODO poussin 20100607 check security + public Map<TreeNode, Integer> restoreChildren( + String securityToken, String wikittyId, Criteria filter) { + // FIXME poussin 20100607 check security return ws.restoreChildren(securityToken, wikittyId, filter); } @Override - public Wikitty restoreVersion(String securityToken, String wikittyId, String version) { - // TODO poussin 20100607 check security - return ws.restoreVersion(securityToken, wikittyId, version); + public Wikitty restoreVersion( + String securityToken, String wikittyId, String version) { + Wikitty result = ws.restoreVersion(securityToken, wikittyId, version); + if (!canRead(securityToken, result.getId())) { + // user don't have correct right, return null + result = null; + } + return result; } @Override public UpdateResponse syncEngin(String securityToken) { - // TODO poussin 20100607 check security - return ws.syncEngin(securityToken); + String userId = getUserId(securityToken); + if (isAppAdmin(securityToken, userId)) { + // seul les AppAdmin on le droit a cette method + return ws.syncEngin(securityToken); + } else { + throw new SecurityException(_("user %s can't sync sear engine", + getUserId(securityToken))); + } } @@ -425,6 +481,19 @@ // /** + * + * @param pagedResult + * @return + */ + protected PagedResult<Wikitty> checkPagedResult(PagedResult<Wikitty> pagedResult) { + // TODO poussin 20100610 que faire + // TODO - parcourir tous les resultats pour retirer ceux auquel on a pas le droit + // TODO - lever une exception des qu'on trouve un element interdit + + return pagedResult; + } + + /** * Recupere l'identifiant de l'utilisateur associe au securityToken * * @param securityToken @@ -433,6 +502,7 @@ protected String getUserId(String securityToken) { String result = null; // 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) { result = SecurityTokenHelper.getUser(securityTokenWikitty); @@ -448,7 +518,7 @@ * @param w * @return */ - protected boolean isOwner(String userId, Wikitty w) { + protected boolean isOwner(String securityToken, String userId, Wikitty w) { boolean result = false; if (WikittyAuthorisationHelper.isExtension(w)) { String owner = WikittyAuthorisationHelper.getOwner(w); @@ -465,8 +535,9 @@ * @return vrai si et seulement si l'utilisateur est dans la liste des * admin */ - protected boolean isAdmin(String userId, Wikitty w) { - boolean result = isMember(userId, w, WikittyAuthorisation.FIELD_ADMIN); + protected boolean isAdmin(String securityToken, String userId, Wikitty w) { + boolean result = isMember( + securityToken, userId, w, WikittyAuthorisation.FIELD_ADMIN); return result; } @@ -478,8 +549,9 @@ * @return vrai si et seulement si l'utilisateur est dans la liste des * writers */ - protected boolean isWriter(String userId, Wikitty w) { - boolean result = isMember(userId, w, WikittyAuthorisation.FIELD_WRITER); + protected boolean isWriter(String securityToken, String userId, Wikitty w) { + boolean result = isMember( + securityToken, userId, w, WikittyAuthorisation.FIELD_WRITER); return result; } @@ -492,7 +564,7 @@ * @return true si l'utilisateur est dans la liste des reader (ou que cette * liste n'existe pas ce qui indique que tout le monde est reader) */ - protected boolean isReader(String userId, Wikitty w) { + protected boolean isReader(String securityToken, String userId, Wikitty w) { boolean result = true; if (WikittyAuthorisationHelper.isExtension(w)) { Set<String> groupOrUser = WikittyAuthorisationHelper.getReader(w); @@ -501,36 +573,36 @@ // sur le parent s'il y en a String parentId = WikittyAuthorisationHelper.getParent(w); if (parentId != null) { - Wikitty parent = ws.restore(null, parentId); - result = isReader(userId, parent); + Wikitty parent = ws.restore(securityToken, parentId); + result = isReader(securityToken, userId, parent); } } else { // il y a des readers sur l'objet actuel, il faut donc checker // comme pour les autres droits en parent aussi les parents - result = isMember(userId, w, WikittyAuthorisation.FIELD_READER); + result = isMember( + securityToken, userId, w, WikittyAuthorisation.FIELD_READER); } } return result; } - transient protected String appAdminGroupId = null; /** * Verifie si l'utilisateur est considere comme un AppAdmin * * @param userId * @return */ - protected boolean isAppAdmin(String userId) { + protected boolean isAppAdmin(String securityToken, String userId) { Wikitty group; if (appAdminGroupId == null) { // 1er fois, on le recherche - group = ws.findByCriteria(userId, Search.query().eq( + group = ws.findByCriteria(securityToken, Search.query().eq( WikittyGroup.FQ_FIELD_NAME, WIKITTY_APPADMIN_GROUP_NAME).criteria()); // group peut-etre null s'il n'existe pas } else { // on a deja fait la recherche precedement, on essaie de reutilise // le meme id - group = ws.restore(userId, appAdminGroupId); + group = ws.restore(securityToken, appAdminGroupId); // group peut-etre null, si entre temps un admin a supprime le group } if (group == null) { @@ -543,7 +615,7 @@ appAdminGroupId = group.getId(); Set<String> ids = WikittyGroupHelper.getMembers(group); - boolean result = isMember(userId, ids); + boolean result = isMember(securityToken, userId, ids); return result; } @@ -556,20 +628,21 @@ * @param field must be WikittyAuthorisation field name: admin, writer, reader * @return */ - protected boolean isMember(String userId, Wikitty w, String field) { + 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(userId, groupOrUser); + 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(null, parentId); - result = isMember(userId, parent, field); + Wikitty parent = ws.restore(securityToken, parentId); + result = isMember(securityToken, userId, parent, field); } } } @@ -584,22 +657,28 @@ * @param groupOrUser la liste des id d'utilisateurs ou d'autres groupes * @return vrai si userId est retrouve, false sinon */ - protected boolean isMember(String userId, Set<String> groupOrUser) { - for (String id : groupOrUser) { - if (userId.equals(id)) { - return true; - } else { - Wikitty w = ws.restore(null, id); - if (WikittyGroupHelper.isExtension(w)) { - Set<String> members =WikittyGroupHelper.getMembers(w); - if (isMember(userId, members)) { - return true; + 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; + } 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; + } } } } } // not found in groupOrUser - return false; + return result; } } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ExportTask.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ExportTask.java 2010-06-11 14:50:48 UTC (rev 124) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ExportTask.java 2010-06-11 17:01:31 UTC (rev 125) @@ -1,6 +1,7 @@ package org.nuiton.wikitty.importexport; import java.io.Writer; +import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.wikitty.Criteria; @@ -44,13 +45,21 @@ // used for CSV export criteria.addFacetField(Element.ELT_EXTENSION); - PagedResult<Wikitty> pageResult = ws.findAllByCriteria( + PagedResult<String> pageResultId = ws.findAllByCriteria( securityToken, transaction, criteria); long time = 0; if (log.isInfoEnabled()) { time = System.currentTimeMillis(); log.info("Export started"); } + // get Wikitty from Id + List<Wikitty> wikitties = ws.restore( + securityToken, pageResultId.getAll()); + PagedResult<Wikitty> pageResult = new PagedResult<Wikitty>( + pageResultId.getFirstIndice(), pageResultId.getNumFound(), + pageResultId.getQueryString(), pageResultId.getFacets(), + wikitties); + ImportExportMethod exporter = format.ieporter(); exporter.exportWriter(securityToken, writer, ws, transaction, pageResult); if (log.isInfoEnabled()) { Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java 2010-06-11 14:50:48 UTC (rev 124) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java 2010-06-11 17:01:31 UTC (rev 125) @@ -60,10 +60,11 @@ Criteria criteria = Search.query() .eq("testExt.name", "Guillaume") .criteria(); - PagedResult<Wikitty> result = ws.findAllByCriteria(null, criteria); - List<Wikitty> found = result.getAll(); + PagedResult<String> result = ws.findAllByCriteria(null, criteria); + List<String> found = result.getAll(); assertEquals(1, found.size()); - log.info( found.get(0).getFieldAsString(ext.getName(), "name") ); + Wikitty wikittyFound = ws.restore(null, found.get(0)); + log.info( wikittyFound.getFieldAsString(ext.getName(), "name") ); criteria = Search.query() .eq("testExt.age", "125") @@ -71,7 +72,8 @@ result = ws.findAllByCriteria(null, criteria); found = result.getAll(); assertEquals(1, found.size()); - log.info( found.get(0).getFieldAsString(ext.getName(), "name") ); + wikittyFound = ws.restore(null, found.get(0)); + log.info( wikittyFound.getFieldAsString(ext.getName(), "name") ); criteria = Search.query() .gt("testExt.age", "10") @@ -79,8 +81,10 @@ result = ws.findAllByCriteria(null, criteria); found = result.getAll(); assertEquals(2, found.size()); - log.info( found.get(0).getFieldAsString(ext.getName(), "name") ); - log.info( found.get(1).getFieldAsString(ext.getName(), "name") ); + wikittyFound = ws.restore(null, found.get(0)); + log.info( wikittyFound.getFieldAsString(ext.getName(), "name") ); + wikittyFound = ws.restore(null, found.get(1)); + log.info( wikittyFound.getFieldAsString(ext.getName(), "name") ); Wikitty exemple = new Wikitty(); exemple.addExtension(ext); @@ -89,7 +93,8 @@ result = ws.findAllByCriteria(null, Search.query(exemple).criteria() ); found = result.getAll(); assertEquals(1, found.size()); - log.info( found.get(0).getFieldAsString(ext.getName(), "name") ); + wikittyFound = ws.restore(null, found.get(0)); + log.info( wikittyFound.getFieldAsString(ext.getName(), "name") ); exemple = new Wikitty(); exemple.addExtension(ext); Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2010-06-11 14:50:48 UTC (rev 124) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2010-06-11 17:01:31 UTC (rev 125) @@ -236,10 +236,11 @@ w.setField(EXT_TEST.getName(), "fieldName1", "003309"); Criteria criteria = Search.query(w).criteria() .addSortDescending(EXT_TEST.getName() + ".fieldName0"); - PagedResult<Wikitty> resultFind = ws.findAllByCriteria(null, criteria); + PagedResult<String> resultFind = ws.findAllByCriteria(null, criteria); assertEquals(2, resultFind.size()); - assertEquals(wikitties.subList(0, 2), resultFind.getAll()); + List<Wikitty> wikittyFind = ws.restore(null, resultFind.getAll()); + assertEquals(wikitties.subList(0, 2), wikittyFind); } @Test @@ -278,7 +279,7 @@ .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS) .addFacetField(EXT_TEST.getName()+".fieldName0") .addFacetField(EXT_TEST.getName()+".fieldName1"); - PagedResult<Wikitty> resultFind = ws.findAllByCriteria(null, criteria); + PagedResult<String> resultFind = ws.findAllByCriteria(null, criteria); List<String> facetNames = new ArrayList<String>(resultFind.getFacetNames()); Collections.sort(facetNames); @@ -450,7 +451,8 @@ Criteria criteria = Search.query(node.getWikitty()).criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - List<Wikitty> wikitties = ws.findAllByCriteria(null, criteria).getAll(); + List<String> wikittiesId = ws.findAllByCriteria(null, criteria).getAll(); + List<Wikitty> wikitties = ws.restore(null, wikittiesId); for ( Wikitty child : wikitties ) { if (!child.hasExtension(TreeNode.EXT_TREENODE)) { continue; Modified: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrSearchTest.java =================================================================== --- trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrSearchTest.java 2010-06-11 14:50:48 UTC (rev 124) +++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/solr/test/SolrSearchTest.java 2010-06-11 17:01:31 UTC (rev 125) @@ -130,14 +130,15 @@ .eq("Test.name_s", "chaise") .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<Wikitty> result = ws.findAllByCriteria(null, criteria); - List<Wikitty> list = result.getAll(); + PagedResult<String> result = ws.findAllByCriteria(null, criteria); + List<String> list = result.getAll(); assertEquals(1, list.size()); - Wikitty w = list.get(0); + Wikitty w = ws.restore(null, list.get(0)); assertEquals("chaise", w.getFieldAsString("Test", "name")); assertEquals(113311, w.getFieldAsInt("Test", "amount")); - assertEquals(AbstractTestConformance.parse("26/09/2009"), w.getFieldAsDate("Test", "buildDate")); + assertEquals(AbstractTestConformance.parse("26/09/2009"), + w.getFieldAsDate("Test", "buildDate")); } @Test @@ -147,8 +148,8 @@ .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<Wikitty> result = ws.findAllByCriteria(null, criteria); - List<Wikitty> list = result.getAll(); + PagedResult<String> result = ws.findAllByCriteria(null, criteria); + List<String> list = result.getAll(); assertEquals(4, list.size()); criteria = Search.query() @@ -172,16 +173,16 @@ .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<Wikitty> result = ws.findAllByCriteria(null, criteria); - List<Wikitty> list = result.getAll(); + PagedResult<String> result = ws.findAllByCriteria(null, criteria); + List<String> list = result.getAll(); assertEquals( 2, list.size() ); } @Test public void testKeywordSearch() throws Exception { Criteria criteria = Search.query().keyword("bureau").criteria(); - PagedResult<Wikitty> pagedResult = ws.findAllByCriteria(null, criteria); - List<Wikitty> result = pagedResult.getAll(); + PagedResult<String> pagedResult = ws.findAllByCriteria(null, criteria); + List<String> result = pagedResult.getAll(); assertEquals(1, result.size()); criteria = Search.query().keyword("nothing").criteria(); @@ -208,7 +209,7 @@ Criteria criteria = Search.query().keyword("*").criteria(); criteria.addFacetField(Element.ELT_EXTENSION); - PagedResult<Wikitty> result = ws.findAllByCriteria(null, criteria); + PagedResult<String> result = ws.findAllByCriteria(null, criteria); assertEquals(13, result.getAll().size()); List<FacetTopic> topics = result.getTopic(Element.ELT_EXTENSION); @@ -232,7 +233,7 @@ .eq("Test.enabled", "true") .criteria(); - PagedResult<Wikitty> result = ws.findAllByCriteria(null, criteria); + PagedResult<String> result = ws.findAllByCriteria(null, criteria); assertEquals(1, result.getNumFound()); criteria = Search.query() @@ -249,7 +250,7 @@ query.not().eq("Test.name", "bureau"); Criteria criteria = query.criteria(); - PagedResult<Wikitty> result = ws.findAllByCriteria(null, criteria); + PagedResult<String> result = ws.findAllByCriteria(null, criteria); assertEquals(12, result.getNumFound()); query = Search.query().eq("Test.amount", "003300"); @@ -268,11 +269,11 @@ .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<Wikitty> result = ws.findAllByCriteria(null, criteria); - List<Wikitty> list = result.getAll(); + PagedResult<String> result = ws.findAllByCriteria(null, criteria); + List<String> list = result.getAll(); assertEquals(1, list.size()); - Wikitty w = list.get(0); + Wikitty w = ws.restore(null, list.get(0)); assertEquals("chaise", w.getFieldAsString("Test", "name")); assertEquals(113311, w.getFieldAsInt("Test", "amount")); assertEquals(AbstractTestConformance.parse("26/09/2009"), w.getFieldAsDate("Test", "buildDate")); @@ -294,7 +295,7 @@ example.setField("Product", "price", 20); Criteria criteria = Search.query(example).criteria(); - PagedResult<Wikitty> result = ws.findAllByCriteria(null, criteria); + PagedResult<String> result = ws.findAllByCriteria(null, criteria); assertEquals(3, result.getNumFound()); } @@ -304,7 +305,7 @@ Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, "Product").criteria(); criteria.addFacetField("Product.value"); - PagedResult<Wikitty> result = ws.findAllByCriteria(null, criteria); + PagedResult<String> result = ws.findAllByCriteria(null, criteria); List<FacetTopic> topics = result.getTopic("Product.value"); for (FacetTopic topic : topics) { String topicName = topic.getTopicName(); @@ -349,7 +350,7 @@ criteria.setFirstIndex(0); criteria.setEndIndex(0); - PagedResult<Wikitty> result = ws.findAllByCriteria(null, criteria); + PagedResult<String> result = ws.findAllByCriteria(null, criteria); assertEquals(13, result.getNumFound()); ws.syncEngin(null); @@ -361,8 +362,8 @@ @Test public void testLikeSearch() throws Exception { Criteria criteria = Search.query().like("Category.name", "hArDwArE", Like.SearchAs.ToLowerCase).criteria(); - PagedResult<Wikitty> pagedResult = ws.findAllByCriteria(null, criteria); - List<Wikitty> result = pagedResult.getAll(); + PagedResult<String> pagedResult = ws.findAllByCriteria(null, criteria); + List<String> result = pagedResult.getAll(); assertEquals(1, result.size()); criteria = Search.query().like("Category.name", "*wAre", Like.SearchAs.ToLowerCase).criteria(); @@ -392,11 +393,11 @@ .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<Wikitty> result = ws.findAllByCriteria(null, criteria); - List<Wikitty> list = result.getAll(); + PagedResult<String> result = ws.findAllByCriteria(null, criteria); + List<String> list = result.getAll(); assertEquals(1, list.size()); - Wikitty w = list.get(0); + Wikitty w = ws.restore(null, list.get(0)); assertEquals("Paint red", w.getFieldAsString("Product", "name")); criteria = Search.query()
participants (1)
-
bpoussin@users.nuiton.org