r889 - in trunk/wikitty-publication/src/main: java/org/nuiton/wikitty/publication resources
Author: mfortun Date: 2011-05-13 18:03:23 +0200 (Fri, 13 May 2011) New Revision: 889 Url: http://nuiton.org/repositories/revision/wikitty/889 Log: * add the very beginning for multicontext support Added: trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-fallback.properties Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConfig.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConfig.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConfig.java 2011-05-13 12:50:59 UTC (rev 888) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConfig.java 2011-05-13 16:03:23 UTC (rev 889) @@ -7,6 +7,8 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.util.ApplicationConfig; import org.nuiton.util.ArgumentsParserException; +import org.nuiton.wikitty.publication.synchro.PropertiesExtended; + import static org.nuiton.i18n.I18n._; public class WikittyPublicationConfig { @@ -20,13 +22,32 @@ private WikittyPublicationConfig() { } + + + static public ApplicationConfig getFallBackConfig(){ + //TODO mfortun-2011-05-13 temporary import/load properties for fallback service + ApplicationConfig conf = new ApplicationConfig( + OptionFallBack.class, null, null, null); + + try { + conf.parse(null); + } catch (ArgumentsParserException eee) { + if (log.isErrorEnabled()) { + log.error("Can't load Wikitty Publication configuration", eee); + } + } + return conf; + + } static public ApplicationConfig getConfig() { - return getConfig(null, null); + return getConfig(null,null ); } static public ApplicationConfig getConfig( Properties props, String configFilename, String ... args) { + + ApplicationConfig conf = new ApplicationConfig( Option.class, null, props, configFilename); @@ -52,13 +73,81 @@ return instance; } + + + + public enum OptionFallBack implements ApplicationConfig.OptionDef { + CONFIG_FILE( + ApplicationConfig.CONFIG_FILE_NAME, + _("wikitty-publication.config.configFileName.description"), + "wikitty-publication-ws-fallback.properties", String.class, false, false); + + + + public final String key; + public final String description; + public String defaultValue; + public final Class<?> type; + public boolean isTransient; + public boolean isFinal; + OptionFallBack(String key, String description, String defaultValue, + Class<?> type, boolean isTransient, boolean isFinal) { + this.key = key; + this.description = description; + this.defaultValue = defaultValue; + this.type = type; + this.isFinal = isFinal; + this.isTransient = isTransient; + } + + public String getKey() { + return key; + } + + public Class<?> getType() { + return type; + } + + public String getDescription() { + return description; + } + + public String getDefaultValue() { + return defaultValue; + } + + public boolean isTransient() { + return isTransient; + } + + public boolean isFinal() { + return isFinal; + } + + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } + + public void setTransient(boolean isTransient) { + this.isTransient = isTransient; + } + + public void setFinal(boolean isFinal) { + this.isFinal = isFinal; + } + } + + + public enum Option implements ApplicationConfig.OptionDef { CONFIG_FILE( ApplicationConfig.CONFIG_FILE_NAME, _("wikitty-publication.config.configFileName.description"), "wikitty-publication-ws-default.properties", String.class, false, false); + + public final String key; public final String description; public String defaultValue; Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-05-13 12:50:59 UTC (rev 888) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-05-13 16:03:23 UTC (rev 889) @@ -1,36 +1,85 @@ package org.nuiton.wikitty.publication; -import java.io.Serializable; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; import org.nuiton.util.ApplicationConfig; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.WikittyService; import org.nuiton.wikitty.WikittyServiceFactory; +import org.nuiton.wikitty.entities.BusinessEntity; +import org.nuiton.wikitty.entities.BusinessEntityImpl; +import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.entities.WikittyExtension; +import org.nuiton.wikitty.entities.WikittyUser; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.PagedResult; +import org.nuiton.wikitty.search.TreeNodeResult; +import org.nuiton.wikitty.services.WikittyEvent; /** - * Proxy use by action in wikitty publication + * Proxy use by action in wikitty publication it encapsulate two wikitty proxy + * because we can have two distinct service use to store wikitty used by + * publication structure * * @author mfortun * */ public class WikittyPublicationProxy extends WikittyProxy { + public static String WIKITTY_SERVICE_FALLBACK_COMPONNENT_KEY; + public static String WIKITTY_SERVICE_FALLBACK_URL_KEY; + /* - * TODO mfortun-2011-05-06 in this class add multicontexte supportby - * overiding wikitty proxy method + * TODO mfortun-2011-05-13 multicontext the begginning, + * need to think about how invoke method in the different proxy + * properly. */ /** * */ private static final long serialVersionUID = -568462410130999972L; - static protected WikittyService ws = null; + static protected WikittyService service = null; + static protected WikittyService serviceFallback = null; + protected WikittyProxy fallbackProxy = null; + protected WikittyProxy mainProxy = null; + protected WikittyPublicationProxy(ApplicationConfig config, WikittyService ws) { - super(config, ws); + mainProxy = new WikittyProxy(config, ws); + } + protected WikittyPublicationProxy(ApplicationConfig config, + WikittyService ws, ApplicationConfig configFallBack, + WikittyService serviceback) { + this(config, ws); + fallbackProxy = new WikittyProxy(configFallBack, serviceback); + } + + /* + * + */ + + static public WikittyPublicationProxy getInstanceWithFallback(String token) { + ApplicationConfig config = WikittyPublicationConfig.getInstance(); + WikittyService ws = getWikittyService(config); + + ApplicationConfig configFallBack = WikittyPublicationConfig + .getInstance(); + WikittyService fallservice = getWikittyServiceFallBack(configFallBack); + + WikittyPublicationProxy result = new WikittyPublicationProxy(config, + ws, configFallBack, fallservice); + result.setSecurityToken(token); + + return result; + } + static public WikittyPublicationProxy getInstance(String token) { ApplicationConfig config = WikittyPublicationConfig.getInstance(); WikittyService ws = getWikittyService(config); @@ -41,14 +90,336 @@ } static protected WikittyService getWikittyService(ApplicationConfig config) { - if (ws == null) { + if (service == null) { synchronized (WikittyPublicationProxy.class) { - if (ws == null) { - ws = WikittyServiceFactory.buildWikittyService(config); + if (service == null) { + service = WikittyServiceFactory.buildWikittyService(config); } } } - return ws; + return service; } + static protected WikittyService getWikittyServiceFallBack( + ApplicationConfig config) { + if (serviceFallback == null) { + synchronized (WikittyPublicationProxy.class) { + if (serviceFallback == null) { + serviceFallback = WikittyServiceFactory + .buildWikittyService(config); + } + } + } + return serviceFallback; + } + + public boolean isFallbackService() { + return fallbackProxy != null; + } + + public void login(String login, String password) { + mainProxy.login(login, password); + if ( isFallbackService()) { + fallbackProxy.login(login, password); + } + } + + public void logout() { + mainProxy.logout(); + if ( isFallbackService()) { + fallbackProxy.logout(); + } + } + + public String getSecurityToken() { + return mainProxy.getSecurityToken(); + } + + public void setSecurityToken(String securityToken) { + mainProxy.setSecurityToken(securityToken); + if ( isFallbackService()) { + fallbackProxy.setSecurityToken(securityToken); + } + } + + public WikittyUser getUser() { + return mainProxy.getUser(); + } + + public <E extends BusinessEntity> E getUser(Class<E> clazz) { + return mainProxy.getUser(clazz); + } + + public WikittyService getWikittyService() { + return mainProxy.getWikittyService(); + } + + public void setWikittyService(WikittyService wikittyService) { + mainProxy.setWikittyService(wikittyService); + } + + public <E extends BusinessEntity> E cast(BusinessEntity source, + Class<E> target) { + return mainProxy.cast(source, target); + } + + public <E extends BusinessEntity> E store(E e) { + return mainProxy.store(e); + } + + public Wikitty store(Wikitty w) { + // TODO mfortun-2011-05-13 store in wich one ? + // check before if wikitty exist on fall back + // and the stock on it if exist and store after on main + + return mainProxy.store(w); + } + + public <E extends BusinessEntity> List<E> store(E e1, E e2, E... eN) { + return mainProxy.store(e1, e2, eN); + } + + public Wikitty[] store(Wikitty w1, Wikitty w2, Wikitty... wN) { + return mainProxy.store(w1, w2, wN); + } + + public <E extends BusinessEntity> List<E> store(List<E> objets) { + return mainProxy.store(objets); + } + + public List<Wikitty> storeWikitty(List<Wikitty> wikitties) { + return mainProxy.storeWikitty(wikitties); + } + + public <E extends BusinessEntity> E restore(Class<E> clazz, String id, + boolean checkExtension) { + return mainProxy.restore(clazz, id, checkExtension); + } + + public Wikitty restore(String id) { + Wikitty result = mainProxy.restore(id); + + if ( isFallbackService() && result == null) { + result = fallbackProxy.restore(id); + } + + return result; + } + + public <E extends BusinessEntity> E restore(Class<E> clazz, String id) { + E result = mainProxy.restore(clazz, id); + + if ( isFallbackService() && result == null) { + result = fallbackProxy.restore(clazz, id); + } + + return result; + } + + public List<Wikitty> restore(List<String> id) { + List<Wikitty> result = mainProxy.restore(id); + + // TODO mfortun-2011-05-13 need to merge the two list + if ( isFallbackService() && result == null) { + result = fallbackProxy.restore( id); + } + + return result; + + } + + public <E extends BusinessEntity> List<E> restore(Class<E> clazz, + List<String> id, boolean checkExtension) { + return mainProxy.restore(clazz, id, checkExtension); + } + + public <E extends BusinessEntity> List<E> restore(Class<E> clazz, + List<String> id) { + return mainProxy.restore(clazz, id); + } + + public void delete(String id) { + mainProxy.delete(id); + } + + public <E extends BusinessEntity> void delete(E object) { + mainProxy.delete(object); + } + + public void delete(Collection<String> ids) { + mainProxy.delete(ids); + } + + public <E extends BusinessEntity> void delete(List<E> objets) { + mainProxy.delete(objets); + } + + public <E extends BusinessEntityImpl> PagedResult<E> findAllByExample(E e, + int firstIndex, int endIndex, String... fieldFacet) { + return mainProxy.findAllByExample(e, firstIndex, endIndex, fieldFacet); + } + + public <E extends BusinessEntityImpl> E findByExample(E e) { + return mainProxy.findByExample(e); + } + + public <E extends BusinessEntity> List<PagedResult<E>> findAllByCriteria( + Class<E> clazz, List<Criteria> criterias) { + return mainProxy.findAllByCriteria(clazz, criterias); + } + + public <E extends BusinessEntity> PagedResult<E> findAllByCriteria( + Class<E> clazz, Criteria criteria) { + return mainProxy.findAllByCriteria(clazz, criteria); + } + + public <E extends BusinessEntity> PagedResult<E>[] findAllByCriteria( + Class<E> clazz, Criteria c1, Criteria c2, Criteria... otherCriteria) { + return mainProxy.findAllByCriteria(clazz, c1, c2, otherCriteria); + } + + public List<PagedResult<Wikitty>> findAllByCriteria(List<Criteria> criteria) { + return mainProxy.findAllByCriteria(criteria); + } + + public PagedResult<Wikitty> findAllByCriteria(Criteria criteria) { + return mainProxy.findAllByCriteria(criteria); + } + + public PagedResult<Wikitty>[] findAllByCriteria(Criteria c1, Criteria c2, + Criteria... otherCriteria) { + return mainProxy.findAllByCriteria(c1, c2, otherCriteria); + } + + public List<PagedResult<String>> findAllIdByCriteria(List<Criteria> criteria) { + return mainProxy.findAllIdByCriteria(criteria); + } + + public PagedResult<String> findAllIdByCriteria(Criteria criteria) { + return mainProxy.findAllIdByCriteria(criteria); + } + + public PagedResult<String>[] findAllIdByCriteria(Criteria c1, Criteria c2, + Criteria... otherCriteria) { + return mainProxy.findAllIdByCriteria(c1, c2, otherCriteria); + } + + public List<String> findIdByCriteria(List<Criteria> criteria) { + return mainProxy.findIdByCriteria(criteria); + } + + public String findIdByCriteria(Criteria criteria) { + return mainProxy.findIdByCriteria(criteria); + } + + public String[] findIdByCriteria(Criteria c1, Criteria c2, + Criteria... otherCriteria) { + return mainProxy.findIdByCriteria(c1, c2, otherCriteria); + } + + public <E extends BusinessEntity> List<E> findByCriteria(Class<E> clazz, + List<Criteria> criterias) { + return mainProxy.findByCriteria(clazz, criterias); + } + + public <E extends BusinessEntity> E findByCriteria(Class<E> clazz, + Criteria criteria) { + return mainProxy.findByCriteria(clazz, criteria); + } + + public <E extends BusinessEntity> E[] findByCriteria(Class<E> clazz, + Criteria c1, Criteria c2, Criteria... otherCriteria) { + return mainProxy.findByCriteria(clazz, c1, c2, otherCriteria); + } + + public List<Wikitty> findByCriteria(List<Criteria> criteria) { + return mainProxy.findByCriteria(criteria); + } + + public Wikitty findByCriteria(Criteria criteria) { + return mainProxy.findByCriteria(criteria); + } + + public Wikitty[] findByCriteria(Criteria c1, Criteria c2, + Criteria... otherCriteria) { + return mainProxy.findByCriteria(c1, c2, otherCriteria); + } + + public TreeNodeResult<Wikitty> findTreeNode(String wikittyId, int depth, + boolean count, Criteria filter) { + return mainProxy.findTreeNode(wikittyId, depth, count, filter); + } + + public TreeNodeResult<String> findAllIdTreeNode(String wikittyId, + int depth, boolean count, Criteria filter) { + return mainProxy.findAllIdTreeNode(wikittyId, depth, count, filter); + } + + public WikittyEvent deleteTree(String treeNodeId) { + return mainProxy.deleteTree(treeNodeId); + } + + public Wikitty restoreVersion(String wikittyId, String version) { + return mainProxy.restoreVersion(wikittyId, version); + } + + public <E extends BusinessEntity> boolean hasType(Class<E> clazz, + String wikittyId) { + return mainProxy.hasType(clazz, wikittyId); + } + + public WikittyEvent storeExtension(WikittyExtension ext) { + return mainProxy.storeExtension(ext); + } + + public WikittyEvent storeExtension(Collection<WikittyExtension> exts) { + return mainProxy.storeExtension(exts); + } + + public WikittyExtension restoreExtension(String extensionId) { + return mainProxy.restoreExtension(extensionId); + } + + public WikittyExtension restoreExtensionLastVersion(String extensionName) { + return mainProxy.restoreExtensionLastVersion(extensionName); + } + + public void deleteExtension(String extName) { + mainProxy.deleteExtension(extName); + } + + public void deleteExtension(Collection<String> extNames) { + mainProxy.deleteExtension(extNames); + } + + public List<String> getAllExtensionIds() { + return mainProxy.getAllExtensionIds(); + } + + public List<String> getAllExtensionsRequires(String extensionName) { + return mainProxy.getAllExtensionsRequires(extensionName); + } + + public WikittyEvent clear() { + return mainProxy.clear(); + } + + public void syncSearchEngine() { + mainProxy.syncSearchEngine(); + } + + public Wikitty getWikitty(BusinessEntity entity) { + return mainProxy.getWikitty(entity); + } + + public boolean isMember(String groupName) { + return mainProxy.isMember(groupName); + } + + public WikittyUser getLoggedInUser() { + return mainProxy.getLoggedInUser(); + } + + + } Added: trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-fallback.properties =================================================================== --- trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-fallback.properties (rev 0) +++ trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-fallback.properties 2011-05-13 16:03:23 UTC (rev 889) @@ -0,0 +1,58 @@ +### +# #%L +# Wikitty :: publication +# +# $Id: wikitty-publication-ws-default.properties 823 2011-04-20 14:45:47Z mfortun $ +# $HeadURL: http://svn.nuiton.org/svn/wikitty/trunk/wikitty-publication/src/main/resourc... $ +# %% +# Copyright (C) 2009 - 2010 CodeLutin, Benjamin Poussin +# %% +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Lesser Public License for more details. +# +# You should have received a copy of the GNU General Lesser Public +# License along with this program. If not, see +# <http://www.gnu.org/licenses/lgpl-3.0.html>. +# #L% +### + +wikitty.data.directory=./targetBD2/data +wikitty.service.server.url=http://localhost:2222/wikitty +wikitty.storage.jdbc.queryfile=wikitty-jdbc-query.properties +wikitty.storage.jdbc.driver=org.h2.Driver +wikitty.storage.jdbc.host=jdbc:h2:file:${wikitty.data.directory}/data/db +wikitty.storage.jdbc.login=sa +wikitty.storage.jdbc.password= +wikitty.storage.jdbc.xadatasource=org.h2.jdbcx.JdbcDataSource +wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.URL=${wikitty.storage.jdbc.host} +wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.user=${wikitty.storage.jdbc.login} +wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.password=${wikitty.storage.jdbc.password} +wikitty.searchengine.solr.directory.data=${wikitty.data.directory}/data/solr +wikitty.searchengine.solr.directory.factory=solr.StandardDirectoryFactory +wikitty.WikittyService.components=org.nuiton.wikitty.services.WikittyServiceStorage,\ +org.nuiton.wikitty.services.WikittyServiceNotifier,\ +org.nuiton.wikitty.services.WikittyServiceCached,\ +org.nuiton.wikitty.services.WikittyServiceSecurity,\ +org.nuiton.wikitty.services.WikittyServiceAccessStat,\ +org.nuiton.wikitty.services.WikittyServiceCajoServer + +wikitty.WikittyServiceStorage.components=org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC,\ +org.nuiton.wikitty.jdbc.WikittyStorageJDBC,\ +org.nuiton.wikitty.storage.solr.WikittySearchEngineSolr +wikitty.service.cache.listenevents=false +wikitty.service.cache.allwaysRestoreCopies=false +wikitty.service.event.propagate=false +wikitty.service.event.listen=false +wikitty.service.accessstat.extensions=WikittyPubText,WikittyPubData +wikitty.addon.export.threadnumber=1 +wikitty.addon.export.directory=${wikitty.data.directory}/export +wikitty.addon.export.publicurl=file://${wikitty.data.directory}/export/ +wikitty.WikittyServiceAccessStat.components=\ +org.nuiton.wikitty.services.WikittyServiceAccessStat$AccessStatStorageLog Property changes on: trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-fallback.properties ___________________________________________________________________ Added: svn:mime-type + text/plain
participants (1)
-
mfortun@users.nuiton.org