Author: mfortun Date: 2011-08-09 17:51:42 +0200 (Tue, 09 Aug 2011) New Revision: 1116 Url: http://nuiton.org/repositories/revision/wikitty/1116 Log: *restore context concept inside wikitty-publication still need to repare login/register mechanism 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 trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationSession.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogin.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionRegister.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationContext.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/interceptor/LoginInterceptor.java trunk/wikitty-publication/src/main/resources/struts.xml trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-codelutin.properties trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-fallback.properties trunk/wikitty-publication/src/main/resources/wikitty-publication.properties trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/view.jsp 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-08-09 10:24:08 UTC (rev 1115) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConfig.java 2011-08-09 15:51:42 UTC (rev 1116) @@ -1,10 +1,15 @@ package org.nuiton.wikitty.publication; +import java.io.File; +import java.util.HashMap; +import java.util.Map; import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.ApplicationConfig; import org.nuiton.util.ArgumentsParserException; +import org.nuiton.wikitty.WikittyConfig; +import org.nuiton.wikitty.WikittyConfigOption; import static org.nuiton.i18n.I18n._; @@ -13,51 +18,81 @@ /** to use log facility, just put in your code: log.info(\"...\"); */ static private Log log = LogFactory.getLog(WikittyPublicationConfig.class); - static protected ApplicationConfig instance = null; + static final public String CONFIG_FILE_KEY = "wikitty.publication.config.pattern"; + static final public String DEFAULT_FILE_COMPLEMENT = "default"; + static protected Map<String, ApplicationConfig> instanceMap = new HashMap<String, ApplicationConfig>(); private WikittyPublicationConfig() { + } - - static public ApplicationConfig getConfig() { - return getConfig(null, null); + static public ApplicationConfig getConfig(String Context) { + return getConfig(null, null, Context); } static public ApplicationConfig getConfig(Properties props, - String configFilename, String... args) { + String configFilename, String wsContext, String... args) { ApplicationConfig conf = new ApplicationConfig(Option.class, null, props, configFilename); + try { + conf.parse(null); + } catch (ArgumentsParserException e) { + e.printStackTrace(); + } + String patternConfigFilename = conf.getOption(CONFIG_FILE_KEY); + + // load default configuration for all wikitty service + String filename = String.format(patternConfigFilename, + DEFAULT_FILE_COMPLEMENT); + log.info(String.format("Try to load config file '%s'", filename)); + ApplicationConfig wsConfigDefault; + + wsConfigDefault = WikittyConfig.getConfig(filename); + + // change just data dir with context path + String dataDir = wsConfigDefault + .getOption(WikittyConfigOption.WIKITTY_DATA_DIR.getKey()); + wsConfigDefault.setOption( + WikittyConfigOption.WIKITTY_DATA_DIR.getKey(), dataDir + + File.separator + wsContext); + + // read specific configuration with default config as default properties + filename = String.format(patternConfigFilename, wsContext); + log.info(String.format("Try to load config file '%s'", filename)); + ApplicationConfig wsConfig = null; try { - conf.parse(args); + wsConfig = new ApplicationConfig( + wsConfigDefault.getFlatOptions(false)); + wsConfig.setConfigFileName(filename); + wsConfig.parse(null); } catch (ArgumentsParserException eee) { if (log.isErrorEnabled()) { log.error("Can't load Wikitty Publication configuration", eee); } } - return conf; + + return wsConfig; } - public static ApplicationConfig getInstance() { - if (instance == null) { + public static ApplicationConfig getInstance(String context) { + if (!instanceMap.containsKey(context)) { synchronized (WikittyPublicationConfig.class) { - if (instance == null) { - instance = WikittyPublicationConfig.getConfig(); + if (!instanceMap.containsKey(context)) { + instanceMap.put(context, + WikittyPublicationConfig.getConfig(context)); } } } - return instance; + return instanceMap.get(context); } - public enum Option implements ApplicationConfig.OptionDef { CONFIG_FILE(ApplicationConfig.CONFIG_FILE_NAME, _("wikitty-publication.config.configFileName.description"), - "wikitty-publication-ws-fallback.properties", String.class, false, - false); + "wikitty-publication.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-08-09 10:24:08 UTC (rev 1115) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-08-09 15:51:42 UTC (rev 1116) @@ -1,12 +1,13 @@ package org.nuiton.wikitty.publication; +import java.util.HashMap; +import java.util.Map; + import org.nuiton.util.ApplicationConfig; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.WikittyService; import org.nuiton.wikitty.WikittyServiceFactory; - - /** * Proxy implementation for wikitty publication, that handle instance of the * wikitty service @@ -16,43 +17,40 @@ */ public class WikittyPublicationProxy extends WikittyProxy { - /** * */ private static final long serialVersionUID = -568462410130999972L; - static protected WikittyService service = null; + static protected Map<String, WikittyService> mapService = new HashMap<String, WikittyService>(); - private WikittyPublicationProxy(ApplicationConfig config, - WikittyService ws) { - super (config, ws); + private WikittyPublicationProxy(ApplicationConfig config, WikittyService ws) { + super(config, ws); } - - static public WikittyPublicationProxy getInstance(String token) { - ApplicationConfig config = WikittyPublicationConfig.getInstance(); - WikittyService ws = getWikittyService(config); + static public WikittyPublicationProxy getInstance(String token, + String context) { + ApplicationConfig config = WikittyPublicationConfig + .getInstance(context); + WikittyService ws = getWikittyService(config, context); WikittyPublicationProxy result = new WikittyPublicationProxy(config, ws); result.setSecurityToken(token); return result; } - static protected WikittyService getWikittyService(ApplicationConfig config) { - if (service == null) { + static protected WikittyService getWikittyService(ApplicationConfig config, + String context) { + if (!mapService.containsKey(context)) { synchronized (WikittyPublicationProxy.class) { - if (service == null) { - service = WikittyServiceFactory.buildWikittyService(config); + if (!mapService.containsKey(context)) { + mapService.put(context, + WikittyServiceFactory.buildWikittyService(config)); } } } - return service; + return mapService.get(context); } - - - - } Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationSession.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationSession.java 2011-08-09 10:24:08 UTC (rev 1115) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationSession.java 2011-08-09 15:51:42 UTC (rev 1116) @@ -25,8 +25,8 @@ transient protected WikittyUser user; transient protected WikittyPublicationProxy proxy = null; - public WikittyPublicationSession() { - proxy = WikittyPublicationProxy.getInstance(null); + public WikittyPublicationSession(String context) { + proxy = WikittyPublicationProxy.getInstance(null, context); } /** @@ -39,45 +39,46 @@ } static public WikittyPublicationSession getWikittyPublicationSession( - HttpServletRequest request) { + HttpServletRequest request, String context) { HttpSession session = request.getSession(); - WikittyPublicationSession result = getWikittyPublicationSession(session); + WikittyPublicationSession result = getWikittyPublicationSession(session, context); return result; } static public WikittyPublicationSession getWikittyPublicationSession( - HttpSession httpSession) { + HttpSession httpSession, String context) { WikittyPublicationSession result = (WikittyPublicationSession) httpSession .getAttribute(WIKITTY_PUBLICATION_SESSION_KEY); if (result == null) { - result = new WikittyPublicationSession(); + result = new WikittyPublicationSession(context); httpSession.setAttribute(WIKITTY_PUBLICATION_SESSION_KEY, result); } return result; } static public WikittyPublicationSession getWikittyPublicationSession( - Map<String, Object> session) { + Map<String, Object> session, String context) { WikittyPublicationSession result = (WikittyPublicationSession) session .get(WIKITTY_PUBLICATION_SESSION_KEY); if (result == null) { - result = new WikittyPublicationSession(); + result = new WikittyPublicationSession(context); session.put(WIKITTY_PUBLICATION_SESSION_KEY, result); } return result; } - public void login(String login, String password) { + public void login(String context ,String login, String password) { - getProxy().login(login, password); - securityToken = getProxy().getSecurityToken(); - user = getProxy().getUser(); + WikittyPublicationProxy proxy = getProxy(context); + proxy.login(login, password); + securityToken = proxy.getSecurityToken(); + user = proxy.getUser(); } - public WikittyPublicationProxy getProxy() { + public WikittyPublicationProxy getProxy(String context) { if (proxy == null) { - proxy = WikittyPublicationProxy.getInstance(securityToken); + proxy = WikittyPublicationProxy.getInstance(securityToken, context); } return proxy; Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java 2011-08-09 10:24:08 UTC (rev 1115) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java 2011-08-09 15:51:42 UTC (rev 1116) @@ -14,14 +14,12 @@ import org.apache.commons.logging.LogFactory; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; -import org.nuiton.util.ApplicationConfig; import org.nuiton.util.StringUtil; import org.nuiton.wikitty.ScriptEvaluator; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.WikittyService; import org.nuiton.wikitty.entities.Wikitty; import org.nuiton.wikitty.publication.UiCodeDecorator; -import org.nuiton.wikitty.publication.WikittyPublicationConfig; import org.nuiton.wikitty.publication.WikittyPublicationConstant; import org.nuiton.wikitty.publication.entities.WikittyPubData; import org.nuiton.wikitty.publication.entities.WikittyPubDataHelper; @@ -244,10 +242,6 @@ return request; } - @Override - public ApplicationConfig getAppConfig() { - return WikittyPublicationConfig.getConfig(); - } @Override public String makeUrl(String url) { Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogin.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogin.java 2011-08-09 10:24:08 UTC (rev 1115) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogin.java 2011-08-09 15:51:42 UTC (rev 1116) @@ -92,7 +92,7 @@ try { - getWikittyPublicationSession().login(login, md5); + getWikittyPublicationSession().login(getContextArgs(),login, md5); result = SUCCESS; } catch (Exception e) { Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionRegister.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionRegister.java 2011-08-09 10:24:08 UTC (rev 1115) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionRegister.java 2011-08-09 15:51:42 UTC (rev 1116) @@ -19,7 +19,16 @@ protected String login; protected String password; protected String repeatPassword; + protected String context; + + public String getContext() { + return context; + } + public void setContext(String context) { + this.context = context; + } + public String getLogin() { return login; } @@ -64,7 +73,7 @@ */ public String execute() { String result = INPUT; - + context=getContextArgs(); try { if (login != null) { login = login.trim(); @@ -107,6 +116,7 @@ // TODO mfortun-2011-05-13 really handle exception e.printStackTrace(); } - return result; + + return INPUT; } } Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java 2011-08-09 10:24:08 UTC (rev 1115) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java 2011-08-09 15:51:42 UTC (rev 1116) @@ -44,13 +44,13 @@ public WikittyPublicationSession getWikittyPublicationSession() { WikittyPublicationSession result = WikittyPublicationSession - .getWikittyPublicationSession(session); + .getWikittyPublicationSession(session, getContextArgs()); return result; } public WikittyPublicationProxy getWikittyPublicationProxy() { WikittyPublicationProxy result = getWikittyPublicationSession() - .getProxy(); + .getProxy(getContextArgs()); return result; } Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationContext.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationContext.java 2011-08-09 10:24:08 UTC (rev 1115) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationContext.java 2011-08-09 15:51:42 UTC (rev 1116) @@ -34,9 +34,6 @@ public abstract HttpServletRequest getRequest(); public abstract HttpServletResponse getResponse(); - - public abstract ApplicationConfig getAppConfig(); - public abstract WikittyProxy getWikittyProxy(); Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/interceptor/LoginInterceptor.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/interceptor/LoginInterceptor.java 2011-08-09 10:24:08 UTC (rev 1115) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/interceptor/LoginInterceptor.java 2011-08-09 15:51:42 UTC (rev 1116) @@ -53,19 +53,20 @@ @Override public String intercept(ActionInvocation invocation) throws Exception { - + String result = null; + + Map<String, Object> session = ActionContext.getContext().getSession(); WikittyPublicationSession pubSession = WikittyPublicationSession - .getWikittyPublicationSession(session); + .getWikittyPublicationSession(session,"codelutin"); WikittyUser user = pubSession.getUser(); - String result = null; + HttpServletRequest request = ServletActionContext.getRequest(); - // Construct redirect url. - String redirect = request.getContextPath() + error ; + String redirect = "codelutin/"+request.getContextPath() + error ; redirect += "?success="+request.getServletPath(); // If the user isn't logged in @@ -74,7 +75,7 @@ } else { result = invocation.invoke(); } - + result = invocation.invoke(); return result; } Modified: trunk/wikitty-publication/src/main/resources/struts.xml =================================================================== --- trunk/wikitty-publication/src/main/resources/struts.xml 2011-08-09 10:24:08 UTC (rev 1115) +++ trunk/wikitty-publication/src/main/resources/struts.xml 2011-08-09 15:51:42 UTC (rev 1116) @@ -58,18 +58,20 @@ </package> <package name="login" extends="loginArea"> - <action name="register_*" method="{1}" + <action name="*/register_*" method="{2}" class="org.nuiton.wikitty.publication.action.PublicationActionRegister"> + <param name="context">{1}</param> <result name="input">/register.jsp</result> - <result type="redirect">/index.jsp</result> + <result type="redirect">${context}/view/.action</result> </action> - <action name="login_*" method="{1}" + <action name="*/login_*" method="{1}" class="org.nuiton.wikitty.publication.action.PublicationActionLogin"> + <param name="context">{2}</param> <result name="input">login.jsp</result> <result name="success" type="redirect">${success}</result> <result name="error" type="redirect">${error}</result> </action> - <action name="logout" + <action name="*/logout" class="org.nuiton.wikitty.publication.action.PublicationActionLogout"> <result type="redirect">${success}</result> </action> Modified: trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-codelutin.properties =================================================================== --- trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-codelutin.properties 2011-08-09 10:24:08 UTC (rev 1115) +++ trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-codelutin.properties 2011-08-09 15:51:42 UTC (rev 1116) @@ -22,4 +22,5 @@ # <http://www.gnu.org/licenses/lgpl-3.0.html>. # #L% ### -wikitty.data.directory=/var/lib/wikitty-publication/codelutin/ +#wikitty.data.directory=/var/lib/wikitty-publication/codelutin/ +wikitty.service.server.url=http://localhost:2222/wikitty \ No newline at end of file Modified: trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-fallback.properties =================================================================== --- trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-fallback.properties 2011-08-09 10:24:08 UTC (rev 1115) +++ trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-fallback.properties 2011-08-09 15:51:42 UTC (rev 1116) @@ -41,8 +41,7 @@ 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 +org.nuiton.wikitty.services.WikittyServiceAccessStat wikitty.WikittyServiceStorage.components=org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC,\ org.nuiton.wikitty.jdbc.WikittyStorageJDBC,\ Modified: trunk/wikitty-publication/src/main/resources/wikitty-publication.properties =================================================================== --- trunk/wikitty-publication/src/main/resources/wikitty-publication.properties 2011-08-09 10:24:08 UTC (rev 1115) +++ trunk/wikitty-publication/src/main/resources/wikitty-publication.properties 2011-08-09 15:51:42 UTC (rev 1116) @@ -23,8 +23,3 @@ # #L% ### wikitty.publication.config.pattern=wikitty-publication-ws-%s.properties -wikitty.publication.action.edit=org.nuiton.wikitty.publication.ActionEdit -wikitty.publication.action.eval=org.nuiton.wikitty.publication.ActionEval -wikitty.publication.action.raw=org.nuiton.wikitty.publication.ActionRaw -wikitty.publication.action.view=org.nuiton.wikitty.publication.ActionView -wikitty.publication.action.login=org.nuiton.wikitty.publication.ActionLogin Modified: trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/view.jsp =================================================================== --- trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/view.jsp 2011-08-09 10:24:08 UTC (rev 1115) +++ trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/view.jsp 2011-08-09 15:51:42 UTC (rev 1116) @@ -44,8 +44,6 @@ <sj:head jquerytheme="default"/> <% - WikittyPublicationSession wpSession = WikittyPublicationSession - .getWikittyPublicationSession(session); PublicationActionView action = PublicationActionView .getAction();