@Override public List<Wikitty> restore(String securityToken, List<String> id) { return delegate.restore(securityToken, id); }
/** * Conveniant static method usefull in other WikittyService implementation * where we don't wan't instanciate WikittyServiceEnhanced * * @param securityToken security token * @param id object id to restore * @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)} */ static public Wikitty restore(WikittyService ws, String securityToken, String id) { Wikitty result = null; List<Wikitty> resultList = ws.restore(securityToken, Collections.singletonList(id)); if (resultList != null && resultList.size() > 0) { result = resultList.get(0); } return result; }
@Override public List<Wikitty> restore(String securityToken, List<String> ids) { List<Wikitty> resultWS = ws.restore(securityToken, ids); List<Wikitty> resultTx = tx.restore(securityToken, ids); Wikitty[] result = resultWS.toArray(new Wikitty[resultWS.size()]); int i = 0; for (Wikitty w : resultTx) { String id = ids.get(i); // il faut prendre en compte que l'objet a pu etre supprime dans la // transaction donc meme s'il est null dans tx et pas dans ws, il // faut le mettre a null // si w n'a pas ete restore (null), mais qu'il exist, alors cela // veut dire qu'il est supprime. if (w != null || tx.exists(securityToken, id)) { // on remplace tout par les nouveaux de la transaction result[i] = w; } i++; } return Arrays.asList(result); }
/** * Convert all result to the wikitty type and return new PagedResult with * this new result list. * * @param securityToken security token * @param ws wikitty service * * @return new PagedResult, this result can have less elements that original * for some reason (security, ...) */ public PagedResult<Wikitty> cast(String securityToken, WikittyService ws) { List<Wikitty> castedResult; if (results.size() == 0) { castedResult = new ArrayList<Wikitty>(); } else { if (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 = ws.restore(securityToken, ids); } else { throw new ClassCastException("PagedResult don't contains" + " wikitty String id but " + results.get(0).getClass()); } } PagedResult<Wikitty> result = new PagedResult<Wikitty>(criteriaName, firstIndice, numFound, queryString, facets, castedResult); return result; }
@Override public WikittyEvent delete(String securityToken, Collection<String> ids) { // pour que tout fonctionne bien, il faut que les objets supprimer soit // dans la tx, car il faut avoir une vrai trace de cette suppression dans la tx List<Wikitty> wikitties = ws.restore(securityToken, new ArrayList<String>(ids)); tx.store(securityToken, wikitties, true); WikittyEvent e = tx.delete(securityToken, ids); addEvent(securityToken, e); return e; }
@Override public List<Wikitty> restore(String securityToken, List<String> ids) { String userId = getUserId(securityToken); List<Wikitty> wikitties = getDelegate().restore(securityToken, ids); long start = TimeLog.getTime(); for (ListIterator<Wikitty> i=wikitties.listIterator(); i.hasNext();) { Wikitty wikitty = i.next(); Wikitty filtered = refuseUnauthorizedRead(securityToken, userId, wikitty); if (filtered != wikitty) { i.set(filtered); } } timeLog.log(start, "restore"); return wikitties; }
/** * Verifie si la date du token depasse le temps authorise pour un token * Si l'option n'est pas presente dans la config retourne toujours false * (donc le token a une validite permanente) * * @param date la date a verifier * @return vrai si la date est depassee */ public static boolean isOutdated( ApplicationConfig config, WikittyService ws, String tokenId) { boolean result = false; if (config != null) { // TODO poussin 20120123 prevoir un timeout dans la config // qui invaliderait le vieux token et en recreerait un nouveau long timeout = 1000 * config.getOptionAsLong( WikittyConfigOption.WIKITTY_SERVICE_AUTHENTICATION_TIMEOUT.getKey()); if (timeout > 0) { Wikitty token = ws.restore( null, Collections.singletonList(tokenId)).get(0); Date date = WikittyTokenHelper.getDate(token); Date now = new Date(); long nowMillis = now.getTime(); long dateMillis = date.getTime(); long delta = nowMillis - dateMillis; result = delta > timeout; } } return result; }
/** * Check if we can delete all id passed in argument * @param securityToken * @param ids */ public void checkDelete(String securityToken, Collection<String> ids) { String userId = getUserId(securityToken); List<String> idsAsList = new ArrayList<String>(ids); List<Wikitty> wikitties = getDelegate().restore(securityToken, idsAsList); for (Wikitty wikitty : wikitties) { if (wikitty != null) { for (String extensionName : wikitty.getExtensionNames()) { if ( ! canWrite(securityToken, userId, extensionName, wikitty)) { throw new SecurityException(String.format( "user %s doesn't have rights on extension %s on wikitty %s", userId, extensionName, wikitty)); } } } } }
List<Wikitty> missingInCache = getDelegate().restore(securityToken, notInCache);
/** * Check if we can delete all id passed in argument * @param securityToken * @param ids */ public void checkDelete(String securityToken, Collection<String> ids) { String userId = getUserId(securityToken); List<String> idsAsList = new ArrayList<String>(ids); List<Wikitty> wikitties = getDelegate().restore(securityToken, idsAsList); for (Wikitty wikitty : wikitties) { if (wikitty != null) { for (String extensionName : wikitty.getExtensionNames()) { if ( ! canWrite(securityToken, userId, extensionName, wikitty)) { throw new SecurityException(t( "user %s doesn't have rights on extension %s on wikitty %s", userId, extensionName, wikitty)); } } } } }
@Override public List<Wikitty> restore(String securityToken, List<String> ids) { String userId = getUserId(securityToken); List<Wikitty> wikitties = getDelegate().restore(securityToken, ids); long start = TimeLog.getTime(); for (Wikitty wikitty : wikitties) { if (wikitty != null) { refuseUnauthorizedRead(securityToken, userId, wikitty); } } timeLog.log(start, "restore"); return wikitties; }
List<Wikitty> parents = getDelegate().restore(securityToken, new ArrayList<String>(parentsId)); for (Wikitty parent : parents) { if (parent != null) {
protected Collection<Wikitty> getHook(String securityToken, String actionName) { WikittyQuery query = new WikittyQueryMaker() .and() .exteq(WikittyHook.EXT_WIKITTYHOOK) .eq(WikittyHook.FQ_FIELD_WIKITTYHOOK_ACTIONTOHOOK, actionName) .end(); WikittyQueryResult<String> ids = getClient(securityToken).findAllByQuery(query); List<Wikitty> result = getDelegate().restore(securityToken, ids.getAll()); return result; }
@Test public void testCajo() throws Exception { // this test always fails on jenkins try { WikittyService server = startServer(); WikittyService client = getClient(); WikittyProxy proxy = new WikittyProxy(client); Wikitty w = new WikittyImpl(); proxy.store(w); List<Wikitty> list = server.restore(null, Collections.singletonList(w.getWikittyId())); Assert.assertEquals(1, list.size()); stopServer(server); } catch (Exception ex) { if (ex.getCause() instanceof ConnectException) { if (log.isErrorEnabled()) { log.error("Cajo test failed !!!", ex); } } else { throw ex; } } }