Author: szimano Date: 2005-09-13 18:55:19 -0400 (Tue, 13 Sep 2005) New Revision: 1106 Removed: trunk/forge/portal-extensions/jbosswiki/lib/cglib2.jar trunk/forge/portal-extensions/jbosswiki/lib/commons-beanutils.jar trunk/forge/portal-extensions/jbosswiki/lib/commons-collections.jar trunk/forge/portal-extensions/jbosswiki/lib/commons-lang.jar trunk/forge/portal-extensions/jbosswiki/lib/commons-logging.jar trunk/forge/portal-extensions/jbosswiki/lib/dom4j.jar trunk/forge/portal-extensions/jbosswiki/lib/ehcache.jar trunk/forge/portal-extensions/jbosswiki/lib/hibernate2.jar trunk/forge/portal-extensions/jbosswiki/lib/hsqldb.jar trunk/forge/portal-extensions/jbosswiki/lib/informa.jar trunk/forge/portal-extensions/jbosswiki/lib/jdbc2_0-stdext.jar trunk/forge/portal-extensions/jbosswiki/lib/jdom.jar trunk/forge/portal-extensions/jbosswiki/lib/jta.jar trunk/forge/portal-extensions/jbosswiki/lib/log4j-1.2.8.jar trunk/forge/portal-extensions/jbosswiki/lib/lucene.jar trunk/forge/portal-extensions/jbosswiki/lib/odmg.jar trunk/forge/portal-extensions/jbosswiki/lib/xalan.jar trunk/forge/portal-extensions/jbosswiki/lib/xml-apis.jar Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/project.xml trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jsp/PageInfo.jsp trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jsp/Wiki.jsp trunk/forge/portal-extensions/jbosswiki/wiki-common/.classpath trunk/forge/portal-extensions/jbosswiki/wiki-common/project.xml trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/WikiTypes.xml trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiContext.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiSearch.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/management/WikiServiceLocal.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/management/WikiServiceMenagement.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/FindResultPlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RSSPlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-management/project.xml trunk/forge/portal-extensions/jbosswiki/wiki-management/src/java/org/jboss/wiki/management/WikiService.java Log: rss feed prototype: http://jira.jboss.com/jira/browse/JBWIKI-14 search scores added. Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/project.xml =================================================================== --- trunk/forge/portal-extensions/jbosswiki/forge-wiki/project.xml 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/forge-wiki/project.xml 2005-09-13 22:55:19 UTC (rev 1106) @@ -87,6 +87,7 @@ <groupId>informa</groupId> <artifactId>informa</artifactId> <version>0.6.0</version> + <jar>informa-0.6.0.jar</jar> </dependency> <dependency> Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2005-09-13 22:55:19 UTC (rev 1106) @@ -9,12 +9,10 @@ package org.jboss.wiki; import java.io.File; -import java.io.IOException; import java.util.Date; import java.util.Iterator; import java.util.List; -import java.util.Properties; -import java.util.Set; +import java.util.Map; import javax.portlet.*; import org.jboss.portlet.*; @@ -42,18 +40,12 @@ private WikiEngine wikiEngine; public void init() { - wikiEngine = new WikiEngine(); - WikiCommon wikiCommon = new WikiCommon(); - - WikiServiceMenagement wikiServiceMenagement = wikiCommon.getWikiManagement(); - - wikiServiceMenagement.setWikiEngine(wikiEngine); - - if (wikiEngine == null) { - wikiEngine = new WikiEngine(); - wikiServiceMenagement.setWikiEngine(wikiEngine); - } + + WikiServiceMenagement wikiServiceMenagement = wikiCommon + .getWikiManagement(); + + wikiEngine = wikiServiceMenagement.getWikiEngine(); } public void processAction(JBossActionRequest rReq, JBossActionResponse rResp) { @@ -131,8 +123,7 @@ } if (rReq.getParameter("searchQuery") != null) { - // TODO do it man ! - Set<String> pages = wikiEngine.findPages(rReq + Map<String, Integer> pages = wikiEngine.findPages(rReq .getParameter("searchQuery")); rReq.getPortletSession().setAttribute("findResult", pages); @@ -313,14 +304,14 @@ } else { page = "Wiki.jsp"; - String type = "HTML"; + String type = "html"; if (rReq.getParameter("type") != null) { type = rReq.getParameter("type"); //System.out.println("Getting type: " + type); } - wikiContext = new WikiContext(rReq.getUser(), wikiEngine + wikiContext = new WikiContext((rReq.getUser() != null) ? rReq.getUser().getUserName() : "", wikiEngine .getWikiType(type), new PortletWikiSession(rReq .getPortletSession())); Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java 2005-09-13 22:55:19 UTC (rev 1106) @@ -12,13 +12,13 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.PrintWriter; import java.util.Properties; import javax.activation.MimetypesFileTypeMap; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; -import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.ServletRequest; @@ -28,9 +28,13 @@ import javax.servlet.http.HttpServletResponse; import org.jboss.wiki.FileDataSource; +import org.jboss.wiki.ServletWikiSession; import org.jboss.wiki.WikiCommon; +import org.jboss.wiki.WikiContext; import org.jboss.wiki.WikiEngine; +import org.jboss.wiki.WikiPage; import org.jboss.wiki.WikiPlugin; +import org.jboss.wiki.WikiSession; import org.jboss.wiki.management.WikiServiceMenagement; // import org.jboss.forge.common.content.ContentManager; @@ -50,9 +54,7 @@ */ public static final String specialPage = "!WikiButtons"; - - public static final char specialChar = '!'; - + private final int BUF_SIZE = 32768; private String attachementsPath; @@ -69,20 +71,13 @@ public void init(FilterConfig conf) { // get wikiEnigne form wikiMenagement - wikiEngine = new WikiEngine(); - WikiCommon wikiCommon = new WikiCommon(); WikiServiceMenagement wikiServiceMenagement = wikiCommon .getWikiManagement(); - wikiServiceMenagement.setWikiEngine(wikiEngine); + wikiEngine = wikiServiceMenagement.getWikiEngine(); - if (wikiEngine == null) { - wikiEngine = new WikiEngine(); - wikiServiceMenagement.setWikiEngine(wikiEngine); - } - // load mime types map mimeTypes = new MimetypesFileTypeMap(WikiFileAccessFilter.class @@ -116,11 +111,20 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - if (request instanceof HttpServletRequest) { HttpServletRequest httpRequest = (HttpServletRequest) request; HttpServletResponse httpResponse = (HttpServletResponse) response; + WikiSession wikiSession = new ServletWikiSession(httpRequest + .getSession()); + + String hostURL = ((request.isSecure()) ? "https" : "http") + + "://" + + request.getServerName() + + ((request.getServerPort() == 80) ? "" : ":" + + request.getServerPort()); + + wikiSession.setAttribute("hostURL", hostURL); String requestURI = httpRequest.getRequestURI(); // Parse URI to get filename and page name @@ -128,308 +132,268 @@ // System.out.println("length " + tokens.length); - if (tokens[tokens.length - 2].charAt(0) == specialChar) { - if (tokens[tokens.length - 2].equals(specialPage)) { - // show apropriate buttons - InputStream imageIS = WikiFileAccessFilter.class - .getResourceAsStream("/" - + tokens[tokens.length - 1]); + if (tokens[tokens.length - 2].equals(specialPage)) { + // show apropriate buttons + InputStream imageIS = WikiFileAccessFilter.class + .getResourceAsStream("/" + tokens[tokens.length - 1]); - ServletOutputStream os = response.getOutputStream(); - - response.setContentType("image/png"); - - // Transferring the bytes - try { - byte[] buffer = new byte[BUF_SIZE]; - int read; - while ((read = imageIS.read(buffer)) != -1) - os.write(buffer, 0, read); - } catch (Exception e2) { - // Nothing that we can really do. Just send an - // incomplete - // file. - } finally { - os.close(); - imageIS.close(); - } - - } - else { - // show plugin with name after "!" - - } - } else if (tokens.length == 3) { - /*String hostURL = ((request.isSecure()) ? "https" : "http") - + "://" - + request.getServerName() - + ((request.getServerPort() == 80) ? "" : ":" - + request.getServerPort()); - - httpResponse.sendRedirect(hostURL + wikiHome + "&page=" - + tokens[tokens.length - 1]);*/ - request.getRequestDispatcher("/WEB-INF/jsp/Wiki.jsp").include(request, response); - } else { - // get fileName of attachement and page which is connected to - String fileName = tokens[tokens.length - 1]; - String pageName = tokens[tokens.length - 2]; - - // System.out.println("[WikiFileAccess]Getting file: " + - // fileName - // + " of page: " + pageName); - - Properties props = new Properties(); - - try { - props.load(new FileInputStream(new File(attachementsPath - + "/" + pageName + "-att/" + fileName - + "-dir/attachment.properties"))); - } catch (IOException e) { - System.err.println(e); - } - - // looking for the newest version - int version = 1; - - while (props.getProperty((version + 1) + ".author") != null) { - version++; - } - - tokens = fileName.split("\\."); - - File file = new File( - attachementsPath - + "/" - + pageName - + "-att/" - + fileName - + "-dir/" - + version - + "." - + ((fileName.indexOf(".") != -1) ? tokens[tokens.length - 1] - : "bin")); - - FileInputStream fileIS = new FileInputStream(file); - ServletOutputStream os = response.getOutputStream(); - response.setContentType(mimeTypes.getContentType(file)); - response.setContentLength((int) file.length()); + response.setContentType("image/png"); // Transferring the bytes try { byte[] buffer = new byte[BUF_SIZE]; int read; - while ((read = fileIS.read(buffer)) != -1) + while ((read = imageIS.read(buffer)) != -1) os.write(buffer, 0, read); } catch (Exception e2) { - // Nothing that we can really do. Just send an incomplete + // Nothing that we can really do. Just send an + // incomplete // file. } finally { os.close(); - fileIS.close(); + imageIS.close(); } - } - } else { - throw new IOException( - "This servlet should be called as HTTPServletRequest"); - } - } - - private void doServletDispatch(HttpServletRequest rReq, HttpServletResponse rResp) { - - //FIXME wrong url - String wikiURL = rReq.getRequestURI(); + } else if (tokens.length == 3) { + httpResponse.sendRedirect(hostURL + wikiHome + "&page=" + + tokens[tokens.length - 1]); - rReq.setAttribute("actionURL", wikiURL); + } else { + // get fileName of attachement and page which is connected to + String firstToken = tokens[tokens.length - 2]; + String secondToken = tokens[tokens.length - 1]; - // Create server host and put it into session for plugins - String hostURL = ((rReq.isSecure()) ? "https" : "http") + "://"+rReq.getServerName()+((rReq.getServerPort() == 80) ? "" : ":"+ rReq.getServerPort()); - - rReq.getPortletSession().setAttribute("hostURL", hostURL); - rReq.getPortletSession().setAttribute("actionURL", wikiURL.toString()); - - rReq.getPortletSession().setAttribute("isSecure", - new Boolean(rReq.isSecure())); + if (Character.isUpperCase(firstToken.charAt(0))) { + // Show file of a page + String pageName = firstToken; + String fileName = secondToken; - WikiPage noSuchPage = new WikiPage("", new Credentials(""), - "There is no such page. Click on EDIT to start it.", 0, 0, - null, wikiEngine.getMediaDataSource()); + Properties props = new Properties(); - String page = "Wiki.jsp"; + try { + props.load(new FileInputStream(new File( + attachementsPath + "/" + pageName + "-att/" + + fileName + + "-dir/attachment.properties"))); + } catch (IOException e) { + System.err.println(e); + } - String wikiPage = defaultPage; + // looking for the newest version + int version = 1; - WikiPage pageToShow = null; + while (props.getProperty((version + 1) + ".author") != null) { + version++; + } - WikiContext wikiContext = null; + tokens = fileName.split("\\."); - if (rReq.getParameter("page") != null) { - wikiPage = rReq.getParameter("page"); - } + File file = new File( + attachementsPath + + "/" + + pageName + + "-att/" + + fileName + + "-dir/" + + version + + "." + + ((fileName.indexOf(".") != -1) ? tokens[tokens.length - 1] + : "bin")); - if ((rReq.getParameter("action") != null) - && (rReq.getParameter("action").equals("Attach"))) { - rReq.setAttribute("fileAttach", "true"); - } + FileInputStream fileIS = new FileInputStream(file); - if ((rReq.getParameter("action") != null) - && (rReq.getParameter("action").equals("Edit")) - && (rReq.getUser() != null)) { - page = "Edit.jsp"; + ServletOutputStream os = response.getOutputStream(); - pageToShow = wikiEngine.getByName(wikiPage, null); + response.setContentType(mimeTypes.getContentType(file)); + response.setContentLength((int) file.length()); - if (rReq.getParameter("version") != null) { - // show previous version of page + // Transferring the bytes + try { + byte[] buffer = new byte[BUF_SIZE]; + int read; + while ((read = fileIS.read(buffer)) != -1) + os.write(buffer, 0, read); + } catch (Exception e2) { + // Nothing that we can really do. Just send an + // incomplete + // file. + } finally { + os.close(); + fileIS.close(); + } + } else { + // SHOW wikiType firstToken with page secondToken - System.out.println("Getting page " + wikiPage + " at version " - + rReq.getParameter("version")); - pageToShow = wikiEngine.getByName(wikiPage, null, Integer - .valueOf(rReq.getParameter("version"))); + String wikiTypeName = firstToken; + String pageName = secondToken; - if (pageToShow.getLastVersion() != pageToShow.getVersion()) { - rReq.setAttribute("showedVersion", Integer.valueOf(rReq - .getParameter("version"))); - } - } else { - pageToShow = wikiEngine.getByName(wikiPage, null); - } + WikiPage page = wikiEngine.getByName(pageName, + new WikiContext("", wikiEngine + .getWikiType(wikiTypeName), wikiSession)); - if (pageToShow == null) { - // start editing new page - // wikiPage = defaultPage; + PrintWriter out = httpResponse.getWriter(); - pageToShow = new WikiPage(wikiPage, new Credentials(rReq - .getUser().getUserName()), "", 0, 0, new Date(), - wikiEngine.getMediaDataSource()); - // wikiEngine.getByName(wikiPage, wikiContext); - } + httpResponse.setContentType("text/xml"); + httpResponse.setContentLength(page.getPageContent() + .length()); - Date dateLock = pageToShow.lock(rReq.getUser()); + out.print(page.getPageContent()); - if (dateLock != null) { - rReq - .setAttribute( - "lockMsg", - "Page is locked by " - + pageToShow.getLockUser() - + " from " - + dateLock - + ".<br> I won't stop you from saving, but you or he can erease each other changes. Lock will expire: "); - } - - } else if ((rReq.getParameter("action") != null) - && (rReq.getParameter("action").equals("Info"))) { - page = "PageInfo.jsp"; - - pageToShow = wikiEngine.getByName(wikiPage, null); - - if (pageToShow == null) { // if somebody entered a link to info - // non-existing page - page = "Wiki.jsp"; - try { - pageToShow = (WikiPage) noSuchPage.clone(); - } catch (CloneNotSupportedException cnse) { - System.out.println(cnse); + out.flush(); } - - pageToShow.setName(wikiPage); - } else { - rReq.setAttribute("pageAtTop", pageToShow); } - } else { - page = "Wiki.jsp"; - - String type = "HTML"; - - if (rReq.getParameter("type") != null) { - type = rReq.getParameter("type"); - //System.out.println("Getting type: " + type); - } - - wikiContext = new WikiContext(rReq.getUser(), wikiEngine - .getWikiType(type), new PortletWikiSession(rReq - .getPortletSession())); - - if (rReq.getParameter("version") != null) { - // show previous version of page - System.out.println("Getting page " + wikiPage + " at version " - + rReq.getParameter("version")); - pageToShow = wikiEngine.getByName(wikiPage, wikiContext, - Integer.valueOf(rReq.getParameter("version"))); - - if (pageToShow.getLastVersion() != pageToShow.getVersion()) { - rReq.setAttribute("showedVersion", Integer.valueOf(rReq - .getParameter("version"))); - } - } else { - pageToShow = wikiEngine.getByName(wikiPage, wikiContext); - } - - if (pageToShow == null) { - - try { - pageToShow = (WikiPage) noSuchPage.clone(); - } catch (CloneNotSupportedException cnse) { - System.out.println(cnse); - } - - pageToShow.setName(wikiPage); - } - + throw new IOException( + "This servlet should be called as HTTPServletRequest"); } - - rReq - .setAttribute( - "wikiName", - "<img src=\""+hostURL+"/wiki/"+WikiFileAccessFilter.specialPage+"/JBossWikiLogoMedium.png\" width=\"100\" border=\"0\" style=\"vertical-align: middle\"/>"); + } - rReq.setAttribute("wikiContent", pageToShow.getContent()); - - rReq.setAttribute("wikiImagesUrl", hostURL+"/wiki/"+WikiFileAccessFilter.specialPage+"/"); - - rReq.setAttribute("wikiPage", wikiPage); - - rReq.setAttribute("editDate", pageToShow.getEditDate()); - - rReq.setAttribute("author", pageToShow.getLastAuthor()); - - rReq.setAttribute("logedIn", (rReq.getUser() != null) ? "true" - : "false"); - - rReq.setAttribute("defaultPage", defaultPage); - - // FIXME make this more elegant (ie. plugin) - // pass friendly link - /*Properties props = new Properties(); - props.load(WikiPlugin.class - .getResourceAsStream("wikiPlugins.properties")); - String href = props.getProperty("htmlTranslatorURL") + "wiki/" - + pageToShow.getName(); - String[] replaces = props.getProperty("sslRedirectReplaces").split(","); - - if (rReq.isSecure() && (replaces.length % 2 == 0)) { - // chage normal url to secure - for (int i = 0; i < replaces.length; i += 2) - href = href.replaceAll(replaces[i], replaces[i + 1]); - }*/ - - rReq.setAttribute("friendlyLink", hostURL+"/wiki/"+pageToShow.getName()); - - rRes.setTitle("Wiki"); - if (javax.portlet.WindowState.NORMAL.equals(rReq.getWindowState()) - || javax.portlet.WindowState.MAXIMIZED.equals(rReq - .getWindowState())) { - rRes.setContentType("text/html"); - javax.portlet.PortletRequestDispatcher pRD = this - .getPortletContext().getRequestDispatcher(jspPath + page); - pRD.include(rReq, rRes); - return; - } - doDispatch(rReq, rRes); + private void doServletDispatch(HttpServletRequest rReq, + HttpServletResponse rResp) { + /* + * //FIXME wrong url String wikiURL = rReq.getRequestURI(); + * + * rReq.setAttribute("actionURL", wikiURL); // Create server host and + * put it into session for plugins String hostURL = ((rReq.isSecure()) ? + * "https" : "http") + "://"+rReq.getServerName()+((rReq.getServerPort() == + * 80) ? "" : ":"+ rReq.getServerPort()); + * + * rReq.getPortletSession().setAttribute("hostURL", hostURL); + * rReq.getPortletSession().setAttribute("actionURL", + * wikiURL.toString()); + * + * rReq.getPortletSession().setAttribute("isSecure", new + * Boolean(rReq.isSecure())); + * + * WikiPage noSuchPage = new WikiPage("", new Credentials(""), "There is + * no such page. Click on EDIT to start it.", 0, 0, null, + * wikiEngine.getMediaDataSource()); + * + * String page = "Wiki.jsp"; + * + * String wikiPage = defaultPage; + * + * WikiPage pageToShow = null; + * + * WikiContext wikiContext = null; + * + * if (rReq.getParameter("page") != null) { wikiPage = + * rReq.getParameter("page"); } + * + * if ((rReq.getParameter("action") != null) && + * (rReq.getParameter("action").equals("Attach"))) { + * rReq.setAttribute("fileAttach", "true"); } + * + * if ((rReq.getParameter("action") != null) && + * (rReq.getParameter("action").equals("Edit")) && (rReq.getUser() != + * null)) { page = "Edit.jsp"; + * + * pageToShow = wikiEngine.getByName(wikiPage, null); + * + * if (rReq.getParameter("version") != null) { // show previous version + * of page + * + * System.out.println("Getting page " + wikiPage + " at version " + + * rReq.getParameter("version")); pageToShow = + * wikiEngine.getByName(wikiPage, null, Integer + * .valueOf(rReq.getParameter("version"))); + * + * if (pageToShow.getLastVersion() != pageToShow.getVersion()) { + * rReq.setAttribute("showedVersion", Integer.valueOf(rReq + * .getParameter("version"))); } } else { pageToShow = + * wikiEngine.getByName(wikiPage, null); } + * + * if (pageToShow == null) { // start editing new page // wikiPage = + * defaultPage; + * + * pageToShow = new WikiPage(wikiPage, new Credentials(rReq + * .getUser().getUserName()), "", 0, 0, new Date(), + * wikiEngine.getMediaDataSource()); // wikiEngine.getByName(wikiPage, + * wikiContext); } + * + * Date dateLock = pageToShow.lock(rReq.getUser()); + * + * if (dateLock != null) { rReq .setAttribute( "lockMsg", "Page is + * locked by " + pageToShow.getLockUser() + " from " + dateLock + ".<br> + * I won't stop you from saving, but you or he can erease each other + * changes. Lock will expire: "); } } else if + * ((rReq.getParameter("action") != null) && + * (rReq.getParameter("action").equals("Info"))) { page = + * "PageInfo.jsp"; + * + * pageToShow = wikiEngine.getByName(wikiPage, null); + * + * if (pageToShow == null) { // if somebody entered a link to info // + * non-existing page page = "Wiki.jsp"; try { pageToShow = (WikiPage) + * noSuchPage.clone(); } catch (CloneNotSupportedException cnse) { + * System.out.println(cnse); } + * + * pageToShow.setName(wikiPage); } else { rReq.setAttribute("pageAtTop", + * pageToShow); } } else { page = "Wiki.jsp"; + * + * String type = "HTML"; + * + * if (rReq.getParameter("type") != null) { type = + * rReq.getParameter("type"); //System.out.println("Getting type: " + + * type); } + * + * wikiContext = new WikiContext(rReq.getUser(), wikiEngine + * .getWikiType(type), new PortletWikiSession(rReq + * .getPortletSession())); + * + * if (rReq.getParameter("version") != null) { // show previous version + * of page System.out.println("Getting page " + wikiPage + " at version " + + * rReq.getParameter("version")); pageToShow = + * wikiEngine.getByName(wikiPage, wikiContext, + * Integer.valueOf(rReq.getParameter("version"))); + * + * if (pageToShow.getLastVersion() != pageToShow.getVersion()) { + * rReq.setAttribute("showedVersion", Integer.valueOf(rReq + * .getParameter("version"))); } } else { pageToShow = + * wikiEngine.getByName(wikiPage, wikiContext); } + * + * if (pageToShow == null) { + * + * try { pageToShow = (WikiPage) noSuchPage.clone(); } catch + * (CloneNotSupportedException cnse) { System.out.println(cnse); } + * + * pageToShow.setName(wikiPage); } } + * + * rReq .setAttribute( "wikiName", "<img + * src=\""+hostURL+"/wiki/"+WikiFileAccessFilter.specialPage+"/JBossWikiLogoMedium.png\" + * width=\"100\" border=\"0\" style=\"vertical-align: middle\"/>"); + * + * rReq.setAttribute("wikiContent", pageToShow.getContent()); + * + * rReq.setAttribute("wikiImagesUrl", + * hostURL+"/wiki/"+WikiFileAccessFilter.specialPage+"/"); + * + * rReq.setAttribute("wikiPage", wikiPage); + * + * rReq.setAttribute("editDate", pageToShow.getEditDate()); + * + * rReq.setAttribute("author", pageToShow.getLastAuthor()); + * + * rReq.setAttribute("logedIn", (rReq.getUser() != null) ? "true" : + * "false"); + * + * rReq.setAttribute("defaultPage", defaultPage); // FIXME make this + * more elegant (ie. plugin) // pass friendly link + * + * + * rReq.setAttribute("friendlyLink", + * hostURL+"/wiki/"+pageToShow.getName()); + * + * rRes.setTitle("Wiki"); if + * (javax.portlet.WindowState.NORMAL.equals(rReq.getWindowState()) || + * javax.portlet.WindowState.MAXIMIZED.equals(rReq .getWindowState())) { + * rRes.setContentType("text/html"); + * javax.portlet.PortletRequestDispatcher pRD = this + * .getPortletContext().getRequestDispatcher(jspPath + page); + * pRD.include(rReq, rRes); return; } doDispatch(rReq, rRes); + */ } public void destroy() { Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jsp/PageInfo.jsp =================================================================== --- trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jsp/PageInfo.jsp 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jsp/PageInfo.jsp 2005-09-13 22:55:19 UTC (rev 1106) @@ -58,7 +58,7 @@ "</td><td>"+ author + "</td><td>"+prevWikiPage.getLength()+ - "</td><td>"+ ((i > 1) ? "<a href='"+actionURL+"&type=DIFF&version="+i+"&page="+wikiPage+"'>Changes from "+(i-1)+" to "+i+"</a>" : "") +"</td>"); + "</td><td>"+ ((i > 1) ? "<a href='"+actionURL+"&type=diff&version="+i+"&page="+wikiPage+"'>Changes from "+(i-1)+" to "+i+"</a>" : "") +"</td>"); } %> </table> Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jsp/Wiki.jsp =================================================================== --- trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jsp/Wiki.jsp 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jsp/Wiki.jsp 2005-09-13 22:55:19 UTC (rev 1106) @@ -32,7 +32,7 @@ <!--<a href="<%=actionURL%>&page=<%=defaultPage%>"><%=defaultPage%></a><br />--> -<form method="post" action="<%=actionURL%>&type=FIND"> +<form method="post" action="<%=actionURL%>&type=find"> <table style="width: 100%" border="0"> <tr style="vertical-align: bottom;"> <td style="vertical-align: bottom; align-bottom: 0px;"> Deleted: trunk/forge/portal-extensions/jbosswiki/lib/cglib2.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/commons-beanutils.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/commons-collections.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/commons-lang.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/commons-logging.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/dom4j.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/ehcache.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/hibernate2.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/hsqldb.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/informa.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/jdbc2_0-stdext.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/jdom.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/jta.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/log4j-1.2.8.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/lucene.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/odmg.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/xalan.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/jbosswiki/lib/xml-apis.jar =================================================================== (Binary files differ) Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/.classpath =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/.classpath 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/.classpath 2005-09-13 22:55:19 UTC (rev 1106) @@ -1,25 +1,48 @@ <?xml version="1.0" encoding="UTF-8"?> + <classpath> - <classpathentry kind="src" path="src/java"/> - <classpathentry kind="src" path="src/test/java"/> - <classpathentry kind="var" path="MAVEN_REPO/junit/jars/junit-3.8.1.jar"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> - <classpathentry kind="var" path="MAVEN_REPO/aslibs/jars/javax.servlet.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/aslibs/jars/javax.servlet.jsp.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/tmate/jars/javasvn.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/tmate/jars/jsch.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/activation.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/commons-fileupload/jars/commons-fileupload-1.0.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/informa/jars/informa-0.6.0.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/dom4j/jars/dom4j-1.6.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/jdom/jars/jdom-1.0.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-ejb3x.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-ejb3.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/portlet-api/jars/portlet-api-1.0.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-jmx.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-common.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-common-lib.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-core-lib.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-portlet-lib.jar"/> - <classpathentry kind="output" path="target/classes"/> -</classpath> + <classpathentry excluding="" kind="src" path="src/java"> + </classpathentry> + <classpathentry output="target/test-classes" kind="src" path="src/test/java"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/junit/jars/junit-3.8.1.jar"> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/aslibs/jars/javax.servlet.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/aslibs/jars/javax.servlet.jsp.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/tmate/jars/javasvn.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/tmate/jars/jsch.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/activation.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/commons-fileupload/jars/commons-fileupload-1.0.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/informa/jars/informa-0.6.0.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/dom4j/jars/dom4j-1.6.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/jdom/jars/jdom-1.0.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-ejb3x.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-ejb3.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/portlet-api/jars/portlet-api-1.0.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-jmx.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-common.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-common-lib.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-core-lib.jar"> + </classpathentry> + <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-portlet-lib.jar"> + </classpathentry> + <classpathentry kind="output" path="target/classes"> + </classpathentry> +</classpath> \ No newline at end of file Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/project.xml =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/project.xml 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/project.xml 2005-09-13 22:55:19 UTC (rev 1106) @@ -83,10 +83,11 @@ <jar>commons-fileupload-1.0.jar</jar> </dependency> - <dependency> + <dependency> <groupId>informa</groupId> <artifactId>informa</artifactId> <version>0.6.0</version> + <jar>informa-0.6.0.jar</jar> </dependency> <dependency> Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/WikiTypes.xml =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/WikiTypes.xml 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/WikiTypes.xml 2005-09-13 22:55:19 UTC (rev 1106) @@ -6,7 +6,7 @@ <wikiTypes> <wikiType> - <name>HTML</name> + <name>html</name> <class>org.jboss.wiki.plugins.DefaultWikiType</class> <plugin> <name>trail</name> @@ -26,7 +26,7 @@ </plugin> </wikiType> <wikiType> - <name>DIFF</name> + <name>diff</name> <class>org.jboss.wiki.plugins.DefaultWikiType</class> <plugin> <name>Diff</name> @@ -34,7 +34,7 @@ </plugin> </wikiType> <wikiType> - <name>FIND</name> + <name>find</name> <class>org.jboss.wiki.plugins.DefaultWikiType</class> <plugin> <name>findResult</name> @@ -49,4 +49,12 @@ <class>org.jboss.wiki.plugins.HTMLTranslator</class> </plugin> </wikiType> + <wikiType> + <name>rss</name> + <class>org.jboss.wiki.plugins.DefaultWikiType</class> + <plugin> + <name>RSSPlugin</name> + <class>org.jboss.wiki.plugins.RSSPlugin</class> + </plugin> + </wikiType> </wikiTypes> \ No newline at end of file Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiContext.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiContext.java 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiContext.java 2005-09-13 22:55:19 UTC (rev 1106) @@ -15,8 +15,9 @@ * @version $Id$ */ -import org.jboss.portal.core.model.User; +//import org.jboss.portal.core.model.User; + /** * <p></p> * @@ -27,7 +28,7 @@ * <p>Represents ...</p> * */ - private User user; + private String user; /** * <p>Represents ...</p> @@ -40,7 +41,7 @@ */ private WikiSession wikiSession; - public WikiContext(User user, WikiType requestedType, WikiSession wikiSession) { + public WikiContext(String user, WikiType requestedType, WikiSession wikiSession) { this.user = user; this.requestedType = requestedType; this.wikiSession = wikiSession; @@ -51,7 +52,7 @@ } - public User getUser() { + public String getUser() { return user; } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2005-09-13 22:55:19 UTC (rev 1106) @@ -8,10 +8,17 @@ *************************************************/ package org.jboss.wiki; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; import java.util.Set; +import java.util.TreeMap; import java.util.TreeSet; +import java.util.Map.Entry; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; @@ -161,17 +168,12 @@ } } else { // return noSuchPage if there isn't any - /*try { - ret = (WikiPage) noSuchPage.clone(); - } catch (CloneNotSupportedException cne) { - System.err.println(cne); - - } - if (wikiContext != null) { - return wikiContext.process(ret); - } else { - return ret; - }*/ + /* + * try { ret = (WikiPage) noSuchPage.clone(); } catch + * (CloneNotSupportedException cne) { System.err.println(cne); } if + * (wikiContext != null) { return wikiContext.process(ret); } else { + * return ret; } + */ return null; } } @@ -300,8 +302,8 @@ } public WikiType getWikiType(String wikiTypeName) { - //System.out - // .println("[WIKITYPE REQUEST]: " + wikiTypes.get(wikiTypeName)); + // System.out + // .println("[WIKITYPE REQUEST]: " + wikiTypes.get(wikiTypeName)); return wikiTypes.get(wikiTypeName); } @@ -339,25 +341,47 @@ } } - public Set<String> findPages(String searchQuery) { - //System.out.println("Starting search: " + searchQuery); + public Map<String, Integer> findPages(String searchQuery) { + // System.out.println("Starting search: " + searchQuery); WikiSearch wikiSearch = new WikiSearch(searchQuery); - Set<String> resPages = new TreeSet<String>(); + Map<String, Integer> resPages = new HashMap<String, Integer>(); Set<String> pages = getMediaDataSource().getAllPageNames(); for (String name : pages) { WikiPage temp = getByName(name, null); if (temp != null) { - if (wikiSearch.matches(temp.getPageContent().toLowerCase())) { - resPages.add(name); + int searchScore; + + if ((searchScore = wikiSearch.matches(temp.getPageContent() + .toLowerCase())) > 0) { + resPages.put(name, searchScore); } } } + + Object[] entryArr = resPages.entrySet().toArray(); + // Sorting the resPages by entry values (which are numbers), descending. + Arrays.sort(entryArr, new Comparator<Object>() { + public int compare(Object entry1, Object entry2) { + int i1 = ((Entry<String,Integer>)entry1).getValue(); + int i2 = ((Entry<String,Integer>)entry2).getValue(); - //System.out.println("Search completed"); + if (i1 == i2) + return 0; + return (i1 < i2) ? 1 : -1; + } + }); + + resPages = new LinkedHashMap<String, Integer>(); + + for (int i = 0; i < entryArr.length; i++) { + Entry<String,Integer> entry = (Entry<String,Integer>)entryArr[i]; + + resPages.put(entry.getKey(), entry.getValue()); + } + // System.out.println("Search completed"); return resPages; } - } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiSearch.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiSearch.java 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiSearch.java 2005-09-13 22:55:19 UTC (rev 1106) @@ -44,34 +44,38 @@ } } - public boolean matches(String content) { + public int matches(String content) { + int score = 0; + for (int i = 0; i < forbiddenTokens.size(); i++) { if (content.indexOf(forbiddenTokens.get(i)) != -1) { - // there is forbidden token - return false; + // there is forbidden token - return 0 + return 0; } } for (int i = 0; i < requiredTokens.size(); i++) { if (content.indexOf(requiredTokens.get(i)) == -1) { - // lack of one of the required tokens - return false; + // lack of one of the required tokens - return 0 + return 0; } } - if (requiredTokens.size() > 0) { + /*if (requiredTokens.size() > 0) { // there is at least one requirted token and it has been found return true; - } + }*/ for (int i = 0; i < requestTokens.size(); i++) { - if (content.indexOf(requestTokens.get(i)) != -1) { + int fromIndex = 0; + + while ((fromIndex = content.indexOf(requestTokens.get(i), fromIndex+1)) != -1) { // found at least one required token - return true; + score++; } } - // didn't found anything that fits - return false; + // return counted score + return score; } } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/management/WikiServiceLocal.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/management/WikiServiceLocal.java 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/management/WikiServiceLocal.java 2005-09-13 22:55:19 UTC (rev 1106) @@ -1,9 +1,6 @@ package org.jboss.wiki.management; -import org.jboss.wiki.WikiEngine; public interface WikiServiceLocal { - public WikiEngine getWikiEngine(); - public void setWikiEngine(WikiEngine wikiEngine); } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/management/WikiServiceMenagement.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/management/WikiServiceMenagement.java 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/management/WikiServiceMenagement.java 2005-09-13 22:55:19 UTC (rev 1106) @@ -14,8 +14,6 @@ public WikiEngine getWikiEngine(); - public void setWikiEngine(WikiEngine wikiEngine); - void create() throws Exception; void start() throws Exception; Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/FindResultPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/FindResultPlugin.java 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/FindResultPlugin.java 2005-09-13 22:55:19 UTC (rev 1106) @@ -1,6 +1,6 @@ package org.jboss.wiki.plugins; -import java.util.Set; +import java.util.Map; import org.jboss.wiki.WikiPage; import org.jboss.wiki.WikiPlugin; @@ -18,16 +18,16 @@ System.err.println(cl); } - Set<String> pages = (Set<String>) wikiSession + Map<String, Integer> pages = (Map<String, Integer>) wikiSession .getAttribute("findResult"); - StringBuilder pageStr = new StringBuilder("!!!__Find results:__\n"); + StringBuilder pageStr = new StringBuilder("!!!__Find results:__\n\\\\\n\\\\\n").append("|__Page__|__Score__\n"); if (pages.size() == 0) { pageStr.append("''NONE FOUND''"); } else { - for (String p : pages) { - pageStr.append("[").append(p).append("]").append("\\\\\n"); + for (String p : pages.keySet()) { + pageStr.append("|[").append(p).append("]|").append(pages.get(p)).append("\n"); } } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RSSPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RSSPlugin.java 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RSSPlugin.java 2005-09-13 22:55:19 UTC (rev 1106) @@ -1,6 +1,5 @@ package org.jboss.wiki.plugins; -import java.io.File; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; @@ -9,50 +8,46 @@ import org.jboss.wiki.WikiPage; -import de.nava.informa.core.ChannelExporterIF; -import de.nava.informa.core.ChannelIF; -import de.nava.informa.core.ItemIF; -import de.nava.informa.exporters.RSS_2_0_Exporter; -import de.nava.informa.impl.basic.ChannelBuilder; import org.jboss.wiki.WikiPlugin; import org.jboss.wiki.WikiSession; public class RSSPlugin extends WikiPlugin { + private void addItem(StringBuilder rssFeed, String title, String link, + String description) { + rssFeed.append("<item>\n"); + rssFeed.append("<title>").append(title).append("</title>\n"); + rssFeed.append("<link>").append(link).append("</link>\n"); + rssFeed.append("<description>").append(description).append( + "</description>\n"); + rssFeed.append("</item>\n"); + } + @Override public WikiPage process(WikiPage wikiPage, WikiSession wikiSession) { - - String chanName = wikiPage.getName()+" change feed"; - Writer writer = new StringWriter(); - - ChannelBuilder builder = new ChannelBuilder(); - - ChannelIF channel = builder.createChannel(chanName); - channel.setDescription("Test Channel: " + chanName); - try { - ItemIF item1 = builder.createItem(channel, "Item 1 for " + chanName, - "First in line", new URL("http://sf.net/rss2_projnews.php?group_id=52620")); - ItemIF item2 = builder.createItem(channel, "Item 2 for " + chanName, - "Second in line", new URL("http://sf.net/export/rss2_projfiles.php?group_id=52620")); - - channel.addItem(item1); channel.addItem(item2); - + StringBuilder rssFeed = new StringBuilder( + "<!-- name=\"generator\" content=\"JBoss Wiki RSSPlugin\" -->\n"); + rssFeed.append("<rss version=\"0.92\">\n"); + rssFeed.append("<channel>\n"); + rssFeed.append("<title>JBoss Forge Wiki</title>\n"); + rssFeed.append("<link>" + (String) wikiSession.getAttribute("hostURL") + + "/wiki/" + wikiPage.getName() + "</link>\n"); + rssFeed.append("<description>JBoss Wiki: " + wikiPage.getName() + + "</description>\n"); + rssFeed.append("<language>en</language>\n"); + + for (int i = wikiPage.getLastVersion(); i > 0; i--) { + addItem(rssFeed, wikiPage.getName() + " rev: " + i, + (String) wikiSession.getAttribute("hostURL") + + getProperty("wikiHome").replaceAll("&", "&") + + "&page=" + wikiPage.getName() + "&version=" + i, + wikiPage.getPageAtVersion(true, i).getPageContent()); } - catch (MalformedURLException e) { - System.err.println(e); - } + + rssFeed.append("</channel>\n</rss>\n"); - try { - ChannelExporterIF exporter = new RSS_2_0_Exporter(writer, "utf8"); -// assuming you have a ChannelIF object available as channel - exporter.write(channel); - } - catch (IOException e) { - System.err.println(e); - } + wikiPage.setPageContent(rssFeed.toString()); - wikiPage.setPageContent(((StringWriter)writer).toString()+wikiPage.getContent()); - return wikiPage; } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-management/project.xml =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-management/project.xml 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/wiki-management/project.xml 2005-09-13 22:55:19 UTC (rev 1106) @@ -87,12 +87,6 @@ </dependency> <dependency> - <groupId>informa</groupId> - <artifactId>informa</artifactId> - <version>0.6.0</version> - </dependency> - - <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6</version> Modified: trunk/forge/portal-extensions/jbosswiki/wiki-management/src/java/org/jboss/wiki/management/WikiService.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-management/src/java/org/jboss/wiki/management/WikiService.java 2005-09-13 21:49:12 UTC (rev 1105) +++ trunk/forge/portal-extensions/jbosswiki/wiki-management/src/java/org/jboss/wiki/management/WikiService.java 2005-09-13 22:55:19 UTC (rev 1106) @@ -12,14 +12,13 @@ public class WikiService implements WikiServiceLocal, WikiServiceRemote, WikiServiceMenagement { WikiEngine wikiEngine; - public WikiEngine getWikiEngine() { + public synchronized WikiEngine getWikiEngine() { + if (wikiEngine == null) { + wikiEngine = new WikiEngine(); + } return wikiEngine; } - public void setWikiEngine(WikiEngine wikiEngine) { - this.wikiEngine = wikiEngine; - } - public void create() throws Exception { System.out.println("WikiService - Creating"); } |