Author: sletellier Date: 2011-05-12 14:03:04 +0200 (Thu, 12 May 2011) New Revision: 282 Url: http://chorem.org/repositories/revision/bow/282 Log: - Add postgres dependency - Refactor BowConfig to make a factory of ApplicationConfig - Fix some bugs Added: trunk/bow-ui/src/main/java/org/chorem/bow/BowConfigHelper.java Modified: trunk/bow-ui/pom.xml trunk/bow-ui/src/main/java/org/chorem/bow/AliasServlet.java trunk/bow-ui/src/main/java/org/chorem/bow/BowConfig.java trunk/bow-ui/src/main/java/org/chorem/bow/BowInit.java trunk/bow-ui/src/main/java/org/chorem/bow/BowMail.java trunk/bow-ui/src/main/java/org/chorem/bow/BowProxy.java trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java trunk/bow-ui/src/main/java/org/chorem/bow/action/LoginAction.java trunk/bow-ui/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp trunk/bow-ui/src/main/webapp/jsp/inc/rightMenu.jsp trunk/bow-ui/src/main/webapp/jsp/permanentXml.jsp trunk/bow-ui/src/main/webapp/jsp/preferences.jsp trunk/bow-ui/src/main/webapp/jsp/temporaryXml.jsp trunk/pom.xml Modified: trunk/bow-ui/pom.xml =================================================================== --- trunk/bow-ui/pom.xml 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/bow-ui/pom.xml 2011-05-12 12:03:04 UTC (rev 282) @@ -149,7 +149,11 @@ <artifactId>commons-io</artifactId> <scope>compile</scope> </dependency> - + + <dependency> + <groupId>postgresql</groupId> + <artifactId>postgresql</artifactId> + </dependency> </dependencies> <build> Modified: trunk/bow-ui/src/main/java/org/chorem/bow/AliasServlet.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/AliasServlet.java 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/bow-ui/src/main/java/org/chorem/bow/AliasServlet.java 2011-05-12 12:03:04 UTC (rev 282) @@ -24,6 +24,7 @@ package org.chorem.bow; import org.apache.commons.lang.StringUtils; +import org.nuiton.util.ApplicationConfig; import org.nuiton.wikitty.WikittyProxy; import javax.servlet.ServletException; @@ -45,8 +46,8 @@ protected String bowServletUrl = ""; public AliasServlet() { - BowConfig config = BowConfig.getInstance(); - bowServletUrl = config.getBowUrl() + config.getServletBow() ; + ApplicationConfig config = BowConfig.getConfig(); + bowServletUrl = BowConfigHelper.getBowUrl(config) + BowConfigHelper.getServletBow(config); } @Override Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowConfig.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowConfig.java 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowConfig.java 2011-05-12 12:03:04 UTC (rev 282) @@ -30,6 +30,7 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.util.ApplicationConfig; import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.WikittyConfigOption; /** * @@ -39,207 +40,144 @@ * Last update: $Date$ * by : $Author$ */ -public class BowConfig extends ApplicationConfig { +public class BowConfig { /** to use log facility, just put in your code: log.info(\"...\"); */ static private Log log = LogFactory.getLog(BowConfig.class); /** Singleton instance. */ - protected static BowConfig instance; + protected static ApplicationConfig config; - public BowConfig() { - - // set default option (included configuration file name : important) - for (Option o : Option.values()) { - if (o.defaultValue != null) { - setDefaultOption(o.key, o.defaultValue); - } - } + private BowConfig() { } - public static synchronized BowConfig getInstance() { - if (instance == null) { + public static synchronized ApplicationConfig getConfig(String... args) { + if (config == null) { try { - instance = new BowConfig(); - instance.parse(StringUtil.EMPTY_STRING_ARRAY); -// instance.setDataDirInSystemProps(); + config = new ApplicationConfig(BowOption.CONFIG_FILE.getDefaultValue()); + + // Load wikitty options + config.loadDefaultOptions(WikittyConfigOption.class); + + // Load bow options + config.loadDefaultOptions(BowOption.class); + + // Parse args + config.parse(args); } catch (Exception e) { throw new UnhandledException(e); } } - return instance; + return config; } /** - * Get version as string. - * - * @return version + * Bow option definition. */ - public String getVersion() { - return getOption(Option.APPLICATION_VERSION.key); - } + public enum BowOption implements ApplicationConfig.OptionDef { - /** - * Get bow url as string. - * - * @return url - */ - public String getBowUrl() { - String result = getOption(Option.BOW_URL.key); - if (result != null && result.charAt(result.length() - 1) != '/') { - result += '/'; - } - return result; - } + CONFIG_FILE( + ApplicationConfig.CONFIG_FILE_NAME, + _("bow.config.configFileName.description"), + "bow.properties", String.class, false, false), + APPLICATION_VERSION( + "application.version", + _("bow.config.application.version.description"), + null, String.class, true, true), + BOW_URL( + "bow.url", + _("bow.config.bow.url.description"), + null, String.class, false, false), + ALIAS_URL( + "alias.url", + _("bow.config.alias.url.description"), + null, String.class, false, false), + SERVLET_BOW( + "servlet.bow", + _("bow.config.servlet.bow.description"), + null, String.class, false, false), - /** - * Get alias url as string. - * - * @return url - */ - public String getAliasUrl() { - String result = getOption(Option.ALIAS_URL.key); - if (result != null && result.charAt(result.length() - 1) != '/') { - result += '/'; - } - return result; - } + // FIXME sletellier 20110512 : A quoi ça sert ? La valeur est utilise en dur ("alias/") dans struts.xml + SERVLET_ALIAS( + "servlet.alias", + _("bow.config.servlet.bow.description"), + "alias/", String.class, false, false), + SEARCH_ENGINE( + "search.engine", + _("bow.config.search.engine.description"), + null, String.class, false, false), + BOW_SMTPSERVER( + "bow.smtpServer", + _("bow.config.bow.smtpServer.description"), + null, String.class, false, false), + BOW_ADDRESSFROM( + "bow.addressFrom", + _("bow.config.bow.addressFrom.description"), + null, String.class, false, false), + BOW_ADMINS( + "bow.admins", + _("bow.config.bow.admins.description"), + null, String.class, false, false); - /** - * Get bow servlet as string. - * - * @return servlet name - */ - public String getServletBow() { - return getOption(Option.SERVLET_BOW.key); - } + public String key; + public String description; + public String defaultValue; + public Class<?> type; + public boolean isTransient; + public boolean isFinal; - /** - * Get alias servlet as string. - * - * @return servlet name - */ - public String getServletAlias() { - return getOption(Option.SERVLET_ALIAS.key); - } + BowOption(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; + } - /** - * Get alias servlet url as string. - * - * @return servlet name - */ - public String getServletAliasUrl() { - String result = getAliasUrl() + getServletAlias(); - if (result != null && result.charAt(result.length() - 1) != '/') { - result += '/'; + @Override + public boolean isFinal() { + return isFinal; } - return result; - } -// public File getDataDirAsFile() { -// File option = getOptionAsFile(Option.DATA_DIR.key); -// return option; -// } + @Override + public boolean isTransient() { + return isTransient; + } - /** - * Get bow smtp server as string. - * - * @return smtpServer - */ - public String getSmtpServer() { - return getOption(Option.BOW_SMTPSERVER.key); - } + @Override + public String getDefaultValue() { + return defaultValue; + } - /** - * Get default search engine - * - * @return search engine url - */ - public String getSearchEngine() { - return getOption(Option.SEARCH_ENGINE.key); - } + @Override + public String getDescription() { + return description; + } - /** - * Get bow address from as string. - * - * @return addressFrom - */ - public String getAddressFrom() { - return getOption(Option.BOW_ADDRESSFROM.key); - } + @Override + public String getKey() { + return key; + } - public String[] getAdmins() { - String str = getOption(Option.BOW_ADMINS.key); - return StringUtil.split(str, ","); - } + @Override + public Class<?> getType() { + return type; + } - /** - * Return password for specified admin email - * @param admin - * @return null or password if available - */ - public String getAdminPassword(String admin) { - String str = getOption(Option.BOW_ADMINS.key + ".password." + admin); - return str; - } -// /** -// * Set {@code solr} and {@code jms} system configuration. -// * -// * This is the "only" way to configure embedded solr. -// */ -// protected void setDataDirInSystemProps() { -// String value = System.getProperty(Option.DATA_DIR.key, null); -// if (value == null) { -// value = getOption(Option.DATA_DIR.key); -// if (log.isInfoEnabled()) { -// log.info("Setting system property " + Option.DATA_DIR.key + " : " + value); -// } -// System.setProperty(Option.DATA_DIR.key, value); -// env.put(Option.DATA_DIR.key, value); -// } -// } + @Override + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } - /** - * Vradi option definition. - */ - public enum Option { + @Override + public void setTransient(boolean isTransient) { + this.isTransient = isTransient; + } - CONFIG_FILE(CONFIG_FILE_NAME, _("bow.config.configFileName.description"), - "bow.properties", String.class, false, false), - APPLICATION_VERSION("application.version", _("bow.config.application.version.description"), - null, String.class, true, true), - BOW_URL("bow.url", _("bow.config.bow.url.description"), - null, String.class, false, false), - ALIAS_URL("alias.url", _("bow.config.alias.url.description"), - null, String.class, false, false), - SERVLET_BOW("servlet.bow", _("bow.config.servlet.bow.description"), - null, String.class, false, false), - SERVLET_ALIAS("servlet.alias", _("bow.config.servlet.bow.description"), - null, String.class, false, false), - SEARCH_ENGINE("search.engine", _("bow.config.search.engine.description"), - null, String.class, false, false), - BOW_SMTPSERVER("bow.smtpServer", _("bow.config.bow.smtpServer.description"), - null, String.class, false, false), - BOW_ADDRESSFROM("bow.addressFrom", _("bow.config.bow.addressFrom.description"), - null, String.class, false, false), - BOW_ADMINS("bow.admins", _("bow.config.bow.admins.description"), - null, String.class, false, false); -// DATA_DIR("solr.data.dir", _("bow.config.data.dir.description"), -// System.getProperty("user.home") + "/.bow/solr", String.class, false, false); - public final String key; - public final String description; - public final String defaultValue; - public final Class<?> type; - public final boolean isTransient; - public final boolean isFinal; - - Option(String key, String description, String defaultValue, - Class<?> type, boolean isTransient, boolean isFinal) { - this.key = key; - this.description = description; - this.defaultValue = defaultValue; - this.type = type; + @Override + public void setFinal(boolean isFinal) { this.isFinal = isFinal; - this.isTransient = isTransient; } } } Added: trunk/bow-ui/src/main/java/org/chorem/bow/BowConfigHelper.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowConfigHelper.java (rev 0) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowConfigHelper.java 2011-05-12 12:03:04 UTC (rev 282) @@ -0,0 +1,128 @@ +package org.chorem.bow; + +import org.nuiton.util.ApplicationConfig; +import org.nuiton.util.StringUtil; + +/** + * @author sletellier + */ +public class BowConfigHelper { + /** + * Get version as string. + * + * @param config bow configuration + * @return version + */ + public static String getVersion(ApplicationConfig config) { + return config.getOption(BowConfig.BowOption.APPLICATION_VERSION.key); + } + + /** + * Get bow url as string. + * + * @param config bow configuration + * @return url + */ + public static String getBowUrl(ApplicationConfig config) { + String result = config.getOption(BowConfig.BowOption.BOW_URL.key); + if (result != null && result.charAt(result.length() - 1) != '/') { + result += '/'; + } + return result; + } + + /** + * Get alias url as string. + * + * @param config bow configuration + * @return url + */ + public static String getAliasUrl(ApplicationConfig config) { + String result = config.getOption(BowConfig.BowOption.ALIAS_URL.key); + if (result != null && result.charAt(result.length() - 1) != '/') { + result += '/'; + } + return result; + } + + /** + * Get bow servlet as string. + * + * @param config bow configuration + * @return servlet name + */ + public static String getServletBow(ApplicationConfig config) { + return config.getOption(BowConfig.BowOption.SERVLET_BOW.key); + } + + /** + * Get alias servlet as string. + * + * @param config bow configuration + * @return servlet name + */ + public static String getServletAlias(ApplicationConfig config) { + return config.getOption(BowConfig.BowOption.SERVLET_ALIAS.key); + } + + /** + * Get alias servlet url as string. + * + * @param config bow configuration + * @return servlet name + */ + public static String getServletAliasUrl(ApplicationConfig config) { + String result = getAliasUrl(config) + getServletAlias(config); + if (result != null && result.charAt(result.length() - 1) != '/') { + result += '/'; + } + return result; + } + + /** + * Get bow smtp server as string. + * + * @param config bow configuration + * @return smtpServer + */ + public static String getSmtpServer(ApplicationConfig config) { + return config.getOption(BowConfig.BowOption.BOW_SMTPSERVER.key); + } + + /** + * Get default search engine + * + * @param config bow configuration + * @return search engine url + */ + public static String getSearchEngine(ApplicationConfig config) { + return config.getOption(BowConfig.BowOption.SEARCH_ENGINE.key); + } + + /** + * Get bow address from as string. + * + * @param config bow configuration + * @return addressFrom + */ + public static String getAddressFrom(ApplicationConfig config) { + return config.getOption(BowConfig.BowOption.BOW_ADDRESSFROM.key); + } + + public static String[] getAdmins(ApplicationConfig config) { + String str = config.getOption(BowConfig.BowOption.BOW_ADMINS.key); + return StringUtil.split(str, ","); + } + + /** + * Return password for specified admin email + * + * @param config bow configuration + * @param admin + * @return null or password if available + */ + public static String getAdminPassword(ApplicationConfig config, String admin) { + String str = config.getOption(BowConfig.BowOption.BOW_ADMINS.key + ".password." + admin); + return str; + } +} Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowInit.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowInit.java 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowInit.java 2011-05-12 12:03:04 UTC (rev 282) @@ -34,6 +34,8 @@ protected static final int MAX_ELEMENT_NUMBER = 10; + private static final String ALIAS_SERVLET_URL = "aliasServletUrl"; + // static public void checkAdmin(Map<String, Object> session, String login) { // String[] admins = BowConfig.getInstance().getAdmins(); // @@ -128,5 +130,6 @@ } request.setAttribute("bookmarkActions", bookmarkActions); } + request.setAttribute(ALIAS_SERVLET_URL, BowConfigHelper.getServletAliasUrl(BowConfig.getConfig())); } } Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowMail.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowMail.java 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowMail.java 2011-05-12 12:03:04 UTC (rev 282) @@ -23,6 +23,8 @@ */ package org.chorem.bow; +import org.nuiton.util.ApplicationConfig; + import java.util.Properties; import javax.mail.Message; @@ -34,21 +36,22 @@ import javax.mail.internet.MimeMessage; public class BowMail { + static public void sendMail(String sendToEmail, String mailSubject, String mailContent) throws AddressException, MessagingException { - BowConfig config = BowConfig.getInstance(); - String smtpServer = config.getSmtpServer(); - Properties properties = new Properties(); - properties.put("mail.smtp.host", smtpServer); - - Session session = Session.getDefaultInstance(properties, null); - session.setDebug(true); - - Message msg = new MimeMessage(session); - - msg.addRecipient(Message.RecipientType.TO, new InternetAddress(sendToEmail)); - msg.setFrom(new InternetAddress(config.getAddressFrom())); - msg.setSubject(mailSubject); - msg.setContent(mailContent, "text/plain"); - Transport.send(msg); + ApplicationConfig config = BowConfig.getConfig(); + String smtpServer = BowConfigHelper.getSmtpServer(config); + Properties properties = new Properties(); + properties.put("mail.smtp.host", smtpServer); + + Session session = Session.getDefaultInstance(properties, null); + session.setDebug(true); + + Message msg = new MimeMessage(session); + + msg.addRecipient(Message.RecipientType.TO, new InternetAddress(sendToEmail)); + msg.setFrom(new InternetAddress(BowConfigHelper.getAddressFrom(config))); + msg.setSubject(mailSubject); + msg.setContent(mailContent, "text/plain"); + Transport.send(msg); } } Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowProxy.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowProxy.java 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowProxy.java 2011-05-12 12:03:04 UTC (rev 282) @@ -45,7 +45,7 @@ static protected WikittyService ws = null; - protected BowProxy(BowConfig config, WikittyService ws) { + protected BowProxy(ApplicationConfig config, WikittyService ws) { super(config, ws); } @@ -56,7 +56,7 @@ * @return */ static public BowProxy getInstance(String token) { - BowConfig config = BowConfig.getInstance(); + ApplicationConfig config = BowConfig.getConfig(); WikittyService ws = getWikittyService(config); BowProxy result = new BowProxy(config, ws); result.setSecurityToken(token); Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java 2011-05-12 12:03:04 UTC (rev 282) @@ -104,7 +104,7 @@ // check if this user is admin String login = preference.getLogin(); - String[] admins = BowConfig.getInstance().getAdmins(); + String[] admins = BowConfigHelper.getAdmins(BowConfig.getConfig()); boolean isAdmin = false; if (admins != null) { for (String admin : admins) { @@ -159,7 +159,7 @@ preference.setColors(""); } if (preference.getSearchEngineUrlResults() == null) { - preference.setSearchEngineUrlResults(BowConfig.getInstance().getSearchEngine()); + preference.setSearchEngineUrlResults(BowConfigHelper.getSearchEngine(BowConfig.getConfig())); } if (preference.getSearchEngineUrlSuggestions() == null) { preference.setSearchEngineUrlSuggestions(""); // TODO add default value in config Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/LoginAction.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/action/LoginAction.java 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/bow-ui/src/main/java/org/chorem/bow/action/LoginAction.java 2011-05-12 12:03:04 UTC (rev 282) @@ -28,6 +28,7 @@ import org.apache.struts2.interceptor.ServletRequestAware; import org.chorem.bow.BowConfig; +import org.chorem.bow.BowConfigHelper; import org.chorem.bow.BowUser; import org.chorem.bow.BowInit; import org.chorem.bow.BowPreference; @@ -41,7 +42,7 @@ /** * authentifie l'utilisateur et place son objet User dans la bow session - * + * * @author poussin */ public class LoginAction extends BowBaseAction implements ServletRequestAware { @@ -51,24 +52,24 @@ protected HttpServletRequest servletRequest; public String getEmail() { - return email; + return email; } - + public void setEmail(String email) { - this.email = email; + this.email = email; } - + public String getPassword() { - return password; + return password; } - + public void setPassword(String password) { - this.password = password; + this.password = password; } - + @Override public void setServletRequest(HttpServletRequest request) { - this.servletRequest = request; + this.servletRequest = request; } /** @@ -89,7 +90,7 @@ if (result == null) { // failback: try to authenticate admin with config info - String configPassword = BowConfig.getInstance().getAdminPassword(email); + String configPassword = BowConfigHelper.getAdminPassword(BowConfig.getConfig(), email); log.info("failback password: " + password + " configPassword: " + configPassword); if (password.equals(configPassword)) { // admin authenticate with config, this is possible when @@ -108,7 +109,7 @@ } return result; } - + /** * Authenticates the user if his email and password are valid */ Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/bow-ui/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java 2011-05-12 12:03:04 UTC (rev 282) @@ -32,8 +32,10 @@ import org.chorem.bow.BookmarkActions; import org.chorem.bow.BookmarkUtils; import org.chorem.bow.BowConfig; +import org.chorem.bow.BowConfigHelper; import org.chorem.bow.BowUtils; import org.chorem.bow.BowPreference; +import org.nuiton.util.ApplicationConfig; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.WikittyProxy; @@ -101,6 +103,8 @@ public String execute() { BowPreference user = getBowSession().getPreference(); + + ApplicationConfig config = BowConfig.getConfig(); if (searchLine != null && searchLine.matches("^http://[^ ]*")) { redirectTo = BowUtils.redirectTo(searchLine, null); } else if (searchLine != null @@ -147,12 +151,12 @@ // si on retrouve l'alias prive on l'utilise, // sinon on espere qu'il existe un alias public portant ce nom if (bookmarkId != null) { - redirectTo = BowConfig.getInstance().getAliasUrl() + bookmarkId; + redirectTo = BowConfigHelper.getAliasUrl(config) + bookmarkId; if (log.isDebugEnabled()) { log.debug("Private alias found, redirect to: " + redirectTo); } } else { - redirectTo = BowConfig.getInstance().getAliasUrl() + privateAlias; + redirectTo = BowConfigHelper.getAliasUrl(config) + privateAlias; if (log.isDebugEnabled()) { log.debug("Private alias not found, redirect to: " + redirectTo); } @@ -163,8 +167,7 @@ String searchEngineURL = pref.getSearchEngineUrlResults(); if (searchEngineURL == null || "".equals(searchEngineURL)) { - BowConfig config = BowConfig.getInstance(); - searchEngineURL = config.getSearchEngine(); + searchEngineURL = BowConfigHelper.getSearchEngine(config); } searchEngineURL = searchEngineURL.replace("{searchTerms}", searchLine); searchEngineURL = response.encodeRedirectURL(searchEngineURL); Modified: trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp 2011-05-12 12:03:04 UTC (rev 282) @@ -51,9 +51,9 @@ <s:set var="bookmarkClicks" value="%{#request.bookmark.getClick()}" /> <s:set var="formBookmarkId" value="%{#request.formBookmarkId}" /> <s:set var="privateAlias" value="%{#bookmarkAlias}" /> - <s:set var="aliasServlet" value="%{@org.chorem.bow.BowConfig@getInstance().getServletAliasUrl()}" /> + <s:set var="aliasServlet" value="%{#request.aliasServletUrl}" /> <s:set var="publicAliasUrl" value="%{#request.bookmark.getPublicAlias()}" /> - <s:set var="aliasUrl" value="%{@org.chorem.bow.BowConfig@getInstance().getServletAliasUrl() + #bookmarkAlias}" /> + <s:set var="aliasUrl" value="%{#request.aliasServletUrl + #bookmarkAlias}" /> <div class="bookmarkhead"> <p class="date"><%=BowUtils.formatDate(bookmark.getCreationDate())%></p> Modified: trunk/bow-ui/src/main/webapp/jsp/inc/rightMenu.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/jsp/inc/rightMenu.jsp 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/bow-ui/src/main/webapp/jsp/inc/rightMenu.jsp 2011-05-12 12:03:04 UTC (rev 282) @@ -24,8 +24,9 @@ <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@taglib prefix="s" uri="/struts-tags" %> <%@page import="org.chorem.bow.BowConfig" %> +<%@ page import="org.chorem.bow.BowConfigHelper" %> <% -String bowUrl = BowConfig.getInstance().getBowUrl(); +String bowUrl = BowConfigHelper.getBowUrl(BowConfig.getConfig()); if (request.getAttribute("formAction") == null) { request.setAttribute("formAction", "addUrl"); Modified: trunk/bow-ui/src/main/webapp/jsp/permanentXml.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/jsp/permanentXml.jsp 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/bow-ui/src/main/webapp/jsp/permanentXml.jsp 2011-05-12 12:03:04 UTC (rev 282) @@ -24,9 +24,10 @@ <%@page contentType="text/xml" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <%@page import="org.chorem.bow.BowConfig" %> +<%@ page import="org.chorem.bow.BowConfigHelper" %> <% -String url = BowConfig.getInstance().getBowUrl(); +String url = BowConfigHelper.getBowUrl(BowConfig.getConfig()); %> <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/" Modified: trunk/bow-ui/src/main/webapp/jsp/preferences.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/jsp/preferences.jsp 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/bow-ui/src/main/webapp/jsp/preferences.jsp 2011-05-12 12:03:04 UTC (rev 282) @@ -1,6 +1,7 @@ <%@page import="org.chorem.bow.BowConfig"%> <%@page import="org.nuiton.wikitty.search.FacetTopic"%> <%@page import="org.chorem.bow.action.PreferencesAction"%> +<%@ page import="org.chorem.bow.BowConfigHelper" %> <!-- #%L bow @@ -29,7 +30,7 @@ <% PreferencesAction action = PreferencesAction.getAction(); -String bowUrl = BowConfig.getInstance().getBowUrl(); +String bowUrl = BowConfigHelper.getBowUrl(BowConfig.getConfig()); %> <html xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" Modified: trunk/bow-ui/src/main/webapp/jsp/temporaryXml.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/jsp/temporaryXml.jsp 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/bow-ui/src/main/webapp/jsp/temporaryXml.jsp 2011-05-12 12:03:04 UTC (rev 282) @@ -24,9 +24,10 @@ <%@page contentType="text/xml" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <%@page import="org.chorem.bow.BowConfig" %> +<%@ page import="org.chorem.bow.BowConfigHelper" %> <% -String url = BowConfig.getInstance().getBowUrl(); +String url = BowConfigHelper.getBowUrl(BowConfig.getConfig()); %> <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/" Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2011-05-12 11:59:51 UTC (rev 281) +++ trunk/pom.xml 2011-05-12 12:03:04 UTC (rev 282) @@ -122,7 +122,7 @@ <eugenePluginVersion>2.3.2</eugenePluginVersion> <nuitonUtilsVersion>2.1.2</nuitonUtilsVersion> <nuitonI18nVersion>2.3.1</nuitonI18nVersion> - <wikittyVersion>3.1.1-SNAPSHOT</wikittyVersion> + <wikittyVersion>3.1.1</wikittyVersion> <slf4jVersion>1.6.1</slf4jVersion> <struts2Version>2.1.8.1</struts2Version> <xWorkCoreVersion>2.1.6</xWorkCoreVersion> @@ -239,6 +239,14 @@ <version>${struts2Version}</version> </dependency> + <!-- base postgres --> + <dependency> + <groupId>postgresql</groupId> + <artifactId>postgresql</artifactId> + <version>8.4-701.jdbc4</version> + <scope>runtime</scope> + </dependency> + </dependencies> </dependencyManagement>