You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(233) |
Sep
(199) |
Oct
(206) |
Nov
(185) |
Dec
(270) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(232) |
Feb
(426) |
Mar
(623) |
Apr
(592) |
May
(506) |
Jun
(389) |
Jul
(160) |
Aug
(3) |
Sep
(1) |
Oct
(1) |
Nov
(2) |
Dec
(5) |
2007 |
Jan
(1) |
Feb
(1) |
Mar
(2) |
Apr
(2) |
May
(4) |
Jun
(2) |
Jul
|
Aug
(3) |
Sep
(5) |
Oct
(9) |
Nov
(6) |
Dec
(6) |
2008 |
Jan
(3) |
Feb
|
Mar
(1) |
Apr
(3) |
May
(3) |
Jun
(5) |
Jul
(10) |
Aug
(2) |
Sep
(12) |
Oct
(10) |
Nov
(54) |
Dec
(49) |
2009 |
Jan
(19) |
Feb
(13) |
Mar
(20) |
Apr
(24) |
May
(44) |
Jun
(29) |
Jul
(32) |
Aug
(10) |
Sep
(7) |
Oct
(10) |
Nov
(4) |
Dec
(17) |
2010 |
Jan
(14) |
Feb
(5) |
Mar
(23) |
Apr
(50) |
May
(31) |
Jun
(9) |
Jul
(5) |
Aug
(4) |
Sep
(7) |
Oct
(5) |
Nov
(2) |
Dec
(3) |
2011 |
Jan
(12) |
Feb
(5) |
Mar
(5) |
Apr
(3) |
May
(4) |
Jun
(3) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2012 |
Jan
(1) |
Feb
(2) |
Mar
|
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(4) |
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2015 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <jbo...@li...> - 2005-11-08 08:37:28
|
Author: aron.gombas Date: 2005-11-08 03:37:15 -0500 (Tue, 08 Nov 2005) New Revision: 1528 Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/AbstractKosmosService.java Log: More DEBUG messages added Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/AbstractKosmosService.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/AbstractKosmosService.java 2005-11-07 21:16:55 UTC (rev 1527) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/AbstractKosmosService.java 2005-11-08 08:37:15 UTC (rev 1528) @@ -100,7 +100,7 @@ * the absolute URL pointing to the resulted file. */ protected String saveCachedFile(String fileName, InputStream in) throws URIException, IOException { - // grab parameters + // init String url = ctx.getServletContext().getInitParameter("webdav.url"); String user = ctx.getServletContext().getInitParameter("webdav.user"); String password = ctx.getServletContext().getInitParameter("webdav.password"); @@ -123,6 +123,7 @@ if((clientUrl == null) || (clientUrl.trim().length() == 0)) clientUrl = webdavUrl.getURI(); + // connect WebdavResource root = new WebdavResource(webdavUrl); String cacheDirName = "kosmos-cache"; @@ -131,6 +132,10 @@ String cachedFilename = getCachedFileName(fileName); String cachedFilePath = cacheDirPath + cachedFilename; String cachedFileUrl = clientUrl + "/" + cacheDirName + "/" + URLEncoder.encode(cachedFilename, "utf-8"); + + log.info("cacheDirPath: " + cacheDirPath); + log.info("cachedFilePath: " + cachedFilePath); + log.info("cachedFileUrl: " + cachedFileUrl); // init cache: create WebDAV collection if not existing WebdavResource cacheDir = null; @@ -145,6 +150,7 @@ if(cacheDir == null) throw new IllegalStateException("Couldn't find WebDAV cache directory"); } + WebdavUtils.dumpResourceChildren(cacheDir); // clear cache: remove old resource(s) from WebDAV String cachedWildcard = getCachedWildcard(fileName); |
From: <jbo...@li...> - 2005-11-07 21:16:58
|
Author: szimano Date: 2005-11-07 16:16:55 -0500 (Mon, 07 Nov 2005) New Revision: 1527 Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java Log: changed Node.getLastModification() after it changed in shotoku Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java 2005-11-07 21:13:21 UTC (rev 1526) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java 2005-11-07 21:16:55 UTC (rev 1527) @@ -479,7 +479,7 @@ int pageMods = getPageMod(pageName); page = new WikiPage(pageName, author, pageContent.toString(), - i, i, new Date(pageFile.getLastModfication()), + i, i, new Date(pageFile.getLastModification()), wikiEngine, (pageMods & VIEWABLE) == VIEWABLE, (pageMods & EDITABLE) == EDITABLE); @@ -596,7 +596,7 @@ Node pageFile = pagesManager.getNode("OLD/" + pageName + "/" + version + ".txt"); - ret = new Date(pageFile.getLastModfication()); + ret = new Date(pageFile.getLastModification()); return ret; } @@ -772,7 +772,7 @@ : "bin")); return new WikiAttachment(attachementName, new Date(file - .getLastModfication()), user, file.getLength(), file.getContentInputStream(), version); + .getLastModification()), user, file.getLength(), file.getContentInputStream(), version); } public int getLastAttachmentVersion(String pageName, String attachementName) { |
Author: szimano Date: 2005-11-07 16:13:21 -0500 (Mon, 07 Nov 2005) New Revision: 1526 Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/JBossWiki.properties trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/shotoku.properties trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/AttachmentDataSource.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiAttachment.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/WikiPage.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AttachementInfoPlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java Log: shotoku almost found http://jira.jboss.com/jira/browse/JBWIKI-67?page=worklog 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-11-07 16:50:19 UTC (rev 1525) +++ trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2005-11-07 21:13:21 UTC (rev 1526) @@ -22,6 +22,7 @@ package org.jboss.wiki; import java.io.File; +import java.io.FileInputStream; import java.util.Date; import java.util.Iterator; import java.util.List; @@ -122,7 +123,10 @@ WikiPage pageWithAtt = wikiEngine.getByName(rReq .getParameter("page"), null); - pageWithAtt.addAttachement(serverFile, fileName, + + FileInputStream fis = new FileInputStream(serverFile); + + pageWithAtt.addAttachement(fis, fileName, credentials.getName()); // at the end delete the temp file Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/JBossWiki.properties =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/JBossWiki.properties 2005-11-07 16:50:19 UTC (rev 1525) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/JBossWiki.properties 2005-11-07 21:13:21 UTC (rev 1526) @@ -12,7 +12,7 @@ credentialsClass=org.jboss.wiki.JBossPortalCredentials #mediaDataSourceClass class to use for mediaDataSource -mediaDataSourceClass=org.jboss.wiki.ShotokuDataSource +mediaDataSourceClass=org.jboss.wiki.FileDataSource #attachmentDataSourceClass class to use for AttachmentDataSource attachmentDataSourceClass=org.jboss.wiki.FileDataSource Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/shotoku.properties =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/shotoku.properties 2005-11-07 16:50:19 UTC (rev 1525) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/shotoku.properties 2005-11-07 21:13:21 UTC (rev 1526) @@ -1,4 +1,6 @@ #Shotoku properties file # folder where wiki content is placed -shotokuPrefix = wiki-content/ +pagesPrefix = wiki-content/ + +attPrefix = wiki-content/ Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/AttachmentDataSource.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/AttachmentDataSource.java 2005-11-07 16:50:19 UTC (rev 1525) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/AttachmentDataSource.java 2005-11-07 21:13:21 UTC (rev 1526) @@ -22,6 +22,7 @@ package org.jboss.wiki; import java.io.File; +import java.io.InputStream; import java.util.Set; /** @@ -39,7 +40,7 @@ * @param page Page to add atachment to. * @param user Username of user adding the attachment. */ - public void addAttachment(File attFile, String attName, WikiPage page, String user); + public void addAttachment(InputStream attFile, String attName, WikiPage page, String user); /**Gets attachment list for a given page. * @param page Page to get list for. Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java 2005-11-07 16:50:19 UTC (rev 1525) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java 2005-11-07 21:13:21 UTC (rev 1526) @@ -26,6 +26,7 @@ import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; import java.util.Date; import java.util.HashSet; import java.util.Properties; @@ -623,7 +624,7 @@ } } - public void addAttachment(File attFile, String attName, WikiPage page, + public void addAttachment(InputStream attFile, String attName, WikiPage page, String user) { String pageName = page.getName(); Properties attProps = getAttProps(pageName, attName, true); @@ -649,12 +650,12 @@ + ((attName.indexOf('.') != -1) ? extension[extension.length - 1] : "bin"); - FileInputStream oldFile = null; + InputStream oldFile = null; FileOutputStream newFile = null; try { newFile = new FileOutputStream(new File(fileName)); - oldFile = new FileInputStream(attFile); + oldFile = attFile; } catch (FileNotFoundException e) { log.error(e); } @@ -783,9 +784,18 @@ + ((attachementName.indexOf(".") != -1) ? tokens[tokens.length - 1] : "bin")); - return new WikiAttachment(attachementName, - new Date(file.lastModified()), user, file.length(), file, - version); + FileInputStream fis; + try { + fis = new FileInputStream(file); + return new WikiAttachment(attachementName, + new Date(file.lastModified()), user, file.length(), fis, + version); + } catch (FileNotFoundException e) { + e.printStackTrace(); + return null; + } + + } public int getLastAttachmentVersion(String pageName, String attachementName) { Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java 2005-11-07 16:50:19 UTC (rev 1525) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java 2005-11-07 21:13:21 UTC (rev 1526) @@ -21,10 +21,6 @@ */ package org.jboss.wiki; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -37,14 +33,12 @@ import org.jboss.logging.Logger; import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.Directory; import org.jboss.shotoku.Node; -import org.jboss.shotoku.NodeList; +import org.jboss.shotoku.exceptions.ResourceAlreadyExists; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; -import org.jboss.wiki.exceptions.DataSourceException; import org.jboss.wiki.exceptions.PageRenamingException; -import sun.security.krb5.internal.p; - /** * <p> * </p> @@ -53,61 +47,450 @@ public class ShotokuDataSource implements MediaDataSource, AttachmentDataSource, WikiPageDictionary { - private WikiEngine wikiEngine; + /** + * <p> + * Represents ... + * </p> + * + */ - private ContentManager contentManager = null; + private ContentManager pagesManager; - private final String propsName = "shotoku.properties"; + private ContentManager attManager; + + private final String SAVE_COMMENT = "Saved by ShotokuDataSource of JBoss Wiki"; + + private static final String propFileName = "shotoku.properties"; + + private static final String propModFileName = "fileMod.properties"; + + private static final String dictionaryPropertiesFileName = "dictionary.properties"; - private final String pageSuffix = ".txt"; + private String pagesPrefix; - public ShotokuDataSource() throws DataSourceException { - Properties shotokuProps = new Properties(); + private String attPrefix; + + public String pathToMediaTrash; + public String pathToAttTrash; + + private boolean lock = false; + + // private Properties fileDSProps; + + private final int BUF_SIZE = 32768; + + private Properties pageModProps; + + private Properties pageDictionary; + + private Properties pageRevDictionary; + + private Node modFile; + + private Node pageDictionaryFile; + + private WikiEngine wikiEngine; + + private Logger log; + + public void setWikiEngine(WikiEngine wikiEngine) { + this.wikiEngine = wikiEngine; + } + + public ShotokuDataSource() { + + log = Logger.getLogger(ShotokuDataSource.class); + + log.info("Looking for props file !"); + + Properties shotokuDSProps = new Properties(); + try { - shotokuProps.load(ShotokuDataSource.class.getResourceAsStream("/" - + propsName)); - contentManager = ContentManager.getContentManager(shotokuProps - .getProperty("shotokuPrefix")); + shotokuDSProps.load(ShotokuDataSource.class.getResourceAsStream("/" + + propFileName)); + pagesPrefix = shotokuDSProps.getProperty("pagesPrefix"); + + attPrefix = shotokuDSProps.getProperty("attPrefix"); + + pagesManager = ContentManager.getContentManager(pagesPrefix); + + attManager = ContentManager.getContentManager(attPrefix); + + } catch (IOException ioe) { + log.error("Can't load the file " + propFileName + "\n", ioe); + } + + /* + * File mainWikiDir = new File(pathToMedia); File attWikiDir = new + * File(pathToAttachments); + * + * if (!mainWikiDir.exists()) mainWikiDir.mkdirs(); + * + * if (!attWikiDir.exists()) attWikiDir.mkdirs(); + */ + pageModProps = new Properties(); + // modFile = new File(pathToMedia + "/" + propModFileName); + + // FileInputStream fis = null; + try { + modFile = pagesManager.getNode(propModFileName); + } catch (ResourceDoesNotExist e) { + modFile = pagesManager.getDirectory("").newNode(propFileName); + } + InputStream is = null; + try { + is = modFile.getContentInputStream(); + + pageModProps.load(is); + + } catch (IOException ioe) { + log.error("Can't load the file " + propModFileName + "\n", ioe); + } finally { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + // create trash directory for deleted pages if it doesn't exists + try { + pagesManager.getDirectory(MediaDataSource.mediaTrashName); + } catch (ResourceDoesNotExist e) { + pagesManager.getDirectory("").newDirectory( + MediaDataSource.mediaTrashName); + } + + // create trash directory for deleted attachments if it doesn't exists + + try { + attManager.getDirectory(AttachmentDataSource.attTrashName); + } catch (ResourceDoesNotExist e) { + attManager.getDirectory("").newDirectory( + AttachmentDataSource.attTrashName); + } + + // load dictionary props + pageDictionary = new Properties(); + pageRevDictionary = new Properties(); + + try { + pageDictionaryFile = pagesManager + .getNode(dictionaryPropertiesFileName); + } catch (ResourceDoesNotExist e) { + pageDictionaryFile = pagesManager.getDirectory("").newNode( + dictionaryPropertiesFileName); + } + + // there is dictionary file. Load props from it + is = pageDictionaryFile.getContentInputStream(); + + try { + pageDictionary.load(is); } catch (IOException e) { - throw new DataSourceException(e.getMessage()); + e.printStackTrace(); + } finally { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } } + // create pageRevDictionary - to make it work faster + + Set<Object> keys = pageDictionary.keySet(); + + for (Object key : keys) { + pageRevDictionary.setProperty(pageDictionary + .getProperty((String) key), (String) key); + } } public boolean preSave() { - // TODO Auto-generated method stub - return false; + return true; } + public boolean savePage(String uid, WikiPage page, String languageCode) { - // TODO Auto-generated method stub - return false; + // TODO Languages + + boolean status = false; + + if (pageExists(uid)) { // page exists on + // harddisk - add new + // version + Properties pageProps = getPageProps(uid); + + pageProps.setProperty(page.getLastVersion() + ".author", page + .getLastAuthor().getName()); + + OutputStream os = pagesManager.getNode( + "OLD/" + uid + "/page.properties").getOutputStream(); + try { + pageProps.store(os, "Saved by ShotokuDataSource of JBoss Wiki"); + } catch (Exception e) { + log + .error( + "[ShotokuDataSource]: Cannot save property file: ", + e); + } finally { + try { + os.close(); + } catch (IOException e) { + log.error(e); + } + } + + log.info("Opening files"); + + // File pageFile = new File(pathToMedia + "/OLD/" + uid + "/" + + // (page.getLastVersion() - 1) + ".txt"); + // File pageOldFile = new File(pathToMedia + "/" + uid + ".txt"); + + Node pageFile = pagesManager.getDirectory("").newNode( + "OLD/" + uid + "/" + (page.getLastVersion() - 1) + ".txt"); + Node pageOldFile = pagesManager.getDirectory("").newNode( + uid + ".txt"); + + OutputStream pageFileWriter; + InputStream pageFileReader; + + try { + pageFileWriter = pageFile.getOutputStream(); + pageFileReader = pageOldFile.getContentInputStream(); + + int b; + + while ((b = pageFileReader.read()) != -1) { + pageFileWriter.write(b); + } + + // TODO last modified + // pageFile.setLastModified(pageOldFile.lastModified()); + + pageFileWriter.close(); + + pageOldFile.delete(); + + pageFileWriter = pageOldFile.getOutputStream(); + + String pageContent = page.getContent(); + + for (int i = 0; i < pageContent.length(); i++) { + pageFileWriter.write((int) pageContent.charAt(i)); + } + + pageFileWriter.close(); + status = true; + } catch (IOException ioe) { + log.error("[ShotokuDataSource]: Cannot save page: ", ioe); + } + + } else { // there is no page on disk. We have to create new one. + + try { + + // create needed dirs + // File newPageFile = new File(pathToMedia + "/OLD/" + uid); + // newPageFile.mkdirs(); + + // pagesManager.getDirectory("").newDirectory("OLD/" + uid); + + Node newPageFile = pagesManager.getDirectory("").newDirectory( + "OLD/" + uid).newNode("page.properties"); + + // write the page + // newPageFile = new File(pathToMedia + "/OLD/" + uid + // + "/page.properties"); + + OutputStream pageWriter = newPageFile.getOutputStream(); + + Properties properties = new Properties(); + properties.setProperty(page.getLastVersion() + ".author", page + .getLastAuthor().getName()); + + properties.store(pageWriter, SAVE_COMMENT); + + pageWriter.close(); + + String pageDirName = ""; + String[] pageNames = uid.split("/"); + + for (int i = 0; i < pageNames.length - 1; i++) { + pageDirName += "/" + pageNames[i]; + } + + pagesManager.getDirectory("").newDirectory(pageDirName); + + pageWriter = pagesManager.getNode(uid + ".txt") + .getOutputStream(); + + String pageContent = page.getContent(); + + for (int i = 0; i < pageContent.length(); i++) { + pageWriter.write((int) pageContent.charAt(i)); + } + + pageWriter.close(); + + status = true; + } catch (Exception e) { + log.error("Cannot write new page: ", e); + status = false; + } + } + return status; } public boolean postSave() { - // TODO Auto-generated method stub - return false; + return true; } public boolean preGet() { return true; } + public Properties getPageProps(String pageName) { + Properties pageProps = new Properties(); + + try { + InputStream fpi = pagesManager.getNode( + "OLD/" + pageName + "/page.properties") + .getContentInputStream(); + pageProps.load(fpi); + fpi.close(); + } catch (IOException ioe) { + // There is no prop file for some reson - create one. + + Node pagePropsFile = pagesManager.getDirectory("").newDirectory( + "OLD/" + pageName).newNode("page.properties"); + + try { + if (pageExists(pageName)) { + // if page exists it looks like there is lack of the props + // structure + OutputStream fpo = pagePropsFile.getOutputStream(); + + pageProps.setProperty("1.author", "unknown"); + pageProps.store(fpo, SAVE_COMMENT); + fpo.close(); + } + + } catch (IOException e) { + log.error( + "Cannot create page props file for page: " + pageName, + e); + } + return pageProps; + } + + return pageProps; + } + + public Properties getAttProps(String pageName, String attName, + boolean createProps) { + Properties attProps = new Properties(); + + Node propFile; + + try { + propFile = attManager.getNode(pageName + + "-att/" + attName + "-dir/attachment.properties"); + + } catch (ResourceDoesNotExist e) { + + if (createProps) { + // create dirs for this property file + propFile = attManager.getDirectory("").newDirectory( + pageName + "-att/" + attName + + "-dir").newNode("attachment.properties"); + } else { + return null; + } + } + + try { + attProps.load(propFile.getContentInputStream()); + } catch (IOException ioe) { + log.error("Cannot read attachment.properties for attachement: " + + pageName + "-att/" + attName + + "-dir/attachment.properties\n", ioe); + } + + return attProps; + } + + public void saveAttProps(Properties props, String pageName, String attName) { + try { + props.store(attManager + .getNode( + pageName + "-att/" + attName + + "-dir/attachment.properties") + .getOutputStream(), SAVE_COMMENT); + } catch (Exception ioe) { + log.error("Cannot store attchement.properties for attachement: " + + pageName + "-att/" + attName + + "-dir/attachments.properties\n", ioe); + } + + } + public WikiPage getPage(String pageName) { - + // log.info("[WIKI:ShotokuDataSource]: Getting new page: " + + // pageName); + + WikiPage page = null; + try { - Node page = contentManager.getNode(pageName + pageSuffix); - - return new WikiPage(pageName, new SimpleCredentials("someone"), - page.getContent(), page.getHistory().getRevisionsCount(), page.getHistory().getRevisionsCount(), new Date(page - .getLastModification()), wikiEngine, true, true); - + Node pageFile = pagesManager.getNode(pageName + ".txt"); + Properties pageProps = getPageProps(pageName); + + if (pageProps != null) { + + int i = 1; + + // get the author of the latest version of page + while (pageProps.getProperty(String.valueOf(i + 1) + ".author") != null) { + i++; + } + + Credentials author = new SimpleCredentials(pageProps + .getProperty(String.valueOf(i) + ".author")); + + StringBuilder pageContent = new StringBuilder(); + + try { + InputStream input = pageFile.getContentInputStream(); + + int nextChr = input.read(); + + while (nextChr != -1) { + pageContent.append((char) nextChr); + nextChr = input.read(); + } + } catch (IOException ioe) { + log.error(ioe); + } + + int pageMods = getPageMod(pageName); + + page = new WikiPage(pageName, author, pageContent.toString(), + i, i, new Date(pageFile.getLastModfication()), + wikiEngine, (pageMods & VIEWABLE) == VIEWABLE, + (pageMods & EDITABLE) == EDITABLE); + + page.setLength(pageFile.getLength()); + } } catch (ResourceDoesNotExist e) { - return null; + // do nothing just return null } + + return page; + } public boolean postGet() { @@ -115,148 +498,699 @@ } public WikiPage getPage(String pageName, String languageCode) { - // TODO Auto-generated method stub - return null; + if (languageCode != null) { + log + .info("As for now, languages aren't supported in the wiki. Please do not use language codes"); + } + return getPage(pageName); } public WikiPage getPageAtVersion(WikiPage originPage, boolean loadContent, String languageCode, int version) { - // TODO Auto-generated method stub - return null; + if (languageCode != null) { + log + .info("As for now, languages aren't supported in the wiki. Please do not use language codes"); + } + + return getPageAtVersion(originPage, loadContent, version); } public WikiPage getPageAtVersion(WikiPage originPage, boolean loadContent, int version) { - // TODO Auto-generated method stub - return null; - } - public boolean pageExists(String pageName) { + /* + * Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); long + * oldMilis = cal.getTimeInMillis(); + */ + + WikiPage page = null; + try { - contentManager.getNode(pageName+".txt"); - return true; + page = (WikiPage) originPage.clone(); + } catch (CloneNotSupportedException e) { + log.error(e); } - catch (ResourceDoesNotExist e) { - return false; + + if (page != null) { + if (page.getLastVersion() < version) { + log.info("There is no version " + version + " of page " + + page.getName()); + return null; + } + + getContentAtVersion(page, loadContent, version); + + page.setLastAuthor(getAuthorAtVersion(page.getName(), version)); + + page.setVersion(version); + + page.setEditDate(getDateAtVersion(page.getName(), version)); + } + + /* + * cal.setTime(new Date()); + * + * log.info("PAGE "+page.getName()+" loaded in: "+(cal.getTimeInMillis() - + * oldMilis)); + */ + return page; } public void getContentAtVersion(WikiPage page, boolean loadContent, int version) { - // TODO Auto-generated method stub + StringBuilder ret = null; - } + Node pageFile = pagesManager.getNode("OLD/" + page.getName() + "/" + + version + ".txt"); - public Set<String> getAllPageNames() { - //TODO bleble - Set<String> ret = new TreeSet<String>(); - - List<Node> nodeList = contentManager.getDirectory("").getNodes().toList(); - - for (Node node : nodeList) { - if (node.getName().endsWith(pageSuffix)) { - ret.add(node.getName().substring(0, node.getName().length() - (pageSuffix.length()))); + if (loadContent) { + try { + InputStream input = pageFile.getContentInputStream(); + + int nextChr = input.read(); + + ret = new StringBuilder(); + + while (nextChr != -1) { + ret.append((char) nextChr); + nextChr = input.read(); + } + + page.setPageContent(ret.toString()); + page.setLength(ret.length()); + + } catch (IOException ioe) { + log.error(ioe); } + } else { + page.setLength(pageFile.getLength()); + page.setPageContent(null); } - + + } + + public Date getDateAtVersion(String pageName, int version) { + Date ret = null; + + Node pageFile = pagesManager.getNode("OLD/" + pageName + "/" + version + + ".txt"); + + ret = new Date(pageFile.getLastModfication()); + return ret; } - public Set<String> getPagesFor(String pageName) { - // TODO Auto-generated method stub - return new TreeSet<String>(); + public Credentials getAuthorAtVersion(String pageName, int version) { + return new SimpleCredentials(getPageProps(pageName).getProperty( + version + ".author")); } - public int getPageMod(String pageName) { - // TODO Auto-generated method stub - return 0; + public boolean pageExists(String pageName) { + + try { + pagesManager.getNode(pageName + ".txt"); + return true; + } catch (ResourceDoesNotExist e) { + return false; + } } - public void setPageMod(String pageName, int mods) { - // TODO Auto-generated method stub + public void addAttachment(InputStream attFile, String attName, + WikiPage page, String user) { + String pageName = page.getName(); + Properties attProps = getAttProps(pageName, attName, true); + int lastVersion = 1; + + if (attProps.size() > 0) { + // find last version of this file + while (attProps.getProperty(lastVersion + ".author") != null) { + lastVersion++; + } + } + + String[] extension = attName.split("\\."); + String fileName = pageName + + "-att/" + + attName + + "-dir/" + + lastVersion + + "." + + ((attName.indexOf('.') != -1) ? extension[extension.length - 1] + : "bin"); + + InputStream oldFile = null; + OutputStream newFile = null; + + newFile = attManager.getDirectory("").newNode(fileName) + .getOutputStream(); + oldFile = attFile; + + // writing old file to new one + try { + byte[] buffer = new byte[BUF_SIZE]; + int read; + while ((read = oldFile.read(buffer)) != -1) + newFile.write(buffer, 0, read); + } catch (Exception e2) { + // Nothing that we can really do. Just send an incomplete + // file. + } finally { + try { + newFile.close(); + oldFile.close(); + } catch (IOException e) { + log.error(e); + } + } + + attProps.setProperty(lastVersion + ".author", user); + + saveAttProps(attProps, pageName, attName); } - public boolean deletePage(String pageName) { - // TODO Auto-generated method stub - return false; + public Set<String> getAttachmentsSet(WikiPage page) { + Set<String> attSet = new HashSet<String>(); + + try { + Directory attDir = attManager.getDirectory(page.getName() + "-att"); + + if (attDir.getDirectories().size() > 0) { + List<Directory> attachements = attDir.getDirectories(); + + for (int i = 0; i < attachements.size(); i++) { + if (attachements.get(i).getName().endsWith("-dir")) { + String[] tokens = attachements.get(i).getName().split( + "/"); + + attSet.add(tokens[tokens.length - 1].substring(0, + tokens[tokens.length - 1].length() - 4)); + } + } + } else { + // page has no attachements + return null; + } + } catch (ResourceDoesNotExist e) { + return null; + } + + return attSet; } - public void setWikiEngine(WikiEngine wikiEngine) { - this.wikiEngine = wikiEngine; + public Set<String> getAllPageNames() { + Set<String> attSet = new HashSet<String>(); + + getPageNamesFor("", attSet); + + return attSet; } - public void addAttachment(File attFile, String attName, WikiPage page, - String user) { - // TODO Auto-generated method stub + private void getPageNamesFor(String directory, Set<String> attSet) { + Directory attDir = pagesManager.getDirectory(directory); + List<Node> pageFiles = attDir.getNodes().toList(); + + for (int i = 0; i < pageFiles.size(); i++) { + if ((pageFiles.get(i).getName().endsWith(".txt"))) { + // String[] tokens = pageFiles[i].getName().split("/"); + attSet.add((directory + "/" + pageFiles.get(i).getName() + .substring( + 0, + pageFiles.get(i).getName().length() + - ".txt".length())).substring(1)); + } + } + + List<Directory> pageDirs = attDir.getDirectories(); + + //TODO make "special" directories work better + for (Directory dir : pageDirs) { + if ((!dir.getName().endsWith("-att"))) { + // do not take dirs from OLD, .svn and trash folders + if ((!dir.getName().equals("OLD")) + && (!dir.getName().equals(".svn")) + && (!dir.getName().equals( + MediaDataSource.mediaTrashName)) + && (!dir.getName().equals( + AttachmentDataSource.attTrashName))) { + // get names for subpages + getPageNamesFor( + directory + "/" + dir.getName(), attSet); + } + } + } } - public Set<String> getAttachmentsSet(WikiPage page) { - // TODO Auto-generated method stub - return null; + public WikiAttachment getAttachment(String pageName, String attachementName) { + return getAttachment(pageName, attachementName, + getLastAttachmentVersion(pageName, attachementName)); } - public WikiAttachment getAttachment(String pageName, String attachmentName) { - // TODO Auto-generated method stub - return null; + public WikiAttachment getAttachment(String pageName, + String attachementName, int version) { + + String[] tokens = attachementName.split("\\."); + + Properties props = getAttProps(pageName, attachementName, false); + + if (props == null) { + return null; + } + + String user = props.getProperty(version + ".author"); + + Node file = attManager + .getNode(pageName + + "-att/" + + attachementName + + "-dir/" + + version + + "." + + ((attachementName.indexOf(".") != -1) ? tokens[tokens.length - 1] + : "bin")); + + return new WikiAttachment(attachementName, new Date(file + .getLastModfication()), user, file.getLength(), file.getContentInputStream(), version); } - public WikiAttachment getAttachment(String pageName, String attachmentName, + public int getLastAttachmentVersion(String pageName, String attachementName) { + + Properties props = getAttProps(pageName, attachementName, false); + + if (props == null) + return -1; + + // looking for the newest version + int version = 1; + + while (props.getProperty((version + 1) + ".author") != null) { + version++; + } + + return version; + } + + public long getAttachmentSize(String pageName, String attachementName, int version) { - // TODO Auto-generated method stub - return null; + String[] tokens = attachementName.split("\\."); + + Node file = attManager + .getNode(pageName + + "-att/" + + attachementName + + "-dir/" + + version + + "." + + ((attachementName.indexOf(".") != -1) ? tokens[tokens.length - 1] + : "bin")); + + return file.getLength(); } - public int getLastAttachmentVersion(String pageName, String attachmentName) { - // TODO Auto-generated method stub - return 0; + public Set<String> getPagesFor(String pageName) { + Set<String> pages = new TreeSet<String>(); + + try { + List<Node> subFiles = pagesManager.getDirectory(pageName) + .getNodes().toList(); + + for (int i = 0; i < subFiles.size(); i++) { + if (subFiles.get(i).getName().endsWith(".txt")) { + pages.add(pageName + + "/" + + subFiles.get(i).getName().substring( + 0, + subFiles.get(i).getName().length() + - ".txt".length())); + } + } + + } catch (ResourceDoesNotExist e) { + // return empty set + } + + return pages; } - public long getAttachmentSize(String pageName, String attachmentName, - int version) { - // TODO Auto-generated method stub - return 0; + public int getPageMod(String pageName) { + if (pageModProps.getProperty(pageName) == null) { + return (EDITABLE + VIEWABLE); + } else { + return Integer.valueOf(pageModProps.getProperty(pageName)); + } } - public boolean deleteAttachment(String pageName, String attachmentName) { - // TODO Auto-generated method stub - return false; + public synchronized void setPageMod(String pageName, int mods) { + + if (mods != (EDITABLE + VIEWABLE)) { + pageModProps.setProperty(pageName, String.valueOf(mods)); + } else { + pageModProps.remove(pageName); + } + + OutputStream fos = null; + + try { + fos = modFile.getOutputStream(); + + pageModProps.store(fos, SAVE_COMMENT); + } catch (IOException ioe) { + log.error("Couldn't store mod props: ", ioe); + } finally { + try { + fos.close(); + } catch (IOException ioe) { + log.error("Can't close input stream \n", ioe); + } + } } - public boolean deleteAttachments(String pageName) { - // TODO Auto-generated method stub - return false; + public synchronized boolean deletePage(String pageName) { + + if (pageExists(pageName)) { + // moving page file + String pageFileName = pageName + ".txt"; + String pageFileTrashNameBase = pageName + ".txt"; + String pageFileTrashName = pageFileTrashNameBase; + + Node pageFile = pagesManager.getNode(pageFileName); + Node pageTrashFile; + + try { + pageTrashFile = pagesManager.getDirectory("").newNode( + pageFileTrashName); + } catch (ResourceAlreadyExists e) { + + // look if page is already in trash (add i-bak) + int i = 0; + + boolean foundPage = false; + + while (!foundPage) { + pageFileTrashName = pageFileTrashNameBase + "-" + (i++) + + "-bak"; + + try { + pageTrashFile = pagesManager.getDirectory("").newNode( + pageFileTrashName); + foundPage = true; + } catch (ResourceAlreadyExists ee) { + // page exists - continue looking + } + } + + } + + Directory trashFileDir; + // create dirs to trash + try { + trashFileDir = pagesManager.getDirectory(pathToMediaTrash + "/" + + pageName); + } catch (ResourceDoesNotExist e) { + trashFileDir = pagesManager.getDirectory("").newDirectory( + pathToMediaTrash + "/" + pageName); + } + + // TODO svn mv + + /* + * if (!pageFile.renameTo(pageTrashFile)) { + * log.error("[ShotokuDataSource]: Problems with moving " + + * pageFileName + " to " + pageFileTrashName); return false; } + */ + + // moving history directory + String historyDirName = "OLD/" + pageName; + String historyTrashDirNameBase = pathToMediaTrash + "/OLD/" + + pageName; + String historyTrashDirName = historyTrashDirNameBase; + + // create dirs to trash (history) + + // TODO svn mv ?! where is it ? + + /* + * trashFileDir = new File(pathToMediaTrash + "/OLD/" + pageName); + * if (!trashFileDir.exists()) { trashFileDir.mkdirs(); } + */ + pageFile = pagesManager.getNode(historyDirName); + + try { + pageTrashFile = pagesManager.getDirectory("").newNode( + historyTrashDirName); + } catch (ResourceAlreadyExists e) { + // look if history dir is already in trash (add i-bak) + + boolean historyFound = false; + int i = 0; + while (!historyFound) { + try { + historyTrashDirName = historyTrashDirNameBase + "-" + + (i++) + "-bak"; + pageTrashFile = pagesManager.getDirectory("").newNode( + historyTrashDirName); + historyFound = true; + } catch (ResourceAlreadyExists ee) { + // continue looking + } + } + } + + // TODO move page ! + + /* + * if (!pageFile.renameTo(pageTrashFile)) { + * log.error("[ShotokuDataSource]: Problems with moving " + + * historyDirName + " to " + historyTrashDirName); // return back + * the page history pageFile = new File(pageFileName); pageTrashFile = + * new File(pageFileTrashName); + * + * if (!pageTrashFile.renameTo(pageFile)) { System.err + * .println("[ShotokuDataSource]: ERROR. I've tried moving + * previously moved page file from the trash, but there was some + * problem. This is not good and there is nothing i can do about it. + * The error ocured while moving " + pageFileTrashName + " to " + + * pageFileName); } + * + * return false; } + */ + + return true; + } else { + // no such page + log.error("There is now such page: " + pageName); + return false; + } } + public synchronized boolean deleteAttachment(String pageName, + String attachmentName) { + + String attName = pageName + "-att/" + attachmentName + "-dir"; + String attTrashNameBase = pageName + "-att/" + attachmentName + "-dir"; + String attTrashName = attTrashNameBase; + + // create dirs to trash + Directory trashFileDir; + try { + trashFileDir = attManager.getDirectory(pageName + "-att/"); + } catch (ResourceDoesNotExist e) { + trashFileDir = attManager.getDirectory("").newDirectory( + pageName + "-att/"); + } + + // moving file directory + try { + Directory attFile = attManager.getDirectory(attName); + + // look if att dir is already in trash (add i-bak) + + Directory attTrashFile; + + try { + attTrashFile = attManager.getDirectory("").newDirectory( + attTrashName); + } catch (ResourceAlreadyExists e) { + boolean pageFound = false; + + int i = 0; + + while (pageFound) { + attTrashName = attTrashNameBase + "-" + (i++) + "-bak"; + try { + attTrashFile = attManager.getDirectory("") + .newDirectory(attTrashName); + pageFound = true; + } catch (ResourceAlreadyExists ee) { + // continue looking + } + } + } + // TODO rename !!! + + /* + * if (!attFile.renameTo(attTrashFile)) { log.error("[ATTACHMENT + * DS]:Problems with moving " + attName + " to " + attTrashName); + * return false; } + */ + + return true; + + } catch (ResourceDoesNotExist e) { + log.error("Page " + pageName + " has no " + attachmentName + + " attachmnet"); + return false; + } + } + + public synchronized boolean deleteAttachments(String pageName) { + String attName = pageName + "-att"; + String attTrashNameBase = pageName + "-att"; + String attTrashName = attTrashNameBase; + + // create dirs to trash + Directory trashFileDir; + try { + trashFileDir = attManager.getDirectory(pageName); + } catch (ResourceDoesNotExist e) { + trashFileDir = attManager.getDirectory("").newDirectory(pageName); + } + + // moving file directory + try { + Directory attFile = attManager.getDirectory(attName); + Directory attTrashFile; + + // look if att dir is already in trash (add i-bak) + try { + attTrashFile = attManager.getDirectory("").newDirectory( + attTrashName); + } catch (ResourceAlreadyExists e) { + boolean pageFound = false; + + int i = 0; + + while (!pageFound) { + try { + attTrashName = attTrashNameBase + "-" + (i++) + "-bak"; + attTrashFile = attManager.getDirectory("") + .newDirectory(attTrashName); + pageFound = true; + } catch (ResourceAlreadyExists ee) { + // continue looking + } + } + } + + // TODO MOVE FILE + /* + * if (!attFile.renameTo(new File(attTrashName))) { + * log.error("[ATTACHMENT DS]:Problems with moving " + attName + " + * to " + attTrashName); return false; } + */ + + return true; + } catch (ResourceDoesNotExist e) { + log.error("Page " + pageName + " has no attachmnets"); + return false; + } + + } + public String getRealName(String uid) { - // TODO Auto-generated method stub - return null; + while (lock) + ; // wait till unlocked (dictionary is changing) + + return (pageDictionary.getProperty(uid) != null) ? pageDictionary + .getProperty(uid) : uid; } public String getUid(String realName) { - // TODO Auto-generated method stub - return null; + while (lock) + ; // wait till unlocked (dictionary is changing) + + return (pageRevDictionary.getProperty(realName) != null) ? pageRevDictionary + .getProperty(realName) + : realName; } - public void rename(String uid, String newName) throws PageRenamingException { - // TODO Auto-generated method stub + public synchronized void rename(String uid, String newName) + throws PageRenamingException { + if (wikiEngine.pageExists(newName)) { + throw new PageRenamingException( + "Page with the name you're trying rename to already exists."); + } + + lock = true; + + pageDictionary.setProperty(uid, newName); + pageRevDictionary.setProperty(newName, uid); + + // add also maping for future name + // find apropriate uid + + int i = 2; + + while ((pageExists(uid + String.valueOf(i))) + || (pageDictionary.containsKey(uid + String.valueOf(i)))) { + log.info(i++); + } + + // add maping for new (to be done) with name translated to old uid + pageDictionary.setProperty(uid + String.valueOf(i), uid); + pageRevDictionary.setProperty(uid, uid + String.valueOf(i)); + + saveDictionary(); + + log.info("Renamed (uid) " + uid + " to " + newName); + + lock = false; } + private void saveDictionary() { + // synchronize dictionary with file on disk + OutputStream fos = null; + + fos = pageDictionaryFile.getOutputStream(); + + try { + pageDictionary.store(fos, SAVE_COMMENT); + } catch (IOException e) { + e.printStackTrace(); + } + + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + } + public boolean uidInDictionary(String uid) { - // TODO Auto-generated method stub - return false; + return pageDictionary.contains(uid); } public boolean realNameInDictionary(String realName) { - // TODO Auto-generated method stub - return false; + return pageRevDictionary.contains(realName); } - public void removeDictForPage(String uid) throws PageRenamingException { - // TODO Auto-generated method stub + public synchronized void removeDictForPage(String uid) + throws PageRenamingException { + if (!pageDictionary.contains(uid)) { + throw new PageRenamingException( + "There is no dictionary entry for uid: " + uid); + } + String realName = pageDictionary.getProperty(uid); + + // remove all dict entries + pageDictionary.remove(uid); + pageRevDictionary.remove(realName); + + saveDictionary(); } - } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiAttachment.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiAttachment.java 2005-11-07 16:50:19 UTC (rev 1525) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiAttachment.java 2005-11-07 21:13:21 UTC (rev 1526) @@ -34,18 +34,18 @@ private long size; - private File file; + private InputStream inputStream; private String name; - + private int version; public WikiAttachment(String name, Date date, String user, long size, - File file, int version) { + InputStream inputStream, int version) { this.date = date; this.user = user; this.size = size; - this.file = file; + this.inputStream = inputStream; this.name = name; this.version = version; } @@ -67,19 +67,9 @@ } public InputStream getInputStream() { - try { - return new FileInputStream(file); - } catch (IOException e) { - System.err.println("Couldn't open file: " + file.getName()); - e.printStackTrace(); - return null; - } + return inputStream; } - public File getFile() { - return file; - } - public int getVersion() { return version; } 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-11-07 16:50:19 UTC (rev 1525) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2005-11-07 21:13:21 UTC (rev 1526) @@ -22,6 +22,7 @@ package org.jboss.wiki; import java.io.IOException; +import java.io.InputStream; import java.util.Arrays; import java.util.Comparator; import java.util.Date; @@ -879,7 +880,7 @@ return attachmentDataSource.getAttachment(pageName, attachementName); } - public void addAttachment(File attFile, String attName, WikiPage page, + public void addAttachment(InputStream attFile, String attName, WikiPage page, String user) { attachmentDataSource.addAttachment(attFile, attName, page, user); } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java 2005-11-07 16:50:19 UTC (rev 1525) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java 2005-11-07 21:13:21 UTC (rev 1526) @@ -22,6 +22,7 @@ package org.jboss.wiki; import java.io.File; +import java.io.InputStream; import java.io.Serializable; import java.util.Calendar; import java.util.Date; @@ -439,7 +440,7 @@ this.length = length; } - public void addAttachement(File attFile, String attName, String user) { + public void addAttachement(InputStream attFile, String attName, String user) { wikiEngine.addAttachment(attFile, attName, this, user); } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AttachementInfoPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AttachementInfoPlugin.java 2005-11-07 16:50:19 UTC (rev 1525) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AttachementInfoPlugin.java 2005-11-07 21:13:21 UTC (rev 1526) @@ -48,7 +48,7 @@ wikiPage.getName(), attachementName, Integer.valueOf((String) rollbackToVer)); wikiEngine.addAttachment( - wikiAttachment.getFile(), attachementName, wikiPage, + wikiAttachment.getInputStream(), attachementName, wikiPage, (String) wikiSession.getAttribute("user")); } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java 2005-11-07 16:50:19 UTC (rev 1525) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java 2005-11-07 21:13:21 UTC (rev 1526) @@ -49,8 +49,6 @@ int offset = recentChanges.length(); Set<String> pages = wikiEngine.getAllPageNames(); - - log.info("GOT PAGE NAMES"); TreeMap<String, TreeSet<String>> sortedByDate = new TreeMap<String, TreeSet<String>>(); @@ -60,7 +58,6 @@ now.setTime(new Date()); for (String name : pages) { - log.info("getting page: " +name); WikiPage temp = wikiEngine.getByName(name, null); //log.debug("name: "+name+" "+temp.getName()); |
Author: adamw Date: 2005-11-07 11:50:19 -0500 (Mon, 07 Nov 2005) New Revision: 1525 Modified: trunk/forge/portal-extensions/federation-register/src/java/org/jboss/forge/FedRegBean.java trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/DirectoryInject.java trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/Inject.java trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/InjectAspect.java trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/NodeInject.java trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/ResourceInjectAspect.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/AbstractResource.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/History.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Tools.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/NodeReadOnly.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceAlreadyExists.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceDoesNotExist.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/AndNodeFilter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/BooleanNodeFilter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DateSortParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DirectoryIncludeParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/HistoryIncludeParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/LimitParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/MultiBooleanNodeFilter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/NodeFilter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/OrNodeFilter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertySortParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertyValueParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/Search.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SearchParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SortParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/velocity/ShotokuResourceLoader.java trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceLocal.java trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceManagement.java trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceTimer.java trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceTimerLocal.java trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/AddDelayedOperation.java trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/CommitDelayedOperation.java trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/DelayedOperation.java trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/DeleteDelayedOperation.java trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/test/DirectoryTest.java trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/test/PropertiesTest.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/HistoricNodeContent.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/NodeContent.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/RevisionInfo.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistory.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewDirectory.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewDirectoryHelper.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNodeHelper.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewResourceHelper.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNode.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnOperationFailed.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/Tools.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/AddDeleteTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ContentSettingTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/HistoryTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/LogMessageTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ModifyContentTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ParentTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/PropertiesTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ResourceInjectTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/SimpleDirectoryTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/SimpleTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java Log: Licenses, authors Modified: trunk/forge/portal-extensions/federation-register/src/java/org/jboss/forge/FedRegBean.java =================================================================== --- trunk/forge/portal-extensions/federation-register/src/java/org/jboss/forge/FedRegBean.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/federation-register/src/java/org/jboss/forge/FedRegBean.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -1,11 +1,24 @@ -/***************************************** - * * - * JBoss Portal: The OpenSource Portal * - * * - * Distributable under LGPL license. * - * See terms of license at gnu.org. * - * * - *****************************************/ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ package org.jboss.forge; import java.io.BufferedWriter; Modified: trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/DirectoryInject.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/DirectoryInject.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/DirectoryInject.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -30,7 +30,8 @@ * Fields with this annotation will be automatically initialized to * a directory with the given name, provided aop load-time weaving is * on. - * @author adamw + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) Modified: trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/Inject.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/Inject.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/Inject.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -26,6 +26,10 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface Inject { Modified: trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/InjectAspect.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/InjectAspect.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/InjectAspect.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -27,6 +27,10 @@ import org.jboss.aop.joinpoint.*; import org.jboss.shotoku.ContentManager; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ @Aspect(scope=Scope.PER_CLASS_JOINPOINT) public class InjectAspect { private static final String INJECT_POINTCUT = Modified: trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/NodeInject.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/NodeInject.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/NodeInject.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -30,7 +30,8 @@ * Fields with this annotation will be automatically initialized to * a node with the given name, provided aop load-time weaving is * on. - * @author adamw + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) Modified: trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/ResourceInjectAspect.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/ResourceInjectAspect.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-aop/src/java/org/jboss/shotoku/aop/ResourceInjectAspect.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -31,6 +31,10 @@ import org.jboss.shotoku.Directory; import org.jboss.shotoku.Node; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ @Aspect(scope=Scope.PER_JOINPOINT) public class ResourceInjectAspect { @Inject Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/AbstractResource.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/AbstractResource.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/AbstractResource.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -26,7 +26,8 @@ /** * Common parts of nodes and directories interfaces. * - * @author adamw + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) */ public interface AbstractResource { /** Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -36,7 +36,8 @@ /** * A base class which provides access to nodes and directories. - * @author adamw + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) */ public abstract class ContentManager { /** Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -31,7 +31,8 @@ * Interface that must be implemented by classes which represent directories, * that is resources, which can contain other directories and nodes. * - * @author adamw + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) */ public interface Directory extends AbstractResource { /** Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/History.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/History.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/History.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -28,7 +28,8 @@ * An interface that should be implemented by classes which represent a node's * history. * - * @author adamw + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) */ public interface History { /** Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -31,7 +31,8 @@ * An interface which should be implemented by classes representing a node, that * is a resource, which is versionable and has some text content. * - * @author adamw + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) */ public interface Node extends AbstractResource { /** Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -36,7 +36,8 @@ * A class representing a list of nodes and providing the possibility to * manipulate these nodes. * - * @author adamw + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) */ public class NodeList implements Iterable<Node> { private List<Node> nodeList; Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Tools.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Tools.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Tools.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -24,7 +24,7 @@ /** * Utility, helper functions used internally. * - * @author adamw + * @author Adam Warski (ad...@as...) */ public class Tools { /** Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/NodeReadOnly.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/NodeReadOnly.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/NodeReadOnly.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -21,6 +21,9 @@ */ package org.jboss.shotoku.exceptions; +/** + * @author Adam Warski (ad...@as...) + */ public class NodeReadOnly extends RuntimeException { } Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -21,6 +21,9 @@ */ package org.jboss.shotoku.exceptions; +/** + * @author Adam Warski (ad...@as...) + */ public class RepositoryException extends RuntimeException { public RepositoryException(Exception e) { super(e); Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceAlreadyExists.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceAlreadyExists.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceAlreadyExists.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -21,6 +21,9 @@ */ package org.jboss.shotoku.exceptions; +/** + * @author Adam Warski (ad...@as...) + */ public class ResourceAlreadyExists extends RuntimeException { public ResourceAlreadyExists(String msg) { super(msg); Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceDoesNotExist.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceDoesNotExist.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceDoesNotExist.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -21,6 +21,9 @@ */ package org.jboss.shotoku.exceptions; +/** + * @author Adam Warski (ad...@as...) + */ public class ResourceDoesNotExist extends RuntimeException { public ResourceDoesNotExist(String msg) { super(msg); Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/AndNodeFilter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/AndNodeFilter.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/AndNodeFilter.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -24,8 +24,7 @@ import org.jboss.shotoku.Node; /** - * - * @author adamw + * @author Adam Warski (ad...@as...) */ public class AndNodeFilter extends MultiBooleanNodeFilter { @Override Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/BooleanNodeFilter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/BooleanNodeFilter.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/BooleanNodeFilter.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -24,8 +24,7 @@ import org.jboss.shotoku.Node; /** - * - * @author adamw + * @author Adam Warski (ad...@as...) */ public abstract class BooleanNodeFilter extends NodeFilter { public abstract boolean qualifyNode(Node node); Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DateSortParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DateSortParameter.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DateSortParameter.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -1,3 +1,24 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ package org.jboss.shotoku.search; import java.util.Comparator; @@ -4,6 +25,9 @@ import org.jboss.shotoku.Node; +/** + * @author Adam Warski (ad...@as...) + */ public class DateSortParameter extends SortParameter { public DateSortParameter() { super (new Comparator<Node>() { Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DirectoryIncludeParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DirectoryIncludeParameter.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DirectoryIncludeParameter.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -29,7 +29,7 @@ /** * A search parameter which includes to the result all nodes from a directory. - * @author adamw + * @author Adam Warski (ad...@as...) */ public class DirectoryIncludeParameter implements SearchParameter { private Directory directory; Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/HistoryIncludeParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/HistoryIncludeParameter.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/HistoryIncludeParameter.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -31,7 +31,7 @@ /** * A search parameter which includes to the result all nodes from the * history of a given node. - * @author adamw + * @author Adam Warski (ad...@as...) */ public class HistoryIncludeParameter implements SearchParameter { private History history; Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/LimitParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/LimitParameter.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/LimitParameter.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -29,7 +29,7 @@ /** * A search parameter which truncates the number of nodes in the result * to the given parameter. - * @author adamw + * @author Adam Warski (ad...@as...) */ public class LimitParameter implements SearchParameter { private int limit; Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/MultiBooleanNodeFilter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/MultiBooleanNodeFilter.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/MultiBooleanNodeFilter.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -25,8 +25,7 @@ import java.util.List; /** - * - * @author adamw + * @author Adam Warski (ad...@as...) */ public abstract class MultiBooleanNodeFilter extends BooleanNodeFilter { protected List<BooleanNodeFilter> filters; Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/NodeFilter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/NodeFilter.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/NodeFilter.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -26,8 +26,7 @@ import org.jboss.shotoku.NodeList; /** - * - * @author adamw + * @author Adam Warski (ad...@as...) */ public abstract class NodeFilter implements SearchParameter { /** Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/OrNodeFilter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/OrNodeFilter.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/OrNodeFilter.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -24,8 +24,7 @@ import org.jboss.shotoku.Node; /** - * - * @author adamw + * @author Adam Warski (ad...@as...) */ public class OrNodeFilter extends MultiBooleanNodeFilter { @Override Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertySortParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertySortParameter.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertySortParameter.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -1,3 +1,24 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ package org.jboss.shotoku.search; import java.util.Comparator; @@ -5,6 +26,9 @@ import org.jboss.shotoku.Node; +/** + * @author Adam Warski (ad...@as...) + */ public class PropertySortParameter extends SortParameter { public PropertySortParameter(Map<String, String> params) { this(params.get("name"), "true".equals(params.get("descending"))); Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertyValueParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertyValueParameter.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertyValueParameter.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -26,7 +26,7 @@ import org.jboss.shotoku.Node; /** - * @author adamw + * @author Adam Warski (ad...@as...) */ public class PropertyValueParameter extends BooleanNodeFilter { private String propertyName; Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/Search.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/Search.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/Search.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -29,7 +29,7 @@ /** * A class representing a search or a sub-search. - * @author adamw + * @author Adam Warski (ad...@as...) */ public class Search implements SearchParameter { private List<SearchParameter> searchParametersStack; Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SearchParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SearchParameter.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SearchParameter.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -25,7 +25,7 @@ import org.jboss.shotoku.NodeList; /** - * @author adamw + * @author Adam Warski (ad...@as...) */ public interface SearchParameter { public NodeList transform(NodeList list, ContentManager cm); Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SortParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SortParameter.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SortParameter.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -30,7 +30,7 @@ /** * A search parameter which sorts the result node list with the given * comparator. - * @author adamw + * @author Adam Warski (ad...@as...) */ public class SortParameter implements SearchParameter { private Comparator<Node> comparator; Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/velocity/ShotokuResourceLoader.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/velocity/ShotokuResourceLoader.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/velocity/ShotokuResourceLoader.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -1,3 +1,24 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ package org.jboss.shotoku.velocity; import java.io.InputStream; @@ -8,6 +29,9 @@ import org.apache.velocity.runtime.resource.loader.ResourceLoader; import org.jboss.shotoku.ContentManager; +/** + * @author Adam Warski (ad...@as...) + */ public class ShotokuResourceLoader extends ResourceLoader { private ContentManager cm; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -29,6 +29,10 @@ import org.jboss.shotoku.Directory; import org.jboss.shotoku.exceptions.RepositoryException; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public abstract class AbstractSvnResource implements AbstractResource { /** * <code>modifiedProperties</code> - a map of properties that have been Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/HistoricNodeContent.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/HistoricNodeContent.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/HistoricNodeContent.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -24,6 +24,10 @@ import java.io.ByteArrayOutputStream; import java.util.Map; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class HistoricNodeContent { private ByteArrayOutputStream content; private Map<String, String> properties; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/NodeContent.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/NodeContent.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/NodeContent.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -30,6 +30,10 @@ import java.io.InputStream; import java.io.OutputStream; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class NodeContent { private final static int BUF_SIZE = 32768; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/RevisionInfo.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/RevisionInfo.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/RevisionInfo.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -25,7 +25,8 @@ /** * A class holding information about a single revision of some file. - * @author adamw + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) */ public class RevisionInfo { Date date; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -30,8 +30,9 @@ import org.jboss.shotoku.exceptions.ResourceDoesNotExist; /** - * @author adamw * An implementation of the content manager based on subversion. + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) */ public class SvnContentManager extends ContentManager { /** Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -34,6 +34,10 @@ import org.jboss.shotoku.exceptions.ResourceAlreadyExists; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class SvnDirectory extends AbstractSvnResource implements Directory { public SvnDirectory(String id, String fullPath, File file, String name, SvnContentManager svnCm) { Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -34,6 +34,10 @@ import org.jboss.shotoku.exceptions.RepositoryException; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class SvnHeadNode extends SvnNode { private NodeContent content; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -33,6 +33,10 @@ import org.jboss.shotoku.exceptions.NodeReadOnly; import org.jboss.shotoku.exceptions.RepositoryException; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class SvnHistoricNode extends SvnNode { private String logMessage; private Date commitDate; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistory.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistory.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistory.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -25,6 +25,10 @@ import org.jboss.shotoku.Node; import org.jboss.shotoku.NodeList; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class SvnHistory implements History { private NodeList nodes; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewDirectory.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewDirectory.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewDirectory.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -30,6 +30,10 @@ import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class SvnNewDirectory extends SvnDirectory { public SvnNewDirectory(String id, String fullPath, File file, String name, SvnContentManager svnCm) { Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewDirectoryHelper.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewDirectoryHelper.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewDirectoryHelper.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -31,6 +31,10 @@ import org.jboss.shotoku.exceptions.ResourceAlreadyExists; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class SvnNewDirectoryHelper extends SvnNewResourceHelper implements Directory { private Directory currentDirectory; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -30,6 +30,10 @@ import org.jboss.shotoku.History; import org.jboss.shotoku.exceptions.RepositoryException; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class SvnNewNode extends SvnHeadNode { private NodeContent content; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNodeHelper.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNodeHelper.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNodeHelper.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -31,6 +31,10 @@ import org.jboss.shotoku.Node; import org.jboss.shotoku.exceptions.RepositoryException; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class SvnNewNodeHelper extends SvnNewResourceHelper implements Node { private Node currentNode; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewResourceHelper.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewResourceHelper.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewResourceHelper.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -29,7 +29,8 @@ * hasn't been yet saved, and to a "normal resource" class implementation if * a new resource has been saved. * - * @author adamw + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) */ public abstract class SvnNewResourceHelper { protected Directory parentDirectory; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNode.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNode.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNode.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -33,6 +33,10 @@ import org.jboss.shotoku.NodeList; import org.jboss.shotoku.exceptions.RepositoryException; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public abstract class SvnNode extends AbstractSvnResource implements Node { private static MimetypesFileTypeMap mimeTypes; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnOperationFailed.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnOperationFailed.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnOperationFailed.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -21,6 +21,10 @@ */ package org.jboss.shotoku.svn; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class SvnOperationFailed extends Exception { public SvnOperationFailed(Exception e) { super(e); Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -23,6 +23,10 @@ import java.util.List; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public interface SvnService { /** * Gets an exclusive write lock for a given path. The lock should be Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/Tools.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/Tools.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/Tools.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -26,6 +26,10 @@ import org.jboss.mx.util.MBeanProxyExt; import org.jboss.mx.util.MBeanServerLocator; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class Tools { private static SvnService instance; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -51,9 +51,10 @@ import org.tmatesoft.svn.core.wc.SVNWCUtil; /** - * @author adamw * A class for performing operations on a single subversion repository and * its local working copy. + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) */ public class SvnRepository { private static final Logger log = Logger.getLogger(SvnRepository.class); Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -45,6 +45,10 @@ import org.w3c.dom.Document; import org.xml.sax.InputSource; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ @Service(objectName=SvnService.SVN_SERVICE_NAME) @Local(SvnServiceLocal.class) @Management(SvnServiceManagement.class) Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceLocal.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceLocal.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceLocal.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -21,6 +21,10 @@ */ package org.jboss.shotoku.svn.service; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public interface SvnServiceLocal { public void setTimerInterval(long timerInterval); public long getTimerInterval(); Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceManagement.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceManagement.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceManagement.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -23,6 +23,10 @@ import org.jboss.shotoku.svn.SvnService; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public interface SvnServiceManagement extends SvnService, SvnServiceLocal { public void create() throws Exception; public void start() throws Exception; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceTimer.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceTimer.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceTimer.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -34,7 +34,8 @@ import org.jboss.shotoku.svn.SvnService; /** - * @author adamw + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) * @deprecated */ @Stateless Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceTimerLocal.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceTimerLocal.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceTimerLocal.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -22,7 +22,8 @@ package org.jboss.shotoku.svn.service; /** - * @author adamw + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) * @deprecated */ public interface SvnServiceTimerLocal { Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/AddDelayedOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/AddDelayedOperation.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/AddDelayedOperation.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -27,6 +27,10 @@ import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.wc.SVNClientManager; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class AddDelayedOperation implements DelayedOperation { private String fileSystemPath; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/CommitDelayedOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/CommitDelayedOperation.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/CommitDelayedOperation.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -27,6 +27,10 @@ import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.wc.SVNClientManager; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class CommitDelayedOperation implements DelayedOperation { private String path; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/DelayedOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/DelayedOperation.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/DelayedOperation.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -24,6 +24,10 @@ import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.wc.SVNClientManager; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public interface DelayedOperation { public void performOperation(SVNClientManager clientManager) throws SVNException; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/DeleteDelayedOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/DeleteDelayedOperation.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/DeleteDelayedOperation.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -27,6 +27,10 @@ import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.wc.SVNClientManager; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class DeleteDelayedOperation implements DelayedOperation { private String fileSystemPath; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/test/DirectoryTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/test/DirectoryTest.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/test/DirectoryTest.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -29,6 +29,10 @@ import org.tmatesoft.svn.core.wc.SVNClientManager; import org.tmatesoft.svn.core.wc.SVNWCUtil; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class DirectoryTest { SVNClientManager clientManager; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/test/PropertiesTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/test/PropertiesTest.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/test/PropertiesTest.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -31,6 +31,10 @@ import org.tmatesoft.svn.core.wc.SVNRevision; import org.tmatesoft.svn.core.wc.SVNWCUtil; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class PropertiesTest { SVNClientManager clientManager; File file; Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/AddDeleteTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/AddDeleteTest.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/AddDeleteTest.java 2005-11-07 16:50:19 UTC (rev 1525) @@ -24,6 +24,10 @@ import org.jboss.shotoku.Node; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; +/** + * @author Adam Warski (ad...@as...) + * @author Damon Sicore (da...@si...) + */ public class AddDeleteTest extends ShotokuTest { private final static String TEST_FILE = "add-delete-test-1"; Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ContentSettingTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ContentSettingTest.java 2005-11-07 16:32:42 UTC (rev 1524) +++ trun... [truncated message content] |
Author: adamw Date: 2005-11-07 11:32:42 -0500 (Mon, 07 Nov 2005) New Revision: 1524 Added: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DateSortParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertySortParameter.java Modified: trunk/forge/portal-extensions/common.xml trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/XmlInputFactory.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/service/ResourceWatcher.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Feed.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedFactory.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FileBasedFeed.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/InformaBasedFeed.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/RomeBasedFeed.java trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/JBossWiki.properties trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java trunk/forge/portal-extensions/shotoku/project.xml trunk/forge/portal-extensions/shotoku/shotoku-base/project.xml trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DirectoryIncludeParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/HistoryIncludeParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/LimitParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/MultiBooleanNodeFilter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertyValueParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/velocity/ShotokuResourceLoader.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNodeHelper.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNode.java Log: http://jira.jboss.com/jira/browse/JBLAB-408 : Shotoku feeds Modified: trunk/forge/portal-extensions/common.xml =================================================================== --- trunk/forge/portal-extensions/common.xml 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/common.xml 2005-11-07 16:32:42 UTC (rev 1524) @@ -59,6 +59,22 @@ <version>1.0</version> <jar>shotoku-aop.jar</jar> </dependency> + + <dependency> + <groupId>velocity</groupId> + <artifactId>velocity</artifactId> + <version>1.4</version> + </dependency> + <dependency> + <groupId>velocity</groupId> + <artifactId>velocity-dep</artifactId> + <version>1.4</version> + </dependency> + <dependency> + <groupId>velocity</groupId> + <artifactId>velocity</artifactId> + <version>1.4-dev</version> + </dependency> </dependencies> <build> Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -21,6 +21,9 @@ */ package org.jboss.forge.common; +import java.util.HashMap; +import java.util.Map; + import javax.xml.transform.TransformerException; import org.jboss.forge.common.projects.DomToXmlTransformer; @@ -64,6 +67,30 @@ return properties; } + /** + * Reads all attributes of the given node and returns them as a map. Only + * signle-value attributes are supported. + * @param root Node from which to read the attributes. + * @return A map holding all attributes of the given node. + */ + public static Map<String, String> getMapFromNodeAttributes(Node root) { + Map<String, String> properties = new HashMap<String, String>(); + NamedNodeMap nnm = root.getAttributes(); + + if (nnm != null) { + Node n; + + for (int i=0; i<nnm.getLength(); i++) { + n = nnm.item(i); + if (n.getNodeType() == Node.ATTRIBUTE_NODE) { + properties.put(n.getNodeName(), XmlTools.unmarshallText(n)); + } + } + } + + return properties; + } + /** * From the given node, gets the value of the specified attribute. * @param root Node to read the attribute from. Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -157,7 +157,7 @@ String metaContent = "blog-entry-author=" + project.getName() + "\n"; metaContent += "blog-entry-metadata-timestamp=" - + entry.getLastModfication() + + entry.getLastModification() + "\n"; writeToFile(blogMetaFile, metaContent); @@ -170,7 +170,7 @@ long blogFileLastModified; if (blogFileCreated) - blogFileLastModified = entry.getLastModfication(); + blogFileLastModified = entry.getLastModification(); else blogFileLastModified = blogFile.lastModified(); @@ -178,7 +178,7 @@ // been changed (or just created). if ((blogFileCreated) || (blogFileLastModified != - entry.getLastModfication())) { + entry.getLastModification())) { // Modification found, or a new entry - putting content. try { writeToFile(blogFile, entry.getContent()); Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/XmlInputFactory.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/XmlInputFactory.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/XmlInputFactory.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -97,7 +97,7 @@ * @return Last modification time of the given resource. */ public long getLastModification(String identifier) { - return cm.getNode(identifier).getLastModfication(); + return cm.getNode(identifier).getLastModification(); } public static XmlInputFactory getContentReadingInstance(ContentManager cm) { Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/service/ResourceWatcher.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/service/ResourceWatcher.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/service/ResourceWatcher.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -46,7 +46,7 @@ * @param name Name of the resouce to add. */ public void watchResource(String name) { - lastUpdates.put(name, cm.getNode(name).getLastModfication()); + lastUpdates.put(name, cm.getNode(name).getLastModification()); } /** @@ -57,7 +57,7 @@ public boolean checkResources() { boolean ret = false; for (String name : lastUpdates.keySet()) { - long lastModification = cm.getNode(name).getLastModfication(); + long lastModification = cm.getNode(name).getLastModification(); if (lastModification != lastUpdates.get(name)) { ret = true; lastUpdates.put(name, lastModification); Modified: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Feed.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Feed.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Feed.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -24,6 +24,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.io.Writer; import java.net.URL; import javax.servlet.http.HttpServletResponse; @@ -50,13 +51,24 @@ * Generates a feed getting data from the given url. * @param url Url from which to get the content. */ - public void generateFromUrl(URL url) throws IOException; + public void generate(URL url) throws IOException; /** + * Generates a feed getting data from the given input stream. + * @param is Input stream from which to get the content. + * @throws IOException + */ + public void generate(InputStream is) throws IOException; + /** + * Gets a writer to which content of this feed can be written. + * @return A writer for writing content of this feed. + */ + public Writer getWriter() throws IOException; + /** * Generates a feed using the given feeds. * @param feeds Feeds which should be aggregated into a single * feed. */ - public void generateFromFeeds(Feed[] feeds, String title, + public void generate(Feed[] feeds, String title, String description, String author, String link) throws IllegalArgumentException, IOException; /** Modified: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedFactory.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedFactory.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedFactory.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -62,7 +62,6 @@ try { File file = File.createTempFile(FeedsDescriptor.FEEDS_FILE_PREFIX + nextInt, type); - //TODO System.out.println("Created temp file: " + file.getAbsolutePath()); return (Feed) feedClass.getConstructor(new Class[] { File.class }). newInstance(new Object[] { file }); } catch (Exception e) { Modified: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -22,8 +22,14 @@ package org.jboss.forge.feeds; import java.io.IOException; +import java.io.Writer; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.net.URL; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -31,8 +37,10 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Properties; import java.util.Set; +import org.apache.velocity.VelocityContext; import org.apache.xerces.parsers.DOMParser; import org.jboss.forge.common.ForgeHelper; import org.jboss.forge.common.XmlTools; @@ -41,6 +49,8 @@ import org.jboss.logging.Logger; import org.jboss.portal.common.context.DelegateContext; import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.search.Search; +import org.jboss.shotoku.search.SearchParameter; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; @@ -68,6 +78,8 @@ private final static String AGG_FEED_TAG = "aggregated-feed"; private final static String SHO_FEED_TAG = "shotoku-feed"; + private final static String SHOTOKU_CONFIG = "shotoku-config.properties"; + private final static String ALL_TOKENS = "*"; private final static String TOKENS_DELIMITER = ","; @@ -151,8 +163,16 @@ // Firstly - the remote feeds. generateRemoteFeeds(portalName, remoteFeedDefs); - // TODO add shotoku feeds + // Then, shotoku feeds. + Properties props = new Properties(); + try { + props.load(cm.getNode(SHOTOKU_CONFIG).getContentInputStream()); + } catch (Exception e) { + log.warn("Error loading shotoku feeds configuration.", e); + } + generateShotokuFeeds(portalName, shotokuFeedDefs, props); + // After that, we can create the aggregated feeds. generateAggregatedFeeds(portalName, aggregatedFeedDefs); @@ -182,6 +202,111 @@ } } + private SearchParameter generateSearchParameter(Node n, Properties props, Set parametrized) + throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, + InvocationTargetException, NoSuchMethodException, ClassNotFoundException { + String paramName = n.getNodeName(); + String paramClass = props.getProperty(paramName); + + if (paramClass == null) + throw new RuntimeException("Unknown parameter name: " + paramName + "."); + + SearchParameter param; + if (parametrized.contains(paramName)) { + param = (SearchParameter) Class.forName(paramClass).getConstructor( + new Class[] { Map.class }).newInstance(new Object[] { + XmlTools.getMapFromNodeAttributes(n) }); + } else { + param = (SearchParameter) Class.forName(paramClass).newInstance(); + } + + NodeList nodeList = n.getChildNodes(); + for (int i=0; i<nodeList.getLength(); i++) { + Node child = nodeList.item(i); + + if (child.getNodeType() == Node.ELEMENT_NODE) { + SearchParameter childParam = generateSearchParameter( + child, props, parametrized); + + Method[] methods = param.getClass().getMethods(); + for (Method method : methods) { + if ("add".equals(method.getName())) { + method.invoke(param, new Object[] { childParam }); + break; + } + } + } + } + + return param; + } + + private void generateShotokuFeeds(String portalName, Map<String, Node> feedDefs, + Properties props) { + Set parametrized = new HashSet<String>( + Arrays.asList(props.getProperty("parametrized").split("[,]"))); + + for (String feedName : feedDefs.keySet()) { + Node feedNode = feedDefs.get(feedName); + String templateAttr = XmlTools.getAttributeValue(feedNode, "template"); + String prefixAttr = XmlTools.getAttributeValue(feedNode, "prefix"); + String idAttr = XmlTools.getAttributeValue(feedNode, "id"); + String typesAttr = XmlTools.getAttributeValue(feedNode, "type"); + + feedDisplayNames.put(feedName, + XmlTools.getAttributeValue(feedNode, "display-name")); + + ContentManager cm = ContentManager.getContentManager(idAttr, prefixAttr); + + // Generating the type of feeds that have been requested. + String[] types; + if (ALL_TOKENS.equals(typesAttr)) { + types = FeedFactory.getAllFeedTypes(); + } else { + types = typesAttr.split("[" + TOKENS_DELIMITER + "]"); + } + + Search search; + try { + search = (Search) generateSearchParameter(feedNode, props, + parametrized); + } catch (Exception e) { + log.warn("Error generating shotoku feed " + feedName + ".", e); + continue; + } + + org.jboss.shotoku.NodeList list = search.perform(cm); + + + VelocityContext vc = new VelocityContext(); + vc.put("title", XmlTools.getAttributeValue(feedNode, "title")); + vc.put("description", XmlTools.getAttributeValue(feedNode, "description")); + vc.put("author", XmlTools.getAttributeValue(feedNode, "author")); + vc.put("dateFormat", new SimpleDateFormat("MM/dd/yy")); + vc.put("pubDate", Calendar.getInstance().getTime()); + vc.put("linkBase", + XmlTools.getAttributeValue(feedNode, "link-base") + prefixAttr + "/"); + + for (String type : types) { + String template = templateAttr.replace(TYPE_PARAM, type); + + Feed newFeed = FeedFactory.getNewFeed(type); + try { + vc.put("link", generateFeedLink(true, feedName, type)); + + Writer w = newFeed.getWriter(); + list.mergeWithTemplate(cm, template, "nodes", vc, w); + w.flush(); + w.close(); + + addFeed(feedName, type, newFeed); + } catch (Exception e) { + log.warn("Cannot merge template " + template + " for " + feedName + ".", e); + } + } + } + } + private void generateRemoteFeeds(String portalName, Map<String, Node> feedDefs) { for (String feedName : feedDefs.keySet()) { Node feedNode = feedDefs.get(feedName); @@ -212,7 +337,7 @@ try { Feed newFeed = FeedFactory.getNewFeed(type); - newFeed.generateFromUrl(new URL(address)); + newFeed.generate(new URL(address)); addFeed(feedNameReplaced, type, newFeed); } catch (Exception e) { log.warn("Can't add feeed " + address + " : " + type @@ -306,7 +431,7 @@ Feed newFeed = FeedFactory.getNewFeed(type); try { - newFeed.generateFromFeeds(requiredFeeds.toArray(new Feed[0]), + newFeed.generate(requiredFeeds.toArray(new Feed[0]), feedParameters[0], feedParameters[1], feedParameters[2], generateFeedLink(true, feedName, type)); } catch (Exception e) { Modified: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FileBasedFeed.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FileBasedFeed.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FileBasedFeed.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -27,9 +27,11 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.io.Writer; import java.net.URL; import javax.servlet.http.HttpServletResponse; @@ -50,15 +52,19 @@ os.write(buffer, 0, read); } - public void generateFromUrl(URL url) throws IOException { + public void generate(URL url) throws IOException { + InputStream is = url.openStream(); + generate(is); + is.close(); + } + + public void generate(InputStream is) throws IOException { file.createNewFile(); - InputStream is = url.openStream(); OutputStream os = new BufferedOutputStream(new FileOutputStream(file)); - + transfer(is, os); - is.close(); os.close(); } @@ -69,6 +75,10 @@ is.close(); } + public Writer getWriter() throws IOException { + return new FileWriter(file); + } + protected abstract String getContentType(); public void write(HttpServletResponse response) throws IOException { Modified: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/InformaBasedFeed.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/InformaBasedFeed.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/InformaBasedFeed.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -25,7 +25,7 @@ protected abstract ChannelExporterIF getExporter() throws IOException; @SuppressWarnings("unchecked") - public void generateFromFeeds(Feed[] feeds, String title, String description, + public void generate(Feed[] feeds, String title, String description, String author, String link) throws IllegalArgumentException, IOException { ChannelBuilder builder = new ChannelBuilder(); Modified: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/RomeBasedFeed.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/RomeBasedFeed.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/RomeBasedFeed.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -46,7 +46,7 @@ protected abstract void setFeedType(SyndFeed feed); @SuppressWarnings("unchecked") - public void generateFromFeeds(Feed[] feeds, String title, String description, + public void generate(Feed[] feeds, String title, String description, String author, String link) throws IllegalArgumentException, IOException { SyndFeed syndFeed = new SyndFeedImpl(); Modified: trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -123,7 +123,7 @@ if (requestedRes.indexOf(DOWNLOADS_ACCESS)!=-1) { // Sending the request to the DownloadCounter to increment // counter for this link if it's one of the tracked links. - DownloadCounter.increment(requestedRes,contentManager); + //DownloadCounter.increment(requestedRes,contentManager); } Node requestedNode = contentManager.getNode(requestedRes); Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/JBossWiki.properties =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/JBossWiki.properties 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/JBossWiki.properties 2005-11-07 16:32:42 UTC (rev 1524) @@ -12,7 +12,7 @@ credentialsClass=org.jboss.wiki.JBossPortalCredentials #mediaDataSourceClass class to use for mediaDataSource -mediaDataSourceClass=org.jboss.wiki.FileDataSource +mediaDataSourceClass=org.jboss.wiki.ShotokuDataSource #attachmentDataSourceClass class to use for AttachmentDataSource attachmentDataSourceClass=org.jboss.wiki.FileDataSource Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -103,7 +103,7 @@ return new WikiPage(pageName, new SimpleCredentials("someone"), page.getContent(), page.getHistory().getRevisionsCount(), page.getHistory().getRevisionsCount(), new Date(page - .getLastModfication()), wikiEngine, true, true); + .getLastModification()), wikiEngine, true, true); } catch (ResourceDoesNotExist e) { return null; Modified: trunk/forge/portal-extensions/shotoku/project.xml =================================================================== --- trunk/forge/portal-extensions/shotoku/project.xml 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/project.xml 2005-11-07 16:32:42 UTC (rev 1524) @@ -40,5 +40,20 @@ <artifactId>log4j</artifactId> <version>1.2.9</version> </dependency> + <dependency> + <groupId>velocity</groupId> + <artifactId>velocity</artifactId> + <version>1.4</version> + </dependency> + <dependency> + <groupId>velocity</groupId> + <artifactId>velocity-dep</artifactId> + <version>1.4</version> + </dependency> + <dependency> + <groupId>velocity</groupId> + <artifactId>velocity</artifactId> + <version>1.4-dev</version> + </dependency> </dependencies> </project> Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/project.xml =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/project.xml 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/project.xml 2005-11-07 16:32:42 UTC (rev 1524) @@ -17,21 +17,6 @@ <description></description> <dependencies> - <dependency> - <groupId>velocity</groupId> - <artifactId>velocity</artifactId> - <version>1.4</version> - </dependency> - <dependency> - <groupId>velocity</groupId> - <artifactId>velocity-dep</artifactId> - <version>1.4</version> - </dependency> - <dependency> - <groupId>velocity</groupId> - <artifactId>velocity</artifactId> - <version>1.4-dev</version> - </dependency> </dependencies> <build> Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -31,7 +31,6 @@ import org.apache.xerces.parsers.DOMParser; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; import org.jboss.shotoku.exceptions.RepositoryException; -import org.jboss.shotoku.search.Search; import org.w3c.dom.Document; import org.xml.sax.InputSource; @@ -86,17 +85,6 @@ */ public abstract Directory getDirectory(String path) throws ResourceDoesNotExist, RepositoryException; - - /** - * Performs a search with the given parameters. - * - * @param parameters - * Parameters for the search. - * @return A list of found nodes. - * @throws RepositoryException - */ - public abstract NodeList search(Search parameters) - throws RepositoryException; /** * Gets a velocity engine, initialized with default properties, as defined @@ -175,6 +163,8 @@ protected ContentManager(String id, String prefix) { this.id = id; this.prefix = prefix; + + engines = new HashMap<String, VelocityEngine>(); } /* Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -23,6 +23,7 @@ import java.io.InputStream; import java.io.OutputStream; +import java.util.Date; import org.jboss.shotoku.exceptions.RepositoryException; @@ -130,7 +131,16 @@ * @return Last modification time of this node. * @throws RepositoryException */ - public long getLastModfication() throws RepositoryException; + public long getLastModification() throws RepositoryException; + + /** + * Gets the last modification time of this node, represented as a date + * object. + * + * @return Last modification time of this node, represented as a date. + * @throws RepositoryException + */ + public Date getLastModificationDate() throws RepositoryException; /** * Gets the mime type of this node. Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -21,6 +21,7 @@ */ package org.jboss.shotoku; +import java.io.Writer; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -28,6 +29,9 @@ import java.util.Iterator; import java.util.List; +import org.apache.velocity.VelocityContext; +import org.jboss.shotoku.exceptions.RepositoryException; + /** * A class representing a list of nodes and providing the possibility to * manipulate these nodes. @@ -107,4 +111,21 @@ nodeList = nodeList.subList(0, limit); } } + + public void mergeWithTemplate(ContentManager cm, String templateName, + String nodesParameter, Writer w) + throws RepositoryException { + mergeWithTemplate(cm, templateName, nodesParameter, new VelocityContext(), w); + } + + public void mergeWithTemplate(ContentManager cm, String templateName, + String nodesParameter, VelocityContext context, Writer w) + throws RepositoryException { + context.put(nodesParameter, nodeList); + try { + cm.getVelocityEngine().mergeTemplate(templateName, context, w); + } catch (Exception e) { + throw new RepositoryException(e); + } + } } Added: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DateSortParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DateSortParameter.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DateSortParameter.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -0,0 +1,20 @@ +package org.jboss.shotoku.search; + +import java.util.Comparator; + +import org.jboss.shotoku.Node; + +public class DateSortParameter extends SortParameter { + public DateSortParameter() { + super (new Comparator<Node>() { + public int compare(Node o1, Node o2) { + long lastMod1 = o1.getLastModification(); + long lastMod2 = o2.getLastModification(); + + if (lastMod1 == lastMod2) return 0; + + return lastMod1 < lastMod2 ? 1 : -1; + } + }); + } +} Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DirectoryIncludeParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DirectoryIncludeParameter.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DirectoryIncludeParameter.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -21,6 +21,8 @@ */ package org.jboss.shotoku.search; +import java.util.Map; + import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Directory; import org.jboss.shotoku.NodeList; @@ -31,13 +33,23 @@ */ public class DirectoryIncludeParameter implements SearchParameter { private Directory directory; - + private String path; + public DirectoryIncludeParameter(Directory directory) { this.directory = directory; } + + public DirectoryIncludeParameter(Map<String, String> params) { + this.path = params.get("path"); + } public NodeList transform(NodeList list, ContentManager cm) { - list.addAll(directory.getNodes()); + if (path == null) { + list.addAll(directory.getNodes()); + } else { + list.addAll(cm.getDirectory(path).getNodes()); + } + return list; } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/HistoryIncludeParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/HistoryIncludeParameter.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/HistoryIncludeParameter.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -21,6 +21,8 @@ */ package org.jboss.shotoku.search; +import java.util.Map; + import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.History; import org.jboss.shotoku.Node; @@ -33,6 +35,7 @@ */ public class HistoryIncludeParameter implements SearchParameter { private History history; + private String path; public HistoryIncludeParameter(History history) { this.history = history; @@ -41,9 +44,18 @@ public HistoryIncludeParameter(Node node) { history = node.getHistory(); } + + public HistoryIncludeParameter(Map<String, String> params) { + this.path = params.get("path"); + } public NodeList transform(NodeList list, ContentManager cm) { - list.addAll(history.getAllRevisions()); + if (path == null) { + list.addAll(history.getAllRevisions()); + } else { + list.addAll(cm.getNode(path).getHistory().getAllRevisions()); + } + return list; } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/LimitParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/LimitParameter.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/LimitParameter.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -21,6 +21,8 @@ */ package org.jboss.shotoku.search; +import java.util.Map; + import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.NodeList; @@ -35,6 +37,10 @@ public LimitParameter(int limit) { this.limit = limit; } + + public LimitParameter(Map<String, String> params) { + limit = Integer.valueOf(params.get("limit")); + } public NodeList transform(NodeList list, ContentManager cm) { list.limit(limit); Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/MultiBooleanNodeFilter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/MultiBooleanNodeFilter.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/MultiBooleanNodeFilter.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -35,7 +35,7 @@ filters = new ArrayList<BooleanNodeFilter>(); } - public void addFilter(BooleanNodeFilter filter) { + public void add(BooleanNodeFilter filter) { filters.add(filter); } } Added: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertySortParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertySortParameter.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertySortParameter.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -0,0 +1,32 @@ +package org.jboss.shotoku.search; + +import java.util.Comparator; +import java.util.Map; + +import org.jboss.shotoku.Node; + +public class PropertySortParameter extends SortParameter { + public PropertySortParameter(Map<String, String> params) { + this(params.get("name"), "true".equals(params.get("descending"))); + } + + public PropertySortParameter(final String propertyName, final boolean descending) { + super (new Comparator<Node>() { + public int compare(Node o1, Node o2) { + String prop1 = o1.getProperty(propertyName); + String prop2 = o2.getProperty(propertyName); + + if (prop1 == null) { + if (prop2 == null) { + return 0; + } else { + return descending ? 1 : -1; + } + } + + return descending ? + prop1.compareTo(prop2) : prop2.compareTo(prop1); + } + }); + } +} \ No newline at end of file Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertyValueParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertyValueParameter.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertyValueParameter.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -21,6 +21,8 @@ */ package org.jboss.shotoku.search; +import java.util.Map; + import org.jboss.shotoku.Node; /** @@ -30,6 +32,10 @@ private String propertyName; private String propertyValue; + public PropertyValueParameter(Map<String, String> params) { + this(params.get("name"), params.get("value")); + } + public PropertyValueParameter(String name, String value) { propertyName = name; propertyValue = value; Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/velocity/ShotokuResourceLoader.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/velocity/ShotokuResourceLoader.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/velocity/ShotokuResourceLoader.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -36,12 +36,12 @@ @Override public boolean isSourceModified(Resource resource) { - return resource.getLastModified() != cm.getNode(resource.getName()).getLastModfication(); + return resource.getLastModified() != cm.getNode(resource.getName()).getLastModification(); } @Override public long getLastModified(Resource resource) { - return cm.getNode(resource.getName()).getLastModfication(); + return cm.getNode(resource.getName()).getLastModification(); } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -26,10 +26,8 @@ import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Directory; import org.jboss.shotoku.Node; -import org.jboss.shotoku.NodeList; import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; -import org.jboss.shotoku.search.Search; /** * @author adamw @@ -143,9 +141,4 @@ return new SvnDirectory(id, getPrefixedPath(path), file, getNameFromPath(path), this); } - - @Override - public NodeList search(Search search) { - return search.perform(this); - } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -125,7 +125,7 @@ return file.length(); } - public long getLastModfication() { + public long getLastModification() { if (checkForChanges()) return file.lastModified(); else Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -99,7 +99,7 @@ return content.size(); } - public long getLastModfication() { + public long getLastModification() { return commitDate.getTime(); } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -66,7 +66,7 @@ } @Override - public long getLastModfication() { + public long getLastModification() { return Calendar.getInstance().getTimeInMillis(); } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNodeHelper.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNodeHelper.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNodeHelper.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -24,6 +24,7 @@ import java.io.File; import java.io.InputStream; import java.io.OutputStream; +import java.util.Date; import org.jboss.shotoku.Directory; import org.jboss.shotoku.History; @@ -68,8 +69,8 @@ return currentNode.getHistory(); } - public long getLastModfication() throws RepositoryException { - return currentNode.getLastModfication(); + public long getLastModification() throws RepositoryException { + return currentNode.getLastModification(); } public long getLength() throws RepositoryException { @@ -119,4 +120,8 @@ public void setProperty(String name, String value) { currentNode.setProperty(name, value); } + + public Date getLastModificationDate() throws RepositoryException { + return currentNode.getLastModificationDate(); + } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNode.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNode.java 2005-11-07 11:06:39 UTC (rev 1523) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNode.java 2005-11-07 16:32:42 UTC (rev 1524) @@ -23,6 +23,7 @@ import java.io.File; import java.util.ArrayList; +import java.util.Date; import java.util.List; import javax.activation.MimetypesFileTypeMap; @@ -68,4 +69,8 @@ public String getMimeType() { return mimeTypes.getContentType(getName()); } + + public Date getLastModificationDate() { + return new Date(getLastModification()); + } } |
From: <jbo...@li...> - 2005-11-07 11:07:03
|
Author: adamw Date: 2005-11-07 06:06:39 -0500 (Mon, 07 Nov 2005) New Revision: 1523 Added: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/AndNodeFilter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/BooleanNodeFilter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/MultiBooleanNodeFilter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/NodeFilter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/OrNodeFilter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertyValueParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/Search.java Removed: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/CustomPropertyValueParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/Qualificator.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SearchParameters.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SimplePropertyValueParameter.java Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DirectoryIncludeParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/HistoryIncludeParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/LimitParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SearchParameter.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SortParameter.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-17 : implementation Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -31,7 +31,7 @@ import org.apache.xerces.parsers.DOMParser; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; import org.jboss.shotoku.exceptions.RepositoryException; -import org.jboss.shotoku.search.SearchParameters; +import org.jboss.shotoku.search.Search; import org.w3c.dom.Document; import org.xml.sax.InputSource; @@ -48,6 +48,12 @@ * <code>id</code> - id of a corresponding repository. */ protected String id; + /** + * <code>engines</code> - a map of initialized velocity engines, + * The key is a string representation of parameters with which an + * engine was initialized. + */ + private Map<String, VelocityEngine> engines; /** * Gets a root directory that is represented by this content manager. @@ -89,7 +95,7 @@ * @return A list of found nodes. * @throws RepositoryException */ - public abstract NodeList search(SearchParameters parameters) + public abstract NodeList search(Search parameters) throws RepositoryException; /** @@ -112,7 +118,7 @@ * in velocity.properties in shotoku-base jar. * * @param addIdPrefix - * true iff id/ prefix properties should be added to the + * True iff id/ prefix properties should be added to the * properties. * @return A velocity engine initialized with default properties. * @throws Exception @@ -138,19 +144,31 @@ public VelocityEngine getVelocityEngine( Map<? extends Object, ? extends Object> overProps, boolean addIdPrefix) throws Exception { - VelocityEngine ve = new VelocityEngine(); - Properties props = new Properties(); - props.load(ContentManager.class - .getResourceAsStream("/velocity.properties")); - props.putAll(overProps); + String representation = ""; + for (Object key : overProps.keySet()) { + representation += key + "=" + overProps.get(key) + ","; + } + + representation += addIdPrefix; + + VelocityEngine ve = engines.get(representation); + if (ve == null) { + ve = new VelocityEngine(); + Properties props = new Properties(); + props.load(ContentManager.class + .getResourceAsStream("/velocity.properties")); + props.putAll(overProps); - if (addIdPrefix) { - props.put("shotoku.resource.loader." + "prefix", prefix); - props.put("shotoku.resource.loader." + "id", id); + if (addIdPrefix) { + props.put("shotoku.resource.loader." + "prefix", prefix); + props.put("shotoku.resource.loader." + "id", id); + } + + ve.init(props); + + engines.put(representation, ve); } - ve.init(props); - return ve; } Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -35,7 +35,8 @@ */ public interface Directory extends AbstractResource { /** - * Gets a list of nodes that are contained in this directory. + * Gets a list of nodes that are contained in this directory. The nodes + * are sorted in alphabetic order. * * @return A list of nodes that are contained in this directory. * @throws RepositoryException @@ -43,7 +44,8 @@ public NodeList getNodes() throws RepositoryException; /** - * Gets a list of directories that are contained in this directory. + * Gets a list of directories that are contained in this directory. The + * directories are sorted in alphabetic order. * * @return A list of directories that are contained in this directory. * @throws RepositoryException Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -22,6 +22,10 @@ package org.jboss.shotoku; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; import java.util.List; /** @@ -30,7 +34,7 @@ * * @author adamw */ -public class NodeList { +public class NodeList implements Iterable<Node> { private List<Node> nodeList; public NodeList() { @@ -52,11 +56,55 @@ } /** - * Gets a <code>java.util.List</code> representation of this node list. + * Adds all of the given nodes to this node list. * - * @return A <code>java.util.List</code> representation of this node list. + * @param coll Node collection to add. */ + public void addAll(Collection<Node> coll) { + nodeList.addAll(coll); + } + + /** + * Adds nodes from the given node list to this node list. + * + * @param list Node list to add. + */ + public void addAll(NodeList list) { + nodeList.addAll(list.toList()); + } + + /** + * Sorts this node list with the given comparator. + * @param comparator Comparator to sort with. + */ + public void sort(Comparator<Node> comparator) { + Collections.sort(nodeList, comparator); + } + + /** + * Gets an immutable <code>java.util.List</code> representation of this + * node list. + * + * @return An immutable <code>java.util.List</code> representation of + * this node list. + */ public List<Node> toList() { - return nodeList; + return Collections.unmodifiableList(nodeList); } + + public Iterator<Node> iterator() { + return toList().iterator(); + } + + /** + * Limits the size of this node list. After this operation, + * the size of this node list will be lower or equal to the + * given limit. + * @param limit Node count limit. + */ + public void limit(int limit) { + if (nodeList.size() > limit) { + nodeList = nodeList.subList(0, limit); + } + } } Added: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/AndNodeFilter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/AndNodeFilter.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/AndNodeFilter.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -0,0 +1,41 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.shotoku.search; + +import org.jboss.shotoku.Node; + +/** + * + * @author adamw + */ +public class AndNodeFilter extends MultiBooleanNodeFilter { + @Override + public boolean qualifyNode(Node node) { + for (BooleanNodeFilter filter : filters) { + if (!filter.qualifyNode(node)) { + return false; + } + } + + return true; + } +} Added: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/BooleanNodeFilter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/BooleanNodeFilter.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/BooleanNodeFilter.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -0,0 +1,42 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.shotoku.search; + +import org.jboss.shotoku.Node; + +/** + * + * @author adamw + */ +public abstract class BooleanNodeFilter extends NodeFilter { + public abstract boolean qualifyNode(Node node); + + @Override + public final Node filterNode(Node node) { + if (qualifyNode(node)) { + return node; + } else { + return null; + } + } + +} Deleted: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/CustomPropertyValueParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/CustomPropertyValueParameter.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/CustomPropertyValueParameter.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -1,36 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2005, JBoss Inc., and individual contributors as indicated - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.jboss.shotoku.search; - -/** - * @author adamw - * TODO - */ -public class CustomPropertyValueParameter extends SearchParameter { - //private String propertyName; - //private Qualificator qualificator; - - public CustomPropertyValueParameter(String name, Qualificator qualificator) { - //propertyName = name; - //this.qualificator = qualificator; - } -} Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DirectoryIncludeParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DirectoryIncludeParameter.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/DirectoryIncludeParameter.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -21,16 +21,23 @@ */ package org.jboss.shotoku.search; +import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Directory; +import org.jboss.shotoku.NodeList; /** + * A search parameter which includes to the result all nodes from a directory. * @author adamw - * TODO */ -public class DirectoryIncludeParameter extends SearchParameter { - //private Directory directory; +public class DirectoryIncludeParameter implements SearchParameter { + private Directory directory; public DirectoryIncludeParameter(Directory directory) { - //this.directory = directory; + this.directory = directory; } + + public NodeList transform(NodeList list, ContentManager cm) { + list.addAll(directory.getNodes()); + return list; + } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/HistoryIncludeParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/HistoryIncludeParameter.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/HistoryIncludeParameter.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -21,16 +21,29 @@ */ package org.jboss.shotoku.search; +import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.History; +import org.jboss.shotoku.Node; +import org.jboss.shotoku.NodeList; /** + * A search parameter which includes to the result all nodes from the + * history of a given node. * @author adamw - * TODO */ -public class HistoryIncludeParameter extends SearchParameter { - //private History history; +public class HistoryIncludeParameter implements SearchParameter { + private History history; public HistoryIncludeParameter(History history) { - //this.history = history; + this.history = history; } + + public HistoryIncludeParameter(Node node) { + history = node.getHistory(); + } + + public NodeList transform(NodeList list, ContentManager cm) { + list.addAll(history.getAllRevisions()); + return list; + } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/LimitParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/LimitParameter.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/LimitParameter.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -21,14 +21,23 @@ */ package org.jboss.shotoku.search; +import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.NodeList; + /** + * A search parameter which truncates the number of nodes in the result + * to the given parameter. * @author adamw - * TODO */ -public class LimitParameter extends SearchParameter { - //private int limit; +public class LimitParameter implements SearchParameter { + private int limit; public LimitParameter(int limit) { - //this.limit = limit; + this.limit = limit; } + + public NodeList transform(NodeList list, ContentManager cm) { + list.limit(limit); + return list; + } } Added: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/MultiBooleanNodeFilter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/MultiBooleanNodeFilter.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/MultiBooleanNodeFilter.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -0,0 +1,41 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.shotoku.search; + +import java.util.ArrayList; +import java.util.List; + +/** + * + * @author adamw + */ +public abstract class MultiBooleanNodeFilter extends BooleanNodeFilter { + protected List<BooleanNodeFilter> filters; + + public MultiBooleanNodeFilter() { + filters = new ArrayList<BooleanNodeFilter>(); + } + + public void addFilter(BooleanNodeFilter filter) { + filters.add(filter); + } +} Added: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/NodeFilter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/NodeFilter.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/NodeFilter.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -0,0 +1,50 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.shotoku.search; + +import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.Node; +import org.jboss.shotoku.NodeList; + +/** + * + * @author adamw + */ +public abstract class NodeFilter implements SearchParameter { + /** + * Filters the given node. + * @param node Node to filter. + * @return A node that should be included in the final result or null, + * if the nothing is to be included. + */ + public abstract Node filterNode(Node node); + + public NodeList transform(NodeList list, ContentManager cm) { + NodeList newList = new NodeList(); + for (Node n: list) { + Node newNode = filterNode(n); + if (newNode != null) newList.add(newNode); + } + + return newList; + } +} Added: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/OrNodeFilter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/OrNodeFilter.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/OrNodeFilter.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -0,0 +1,41 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.shotoku.search; + +import org.jboss.shotoku.Node; + +/** + * + * @author adamw + */ +public class OrNodeFilter extends MultiBooleanNodeFilter { + @Override + public boolean qualifyNode(Node node) { + for (BooleanNodeFilter filter : filters) { + if (filter.qualifyNode(node)) { + return true; + } + } + + return false; + } +} Added: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertyValueParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertyValueParameter.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/PropertyValueParameter.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -0,0 +1,46 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.shotoku.search; + +import org.jboss.shotoku.Node; + +/** + * @author adamw + */ +public class PropertyValueParameter extends BooleanNodeFilter { + private String propertyName; + private String propertyValue; + + public PropertyValueParameter(String name, String value) { + propertyName = name; + propertyValue = value; + } + + @Override + public boolean qualifyNode(Node node) { + String nodePropVal = node.getProperty(propertyName); + if (propertyValue == null) { + return nodePropVal == null; + } else + return propertyValue.equals(nodePropVal); + } +} Deleted: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/Qualificator.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/Qualificator.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/Qualificator.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -1,26 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2005, JBoss Inc., and individual contributors as indicated - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.jboss.shotoku.search; - -public interface Qualificator { - public boolean qualify(String propertyValue); -} Added: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/Search.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/Search.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/Search.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -0,0 +1,58 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.shotoku.search; + +import java.util.ArrayList; +import java.util.List; + +import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.NodeList; + +/** + * A class representing a search or a sub-search. + * @author adamw + */ +public class Search implements SearchParameter { + private List<SearchParameter> searchParametersStack; + + public Search() { + searchParametersStack = new ArrayList<SearchParameter>(); + } + + public void add(SearchParameter parameter) { + searchParametersStack.add(parameter); + } + + public NodeList perform(ContentManager cm) { + NodeList list = new NodeList(); + for (SearchParameter parameter : searchParametersStack) { + list = parameter.transform(list, cm); + } + + return list; + } + + public NodeList transform(NodeList list, ContentManager cm) { + list.addAll(perform(cm)); + return list; + } +} Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SearchParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SearchParameter.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SearchParameter.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -21,10 +21,12 @@ */ package org.jboss.shotoku.search; +import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.NodeList; + /** * @author adamw - * TODO */ -public class SearchParameter { - +public interface SearchParameter { + public NodeList transform(NodeList list, ContentManager cm); } Deleted: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SearchParameters.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SearchParameters.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SearchParameters.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -1,38 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2005, JBoss Inc., and individual contributors as indicated - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.jboss.shotoku.search; - -/** - * @author adamw - * TODO - */ -public class SearchParameters { - //private List<SearchParameter> searchParametersStack; - - public SearchParameters() { - //searchParametersStack = new ArrayList<SearchParameter>(); - } - - public void add(SearchParameter parameter) { - - } -} Deleted: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SimplePropertyValueParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SimplePropertyValueParameter.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SimplePropertyValueParameter.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -1,36 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2005, JBoss Inc., and individual contributors as indicated - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.jboss.shotoku.search; - -/** - * @author adamw - * TODO - */ -public class SimplePropertyValueParameter extends SearchParameter { - //private String propertyName; - //private String propertyValue; - - public SimplePropertyValueParameter(String name, String value) { - //propertyName = name; - //propertyValue = value; - } -} Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SortParameter.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SortParameter.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/search/SortParameter.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -23,16 +23,24 @@ import java.util.Comparator; +import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.Node; +import org.jboss.shotoku.NodeList; + /** + * A search parameter which sorts the result node list with the given + * comparator. * @author adamw - * TODO */ -public class SortParameter extends SearchParameter { - //private String propertyName; - //private Comparator comparator; +public class SortParameter implements SearchParameter { + private Comparator<Node> comparator; - public SortParameter(Comparator comparator, String name) { - //this.comparator = comparator; - //propertyName = name; + public SortParameter(Comparator<Node> comparator) { + this.comparator = comparator; } + + public NodeList transform(NodeList list, ContentManager cm) { + list.sort(comparator); + return list; + } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -29,7 +29,7 @@ import org.jboss.shotoku.NodeList; import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; -import org.jboss.shotoku.search.SearchParameters; +import org.jboss.shotoku.search.Search; /** * @author adamw @@ -145,7 +145,7 @@ } @Override - public NodeList search(SearchParameters parameters) { - throw new RuntimeException("Operation not yet implemented"); + public NodeList search(Search search) { + return search.perform(this); } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java 2005-11-07 09:28:06 UTC (rev 1522) +++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java 2005-11-07 11:06:39 UTC (rev 1523) @@ -1,7 +1,11 @@ package org.jboss.shotoku.test.servlet; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.io.PrintWriter; +import java.util.Calendar; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -9,12 +13,23 @@ import javax.servlet.http.HttpServletResponse; import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.Node; import org.jboss.shotoku.aop.Inject; public class ShotokuServlet extends HttpServlet { @Inject(prefix="shotoku-test") ContentManager test; + + @Inject(prefix="wiki-content") + ContentManager wikiCm; + private void readInputStream(InputStream is) throws IOException { + int b; + StringBuffer sb = new StringBuffer(); + while ((b = is.read()) != -1) + sb.append(b); + } + @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { @@ -28,6 +43,36 @@ //NodeList nl = new NodeList(); //pw.write(nl.getFeed("default/feeds/templates/hello-world.vm", null, new HashMap<String, Object>()).toString()); + + int processed; + + pw.write("Shotoku file read: <br />"); + long start = Calendar.getInstance().getTimeInMillis(); + processed = 0; + for (Node n : wikiCm.getRootDirectory().getNodes().toList()) { + readInputStream(wikiCm.getNode(n.getName()).getContentInputStream()); + processed++; + } + long stop = Calendar.getInstance().getTimeInMillis(); + pw.write("Time: " + (stop-start) + ", processed: " + processed); + pw.write("<br />"); + pw.write("<br />"); + + String pathPrefix = "/home/adamw/portal-content/wiki-content/"; + + pw.write("Normal file read: <br />"); + start = Calendar.getInstance().getTimeInMillis(); + String[] files = new File(pathPrefix).list(); + processed = 0; + for (String file : files) { + File f = new File(pathPrefix + file); + if (f.isFile()) { + readInputStream(new FileInputStream(f)); + processed++; + } + } + stop = Calendar.getInstance().getTimeInMillis(); + pw.write("Time: " + (stop-start) + ", processed: " + processed); } } |
From: <jbo...@li...> - 2005-11-07 09:28:12
|
Author: aron.gombas Date: 2005-11-07 04:28:06 -0500 (Mon, 07 Nov 2005) New Revision: 1522 Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ScrapingUtils.java Log: Warning fixed Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ScrapingUtils.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ScrapingUtils.java 2005-11-05 14:41:37 UTC (rev 1521) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ScrapingUtils.java 2005-11-07 09:28:06 UTC (rev 1522) @@ -21,7 +21,6 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.tmatesoft.svn.core.wc.SVNWCUtil; import org.w3c.dom.Document; import org.w3c.tidy.Tidy; |
From: <jbo...@li...> - 2005-11-05 14:41:46
|
Author: adamw Date: 2005-11-05 09:41:37 -0500 (Sat, 05 Nov 2005) New Revision: 1521 Modified: trunk/forge/portal-extensions/forge-file-access/project.xml Log: Missing libs added Modified: trunk/forge/portal-extensions/forge-file-access/project.xml =================================================================== --- trunk/forge/portal-extensions/forge-file-access/project.xml 2005-11-05 14:05:02 UTC (rev 1520) +++ trunk/forge/portal-extensions/forge-file-access/project.xml 2005-11-05 14:41:37 UTC (rev 1521) @@ -63,5 +63,23 @@ <version>1.0</version> <jar>javax.servlet.jar</jar> </dependency> + + <dependency> + <groupId>xerces</groupId> + <artifactId>xercesImpl</artifactId> + <version>2.6.2</version> + </dependency> + + <dependency> + <groupId>xerces</groupId> + <artifactId>xmlParserAPIs</artifactId> + <version>2.6.2</version> + </dependency> + + <dependency> + <groupId>xalan</groupId> + <artifactId>xalan</artifactId> + <version>2.6.0</version> + </dependency> </dependencies> </project> |
From: <jbo...@li...> - 2005-11-05 14:05:15
|
Author: szimano Date: 2005-11-05 09:05:02 -0500 (Sat, 05 Nov 2005) New Revision: 1520 Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java Log: shotoku tests Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java 2005-11-05 11:39:15 UTC (rev 1519) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java 2005-11-05 14:05:02 UTC (rev 1520) @@ -30,6 +30,7 @@ import java.io.OutputStream; import java.util.Date; import java.util.HashSet; +import java.util.List; import java.util.Properties; import java.util.Set; import java.util.TreeSet; @@ -37,6 +38,7 @@ import org.jboss.logging.Logger; import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Node; +import org.jboss.shotoku.NodeList; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; import org.jboss.wiki.exceptions.DataSourceException; import org.jboss.wiki.exceptions.PageRenamingException; @@ -56,6 +58,8 @@ private ContentManager contentManager = null; private final String propsName = "shotoku.properties"; + + private final String pageSuffix = ".txt"; public ShotokuDataSource() throws DataSourceException { Properties shotokuProps = new Properties(); @@ -93,29 +97,17 @@ } public WikiPage getPage(String pageName) { - StringBuffer pageContent = new StringBuffer(); - + try { - Node page = contentManager.getNode(pageName + ".txt"); + Node page = contentManager.getNode(pageName + pageSuffix); - InputStream is = page.getContentInputStream(); - - while (is.available() > 0) { - pageContent.append((char)is.read()); - } - - is.close(); - return new WikiPage(pageName, new SimpleCredentials("someone"), - pageContent.toString(), 1, 1, new Date(page + page.getContent(), page.getHistory().getRevisionsCount(), page.getHistory().getRevisionsCount(), new Date(page .getLastModfication()), wikiEngine, true, true); } catch (ResourceDoesNotExist e) { return null; } - catch (IOException ee) { - return null; - } } public boolean postGet() { @@ -156,8 +148,18 @@ } public Set<String> getAllPageNames() { - // TODO Auto-generated method stub - return null; + //TODO bleble + Set<String> ret = new TreeSet<String>(); + + List<Node> nodeList = contentManager.getDirectory("").getNodes().toList(); + + for (Node node : nodeList) { + if (node.getName().endsWith(pageSuffix)) { + ret.add(node.getName().substring(0, node.getName().length() - (pageSuffix.length()))); + } + } + + return ret; } public Set<String> getPagesFor(String pageName) { Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java 2005-11-05 11:39:15 UTC (rev 1519) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java 2005-11-05 14:05:02 UTC (rev 1520) @@ -50,6 +50,8 @@ Set<String> pages = wikiEngine.getAllPageNames(); + log.info("GOT PAGE NAMES"); + TreeMap<String, TreeSet<String>> sortedByDate = new TreeMap<String, TreeSet<String>>(); // get now date @@ -58,6 +60,7 @@ now.setTime(new Date()); for (String name : pages) { + log.info("getting page: " +name); WikiPage temp = wikiEngine.getByName(name, null); //log.debug("name: "+name+" "+temp.getName()); |
From: <jbo...@li...> - 2005-11-05 11:39:19
|
Author: adamw Date: 2005-11-05 06:39:15 -0500 (Sat, 05 Nov 2005) New Revision: 1519 Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNode.java Log: Mime types reading is now static Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNode.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNode.java 2005-11-04 23:59:52 UTC (rev 1518) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNode.java 2005-11-05 11:39:15 UTC (rev 1519) @@ -33,14 +33,16 @@ import org.jboss.shotoku.exceptions.RepositoryException; public abstract class SvnNode extends AbstractSvnResource implements Node { - private MimetypesFileTypeMap mimeTypes; + private static MimetypesFileTypeMap mimeTypes; + static { + mimeTypes = new MimetypesFileTypeMap( + SvnNode.class.getResourceAsStream("/mime-types.txt")); + } + public SvnNode(String id, String fullPath, File file, String name, SvnContentManager svnCm) { super(id, fullPath, file, name, svnCm); - - mimeTypes = new MimetypesFileTypeMap( - SvnNode.class.getResourceAsStream("/mime-types.txt")); } public History getHistory() { |
Author: szimano Date: 2005-11-04 18:59:52 -0500 (Fri, 04 Nov 2005) New Revision: 1518 Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/shotoku.properties trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/exceptions/DataSourceException.java Modified: trunk/forge/portal-extensions/jbosswiki/common.xml trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java Log: GetPage working with shotoku :) http://jira.jboss.com/jira/browse/JBWIKI-67 Modified: trunk/forge/portal-extensions/jbosswiki/common.xml =================================================================== --- trunk/forge/portal-extensions/jbosswiki/common.xml 2005-11-04 22:51:31 UTC (rev 1517) +++ trunk/forge/portal-extensions/jbosswiki/common.xml 2005-11-04 23:59:52 UTC (rev 1518) @@ -42,6 +42,24 @@ <version>1.0</version> <jar>portal-portlet-lib.jar</jar> </dependency> + + <dependency> + <groupId>shotoku</groupId> + <artifactId>shotoku-base</artifactId> + <version>1.0</version> + <jar>shotoku-base.jar</jar> + <properties> + <ejb.manifest.classpath>true</ejb.manifest.classpath> + </properties> + </dependency> + + <dependency> + <groupId>shotoku</groupId> + <artifactId>shotoku-aop</artifactId> + <version>1.0</version> + <jar>shotoku-aop.jar</jar> + </dependency> + </dependencies> <build> Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/shotoku.properties =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/shotoku.properties 2005-11-04 22:51:31 UTC (rev 1517) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/shotoku.properties 2005-11-04 23:59:52 UTC (rev 1518) @@ -0,0 +1,4 @@ +#Shotoku properties file + +# folder where wiki content is placed +shotokuPrefix = wiki-content/ Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java 2005-11-04 22:51:31 UTC (rev 1517) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java 2005-11-04 23:59:52 UTC (rev 1518) @@ -106,6 +106,15 @@ loadProperties(fileDSProps); + File mainWikiDir = new File(pathToMedia); + File attWikiDir = new File(pathToAttachments); + + if (!mainWikiDir.exists()) + mainWikiDir.mkdirs(); + + if (!attWikiDir.exists()) + attWikiDir.mkdirs(); + pageModProps = new Properties(); modFile = new File(pathToMedia + "/" + propModFileName); Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java 2005-11-04 22:51:31 UTC (rev 1517) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java 2005-11-04 23:59:52 UTC (rev 1518) @@ -0,0 +1,260 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.wiki; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Date; +import java.util.HashSet; +import java.util.Properties; +import java.util.Set; +import java.util.TreeSet; + +import org.jboss.logging.Logger; +import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.Node; +import org.jboss.shotoku.exceptions.ResourceDoesNotExist; +import org.jboss.wiki.exceptions.DataSourceException; +import org.jboss.wiki.exceptions.PageRenamingException; + +import sun.security.krb5.internal.p; + +/** + * <p> + * </p> + * + */ +public class ShotokuDataSource implements MediaDataSource, + AttachmentDataSource, WikiPageDictionary { + + private WikiEngine wikiEngine; + + private ContentManager contentManager = null; + + private final String propsName = "shotoku.properties"; + + public ShotokuDataSource() throws DataSourceException { + Properties shotokuProps = new Properties(); + + try { + shotokuProps.load(ShotokuDataSource.class.getResourceAsStream("/" + + propsName)); + + contentManager = ContentManager.getContentManager(shotokuProps + .getProperty("shotokuPrefix")); + + } catch (IOException e) { + throw new DataSourceException(e.getMessage()); + } + + } + + public boolean preSave() { + // TODO Auto-generated method stub + return false; + } + + public boolean savePage(String uid, WikiPage page, String languageCode) { + // TODO Auto-generated method stub + return false; + } + + public boolean postSave() { + // TODO Auto-generated method stub + return false; + } + + public boolean preGet() { + return true; + } + + public WikiPage getPage(String pageName) { + StringBuffer pageContent = new StringBuffer(); + + try { + Node page = contentManager.getNode(pageName + ".txt"); + + InputStream is = page.getContentInputStream(); + + while (is.available() > 0) { + pageContent.append((char)is.read()); + } + + is.close(); + + return new WikiPage(pageName, new SimpleCredentials("someone"), + pageContent.toString(), 1, 1, new Date(page + .getLastModfication()), wikiEngine, true, true); + + } catch (ResourceDoesNotExist e) { + return null; + } + catch (IOException ee) { + return null; + } + } + + public boolean postGet() { + return true; + } + + public WikiPage getPage(String pageName, String languageCode) { + // TODO Auto-generated method stub + return null; + } + + public WikiPage getPageAtVersion(WikiPage originPage, boolean loadContent, + String languageCode, int version) { + // TODO Auto-generated method stub + return null; + } + + public WikiPage getPageAtVersion(WikiPage originPage, boolean loadContent, + int version) { + // TODO Auto-generated method stub + return null; + } + + public boolean pageExists(String pageName) { + try { + contentManager.getNode(pageName+".txt"); + return true; + } + catch (ResourceDoesNotExist e) { + return false; + } + } + + public void getContentAtVersion(WikiPage page, boolean loadContent, + int version) { + // TODO Auto-generated method stub + + } + + public Set<String> getAllPageNames() { + // TODO Auto-generated method stub + return null; + } + + public Set<String> getPagesFor(String pageName) { + // TODO Auto-generated method stub + return new TreeSet<String>(); + } + + public int getPageMod(String pageName) { + // TODO Auto-generated method stub + return 0; + } + + public void setPageMod(String pageName, int mods) { + // TODO Auto-generated method stub + + } + + public boolean deletePage(String pageName) { + // TODO Auto-generated method stub + return false; + } + + public void setWikiEngine(WikiEngine wikiEngine) { + this.wikiEngine = wikiEngine; + } + + public void addAttachment(File attFile, String attName, WikiPage page, + String user) { + // TODO Auto-generated method stub + + } + + public Set<String> getAttachmentsSet(WikiPage page) { + // TODO Auto-generated method stub + return null; + } + + public WikiAttachment getAttachment(String pageName, String attachmentName) { + // TODO Auto-generated method stub + return null; + } + + public WikiAttachment getAttachment(String pageName, String attachmentName, + int version) { + // TODO Auto-generated method stub + return null; + } + + public int getLastAttachmentVersion(String pageName, String attachmentName) { + // TODO Auto-generated method stub + return 0; + } + + public long getAttachmentSize(String pageName, String attachmentName, + int version) { + // TODO Auto-generated method stub + return 0; + } + + public boolean deleteAttachment(String pageName, String attachmentName) { + // TODO Auto-generated method stub + return false; + } + + public boolean deleteAttachments(String pageName) { + // TODO Auto-generated method stub + return false; + } + + public String getRealName(String uid) { + // TODO Auto-generated method stub + return null; + } + + public String getUid(String realName) { + // TODO Auto-generated method stub + return null; + } + + public void rename(String uid, String newName) throws PageRenamingException { + // TODO Auto-generated method stub + + } + + public boolean uidInDictionary(String uid) { + // TODO Auto-generated method stub + return false; + } + + public boolean realNameInDictionary(String realName) { + // TODO Auto-generated method stub + return false; + } + + public void removeDictForPage(String uid) throws PageRenamingException { + // TODO Auto-generated method stub + + } + +} Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/exceptions/DataSourceException.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/exceptions/DataSourceException.java 2005-11-04 22:51:31 UTC (rev 1517) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/exceptions/DataSourceException.java 2005-11-04 23:59:52 UTC (rev 1518) @@ -0,0 +1,12 @@ +package org.jboss.wiki.exceptions; + +public class DataSourceException extends WikiException { + /** + * + */ + private static final long serialVersionUID = 1L; + + public DataSourceException(String msg) { + super(msg); + } +} |
From: <jbo...@li...> - 2005-11-04 22:51:37
|
Author: adamw Date: 2005-11-04 17:51:31 -0500 (Fri, 04 Nov 2005) New Revision: 1517 Modified: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java Log: http://jira.jboss.com/jira/browse/JBLAB-408 : feed sorting Modified: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java 2005-11-04 21:51:42 UTC (rev 1516) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java 2005-11-04 22:51:31 UTC (rev 1517) @@ -27,6 +27,8 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -119,7 +121,7 @@ // Creating the maps that will hold the feeds. feeds = new HashMap<String, Map<String, Feed>>(); - feedGroups = new HashMap<String, Set<String>>(); + feedGroups = new LinkedHashMap<String, Set<String>>(); feedDisplayNames = new HashMap<String, String>(); // Preparing maps which will hold feed definitions. @@ -387,7 +389,7 @@ Node n; NodeList nodes = root.getChildNodes(); - Set<String> feedGroup = new HashSet<String>(); + Set<String> feedGroup = new LinkedHashSet<String>(); feedGroups.put(XmlTools.getAttributeValue(root, "display-name"), feedGroup); Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java 2005-11-04 21:51:42 UTC (rev 1516) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java 2005-11-04 22:51:31 UTC (rev 1517) @@ -24,6 +24,7 @@ import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.jboss.shotoku.Directory; @@ -43,16 +44,21 @@ List<Node> ret = new ArrayList<Node>(); try { + String[] list = + new File(service.getFileSystemPath(id, fullPath + )).list(new FilenameFilter() { + public boolean accept(File dir, String name) { + if (new File(dir.getAbsolutePath() + File.separator + name) + .isDirectory()) + return false; + return true; + } + }); + + Arrays.sort(list); + // Filtering files from this directory and adding them. - for (String node : new File(service.getFileSystemPath(id, - fullPath)).list(new FilenameFilter() { - public boolean accept(File dir, String name) { - if (new File(dir.getAbsolutePath() + File.separator + name) - .isDirectory()) - return false; - return true; - } - })) { + for (String node : list) { String childFullPath = fullPath + '/' + node; ret.add(new SvnHeadNode(id, childFullPath, new File(service .getFileSystemPath(id, childFullPath)), node, svnCm)); @@ -69,17 +75,21 @@ try { // Filtering directories from this directory and adding them. - for (String directory : new File(service.getFileSystemPath(id, + String[] list = new File(service.getFileSystemPath(id, fullPath)).list(new FilenameFilter() { - public boolean accept(File dir, String name) { - if (name.equals(".svn")) - return false; - if (new File(dir.getAbsolutePath() + File.separator + name) - .isDirectory()) - return true; - return false; - } - })) { + public boolean accept(File dir, String name) { + if (name.equals(".svn")) + return false; + if (new File(dir.getAbsolutePath() + File.separator + name) + .isDirectory()) + return true; + return false; + } + }); + + Arrays.sort(list); + + for (String directory : list) { String childFullPath = fullPath + '/' + directory; ret.add(new SvnDirectory(id, childFullPath, new File(service .getFileSystemPath(id, childFullPath)), directory, |
Author: adamw Date: 2005-11-04 16:51:42 -0500 (Fri, 04 Nov 2005) New Revision: 1516 Modified: trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn-cli.jar trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn-javahl.jar trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn.jar trunk/forge/portal-extensions/forge-feeds/project.xml trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java trunk/forge/portal-extensions/forge-service/project.xml trunk/forge/portal-extensions/maven.xml Log: http://jira.jboss.com/jira/browse/JBLAB-408 : Minor improvements New tmate binaries. Modified: trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn-cli.jar =================================================================== (Binary files differ) Modified: trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn-javahl.jar =================================================================== (Binary files differ) Modified: trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn.jar =================================================================== (Binary files differ) Modified: trunk/forge/portal-extensions/forge-feeds/project.xml =================================================================== --- trunk/forge/portal-extensions/forge-feeds/project.xml 2005-11-04 19:54:46 UTC (rev 1515) +++ trunk/forge/portal-extensions/forge-feeds/project.xml 2005-11-04 21:51:42 UTC (rev 1516) @@ -33,17 +33,11 @@ <dependency> <id>jdom</id> <version>1.0</version> - <properties> - <war.bundle>true</war.bundle> - </properties> </dependency> <dependency> <id>rome</id> <version>0.7</version> - <properties> - <war.bundle>true</war.bundle> - </properties> </dependency> <dependency> @@ -57,6 +51,26 @@ </dependency> <dependency> + <groupId>taglibs</groupId> + <artifactId>jstl</artifactId> + <version>1.0</version> + <jar>jstl.jar</jar> + <properties> + <war.bundle>true</war.bundle> + </properties> + </dependency> + + <dependency> + <groupId>taglibs</groupId> + <artifactId>standard</artifactId> + <version>1.0</version> + <jar>standard.jar</jar> + <properties> + <war.bundle>true</war.bundle> + </properties> + </dependency> + + <dependency> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> <version>2.6.2</version> Modified: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java 2005-11-04 19:54:46 UTC (rev 1515) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java 2005-11-04 21:51:42 UTC (rev 1516) @@ -331,6 +331,8 @@ } private void fillContext() { + String[] allFeedTypes = FeedFactory.getAllFeedTypes(); + context = new DelegateContext(); for (String feedGroup : feedGroups.keySet()) { Set<String> feedsInGroup = feedGroups.get(feedGroup); @@ -346,10 +348,15 @@ DelegateContext feedContext = groupContext.next("feeds"); feedContext.put("name", feedDisplayNames.get(feedName)); - for (String feedType : feedTypes.keySet()) { + Set availableTypes = feedTypes.keySet(); + for (String feedType : allFeedTypes) { DelegateContext typeContext = feedContext.next("types"); - typeContext.put("name", feedType); - typeContext.put("link", generateFeedLink(false, feedName, feedType)); + + if (availableTypes.contains(feedType)) { + typeContext.next("feed"); + typeContext.put("name", feedType); + typeContext.put("link", generateFeedLink(false, feedName, feedType)); + } } } } Modified: trunk/forge/portal-extensions/forge-service/project.xml =================================================================== --- trunk/forge/portal-extensions/forge-service/project.xml 2005-11-04 19:54:46 UTC (rev 1515) +++ trunk/forge/portal-extensions/forge-service/project.xml 2005-11-04 21:51:42 UTC (rev 1516) @@ -53,9 +53,29 @@ </properties> </dependency> + <dependency> + <groupId>taglibs</groupId> + <artifactId>jstl</artifactId> + <version>1.0</version> + <jar>jstl.jar</jar> + <properties> + <ejb.manifest.classpath>true</ejb.manifest.classpath> + </properties> + </dependency> + + <dependency> + <groupId>taglibs</groupId> + <artifactId>standard</artifactId> + <version>1.0</version> + <jar>standard.jar</jar> + <properties> + <ejb.manifest.classpath>true</ejb.manifest.classpath> + </properties> + </dependency> + <dependency> <id>rome</id> - <version>0.5</version> + <version>0.7</version> <properties> <ejb.manifest.classpath>true</ejb.manifest.classpath> </properties> Modified: trunk/forge/portal-extensions/maven.xml =================================================================== --- trunk/forge/portal-extensions/maven.xml 2005-11-04 19:54:46 UTC (rev 1515) +++ trunk/forge/portal-extensions/maven.xml 2005-11-04 21:51:42 UTC (rev 1516) @@ -64,22 +64,12 @@ <!-- Copying the dependency JARs --> <ant:copy todir="${forge.ear.dir}/target/${forge.ear.name}" - file="${maven.repo.local}/rome/jars/rome-0.5.jar" + file="${maven.repo.local}/rome/jars/rome-0.7.jar" overwrite="true" /> <ant:copy todir="${forge.ear.dir}/target/${forge.ear.name}" file="${maven.repo.local}/jdom/jars/jdom-1.0.jar" overwrite="true" /> - <!--<ant:copy todir="${forge.ear.dir}/target/${forge.ear.name}" flatten="true" overwrite="true"> - <ant:fileset dir="${maven.repo.local}/tmate/jars"> - <ant:filename name="*.jar" /> - </ant:fileset> - </ant:copy>--> - <!--<ant:copy todir="${forge.ear.dir}/target/${forge.ear.name}" flatten="true" overwrite="true"> - <ant:fileset dir="${maven.repo.local}/shotoku/jars"> - <ant:filename name="*.jar" /> - </ant:fileset> - </ant:copy>--> <!-- Deploying the ear --> <ant:copy todir="${local.deploy.dir}" overwrite="true"> |
From: <jbo...@li...> - 2005-11-04 19:54:56
|
Author: aron.gombas Date: 2005-11-04 14:54:46 -0500 (Fri, 04 Nov 2005) New Revision: 1515 Modified: trunk/labs/kosmos/xdocs/reference/reference-manual.xml Log: Almost-empty section added for eXo Modified: trunk/labs/kosmos/xdocs/reference/reference-manual.xml =================================================================== --- trunk/labs/kosmos/xdocs/reference/reference-manual.xml 2005-11-04 19:52:56 UTC (rev 1514) +++ trunk/labs/kosmos/xdocs/reference/reference-manual.xml 2005-11-04 19:54:46 UTC (rev 1515) @@ -849,6 +849,36 @@ <section> + <title>Deployment step-by-step for Apache Tomcat and eXo Platform</title> + + <para> + + Follow these steps: + <orderedlist> + + <listitem> + + <para>TODO write all the deployment steps</para> + + </listitem> + + <listitem> + + <para>Lauch eXo, open the default portal page + (e.g. <literal>http://localhost:8080/portal</literal>), and + login with the default account (<literal>admin</literal> + and <literal>exo</literal>).</para> + + </listitem> + + </orderedlist> + + </para> + + </section> + + <section> + <title>Deployment step-by-step for Apache Tomcat and Gridsphere</title> <para> |
From: <jbo...@li...> - 2005-11-04 19:53:06
|
Author: aron.gombas Date: 2005-11-04 14:52:56 -0500 (Fri, 04 Nov 2005) New Revision: 1514 Added: trunk/labs/kosmos/conf-portlet/exo/ trunk/labs/kosmos/conf-portlet/exo/web.xml Removed: trunk/labs/kosmos/conf-portlet/sun-portal-server/ Log: eXo config added, Sun removed Added: trunk/labs/kosmos/conf-portlet/exo/web.xml =================================================================== --- trunk/labs/kosmos/conf-portlet/exo/web.xml 2005-11-04 17:54:21 UTC (rev 1513) +++ trunk/labs/kosmos/conf-portlet/exo/web.xml 2005-11-04 19:52:56 UTC (rev 1514) @@ -0,0 +1,41 @@ +<?xml version="1.0"?> + +<!DOCTYPE web-app + PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" + "http://java.sun.com/dtd/web-app_2_3.dtd"> +<web-app> + + <display-name>Kosmos Portlet</display-name> + <description>Kosmos is a portlet-based web application. It can run only inside a portlet container.</description> + + <!-- JSTL configuration --> + <context-param> + <param-name>javax.servlet.jsp.jstl.fmt.locale</param-name> + <param-value>en</param-value> + </context-param> + + <!-- eXo-specific parts --> + <listener> + <listener-class>org.exoplatform.services.portletcontainer.impl.servlet.PortletApplicationListener</listener-class> + </listener> + + <servlet> + <servlet-name>PortletWrapper</servlet-name> + <servlet-class>org.exoplatform.services.portletcontainer.impl.servlet.ServletWrapper</servlet-class> + </servlet> + + <servlet-mapping> + <servlet-name>PortletWrapper</servlet-name> + <url-pattern>/PortletWrapper</url-pattern> + </servlet-mapping> + + <!-- JSP configuration --> + <taglib> + <taglib-uri>http://labs.jboss.com/projects/kosmos</taglib-uri> + <taglib-location>/WEB-INF/tld/kosmos-taglib.tld</taglib-location> + </taglib> + <taglib> + <taglib-uri>http://displaytag.sf.net/el</taglib-uri> + <taglib-location>/WEB-INF/tld/displaytag-el-12.tld</taglib-location> + </taglib> +</web-app> |
Author: unibrew Date: 2005-11-04 12:54:21 -0500 (Fri, 04 Nov 2005) New Revision: 1513 Added: trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/DownloadCounter.java trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/ trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterPortlet.java trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterTools.java trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-app.xml trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-portlet.xml trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-service.xml trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-web.xml trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/portlet-instances.xml trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/portlet.xml trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/tld/portlet.tld Modified: trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/web.xml Log: [JBLAB-263] DownloadCounter sources. Added: trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/DownloadCounter.java =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/DownloadCounter.java 2005-11-04 17:52:25 UTC (rev 1512) +++ trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/DownloadCounter.java 2005-11-04 17:54:21 UTC (rev 1513) @@ -0,0 +1,163 @@ + + /* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.jboss.forge.fileaccess; + +import java.io.File; +import java.io.InputStream; + +import org.apache.xerces.parsers.DOMParser; +import org.jboss.forge.common.XmlTools; +import org.jboss.forge.common.projects.DomToXmlTransformer; +import org.jboss.forge.common.projects.ProjectsHelper; +import org.jboss.shotoku.ContentManager; +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; + +public class DownloadCounter { + + // Name the main xml file containing download counter data. + public static final String DOWNLOADCOUNTER_FILE="counters.xml"; + + // Name of tag in counters.xml containing counter value. + public static final String VALUE = "value"; + + // Name of tag in counters.xml containing counter link. + public static final String LINK = "link"; + + // Name of tag in counters.xml containing counter. + public static final String COUNTER = "counter"; + + synchronized public static void increment (String link,ContentManager contentManager) { + if (link==null) { + return; + } + String portalName = resolvePortalName(link); + + link = File.separator + link; + + String pathToCountersXml = File.separator + portalName + File.separator + + ProjectsHelper.MEMBERS_DIR + File.separator + DOWNLOADCOUNTER_FILE; + + try { + DOMParser parser = new DOMParser(); + + // Getting stream of counters.xml file. + InputStream is = contentManager.getNode(pathToCountersXml).getContentInputStream(); + parser.parse(new InputSource(is)); + Document doc = parser.getDocument(); + NodeList nodes = doc.getDocumentElement().getChildNodes(); + + // This variable will reference Node containing counter for searched link. + Node linkNode = findLinkNode (nodes, link); + + // If the linkNode variable isn't NULL it means that we count this link and should increment it. + if (linkNode!=null) { + NodeList linkNodeChildren=linkNode.getChildNodes(); + Node tempNode = null; + for (int i=0;i<linkNodeChildren.getLength();i++) { + tempNode = linkNodeChildren.item(i); + if (tempNode.getNodeType()== Node.ELEMENT_NODE){ + + // Searching for VALUE node to change its value. + + if (tempNode.getNodeName().equals(VALUE)) { + String nodeTextCnt = XmlTools.unmarshallText(tempNode); + if (nodeTextCnt!=null && !nodeTextCnt.equals("")) { + long value = 1; + try { + // Trying to get the old value from the node. + value = Long.valueOf(nodeTextCnt) + 1; + } catch (NumberFormatException e) { + System.out.println ("[DownloadCounter] Incorrect "+DOWNLOADCOUNTER_FILE+" syntax."); + e.printStackTrace(); + } + NodeList content = tempNode.getChildNodes(); + for (int j=0;j<content.getLength();j++) { + if (content.item(j).getNodeType() == Node.TEXT_NODE){ + // Setting the new node value. + content.item(j).setNodeValue(Long.toString(value)); + break; + } else { + // Removing some inapropriate content of this node. + tempNode.removeChild(content.item(j)); + } + } + } else { + // Situation when the VALUE node is empty + Node newValueText = doc.createTextNode("1"); + tempNode.appendChild(newValueText); + } + break; + } + } + } + DomToXmlTransformer xht = new DomToXmlTransformer(); + String xmlString = xht.transformNode(doc.getDocumentElement()); + // Saving the updated xml. + org.jboss.shotoku.Node xmlFile = contentManager.getNode(pathToCountersXml); + xmlFile.setContent(xmlString); + xmlFile.save ("[DownlaodCounter] Main xml descriptor file update."); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * Method used to resolve portal name to which the download link aims. + * @param link + * @return + */ + private static String resolvePortalName (String link) { + return link.split(File.separator)[0]; + } + + private static Node findLinkNode (NodeList nodes, String link) { + + // Temporary variables used for parsing. + Node n=null,property=null; + + for (int i = 0; i < nodes.getLength(); i++) { + n = nodes.item(i); + if (n.getNodeType() == Node.ELEMENT_NODE) { + if (n.getNodeName().equals(COUNTER)) { + NodeList counterProps = n.getChildNodes(); + for (int j=0;j< counterProps.getLength() ; j++) { + property = counterProps.item(j); + if (property.getNodeType()== Node.ELEMENT_NODE){ + String nodeTextCnt = XmlTools.unmarshallText(property); + if (property.getNodeName().equals(LINK) && nodeTextCnt != null && nodeTextCnt.trim().equals(link)) { + return n; + } + } + } + } + } + } + return null; + } + +} Modified: trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java 2005-11-04 17:52:25 UTC (rev 1512) +++ trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java 2005-11-04 17:54:21 UTC (rev 1513) @@ -75,7 +75,7 @@ private ContentManager contentManager; public void init(FilterConfig conf) { - + } private void checkResource(String resource) throws Exception { @@ -94,7 +94,6 @@ || (toCheck.indexOf(DOWNLOADS_ACCESS) != -1) || (toCheck.indexOf(KOSMOS_CACHE_ACCESS) != -1) || (toCheck.indexOf(FREEZONE_ACCESS) != -1)) { - // Allowing access to images, downloads and docs } else // Not images, nor downloads - wrong request. throw new Exception(); @@ -120,7 +119,13 @@ try { // Checking if we can allow access to this resource. checkResource(requestedRes); - + + if (requestedRes.indexOf(DOWNLOADS_ACCESS)!=-1) { + // Sending the request to the DownloadCounter to increment + // counter for this link if it's one of the tracked links. + DownloadCounter.increment(requestedRes,contentManager); + } + Node requestedNode = contentManager.getNode(requestedRes); String mimeType = requestedNode.getMimeType(); Added: trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterPortlet.java =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterPortlet.java 2005-11-04 17:52:25 UTC (rev 1512) +++ trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterPortlet.java 2005-11-04 17:54:21 UTC (rev 1513) @@ -0,0 +1,78 @@ + + /* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.jboss.forge.fileaccess.portlet; + + +import java.io.IOException; + +import javax.portlet.PortletException; +import javax.portlet.PortletRequestDispatcher; + +import org.jboss.forge.common.ForgeHelper; +import org.jboss.forge.common.projects.ProjectsHelper; +import org.jboss.portal.common.context.DelegateContext; +import org.jboss.portal.core.servlet.jsp.PortalJsp; +import org.jboss.portlet.JBossPortlet; +import org.jboss.portlet.JBossRenderRequest; +import org.jboss.portlet.JBossRenderResponse; +import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.aop.Inject; + +/** + * @author Ryszard Kozmik + * Downlaod Counter portlet. + */ +public class DownloadCounterPortlet extends JBossPortlet { + + @Inject + private ContentManager contentManager; + + public void doView(JBossRenderRequest request, JBossRenderResponse response) + throws IOException, PortletException { + + // Getting name of the project on which the download counter is used. + //String projectId = (String)request.getAttribute("project"); + String projectId = ProjectsHelper.getSelectedProjectId(request); + + ProjectsHelper.prepareRequest(request); + response.setContentType("text/html"); + String portalName = ForgeHelper.getPortalName(request); + + DelegateContext context = null; + try { + context = DownloadCounterTools.getContext(portalName,projectId,contentManager); + // Adding content context to request for JSP file. + request.setAttribute(PortalJsp.CTX_REQUEST, context); + } catch (Exception e) { + e.printStackTrace(); + throw new PortletException(e); + } + + PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher( + ForgeHelper.createRepoAccessPath(portalName,DownloadCounterTools.getJspCmPath())); + rd.include(request, response); + } + + +} Added: trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterTools.java =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterTools.java 2005-11-04 17:52:25 UTC (rev 1512) +++ trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterTools.java 2005-11-04 17:54:21 UTC (rev 1513) @@ -0,0 +1,130 @@ + + /* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.jboss.forge.fileaccess.portlet; + +import java.io.File; +import java.io.InputStream; +import java.util.Hashtable; +import java.util.Map; + +import org.apache.xerces.parsers.DOMParser; +import org.jboss.forge.common.XmlTools; +import org.jboss.forge.common.projects.ProjectsHelper; +import org.jboss.forge.fileaccess.DownloadCounter; +import org.jboss.portal.common.context.DelegateContext; +import org.jboss.shotoku.ContentManager; +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; + +public class DownloadCounterTools { + + public static final String FORGE_FILE_ACCESS_DIR="file-access"; + public static final String DOWNLOADCOUNTER_JSP="normal.jsp"; + + public static DelegateContext getContext (String portalName,String projectId,ContentManager contentManager) throws Exception { + + // If the projectId is null method returns empty DelegateContext object. + if (projectId==null) { + return new DelegateContext(); + } + + String pathToCountersXml = File.separator + portalName + File.separator + + ProjectsHelper.MEMBERS_DIR + File.separator + DownloadCounter.DOWNLOADCOUNTER_FILE; + + DOMParser parser = new DOMParser(); + + // Getting stream of counters.xml file. + InputStream is = contentManager.getNode(pathToCountersXml).getContentInputStream(); + parser.parse(new InputSource(is)); + Document doc = parser.getDocument(); + NodeList nodes = doc.getDocumentElement().getChildNodes(); + + // This Map will contain links as map keys and, counter values as map values. + Map<String,String> values = getValuesFromNodes (nodes); + + // Filling the context for portlet. + DelegateContext ctx = new DelegateContext(); + for (String keyLink:values.keySet()) { + // Getting project ID from the counter + String counterProjectId = null; + if (keyLink.split(File.separator).length>=4) + counterProjectId = keyLink.split(File.separator)[3]; + if (counterProjectId!=null && counterProjectId.compareTo(projectId)==0) { + DelegateContext counter = ctx.next("counter"); + String fileName = keyLink.split(File.separator)[keyLink.split(File.separator).length-1]; + counter.put("link",fileName); + counter.put("value",values.get(keyLink)); + } + } + return ctx; + } + + /** + * Method used for pulling the links and counter values out from the + * xml file nodes to the <String,String> Map. + * @param nodes + * @return + */ + private static Map<String,String> getValuesFromNodes (NodeList nodes) { + Map<String,String> values = new Hashtable<String,String>(); + + // Temporary variables used for parsing. + Node n=null,property=null; + + // Parsing main Download Counter descriptor. + for (int i = 0; i < nodes.getLength(); i++) { + n = nodes.item(i); + if (n.getNodeType() == Node.ELEMENT_NODE) { + if (n.getNodeName().equals(DownloadCounter.COUNTER)) { + NodeList counterProps = n.getChildNodes(); + String tempLink = null; + String tempValue = null; + for (int j=0;j< counterProps.getLength() ; j++) { + property = counterProps.item(j); + if (property.getNodeType()== Node.ELEMENT_NODE){ + String nodeTextCnt = XmlTools.unmarshallText(property); + if (property.getNodeName().equals("link") && nodeTextCnt != null && !nodeTextCnt.trim().equals("")) { + tempLink = nodeTextCnt.trim(); + } else if (property.getNodeName().equals("value") && nodeTextCnt !=null && !nodeTextCnt.trim().equals("")) { + tempValue = nodeTextCnt.trim(); + } + } + } + if (tempLink!=null && tempValue!=null) { + values.put(tempLink,tempValue); + } + } + } + } + return values; + } + + + public static String getJspCmPath() { + return FORGE_FILE_ACCESS_DIR + File.separator + DOWNLOADCOUNTER_JSP; + } + +} \ No newline at end of file Added: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-app.xml =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-app.xml 2005-11-04 17:52:25 UTC (rev 1512) +++ trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-app.xml 2005-11-04 17:54:21 UTC (rev 1513) @@ -0,0 +1,3 @@ +<jboss-app> + <app-name>counter</app-name> +</jboss-app> Property changes on: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-app.xml ___________________________________________________________________ Name: svn:executable + * Added: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-portlet.xml 2005-11-04 17:52:25 UTC (rev 1512) +++ trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-portlet.xml 2005-11-04 17:54:21 UTC (rev 1513) @@ -0,0 +1,6 @@ +<portlet-app> + <portlet> + <portlet-name>DownloadCounterPortlet</portlet-name> + <security></security> + </portlet> +</portlet-app> Property changes on: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-portlet.xml ___________________________________________________________________ Name: svn:executable + * Added: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-service.xml =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-service.xml 2005-11-04 17:52:25 UTC (rev 1512) +++ trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-service.xml 2005-11-04 17:54:21 UTC (rev 1513) @@ -0,0 +1,2 @@ +<server> +</server> Property changes on: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-service.xml ___________________________________________________________________ Name: svn:executable + * Added: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-web.xml =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-web.xml 2005-11-04 17:52:25 UTC (rev 1512) +++ trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-web.xml 2005-11-04 17:54:21 UTC (rev 1513) @@ -0,0 +1,3 @@ +<?xml version="1.0"?> +<jboss-web> +</jboss-web> Property changes on: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/jboss-web.xml ___________________________________________________________________ Name: svn:executable + * Added: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/portlet-instances.xml =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/portlet-instances.xml 2005-11-04 17:52:25 UTC (rev 1512) +++ trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/portlet-instances.xml 2005-11-04 17:54:21 UTC (rev 1513) @@ -0,0 +1,7 @@ +<?xml version="1.0" standalone="yes"?> +<instances> + <instance> + <instance-name>DownloadCounterPortletInstance</instance-name> + <component-ref>DownloadCounterPortlet</component-ref> + </instance> +</instances> Property changes on: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/portlet-instances.xml ___________________________________________________________________ Name: svn:executable + * Added: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/portlet.xml =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/portlet.xml 2005-11-04 17:52:25 UTC (rev 1512) +++ trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/portlet.xml 2005-11-04 17:54:21 UTC (rev 1513) @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd /opt/SUNWps/dtd/portlet.xsd" version="1.0"> + <portlet> + <portlet-name>DownloadCounterPortlet</portlet-name> + <portlet-class>org.jboss.forge.fileaccess.portlet.DownloadCounterPortlet</portlet-class> + <supported-locale>en</supported-locale> + <supports> + <mime-type>text/html</mime-type> + <portlet-mode>VIEW</portlet-mode> + </supports> + <portlet-info> + <title>JBoss Download Counter Portlet</title> + </portlet-info> + </portlet> +</portlet-app> Property changes on: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/portlet.xml ___________________________________________________________________ Name: svn:executable + * Added: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/tld/portlet.tld =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/tld/portlet.tld 2005-11-04 17:52:25 UTC (rev 1512) +++ trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/tld/portlet.tld 2005-11-04 17:54:21 UTC (rev 1513) @@ -0,0 +1,156 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + JBoss, the OpenSource J2EE webOS + Distributable under LGPL license. + See terms of license at gnu.org. + --> +<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> + +<taglib> + + <tlib-version>1.0</tlib-version> + <jsp-version>1.2</jsp-version> + <short-name>portlet</short-name> + + <uri>http://java.sun.com/portlet</uri> + + <tag> + + <name>param</name> + <tag-class>org.jboss.portal.portlet.taglib.URLParameterTag</tag-class> + <body-content>empty</body-content> + + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + + </attribute> + <attribute> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + + </attribute> + </tag> + <function> + <name>i18n</name> + <function-class>org.jboss.portal.core.servlet.jsp.taglib.PortalLib</function-class> + <function-signature>java.lang.String getMessage(java.lang.String)</function-signature> + </function> + + <function> + <name>out</name> + <function-class>org.jboss.portal.core.servlet.jsp.taglib.PortalLib</function-class> + <function-signature>java.lang.String out(java.lang.String)</function-signature> + </function> + + <function> + <name>i18nout</name> + <function-class>org.jboss.portal.core.servlet.jsp.taglib.PortalLib</function-class> + <function-signature>java.lang.String i18nOut(java.lang.String)</function-signature> + </function> + + <tag> + <name>if</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.IfTag</tagclass> + <attribute> + <name>ctx</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>iterate</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.IterateTag</tagclass> + <attribute> + <name>ctx</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>include</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.IncludeTag</tagclass> + <attribute> + <name>page</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + + <name>defineObjects</name> + <tag-class>org.jboss.portal.portlet.taglib.DefineObjectsTag</tag-class> + <tei-class>org.jboss.portal.portlet.taglib.DefineObjectsTagTEI</tei-class> + <body-content>empty</body-content> + + </tag> + <tag> + + <name>namespace</name> + <tag-class>org.jboss.portal.portlet.taglib.NamespaceTag</tag-class> + <body-content>empty</body-content> + + </tag> + <tag> + + <name>renderURL</name> + <tag-class>org.jboss.portal.portlet.taglib.RenderURLTag</tag-class> + <tei-class>org.jboss.portal.portlet.taglib.GenerateURLTagTEI</tei-class> + <body-content>JSP</body-content> + + <attribute> + <name>portletMode</name> + <rtexprvalue>true</rtexprvalue> + + </attribute> + <attribute> + <name>secure</name> + <rtexprvalue>true</rtexprvalue> + + </attribute> + <attribute> + <name>var</name> + <rtexprvalue>true</rtexprvalue> + + </attribute> + <attribute> + <name>windowState</name> + <rtexprvalue>true</rtexprvalue> + + </attribute> + </tag> + <tag> + + <name>actionURL</name> + <tag-class>org.jboss.portal.portlet.taglib.ActionURLTag</tag-class> + <tei-class>org.jboss.portal.portlet.taglib.GenerateURLTagTEI</tei-class> + <body-content>JSP</body-content> + + <attribute> + <name>portletMode</name> + <rtexprvalue>true</rtexprvalue> + + </attribute> + <attribute> + <name>secure</name> + <rtexprvalue>true</rtexprvalue> + + </attribute> + <attribute> + <name>var</name> + <rtexprvalue>true</rtexprvalue> + + </attribute> + <attribute> + <name>windowState</name> + <rtexprvalue>true</rtexprvalue> + + </attribute> + </tag> + +</taglib> Property changes on: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/tld/portlet.tld ___________________________________________________________________ Name: svn:executable + * Modified: trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/web.xml =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/web.xml 2005-11-04 17:52:25 UTC (rev 1512) +++ trunk/forge/portal-extensions/forge-file-access/src/web/WEB-INF/web.xml 2005-11-04 17:54:21 UTC (rev 1513) @@ -13,4 +13,14 @@ <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> -</web-app> \ No newline at end of file + <filter> + <filter-name>filesFromRepoFilter</filter-name> + <filter-class>org.jboss.forge.common.FilesFromRepoFilter</filter-class> + </filter> + + <filter-mapping> + <filter-name>filesFromRepoFilter</filter-name> + <url-pattern>/repo-access/*</url-pattern> + <dispatcher>INCLUDE</dispatcher> + </filter-mapping> +</web-app> |
From: <jbo...@li...> - 2005-11-04 17:52:46
|
Author: unibrew Date: 2005-11-04 12:52:25 -0500 (Fri, 04 Nov 2005) New Revision: 1512 Added: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterDescriptor.java Modified: trunk/forge/portal-extensions/forge-common/project.xml trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectDescriptor.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java Log: [JBLAB-263] DownloadCounter sources for descriptor parsing. Modified: trunk/forge/portal-extensions/forge-common/project.xml =================================================================== --- trunk/forge/portal-extensions/forge-common/project.xml 2005-11-04 17:48:52 UTC (rev 1511) +++ trunk/forge/portal-extensions/forge-common/project.xml 2005-11-04 17:52:25 UTC (rev 1512) @@ -44,7 +44,7 @@ <version>1.0</version> <jar>javax.servlet.jsp.jar</jar> </dependency> - + <dependency> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> Added: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterDescriptor.java 2005-11-04 17:48:52 UTC (rev 1511) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterDescriptor.java 2005-11-04 17:52:25 UTC (rev 1512) @@ -0,0 +1,174 @@ + + /* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.jboss.forge.common.projects; + +import java.io.File; +import java.io.IOException; +import java.util.LinkedList; +import java.util.List; + +import javax.xml.transform.TransformerException; + +import org.apache.xerces.parsers.DOMParser; +import org.jboss.forge.common.XmlTools; +import org.jboss.forge.common.projects.XmlInputFactory.XmlNotFoundException; +import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.aop.Inject; +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +public class DownloadCounterDescriptor extends AbstractDescriptor { + + @Inject + private ContentManager contentManager; + + public DownloadCounterDescriptor (XmlInputFactory isf, DomToXmlTransformer xht, + String portalName, String projectId) throws SAXException, IOException, + XmlNotFoundException, TransformerException { + + // The isf is already suffixed with the members directory, so we just + // need to add project id and descriptor name. + String isfPathToXml = File.separator+projectId + File.separator + ProjectsHelper.DOWNLOADCOUNTER_DESC; + // Getting the categories and files descriptors + DOMParser parser = new DOMParser(); + InputSource is = isf.getInputSource(isfPathToXml); + parser.parse(is); + org.w3c.dom.Document doc = parser.getDocument(); + Node n=null,property=null; + NodeList nodes = doc.getDocumentElement().getChildNodes(); + + List<String> links = new LinkedList<String>(); + for (int i = 0; i < nodes.getLength(); i++) { + n = nodes.item(i); + if (n.getNodeType() == Node.ELEMENT_NODE) { + if (n.getNodeName().equals("counter")) { + NodeList counterProps = n.getChildNodes(); + for (int j=0;j< counterProps.getLength() ; j++) { + property = counterProps.item(j); + if (property.getNodeType()== Node.ELEMENT_NODE){ + if (property.getNodeName().equals("link") && XmlTools.unmarshallText(property) != null + && !XmlTools.unmarshallText(property).trim().equals("")) { + links.add(XmlTools.unmarshallText(property).trim()); + } + } + } + } + } + } + + if (!links.isEmpty()) { + addLinksToCounter(projectId,portalName,links,isf,xht); + } + } + + /** + * Mathod adds new links to the main download counter xml file. + * @param projectId + * @param portalName + * @param links + * @param isf + * @param xht + * @throws SAXException + * @throws IOException + * @throws XmlNotFoundException + * @throws TransformerException + */ + private synchronized void addLinksToCounter (String projectId,String portalName, + List<String> links, XmlInputFactory isf, DomToXmlTransformer xht) + throws SAXException, IOException, XmlNotFoundException, TransformerException { + + // Opening the main download counter xml descriptor for parsing. + DOMParser parser = new DOMParser(); + parser.parse(isf.getInputSource(ProjectsHelper.DOWNLOADCOUNTERMAIN_DESC)); + Document doc = parser.getDocument(); + NodeList nodes = doc.getDocumentElement().getChildNodes(); + Node n=null,property=null; + + + // This loop will remove all links from the "List<String> link" + // which are already in the main download counter descriptor. + for (int i=0;i <nodes.getLength(); i++) { + n = nodes.item(i); + if (n.getNodeType() == Node.ELEMENT_NODE) { + if (n.getNodeName().equals("counter")) { + NodeList counterSettings = n.getChildNodes(); + for (int j=0; j <counterSettings.getLength() ; j++) { + property = counterSettings.item(j); + if (property.getNodeType() == Node.ELEMENT_NODE) { + String nodeName = property.getNodeName(); + String nodeNodeValue = XmlTools.unmarshallText(property).trim(); + if (nodeName.equals("link") && nodeNodeValue!=null && links.contains(nodeNodeValue)) { + links.remove(nodeNodeValue); + } + } + } + } + } + } + + + // Here the new links from the "List<String> links" will be added. + if (!links.isEmpty()) { + + for (String link:links) { + Node newCounter = doc.createElement("counter"); + + Node newLink = doc.createElement("link"); + Node newLinkText = doc.createTextNode(link); + newLink.appendChild(newLinkText); + + Node newProjectId = doc.createElement("id"); + Node newProjectIdText = doc.createTextNode(projectId); + newProjectId.appendChild(newProjectIdText); + + Node newValue = doc.createElement("value"); + Node newValueText = doc.createTextNode("0"); + newValue.appendChild(newValueText); + + newCounter.appendChild(newLink); + newCounter.appendChild(newProjectId); + newCounter.appendChild(newValue); + + doc.getDocumentElement().appendChild(newCounter); + } + } + + // Making path to main counter xml located in members directory. + String pathToCountersXml = File.separator + portalName + File.separator + + ProjectsHelper.MEMBERS_DIR + File.separator + ProjectsHelper.DOWNLOADCOUNTERMAIN_DESC; + + // Getting string containing whole xml. + String xmlString = xht.transformNode(doc.getDocumentElement()); + + // Saving the main download counter xml descriptor with a new content. + org.jboss.shotoku.Node xmlFile = contentManager.getNode(pathToCountersXml); + xmlFile.setContent(xmlString); + xmlFile.save ("[DownlaodCounter] Main xml descriptor file update."); + + } + +} Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectDescriptor.java 2005-11-04 17:48:52 UTC (rev 1511) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectDescriptor.java 2005-11-04 17:52:25 UTC (rev 1512) @@ -52,6 +52,8 @@ private static final Logger log = Logger.getLogger(ProjectDescriptor.class); private DownloadsDescriptor downloads; + + private DownloadCounterDescriptor downloadCounter; private String portalName; @@ -116,6 +118,18 @@ " descriptor: "+e); downloads = null; } + + // Trying to create a downloads counter descriptor. + try { + downloadCounter = new DownloadCounterDescriptor(isf, xht, portalName, getId()); + } catch (XmlNotFoundException e1) { + // It means that this project doesn't have downlaod counter descriptor. + } + catch (Exception e) { + log.warn("Project "+getId()+", unable te parse download counter" + + " descriptor: "+e); + downloadCounter = null; + } } /** Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java 2005-11-04 17:48:52 UTC (rev 1511) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java 2005-11-04 17:52:25 UTC (rev 1512) @@ -81,6 +81,8 @@ protected final static String PROJECT_DESC = "project.xml"; protected final static String PROJECTS_DESC = "projects.xml"; protected final static String DOWNLOADS_DESC = "downloads.xml"; + protected final static String DOWNLOADCOUNTER_DESC = "counter.xml"; + protected final static String DOWNLOADCOUNTERMAIN_DESC = "counters.xml"; /** * <code>MEMBERS_DIRECTORY</code> - base repository directory in which |
From: <jbo...@li...> - 2005-11-04 17:48:57
|
Author: dam...@jb... Date: 2005-11-04 12:48:52 -0500 (Fri, 04 Nov 2005) New Revision: 1511 Added: releases/labs/JBossLabs-1.0.4/ Log: Labeling the 1.0.4 release. Copied: releases/labs/JBossLabs-1.0.4 (from rev 1226, prod/forge/portal-extensions) |
From: <jbo...@li...> - 2005-11-04 17:47:46
|
Author: dam...@jb... Date: 2005-11-04 12:47:41 -0500 (Fri, 04 Nov 2005) New Revision: 1510 Added: releases/labs/ Log: Making a dir for labs releases. |
From: <jbo...@li...> - 2005-11-04 17:24:53
|
Author: unibrew Date: 2005-11-04 12:24:49 -0500 (Fri, 04 Nov 2005) New Revision: 1509 Modified: trunk/forge/portal-extensions/forge-file-access/project.xml Log: [JBLAB-263] File update. Modified: trunk/forge/portal-extensions/forge-file-access/project.xml =================================================================== --- trunk/forge/portal-extensions/forge-file-access/project.xml 2005-11-04 15:59:17 UTC (rev 1508) +++ trunk/forge/portal-extensions/forge-file-access/project.xml 2005-11-04 17:24:49 UTC (rev 1509) @@ -23,8 +23,28 @@ <version>1.0</version> <jar>javasvn.jar</jar> </dependency> - + <dependency> + <groupId>taglibs</groupId> + <artifactId>jstl</artifactId> + <version>1.0</version> + <jar>jstl.jar</jar> + <properties> + <war.bundle>true</war.bundle> + </properties> + </dependency> + + <dependency> + <groupId>taglibs</groupId> + <artifactId>standard</artifactId> + <version>1.0</version> + <jar>standard.jar</jar> + <properties> + <war.bundle>true</war.bundle> + </properties> + </dependency> + + <dependency> <groupId>tmate</groupId> <artifactId>jsch</artifactId> <version>1.0</version> |
From: <jbo...@li...> - 2005-11-04 11:53:04
|
Author: rem...@jb... Date: 2005-11-04 06:52:49 -0500 (Fri, 04 Nov 2005) New Revision: 1507 Modified: trunk/labs/jbossweb/src/share/classes/org/jboss/web/rewrite/RewriteValve.java Log: - The cost of creating the TomcatResolver instance is likely non existent (and the rest of the algorithm is not GC friendly at this point, so ...). Modified: trunk/labs/jbossweb/src/share/classes/org/jboss/web/rewrite/RewriteValve.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/jboss/web/rewrite/RewriteValve.java 2005-11-04 10:07:06 UTC (rev 1506) +++ trunk/labs/jbossweb/src/share/classes/org/jboss/web/rewrite/RewriteValve.java 2005-11-04 11:52:49 UTC (rev 1507) @@ -62,13 +62,6 @@ /** - * Thread local Tomcat resolver. - * Note: this could also go to a request note. - */ - protected ThreadLocal resolver = new ThreadLocal(); - - - /** * If rewriting occurs, the whole request will be processed again. */ protected ThreadLocal invoked = new ThreadLocal(); @@ -239,11 +232,7 @@ return; } - Resolver resolver = (Resolver) this.resolver.get(); - if (resolver == null) { - resolver = new TomcatResolver(request); - this.resolver.set(resolver); - } + TomcatResolver resolver = new TomcatResolver(request); invoked.set(Boolean.TRUE); |
Author: adamw Date: 2005-11-04 05:07:06 -0500 (Fri, 04 Nov 2005) New Revision: 1506 Modified: trunk/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java Log: Timer threads as daemons (no jira issue) Modified: trunk/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java =================================================================== --- trunk/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java 2005-11-04 09:56:16 UTC (rev 1505) +++ trunk/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java 2005-11-04 10:07:06 UTC (rev 1506) @@ -168,6 +168,10 @@ //timer.scheduleTimer(DEFAULT_TIMER_INTERVAL); new Thread() { + { + setDaemon(true); + } + public void run() { while (true) { try { Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2005-11-04 09:56:16 UTC (rev 1505) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2005-11-04 10:07:06 UTC (rev 1506) @@ -125,6 +125,10 @@ //timer.scheduleTimer(DEFAULT_TIMER_INTERVAL); new Thread() { + { + setDaemon(true); + } + public void run() { while (true) { try { |
Author: adamw Date: 2005-11-04 04:56:16 -0500 (Fri, 04 Nov 2005) New Revision: 1505 Modified: trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogPortlet.java trunk/forge/portal-extensions/forge-blog/src/web/WEB-INF/portlet.xml trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConTools.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/InformaBasedFeed.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/RomeBasedFeed.java Log: http://jira.jboss.com/jira/browse/JBLAB-405 : done Modified: trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogPortlet.java =================================================================== --- trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogPortlet.java 2005-11-03 22:53:43 UTC (rev 1504) +++ trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogPortlet.java 2005-11-04 09:56:16 UTC (rev 1505) @@ -82,12 +82,15 @@ response.setContentType("text/html"); PortalContext portalCtx = request.getPortalContext(); + PortletConfig pConfig = getPortletConfig(); - String projectId = ProjectsHelper.getSelectedProjectId(request, true); + String projectId = ProjectsHelper.getSelectedProjectId(request, false); + if (projectId == null) + projectId = pConfig.getInitParameter("defaultFeed"); + String portalName = ForgeHelper.getPortalName(request); // Getting the number of headers and entries to display - PortletConfig pConfig = getPortletConfig(); int headersNormal = Integer.valueOf( pConfig.getInitParameter("headersNormal")).intValue(); int headersMaximized = Integer.valueOf( Modified: trunk/forge/portal-extensions/forge-blog/src/web/WEB-INF/portlet.xml =================================================================== --- trunk/forge/portal-extensions/forge-blog/src/web/WEB-INF/portlet.xml 2005-11-03 22:53:43 UTC (rev 1504) +++ trunk/forge/portal-extensions/forge-blog/src/web/WEB-INF/portlet.xml 2005-11-04 09:56:16 UTC (rev 1505) @@ -29,13 +29,18 @@ <init-param> <description>Address of the blog's local feed.</description> <name>feedAddress</name> - <value>${scheme.name}://${host.address}:${host.port}/blojsom/blog/${project.name}/?flavor=${feed.type}</value> + <value>${scheme.name}://${host.address}:${host.port}/feeds/${project.name}/${feed.type}</value> </init-param> <init-param> <description>Address of the blog's remote feed.</description> <name>remoteFeedAddress</name> - <value>${scheme.name}://${host.address}:${host.port}/blojsom/blog/${project.name}/?flavor=${feed.type}</value> + <value>${scheme.name}://${host.address}:${host.port}/feeds/${project.name}/${feed.type}</value> </init-param> + <init-param> + <description>Default feed to display.</description> + <name>defaultFeed</name> + <value>all</value> + </init-param> <portlet-info> <title>JBoss Blog Portlet</title> </portlet-info> Modified: trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConTools.java =================================================================== --- trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConTools.java 2005-11-03 22:53:43 UTC (rev 1504) +++ trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConTools.java 2005-11-04 09:56:16 UTC (rev 1505) @@ -25,6 +25,7 @@ import javax.faces.context.FacesContext; import javax.portlet.PortletURL; +import org.jboss.forge.common.ForgeHelper; import org.jboss.portlet.JBossActionRequest; import org.jboss.portlet.JBossActionResponse; import org.jboss.portlet.JBossRenderRequest; @@ -63,21 +64,12 @@ } static String getBaseServerAddress() { - int port; - String server; - String scheme; Object request = getExternalContext().getRequest(); if (request instanceof JBossActionRequest) { - scheme = ((JBossActionRequest) request).getScheme(); - port = ((JBossActionRequest) request).getServerPort(); - server = ((JBossActionRequest) request).getServerName(); + return ForgeHelper.getBaseServerAddress((JBossActionRequest) request); } else if (request instanceof JBossRenderRequest) { - scheme = ((JBossRenderRequest) request).getScheme(); - port = ((JBossRenderRequest) request).getServerPort(); - server = ((JBossRenderRequest) request).getServerName(); + return ForgeHelper.getBaseServerAddress((JBossRenderRequest) request); } else return ""; - - return scheme + "://" + server + ":" + port; } static String getPortalName() { Modified: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/InformaBasedFeed.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/InformaBasedFeed.java 2005-11-03 22:53:43 UTC (rev 1504) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/InformaBasedFeed.java 2005-11-04 09:56:16 UTC (rev 1505) @@ -3,8 +3,11 @@ import java.io.File; import java.io.IOException; import java.net.URL; +import java.util.ArrayList; import java.util.Calendar; +import java.util.Collections; import java.util.Iterator; +import java.util.List; import de.nava.informa.core.ChannelExporterIF; import de.nava.informa.core.ChannelIF; @@ -12,6 +15,7 @@ import de.nava.informa.core.ParseException; import de.nava.informa.impl.basic.ChannelBuilder; import de.nava.informa.parsers.FeedParser; +import de.nava.informa.utils.ItemComparator; public abstract class InformaBasedFeed extends FileBasedFeed { public InformaBasedFeed(File file) { @@ -33,6 +37,8 @@ newChannel.setLocation(new URL(link)); newChannel.setPubDate(Calendar.getInstance().getTime()); + List<ItemIF> newItems = new ArrayList<ItemIF>(); + for (Feed feed : feeds) { ChannelIF childChannel; try { @@ -42,10 +48,18 @@ } for (Iterator iter = childChannel.getItems().iterator(); iter.hasNext();) { - newChannel.addItem((ItemIF) iter.next()); + ItemIF nextItem = (ItemIF) iter.next(); + nextItem.setCreator(childChannel.getCreator()); + newItems.add(nextItem); } } + Collections.sort(newItems, new ItemComparator(true)); + + for (ItemIF newItem : newItems) { + newChannel.addItem(newItem); + } + getExporter().write(newChannel); } } Modified: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/RomeBasedFeed.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/RomeBasedFeed.java 2005-11-03 22:53:43 UTC (rev 1504) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/RomeBasedFeed.java 2005-11-04 09:56:16 UTC (rev 1505) @@ -79,8 +79,6 @@ entry.setAuthor(inFeed.getAuthor()); entries.add(entry); } - - inFeed.setAuthor(null); } } |
From: <jbo...@li...> - 2005-11-03 21:39:33
|
Author: adamw Date: 2005-11-03 16:39:25 -0500 (Thu, 03 Nov 2005) New Revision: 1501 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java Log: http://jira.jboss.com/jira/browse/JBLAB-408 : helper function Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java 2005-11-03 21:38:46 UTC (rev 1500) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java 2005-11-03 21:39:25 UTC (rev 1501) @@ -36,6 +36,7 @@ import javax.management.MalformedObjectNameException; import javax.portlet.PortalContext; import javax.portlet.PortletRequest; +import javax.servlet.ServletRequest; import org.jboss.forge.common.blog.BlogUpdater; import org.jboss.forge.common.service.ForgeManagement; @@ -459,4 +460,18 @@ return sb.toString(); } + + private static String makeAddress(String scheme, String server, int port) { + return scheme + "://" + server + ":" + port; + } + + public static String getBaseServerAddress(PortletRequest request) { + return makeAddress(request.getScheme(), request.getServerName(), + request.getServerPort()); + } + + public static String getBaseServerAddress(ServletRequest request) { + return makeAddress(request.getScheme(), request.getServerName(), + request.getServerPort()); + } } |
From: <jbo...@li...> - 2005-11-03 21:39:00
|
Author: adamw Date: 2005-11-03 16:38:46 -0500 (Thu, 03 Nov 2005) New Revision: 1500 Added: trunk/forge/portal-extensions/binaries/maven-repo-addons/informa/ trunk/forge/portal-extensions/binaries/maven-repo-addons/informa/jars/ trunk/forge/portal-extensions/binaries/maven-repo-addons/informa/jars/informa.jar Log: http://jira.jboss.com/jira/browse/JBLAB-408 : required binaries Added: trunk/forge/portal-extensions/binaries/maven-repo-addons/informa/jars/informa.jar =================================================================== (Binary files differ) Property changes on: trunk/forge/portal-extensions/binaries/maven-repo-addons/informa/jars/informa.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream |