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
|
Author: wrzep Date: 2005-11-24 06:49:00 -0500 (Thu, 24 Nov 2005) New Revision: 1638 Added: trunk/forge/portal-extensions/binaries/maven-repo-addons/hessian/ trunk/forge/portal-extensions/binaries/maven-repo-addons/hessian/jars/ trunk/forge/portal-extensions/binaries/maven-repo-addons/hessian/jars/hessian-3.0.13.jar Modified: trunk/forge/portal-extensions/forge-status/project.xml trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java Log: added hessian-3.0.13.jar needed by kosmos service http://jira.jboss.com/jira/browse/JBLAB-415 Pawel Added: trunk/forge/portal-extensions/binaries/maven-repo-addons/hessian/jars/hessian-3.0.13.jar =================================================================== (Binary files differ) Property changes on: trunk/forge/portal-extensions/binaries/maven-repo-addons/hessian/jars/hessian-3.0.13.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/forge/portal-extensions/forge-status/project.xml =================================================================== --- trunk/forge/portal-extensions/forge-status/project.xml 2005-11-24 07:42:21 UTC (rev 1637) +++ trunk/forge/portal-extensions/forge-status/project.xml 2005-11-24 11:49:00 UTC (rev 1638) @@ -65,8 +65,8 @@ <dependency> <groupId>hessian</groupId> <artifactId>hessian</artifactId> - <version>3.0.1</version> - <jar>hessian-3.0.1.jar</jar> + <version>3.0.13</version> + <jar>hessian-3.0.13.jar</jar> <properties> <war.bundle>true</war.bundle> </properties> Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java 2005-11-24 07:42:21 UTC (rev 1637) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java 2005-11-24 11:49:00 UTC (rev 1638) @@ -54,7 +54,7 @@ Map projectMap = projectsMaps.get(projectId); - System.out.println("commits class " + projectMap.get("commitsTotal").getClass()); + //System.out.println("commits class " + projectMap.get("commitsTotal").getClass()); return ((Integer)projectMap.get("commitsTotal")).intValue(); } |
From: <jbo...@li...> - 2005-11-24 07:42:32
|
Author: szimano Date: 2005-11-24 02:42:21 -0500 (Thu, 24 Nov 2005) New Revision: 1637 Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/CurrentTimePlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/InsertPage.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RefsManipulatingInsidePlugin.java Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiInsidePlugins.xml trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/RecentChangesPlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/ReferringPagesPlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UndefinedPagesPlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UnusedPagesPlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/IndexInsidePlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/InsertPageInsidePlugin.java Log: new plugins + made "base" for jspwiki built-in plugins http://jira.jboss.com/jira/browse/JBWIKI-72 Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiInsidePlugins.xml =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiInsidePlugins.xml 2005-11-23 23:53:13 UTC (rev 1636) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiInsidePlugins.xml 2005-11-24 07:42:21 UTC (rev 1637) @@ -5,4 +5,5 @@ <entry key="tomek">org.jboss.wiki.plugins.TomekInsidePlugin</entry> <entry key="InsertPage">org.jboss.wiki.plugins.InsertPageInsidePlugin</entry> <entry key="IndexPlugin">org.jboss.wiki.plugins.IndexInsidePlugin</entry> +<entry key="CurrentTimePlugin">com.ecyrd.jspwiki.plugin.CurrentTimePlugin</entry> </properties> \ No newline at end of file Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/CurrentTimePlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/CurrentTimePlugin.java 2005-11-23 23:53:13 UTC (rev 1636) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/CurrentTimePlugin.java 2005-11-24 07:42:21 UTC (rev 1637) @@ -0,0 +1,34 @@ +package com.ecyrd.jspwiki.plugin; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; + +import org.jboss.wiki.WikiInsidePlugin; +import org.jboss.wiki.WikiPage; +import org.jboss.wiki.WikiSession; + +public class CurrentTimePlugin extends WikiInsidePlugin { + + @Override + public String process(WikiPage wikiPage, WikiSession wikiSession, + HashMap<String, String> attributes) { + + String format = attributes.get("format"); + + if (format == null) + format = ""; + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); + + return simpleDateFormat.format(new Date()); + } + + @Override + public void init() { + // TODO Auto-generated method stub + + } + +} Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/InsertPage.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/InsertPage.java 2005-11-23 23:53:13 UTC (rev 1636) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/InsertPage.java 2005-11-24 07:42:21 UTC (rev 1637) @@ -0,0 +1,7 @@ +package com.ecyrd.jspwiki.plugin; + +import org.jboss.wiki.plugins.InsertPageInsidePlugin; + +public class InsertPage extends InsertPageInsidePlugin { + +} Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/RecentChangesPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/RecentChangesPlugin.java 2005-11-23 23:53:13 UTC (rev 1636) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/RecentChangesPlugin.java 2005-11-24 07:42:21 UTC (rev 1637) @@ -12,7 +12,6 @@ import org.jboss.wiki.WikiInsidePlugin; import org.jboss.wiki.WikiPage; import org.jboss.wiki.WikiSession; -import org.jboss.wiki.plugins.HTMLTranslatorParts; public class RecentChangesPlugin extends WikiInsidePlugin { Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/ReferringPagesPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/ReferringPagesPlugin.java 2005-11-23 23:53:13 UTC (rev 1636) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/ReferringPagesPlugin.java 2005-11-24 07:42:21 UTC (rev 1637) @@ -2,16 +2,18 @@ import java.util.HashMap; import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import org.jboss.wiki.WikiInsidePlugin; + import org.jboss.wiki.WikiPage; import org.jboss.wiki.WikiSession; -import org.jboss.wiki.plugins.HTMLTranslatorParts; +import org.jboss.wiki.plugins.RefsManipulatingInsidePlugin; -public class ReferringPagesPlugin extends WikiInsidePlugin { +public class ReferringPagesPlugin extends RefsManipulatingInsidePlugin { + + //FIXME : FAQJBossIIOP + + @Override public String process(WikiPage wikiPage, WikiSession wikiSession, HashMap<String, String> attributes) { @@ -27,76 +29,17 @@ StringBuffer stringBuffer = new StringBuffer(); - Set<String> pageNames = wikiEngine.getAllPageNames(); - String uid = wikiEngine.getUid(wikiPage.getName()); - String pattern1 = "\\[.+\\]"; - String pattern2 = "\\[[\\w\\d]+\\|.+\\]"; - for (String pageName : pageNames) { - if (max == 0) { - // escape for - break; - } - - WikiPage page = wikiEngine.getByName(pageName, null); - - boolean fits = false; - - Matcher matcher = Pattern.compile(pattern1).matcher( - page.getContent()); - - while (matcher.find() && (!fits)) { - String pageUid = page.getContent().substring(matcher.start(), - matcher.end()); - - pageUid = pageUid.substring(1, pageUid - .indexOf(']')); - - pageUid = HTMLTranslatorParts.cleanLink(pageUid); - - if (pageUid != null && pageUid.equals(uid)) { - fits = true; - } - } - - if (!fits) { - matcher = Pattern.compile(pattern2).matcher(page.getContent()); - - while (matcher.find() && (!fits)) { - String pageUid = page.getContent().substring( - matcher.start(), matcher.end()); - - pageUid = pageUid.substring(pageUid.indexOf('|'), pageUid - .indexOf(']')); - - pageUid = HTMLTranslatorParts.cleanLink(pageUid); - - if (pageUid != null && pageUid.equals(uid)) { - fits = true; - } - } - } - - if (fits) { - stringBuffer.append(getLink(page.getName(), maxwidth)); - max--; - } - + Set<String> refsFor = getRefsFor(uid, max); + + for (String ref : refsFor) { + stringBuffer.append(getLink(ref, maxwidth)); } return stringBuffer.toString(); } - private String getLink(String pageName, Integer maxwidth) { - if ((maxwidth != null) && (pageName.length() > maxwidth)) { - return "[" + pageName.substring(0, maxwidth - 3) + "...|" - + pageName + "]\\\\"; - } else { - return "[" + pageName + "]\\\\"; - } - } - @Override public void init() { // TODO Auto-generated method stub Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UndefinedPagesPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UndefinedPagesPlugin.java 2005-11-23 23:53:13 UTC (rev 1636) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UndefinedPagesPlugin.java 2005-11-24 07:42:21 UTC (rev 1637) @@ -2,16 +2,12 @@ import java.util.HashMap; import java.util.Set; -import java.util.TreeSet; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import org.jboss.wiki.WikiInsidePlugin; import org.jboss.wiki.WikiPage; import org.jboss.wiki.WikiSession; -import org.jboss.wiki.plugins.HTMLTranslatorParts; +import org.jboss.wiki.plugins.RefsManipulatingInsidePlugin; -public class UndefinedPagesPlugin extends WikiInsidePlugin { +public class UndefinedPagesPlugin extends RefsManipulatingInsidePlugin { @Override public String process(WikiPage wikiPage, WikiSession wikiSession, @@ -24,55 +20,8 @@ StringBuffer stringBuffer = new StringBuffer(); - Set<String> pageNames = wikiEngine.getAllPageNames(); - - String pattern1 = "\\[.+\\]"; - String pattern2 = "\\[[\\w\\d]+\\|.+\\]"; - - Set<String> allRefs = new TreeSet<String>(); - - for (String pageName : pageNames) { - - WikiPage page = wikiEngine.getByName(pageName, null); - - Matcher matcher = Pattern.compile(pattern1).matcher( - page.getContent()); - - while (matcher.find()) { - String pageUid = page.getContent().substring(matcher.start(), - matcher.end()); - - pageUid = pageUid.substring(1, pageUid.indexOf(']')); - - if (!HTMLTranslatorParts.isExternalLink(pageUid)) { - pageUid = HTMLTranslatorParts.cleanLink(pageUid); - - if (pageUid != null) { - allRefs.add(wikiEngine.getRealName(pageUid)); - } - } - } - - matcher = Pattern.compile(pattern2).matcher(page.getContent()); - - while (matcher.find()) { - String pageUid = page.getContent().substring(matcher.start(), - matcher.end()); - - pageUid = pageUid.substring(pageUid.indexOf('|'), pageUid - .indexOf(']')); - - if (!HTMLTranslatorParts.isExternalLink(pageUid)) { - pageUid = HTMLTranslatorParts.cleanLink(pageUid); - - if (pageUid != null) { - allRefs.add(wikiEngine.getRealName(pageUid)); - } - } - } - - } - + Set<String> allRefs = getAllRefs(); + for (String pageName : allRefs) { if (!wikiEngine.pageExists(pageName)) { @@ -83,15 +32,8 @@ return stringBuffer.toString(); } - private String getLink(String pageName, Integer maxwidth) { - if ((maxwidth != null) && (pageName.length() > maxwidth)) { - return "[" + pageName.substring(0, maxwidth - 3) + "...|" - + pageName + "]\\\\"; - } else { - return "[" + pageName + "]\\\\"; - } - } + @Override public void init() { // TODO Auto-generated method stub Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UnusedPagesPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UnusedPagesPlugin.java 2005-11-23 23:53:13 UTC (rev 1636) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UnusedPagesPlugin.java 2005-11-24 07:42:21 UTC (rev 1637) @@ -2,16 +2,12 @@ import java.util.HashMap; import java.util.Set; -import java.util.TreeSet; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import org.jboss.wiki.WikiInsidePlugin; import org.jboss.wiki.WikiPage; import org.jboss.wiki.WikiSession; -import org.jboss.wiki.plugins.HTMLTranslatorParts; +import org.jboss.wiki.plugins.RefsManipulatingInsidePlugin; -public class UnusedPagesPlugin extends WikiInsidePlugin { +public class UnusedPagesPlugin extends RefsManipulatingInsidePlugin{ @Override public String process(WikiPage wikiPage, WikiSession wikiSession, @@ -25,56 +21,11 @@ StringBuffer stringBuffer = new StringBuffer(); Set<String> pageNames = wikiEngine.getAllPageNames(); + + Set<String> allRefs = getAllRefs(); - String pattern1 = "\\[.+\\]"; - String pattern2 = "\\[[\\w\\d]+\\|.+\\]"; - - Set<String> allRefs = new TreeSet<String>(); - for (String pageName : pageNames) { - WikiPage page = wikiEngine.getByName(pageName, null); - - Matcher matcher = Pattern.compile(pattern1).matcher( - page.getContent()); - - while (matcher.find()) { - String pageUid = page.getContent().substring(matcher.start(), - matcher.end()); - - pageUid = pageUid.substring(1, pageUid.indexOf(']')); - - if (!HTMLTranslatorParts.isExternalLink(pageUid)) { - pageUid = HTMLTranslatorParts.cleanLink(pageUid); - - if (pageUid != null) { - allRefs.add(wikiEngine.getRealName(pageUid)); - } - } - } - - matcher = Pattern.compile(pattern2).matcher(page.getContent()); - - while (matcher.find()) { - String pageUid = page.getContent().substring(matcher.start(), - matcher.end()); - - pageUid = pageUid.substring(pageUid.indexOf('|'), pageUid - .indexOf(']')); - - if (!HTMLTranslatorParts.isExternalLink(pageUid)) { - pageUid = HTMLTranslatorParts.cleanLink(pageUid); - - if (pageUid != null) { - allRefs.add(wikiEngine.getRealName(pageUid)); - } - } - } - - } - - for (String pageName : pageNames) { - if (!allRefs.contains(pageName)) { stringBuffer.append(getLink(pageName, maxwidth)); } @@ -83,15 +34,6 @@ return stringBuffer.toString(); } - private String getLink(String pageName, Integer maxwidth) { - if ((maxwidth != null) && (pageName.length() > maxwidth)) { - return "[" + pageName.substring(0, maxwidth - 3) + "...|" - + pageName + "]\\\\"; - } else { - return "[" + pageName + "]\\\\"; - } - } - @Override public void init() { // TODO Auto-generated method stub Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/IndexInsidePlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/IndexInsidePlugin.java 2005-11-23 23:53:13 UTC (rev 1636) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/IndexInsidePlugin.java 2005-11-24 07:42:21 UTC (rev 1637) @@ -18,14 +18,12 @@ Character chr = ' '; - String actionURL = (String)wikiSession.getAttribute("actionURL"); - for (String pageName : allPages) { if (Character.toUpperCase(pageName.charAt(0)) != chr) { chr = Character.toUpperCase(pageName.charAt(0)); - pluginContent.append("<h3>").append(chr).append("</h3>\n"); + pluginContent.append("!!").append(chr).append("\n"); } - pluginContent.append("<a href=\"").append(actionURL).append("&page=").append(pageName).append("\">").append(pageName).append("</a><br />\n"); + pluginContent.append("[").append(pageName).append("]\\\\\n"); } return pluginContent.toString(); Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/InsertPageInsidePlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/InsertPageInsidePlugin.java 2005-11-23 23:53:13 UTC (rev 1636) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/InsertPageInsidePlugin.java 2005-11-24 07:42:21 UTC (rev 1637) @@ -23,7 +23,6 @@ import java.util.HashMap; -import org.jboss.wiki.WikiContext; import org.jboss.wiki.WikiInsidePlugin; import org.jboss.wiki.WikiPage; import org.jboss.wiki.WikiSession; @@ -37,20 +36,53 @@ String page = attributes.get("page"); + String style = attributes.get("style"); + + Integer maxlength = getNumericValue(attributes,"maxlength"); + + if (page == null) { - ret = "<i>There is no 'page' attribute which is mandatory for InsertPage plugin</i>"; + ret = "''There is no 'page' attribute which is mandatory for InsertPage plugin''"; } else { - WikiContext wikiContext = new WikiContext(null, wikiEngine.getWikiType("htmlClear"), wikiSession); + WikiPage about = wikiEngine.getByName(page, null); - WikiPage about = wikiEngine.getByName(page, wikiContext); - - ret = HTMLTranslatorParts.pagePartRegexStart+about.getContent()+HTMLTranslatorParts.pagePartRegexEnd; + ret = addStyle(addMaxLength(about.getContent(), page, maxlength),style); } return ret; } + + private String addMaxLength(String content, String pageName, Integer maxlength) { + if (maxlength != null) { + if (content.length() > maxlength) { + boolean insideLink = false; + + int i = 0; + + for (i = 0; (i < maxlength || insideLink); i++) { + if (content.charAt(i) == '[') { + insideLink = true; + } + else if (insideLink && content.charAt(i) == ']') { + insideLink = false; + } + } + return content.substring(0,i)+" ... \\\\\n\\\\\n[More...|"+pageName+"]"; + } + } + + return content; + } + private String addStyle(String content, String style) { + if ((style != null)&&(style.length() > 0)) { + return HTMLTranslatorParts.pagePartRegexEnd+"<div style=\""+style+"\">"+HTMLTranslatorParts.pagePartRegexStart+content+HTMLTranslatorParts.pagePartRegexEnd+"</div>"+HTMLTranslatorParts.pagePartRegexStart; + } + else + return content; + } + @Override public void init() { // TODO Auto-generated method stub Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RefsManipulatingInsidePlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RefsManipulatingInsidePlugin.java 2005-11-23 23:53:13 UTC (rev 1636) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RefsManipulatingInsidePlugin.java 2005-11-24 07:42:21 UTC (rev 1637) @@ -0,0 +1,138 @@ +package org.jboss.wiki.plugins; + +import java.util.Set; +import java.util.TreeSet; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.jboss.wiki.WikiInsidePlugin; +import org.jboss.wiki.WikiPage; + + +public abstract class RefsManipulatingInsidePlugin extends WikiInsidePlugin { + + private static final String pattern1 = "\\[.+\\]"; + private static final String pattern2 = "\\[[\\w\\d]+\\|.+\\]"; + + protected String getLink(String pageName, Integer maxwidth) { + if ((maxwidth != null) && (pageName.length() > maxwidth)) { + return "[" + pageName.substring(0, maxwidth - 3) + "...|" + + pageName + "]\\\\"; + } else { + return "[" + pageName + "]\\\\"; + } + } + + protected Set<String> getAllRefs() { + + Set<String> pageNames = wikiEngine.getAllPageNames(); + + Set<String> allRefs = new TreeSet<String>(); + + for (String pageName : pageNames) { + + WikiPage page = wikiEngine.getByName(pageName, null); + + Matcher matcher = Pattern.compile(pattern1).matcher( + page.getContent()); + + while (matcher.find()) { + String pageUid = page.getContent().substring(matcher.start(), + matcher.end()); + + pageUid = pageUid.substring(1, pageUid.indexOf(']')); + + if (!HTMLTranslatorParts.isExternalLink(pageUid)) { + pageUid = HTMLTranslatorParts.cleanLink(pageUid); + + if (pageUid != null) { + allRefs.add(wikiEngine.getRealName(pageUid)); + } + } + } + + matcher = Pattern.compile(pattern2).matcher(page.getContent()); + + while (matcher.find()) { + String pageUid = page.getContent().substring(matcher.start(), + matcher.end()); + + pageUid = pageUid.substring(pageUid.indexOf('|'), pageUid + .indexOf(']')); + + if (!HTMLTranslatorParts.isExternalLink(pageUid)) { + pageUid = HTMLTranslatorParts.cleanLink(pageUid); + + if (pageUid != null) { + allRefs.add(wikiEngine.getRealName(pageUid)); + } + } + } + + } + + return allRefs; + } + + protected Set<String> getRefsFor(String uid, Integer max) { + + Set<String> refsFor = new TreeSet<String>(); + + Set<String> pageNames = wikiEngine.getAllPageNames(); + + for (String pageName : pageNames) { + if (max == 0) { + // escape for + break; + } + + WikiPage page = wikiEngine.getByName(pageName, null); + + boolean fits = false; + + Matcher matcher = Pattern.compile(pattern1).matcher( + page.getContent()); + + while (matcher.find() && (!fits)) { + String pageUid = page.getContent().substring(matcher.start(), + matcher.end()); + + pageUid = pageUid.substring(1, pageUid + .indexOf(']')); + + pageUid = HTMLTranslatorParts.cleanLink(pageUid); + + if (pageUid != null && pageUid.equals(uid)) { + fits = true; + } + } + + if (!fits) { + matcher = Pattern.compile(pattern2).matcher(page.getContent()); + + while (matcher.find() && (!fits)) { + String pageUid = page.getContent().substring( + matcher.start(), matcher.end()); + + pageUid = pageUid.substring(pageUid.indexOf('|')+1, pageUid + .indexOf(']')); + + pageUid = HTMLTranslatorParts.cleanLink(pageUid); + + if (pageUid != null && pageUid.equals(uid)) { + fits = true; + } + } + } + + if (fits) { + refsFor.add(page.getName()); + max--; + } + + } + + return refsFor; + } + +} |
From: <jbo...@li...> - 2005-11-23 23:53:21
|
Author: wrzep Date: 2005-11-23 18:53:13 -0500 (Wed, 23 Nov 2005) New Revision: 1636 Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastDescriptor.java trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastNodeWatcher.java trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastPortlet.java Log: Code cleanup http://jira.jboss.com/jira/browse/JBLAB-540 Pawel Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-11-23 19:49:23 UTC (rev 1635) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-11-23 23:53:13 UTC (rev 1636) @@ -27,7 +27,6 @@ import java.util.HashMap; import java.util.Set; import java.util.HashSet; -import java.util.SimpleTimeZone; import java.util.Date; import java.text.DateFormat; @@ -35,25 +34,13 @@ import java.net.URL; import java.net.HttpURLConnection; -import java.net.URLConnection; -import java.net.MalformedURLException; import java.io.IOException; import org.jboss.forge.common.XmlTools; import org.jboss.forge.common.projects.AbstractDescriptor; -import org.jboss.forge.common.projects.permissions.PermissionsChecker; -import org.jboss.forge.common.projects.permissions.RenderRequestPermissionsChecker; -import org.jboss.forge.common.projects.DomToXmlTransformer; - import org.jboss.portal.common.context.DelegateContext; -import org.jboss.shotoku.ContentManager; - import org.jboss.logging.Logger; -import org.apache.xerces.parsers.DOMParser; -import org.xml.sax.InputSource; - -import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.NamedNodeMap; @@ -95,7 +82,6 @@ private static final int BYTES_IN_MB = (1024*1024); - private String portalName; private String serverAdress; private Logger log; @@ -105,8 +91,7 @@ */ private Object[] allItemsArr; - Podcast(String portalName, String serverAdress, Node root) { - this.portalName = portalName; + Podcast(String serverAdress, Node root) { this.serverAdress = serverAdress; log = Logger.getLogger(this.getClass()); @@ -176,9 +161,7 @@ // filling the context with enclosure information ItemEnclosureIF enclosure = item.getEnclosure(); - if (enclosure != null) { - DelegateContext enclosureContext = nodeContext.next("enclosure-link"); - + if (enclosure != null) { nodeContext.put("enclosure-type", enclosure.getType()); nodeContext.put("enclosure-size", Math.round(enclosure.getLength() / BYTES_IN_MB)); @@ -223,8 +206,8 @@ * @return Set containing <code>root</code>'s child Nodes, * but only those with names included in <code>nodeNames</code> Set */ - private Set getChildNodesSet(Node root, Set<String> nodesNames) { - HashSet ret = new HashSet<Node>(); + private Set<Node> getChildNodesSet(Node root, Set<String> nodesNames) { + HashSet<Node> ret = new HashSet<Node>(); NodeList list = root.getChildNodes(); for (int i = 0; i < list.getLength(); i++) { @@ -242,8 +225,8 @@ * Similar to <code>getChildNodesSet(Node,Set)</code>. * Map binds child Nodes names with appropriate Nodes. */ - private Map getChildNodesMap(Node root, Set<String> nodesNames) { - HashMap ret = new HashMap<String,Node>(); + private Map<String,Node> getChildNodesMap(Node root, Set<String> nodesNames) { + HashMap<String,Node> ret = new HashMap<String,Node>(); NodeList list = root.getChildNodes(); for (int i = 0; i < list.getLength(); i++) { @@ -282,7 +265,7 @@ for (Iterator iter = nodes.iterator(); iter.hasNext();) { try { - Map nodeProperties = (Map<String,Node>) iter.next(); + Map<String,Node> nodeProperties = (Map<String,Node>) iter.next(); urlNode = (Node) nodeProperties.get(URL_ELEMENT); Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastDescriptor.java 2005-11-23 19:49:23 UTC (rev 1635) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastDescriptor.java 2005-11-23 23:53:13 UTC (rev 1636) @@ -22,24 +22,14 @@ package org.jboss.forge.podcast; -import java.io.IOException; -import java.util.Set; -import java.util.HashSet; - import org.jboss.forge.podcast.PodcastTools; import org.apache.xerces.parsers.DOMParser; -import org.jboss.forge.common.ForgeHelper; -import org.jboss.forge.common.projects.ProjectsHelper; import org.jboss.portal.common.context.DelegateContext; import org.jboss.portlet.JBossRenderRequest; 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; -import org.xml.sax.SAXException; -import org.jboss.logging.Logger; /** * @author Pawel Wrzeszcz @@ -47,18 +37,13 @@ */ public class PodcastDescriptor { - private static final Logger log = Logger.getLogger(PodcastDescriptor.class); - private DelegateContext context; private Podcast podcast; - private HashSet<String> feeds; public PodcastDescriptor(String portalName, String serverAdress, ContentManager cm) { - try { - feeds = new HashSet<String>(); - + try { DOMParser parser = new DOMParser(); parser.parse(new InputSource(cm.getNode(PodcastTools .getXmlCmPath(portalName)).getContentInputStream())); @@ -67,7 +52,7 @@ if ((root.getNodeType() == Node.ELEMENT_NODE) && (root.getNodeName().equals(Podcast.PODCAST_ELEMENT))) { - podcast = new Podcast(portalName, serverAdress, root); + podcast = new Podcast(portalName, root); } fillContext(); Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastNodeWatcher.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastNodeWatcher.java 2005-11-23 19:49:23 UTC (rev 1635) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastNodeWatcher.java 2005-11-23 23:53:13 UTC (rev 1636) @@ -23,8 +23,6 @@ package org.jboss.forge.podcast; import org.jboss.forge.common.service.NodeWatcher; -import org.jboss.forge.common.service.ResourceWatcher; - import org.jboss.shotoku.ContentManager; /** Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastPortlet.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastPortlet.java 2005-11-23 19:49:23 UTC (rev 1635) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastPortlet.java 2005-11-23 23:53:13 UTC (rev 1636) @@ -28,11 +28,6 @@ import javax.portlet.PortletRequestDispatcher; import org.jboss.forge.common.ForgeHelper; -import org.jboss.forge.common.projects.Projects; -import org.jboss.forge.common.projects.ProjectsHelper; -import org.jboss.forge.common.projects.permissions.PermissionsChecker; -import org.jboss.forge.common.projects.permissions.RenderRequestPermissionsChecker; - import org.jboss.portal.common.context.DelegateContext; import org.jboss.portal.core.servlet.jsp.PortalJsp; |
From: <jbo...@li...> - 2005-11-23 17:19:44
|
Author: adamw Date: 2005-11-23 12:19:20 -0500 (Wed, 23 Nov 2005) New Revision: 1634 Modified: trunk/forge/portal-extensions/forge-kosmos/conf/portlet/portlet.xml trunk/forge/portal-extensions/forge-kosmos/to-copy/kosmos-portlet.war trunk/forge/portal-extensions/forge-kosmos/to-copy/kosmos-server.war Log: Kosmos update Modified: trunk/forge/portal-extensions/forge-kosmos/conf/portlet/portlet.xml =================================================================== --- trunk/forge/portal-extensions/forge-kosmos/conf/portlet/portlet.xml 2005-11-23 16:15:04 UTC (rev 1633) +++ trunk/forge/portal-extensions/forge-kosmos/conf/portlet/portlet.xml 2005-11-23 17:19:20 UTC (rev 1634) @@ -57,7 +57,7 @@ </supports> <supported-locale>en</supported-locale> <supported-locale>hu</supported-locale> - <resource-bundle>hu.midori.kosmos.portlet.jira.jiramonitoringportlet</resource-bundle> + <resource-bundle>hu.midori.kosmos.portlet.jira.jira_monitoring</resource-bundle> <portlet-info> <title>JIRA Monitoring</title> </portlet-info> @@ -94,7 +94,7 @@ </supports> <supported-locale>en</supported-locale> <supported-locale>hu</supported-locale> - <resource-bundle>hu.midori.kosmos.portlet.svn.svnmonitoringportlet</resource-bundle> + <resource-bundle>hu.midori.kosmos.portlet.svn.svn_monitoring</resource-bundle> <portlet-info> <title>Subversion Monitoring</title> </portlet-info> Modified: trunk/forge/portal-extensions/forge-kosmos/to-copy/kosmos-portlet.war =================================================================== (Binary files differ) Modified: trunk/forge/portal-extensions/forge-kosmos/to-copy/kosmos-server.war =================================================================== (Binary files differ) |
From: <jbo...@li...> - 2005-11-23 16:15:08
|
Author: rem...@jb... Date: 2005-11-23 11:15:04 -0500 (Wed, 23 Nov 2005) New Revision: 1633 Modified: trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java Log: - Do the same for SSL actions. Modified: trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java 2005-11-23 16:03:27 UTC (rev 1632) +++ trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java 2005-11-23 16:15:04 UTC (rev 1633) @@ -1090,8 +1090,8 @@ } else if (actionCode == ActionCode.ACTION_REQ_SSL_ATTRIBUTE ) { - try { - if (ssl) { + if (ssl && (socket != 0)) { + try { // Cipher suite Object sslO = SSLSocket.getInfoS(socket, SSL.SSL_INFO_CIPHER); if (sslO != null) { @@ -1127,14 +1127,14 @@ request.setAttribute (AprEndpoint.SESSION_ID_KEY, sslO); } + } catch (Exception e) { + log.warn(sm.getString("http11processor.socket.ssl"), e); } - } catch (Exception e) { - log.warn(sm.getString("http11processor.socket.ssl"), e); } } else if (actionCode == ActionCode.ACTION_REQ_SSL_CERTIFICATE) { - if (ssl) { + if (ssl && (socket != 0)) { // Consume and buffer the request body, so that it does not // interfere with the client's handshake messages InputFilter[] inputFilters = inputBuffer.getFilters(); |
From: <jbo...@li...> - 2005-11-23 16:03:50
|
Author: rem...@jb... Date: 2005-11-23 11:03:27 -0500 (Wed, 23 Nov 2005) New Revision: 1632 Modified: trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java Log: - Fix crashes when the socket pointer is used outside of the socket method (this could happen with JMX). Modified: trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java 2005-11-23 15:42:28 UTC (rev 1631) +++ trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java 2005-11-23 16:03:27 UTC (rev 1632) @@ -215,7 +215,7 @@ /** * Socket associated with the current connection. */ - protected long socket; + protected long socket = 0; /** @@ -906,6 +906,7 @@ // Recycle inputBuffer.recycle(); outputBuffer.recycle(); + this.socket = 0; return openSocket; @@ -1002,7 +1003,7 @@ } else if (actionCode == ActionCode.ACTION_REQ_HOST_ADDR_ATTRIBUTE) { // Get remote host address - if (remoteAddr == null) { + if (remoteAddr == null && (socket != 0)) { try { long sa = Address.get(Socket.APR_REMOTE, socket); remoteAddr = Address.getip(sa); @@ -1015,7 +1016,7 @@ } else if (actionCode == ActionCode.ACTION_REQ_LOCAL_NAME_ATTRIBUTE) { // Get local host name - if (localName == null) { + if (localName == null && (socket != 0)) { try { long sa = Address.get(Socket.APR_LOCAL, socket); localName = Address.getnameinfo(sa, 0); @@ -1028,7 +1029,7 @@ } else if (actionCode == ActionCode.ACTION_REQ_HOST_ATTRIBUTE) { // Get remote host name - if (remoteHost == null) { + if (remoteHost == null && (socket != 0)) { try { long sa = Address.get(Socket.APR_REMOTE, socket); remoteHost = Address.getnameinfo(sa, 0); @@ -1041,7 +1042,7 @@ } else if (actionCode == ActionCode.ACTION_REQ_LOCAL_ADDR_ATTRIBUTE) { // Get local host address - if (localAddr == null) { + if (localAddr == null && (socket != 0)) { try { long sa = Address.get(Socket.APR_LOCAL, socket); Sockaddr addr = new Sockaddr(); @@ -1059,7 +1060,7 @@ } else if (actionCode == ActionCode.ACTION_REQ_REMOTEPORT_ATTRIBUTE) { // Get remote port - if (remotePort == -1) { + if (remotePort == -1 && (socket != 0)) { try { long sa = Address.get(Socket.APR_REMOTE, socket); Sockaddr addr = Address.getInfo(sa); @@ -1073,7 +1074,7 @@ } else if (actionCode == ActionCode.ACTION_REQ_LOCALPORT_ATTRIBUTE) { // Get local port - if (localPort == -1) { + if (localPort == -1 && (socket != 0)) { try { long sa = Address.get(Socket.APR_LOCAL, socket); Sockaddr addr = new Sockaddr(); |
From: <jbo...@li...> - 2005-11-23 15:42:36
|
Author: szimano Date: 2005-11-23 10:42:28 -0500 (Wed, 23 Nov 2005) New Revision: 1631 Modified: trunk/forge/portal-extensions/forge-status/project.xml Log: chcnged hessian jar version to proper one... Modified: trunk/forge/portal-extensions/forge-status/project.xml =================================================================== --- trunk/forge/portal-extensions/forge-status/project.xml 2005-11-23 01:58:59 UTC (rev 1630) +++ trunk/forge/portal-extensions/forge-status/project.xml 2005-11-23 15:42:28 UTC (rev 1631) @@ -65,8 +65,8 @@ <dependency> <groupId>hessian</groupId> <artifactId>hessian</artifactId> - <version>3.0.13</version> - <jar>hessian-3.0.13.jar</jar> + <version>3.0.1</version> + <jar>hessian-3.0.1.jar</jar> <properties> <war.bundle>true</war.bundle> </properties> |
From: <jbo...@li...> - 2005-11-23 01:59:34
|
Author: wrzep Date: 2005-11-22 20:58:59 -0500 (Tue, 22 Nov 2005) New Revision: 1630 Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java Log: removed annoying debug msgs http://jira.jboss.com/jira/browse/JBLAB-538 Pawel Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-11-23 01:44:38 UTC (rev 1629) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-11-23 01:58:59 UTC (rev 1630) @@ -34,6 +34,8 @@ import java.util.SimpleTimeZone; import java.net.URL; +import java.net.HttpURLConnection; +import java.net.URLConnection; import java.net.MalformedURLException; import java.io.IOException; @@ -65,6 +67,8 @@ import de.nava.informa.core.ImageIF; import de.nava.informa.core.ParseException; +//import org.apache.commons.logging.LogFactory; + /** * A class holding the podcast feeds. * @@ -262,6 +266,15 @@ * @return Set of all items from feeds described in the given Set. */ private Set<ItemIF> getAllItems(Set<Map<String,Node>> nodes) { + /* + LogFactory lf = LogFactory.getFactory(); + //org.apache.commons.logging.log = lf.getInstance(FeedParser.class) + String[] atribs = lf.getAttributeNames(); + for (int i = 0; i < atribs.length; i++) { + System.out.println("atrib " + atribs[i] + " = " + lf.getAttribute(atribs[i])); + } + */ + HashSet<ItemIF> ret = new HashSet<ItemIF>(); Node urlNode = null; @@ -277,13 +290,23 @@ if (urlString.charAt(0) == '/') { // local link urlString = serverAdress + urlString; } - URL url = new URL(urlString); + URL url = new URL(urlString); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + Date date = new Date(connection.getDate()); + //System.out.println("date: " + date + " (" + urlString + ")"); - ChannelIF channel = FeedParser.parse(new ChannelBuilder(), url); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("HEAD"); + con.connect(); + date = new Date(con.getDate()); + //System.out.println("date: " + date + " (" + urlString + ")"); + + ChannelIF channel = FeedParser.parse(new ChannelBuilder(), url.openStream()); ret.addAll(channel.getItems()); } catch (IOException e) { log.warn(urlString + " could not be found."); + //e.printStackTrace(); } catch (ParseException e) { log.warn("Parse error: " + urlString); } |
From: <jbo...@li...> - 2005-11-23 01:44:45
|
Author: wrzep Date: 2005-11-22 20:44:38 -0500 (Tue, 22 Nov 2005) New Revision: 1629 Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java Log: removed annoying debug msgs http://jira.jboss.com/jira/browse/JBLAB-415 Pawel Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java 2005-11-23 01:35:07 UTC (rev 1628) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java 2005-11-23 01:44:38 UTC (rev 1629) @@ -69,7 +69,7 @@ for (Iterator iter = m.keySet().iterator(); iter.hasNext();) { Object obj = (Object) iter.next(); - System.out.println("object: " + obj + " binding: " + m.get(obj)); + //System.out.println("object: " + obj + " binding: " + m.get(obj)); } } |
From: <jbo...@li...> - 2005-11-23 01:35:14
|
Author: wrzep Date: 2005-11-22 20:35:07 -0500 (Tue, 22 Nov 2005) New Revision: 1628 Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java Log: plugin getting #of svn repo commits http://jira.jboss.com/jira/browse/JBLAB-415 Pawel Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-11-23 01:33:51 UTC (rev 1627) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-11-23 01:35:07 UTC (rev 1628) @@ -35,6 +35,7 @@ import org.jboss.forge.common.projects.Projects; import org.jboss.forge.common.projects.ProjectsHelper; +import org.jboss.forge.common.ForgeHelper; import org.jboss.forge.common.projects.permissions.NullPermissionsChecker; import org.jboss.forge.common.projects.permissions.PermissionsChecker; @@ -58,7 +59,7 @@ import org.jboss.forge.status.plugins.StatusPlugin; import org.jboss.forge.status.plugins.OneStatusPlugin; -import org.jboss.forge.status.plugins.SvnStatusPlugin; +import org.jboss.forge.status.plugins.CommitsTotalStatusPlugin; import org.jboss.logging.Logger; @@ -174,7 +175,7 @@ Node pluginNode = (Node) iter.next(); Map<String,Node> pluginProperties = getChildNodesMap(pluginNode, pluginsElements); - + /* try { String pluginClassString = XmlTools.unmarshallText(pluginProperties.get("class")); System.out.println("pluginClassString " + pluginClassString); @@ -182,7 +183,12 @@ p.add((StatusPlugin) pluginClass.newInstance()); } catch (Exception e) { e.printStackTrace(); - } + }*/ + + //TODO (IMPORTANT) allow instantionatino but... also passing project argument + + Projects projects = ProjectsHelper.getProjects(portalName); + p.add(new CommitsTotalStatusPlugin(projects)); } return p; Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java 2005-11-23 01:33:51 UTC (rev 1627) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java 2005-11-23 01:35:07 UTC (rev 1628) @@ -25,6 +25,8 @@ import java.util.Map; import java.util.HashMap; +import org.jboss.forge.common.projects.Projects; + /** * @author Pawel Wrzeszcz */ @@ -34,32 +36,30 @@ protected static String PLUGIN_NAME = "Commits total"; protected static String PLUGIN_ID = "commitstotal"; - private Map<String,Map> projects; + private Map<String,Map> projectsMaps; public String getId() { return PLUGIN_ID; } public String getName() { return PLUGIN_NAME; } - public CommitsTotalStatusPlugin() { - projects = new HashMap<String,Map>(); + public CommitsTotalStatusPlugin(Projects projects) { + super(projects); + projectsMaps = new HashMap<String,Map>(); } public int getValue(String projectId) { - if (!projects.containsKey(projectId)) { - projects.put(projectId, getProjectMap(projectId)); + if (!projectsMaps.containsKey(projectId)) { + projectsMaps.put(projectId, getProjectMap(projectId)); } - Map projectMap = projects.get(projectId); + Map projectMap = projectsMaps.get(projectId); - System.out.println("commits class " + projectMap.get("commitsTotal").getClass()); return ((Integer)projectMap.get("commitsTotal")).intValue(); } private Map getProjectMap(String projectId) { - String repoUrl = "http://anonsvn.labs.jboss.com/trunk/labs/demo"; // DEBUG ;-) - - return getSvnRepository(repoUrl); + return getSvnRepository(projectId); } } \ No newline at end of file Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java 2005-11-23 01:33:51 UTC (rev 1627) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java 2005-11-23 01:35:07 UTC (rev 1628) @@ -26,6 +26,8 @@ import java.util.Collection; import java.util.List; +import org.jboss.forge.common.projects.Projects; + import com.caucho.hessian.client.HessianProxyFactory; import hu.midori.kosmos.protocol.JiraService; @@ -39,6 +41,10 @@ public abstract class JiraStatusPlugin extends StatusPlugin { + public JiraStatusPlugin(Projects projects) { + super(projects); + } + protected Collection<JiraProject> getJiraProjects() { //Get the projects from kosmo server Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java 2005-11-23 01:33:51 UTC (rev 1627) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java 2005-11-23 01:35:07 UTC (rev 1628) @@ -22,6 +22,8 @@ package org.jboss.forge.status.plugins; +import org.jboss.forge.common.projects.Projects; + /** * @author Pawel Wrzeszcz */ @@ -31,7 +33,9 @@ protected static String PLUGIN_NAME = "One"; protected static String PLUGIN_ID = "one"; - public OneStatusPlugin() {}; + public OneStatusPlugin(Projects projects) { + super(projects); + }; public String getId() { return PLUGIN_ID; }; public String getName() { return PLUGIN_NAME; }; Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java 2005-11-23 01:33:51 UTC (rev 1627) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java 2005-11-23 01:35:07 UTC (rev 1628) @@ -24,6 +24,8 @@ import java.util.List; +import org.jboss.forge.common.projects.Projects; + /** * @author Pawel Wrzeszcz */ @@ -36,7 +38,10 @@ public String getId() { return PLUGIN_ID; }; public String getName() { return PLUGIN_NAME; }; - public ResolvedIssuesStatusPlugin() { getJiraProjects(); }; + public ResolvedIssuesStatusPlugin(Projects projects) { + super(projects); + getJiraProjects(); + } public int getValue(String projectId) { return 0;} ; Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java 2005-11-23 01:33:51 UTC (rev 1627) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java 2005-11-23 01:35:07 UTC (rev 1628) @@ -22,12 +22,20 @@ package org.jboss.forge.status.plugins; +import org.jboss.forge.common.projects.Projects; + /** * @author Pawel Wrzeszcz */ public abstract class StatusPlugin { + protected Projects projects; + + public StatusPlugin(Projects projects) { + this.projects = projects; + }; + public abstract String getId(); public abstract String getName(); Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java 2005-11-23 01:33:51 UTC (rev 1627) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java 2005-11-23 01:35:07 UTC (rev 1628) @@ -26,6 +26,8 @@ import java.util.List; import java.util.Map; +import org.jboss.forge.common.projects.Projects; + import com.caucho.hessian.client.HessianProxyFactory; import hu.midori.kosmos.protocol.SvnService; @@ -37,7 +39,11 @@ public abstract class SvnStatusPlugin extends StatusPlugin { - protected Map getSvnRepository(String repoUrl) { + public SvnStatusPlugin(Projects projects) { + super(projects); + } + + protected Map getSvnRepository(String projectId) { SvnService service = null; HessianProxyFactory factory = new HessianProxyFactory(); @@ -49,12 +55,18 @@ service = (SvnService) factory.create(SvnService.class, serviceUrl); - //repoUrl = "http://anonsvn.labs.jboss.com/trunk/labs/demo"; + String repoURL = getRepoURL(projectId); + System.out.println("repo for project " + projectId + " " + repoURL); - List repositories = service.getRepositories(repoUrl); + if (repoURL == null) { + repoURL = "http://anonsvn.labs.jboss.com/trunk/labs/demo"; //DEBUG + } + + List repositories = service.getRepositories(repoURL); - m = (Map) repositories.get(0); + m = (Map) repositories.get(0); if (m != null) { + for (Iterator iter = m.keySet().iterator(); iter.hasNext();) { Object obj = (Object) iter.next(); System.out.println("object: " + obj + " binding: " + m.get(obj)); @@ -68,4 +80,10 @@ return m; } + + private String getRepoURL(String projectId) { + String repoURL = projects.getProjectProperty(projectId, "svn-repo"); + return (repoURL == "" ? null : repoURL); + } + } |
From: <jbo...@li...> - 2005-11-23 01:34:08
|
Author: wrzep Date: 2005-11-22 20:33:51 -0500 (Tue, 22 Nov 2005) New Revision: 1627 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java Log: Added access to any property for any project by Projects object. http://jira.jboss.com/jira/browse/JBLAB-415 Pawel Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java 2005-11-23 01:21:13 UTC (rev 1626) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java 2005-11-23 01:33:51 UTC (rev 1627) @@ -157,7 +157,18 @@ return pd.getProperty(ProjectsDescriptor.LEVEL_ATTRIBUTE); } + /** + * Gets the value of the given property of the given project. + * @param projectId Id of the project. + * @param propertyName Name of the property. + * @return Value of the project property with the given name. + */ + public String getProjectProperty(String projectId, String propertyName) { + return getProjectsDescriptor().getProjectProperty(projectId, propertyName); + } + + /** * Checks if a project with the given id exists. * @param projectId Id of the project to check. * @return True iff a project with the given id exists. Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java 2005-11-23 01:21:13 UTC (rev 1626) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java 2005-11-23 01:33:51 UTC (rev 1627) @@ -474,7 +474,24 @@ return pd.getProjectLink(); } + + /** + * Gets the value of a given property of the project witht the given id. + * + * @param projectId + * Id of the project. + * @param propertyName + * Name of the property. + * @return Value of the project property with the given name. + */ + public String getProjectProperty(String projectId, String propertyName) { + ProjectDescriptor pd = (ProjectDescriptor) projects.get(projectId); + if (pd == null) + return ""; + return pd.getProperty(propertyName); + } + /** * Gets a set of names of resources which are descriptors of projects * represented by this ProjectsDescriptor instance. |
Author: rem...@jb... Date: 2005-11-22 20:21:13 -0500 (Tue, 22 Nov 2005) New Revision: 1626 Added: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/manager/ trunk/labs/jbossweb/src/share/classes/org/apache/catalina/manager/Constants.java trunk/labs/jbossweb/src/share/classes/org/apache/catalina/manager/StatusTransformer.java Modified: trunk/labs/jbossweb/build.xml trunk/labs/jbossweb/src/share/classes/org/apache/catalina/util/ServerInfo.properties Log: - Add status servlet support classes to the tree. - Add filtering. Modified: trunk/labs/jbossweb/build.xml =================================================================== --- trunk/labs/jbossweb/build.xml 2005-11-23 00:01:00 UTC (rev 1625) +++ trunk/labs/jbossweb/build.xml 2005-11-23 01:21:13 UTC (rev 1626) @@ -1,4 +1,4 @@ -<project name="JBossWeb" default="deploy" basedir="."> +<project name="JBoss Web" default="deploy" basedir="."> <!-- ===================== Initialize Property Values =================== --> @@ -11,13 +11,15 @@ <property file="build.properties.default"/> <!-- Project Properties --> - <property name="name" value="JBossWeb" /> + <property name="name" value="JBoss Web" /> <property name="year" value="2005" /> <property name="version.major" value="4" /> <property name="version.minor" value="0" /> <property name="version.build" value="0" /> <property name="version.patch" value="" /> - <property name="version" value="${version.major}.${version.minor}.${version.build}${version.patch}" /> + <property name="version.flag" value="" /> + <property name="version.number" value="${version.major}.${version.minor}.${version.build}${version.patch}" /> + <property name="version" value="${version.major}.${version.minor}.${version.build}${version.patch}${version.flag}" /> <property name="project" value="jbossweb" /> <property name="final.name" value="${project}-${version}" /> @@ -115,6 +117,7 @@ <include name="deploy/tc5-cluster-service.xml" /> <exclude name="deploy/jbossweb-tomcat55.sar/catalina.jar" /> + <exclude name="deploy/jbossweb-tomcat55.sar/catalina-manager.jar" /> <exclude name="deploy/jbossweb-tomcat55.sar/catalina-optional.jar" /> <exclude name="deploy/jbossweb-tomcat55.sar/naming-resources.jar" /> <exclude name="deploy/jbossweb-tomcat55.sar/servlets-default.jar" /> @@ -147,6 +150,14 @@ <exclude name="**/*TestCase.java" /> </javac> + <tstamp> + <format property="TODAY" pattern="MMM d yyyy" locale="en"/> + <format property="TSTAMP" pattern="hh:mm:ss"/> + </tstamp> + <!-- Copy static resource files --> + <filter token="VERSION" value="${version}"/> + <filter token="VERSION_NUMBER" value="${version.number}"/> + <filter token="VERSION_BUILT" value="${TODAY} ${TSTAMP}"/> <copy todir="${jbossweb.build}/classes" filtering="yes"> <fileset dir="src/share/classes"> <include name="**/*.xml"/> @@ -156,22 +167,12 @@ <jar jarfile="${jbossweb.build}/${final.name}/server/default/deploy/jbossweb-tomcat55.sar/jbossweb.jar" index="true"> <fileset dir="${jbossweb.build}/classes"> - <exclude name="org/jboss/web/rewrite/**"/> <!-- Javadoc and i18n exclusions --> <exclude name="**/package.html" /> <exclude name="**/LocalStrings_*" /> </fileset> </jar> - <jar jarfile="${jbossweb.build}/${final.name}/server/default/deploy/jbossweb-tomcat55.sar/catalina-rewrite.jar" index="true"> - <fileset dir="${jbossweb.build}/classes"> - <include name="org/jboss/web/rewrite/**"/> - <!-- Javadoc and i18n exclusions --> - <exclude name="**/package.html" /> - <exclude name="**/LocalStrings_*" /> - </fileset> - </jar> - </target> <target name="clean"> Added: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/manager/Constants.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/catalina/manager/Constants.java 2005-11-23 00:01:00 UTC (rev 1625) +++ trunk/labs/jbossweb/src/share/classes/org/apache/catalina/manager/Constants.java 2005-11-23 01:21:13 UTC (rev 1626) @@ -0,0 +1,198 @@ +/* + * Copyright 1999,2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +package org.apache.catalina.manager; + + +public class Constants { + + public static final String Package = "org.apache.catalina.manager"; + + public static final String HTML_HEADER_SECTION = + "<html>\n" + + "<head>\n" + + "<style>\n" + + org.apache.catalina.util.TomcatCSS.TOMCAT_CSS + + " table {\n" + + " width: 100%;\n" + + " }\n" + + " td.page-title {\n" + + " text-align: center;\n" + + " vertical-align: top;\n" + + " font-family:sans-serif,Tahoma,Arial;\n" + + " font-weight: bold;\n" + + " background: white;\n" + + " color: black;\n" + + " }\n" + + " td.title {\n" + + " text-align: left;\n" + + " vertical-align: top;\n" + + " font-family:sans-serif,Tahoma,Arial;\n" + + " font-style:italic;\n" + + " font-weight: bold;\n" + + " background: #D2A41C;\n" + + " }\n" + + " td.header-left {\n" + + " text-align: left;\n" + + " vertical-align: top;\n" + + " font-family:sans-serif,Tahoma,Arial;\n" + + " font-weight: bold;\n" + + " background: #FFDC75;\n" + + " }\n" + + " td.header-center {\n" + + " text-align: center;\n" + + " vertical-align: top;\n" + + " font-family:sans-serif,Tahoma,Arial;\n" + + " font-weight: bold;\n" + + " background: #FFDC75;\n" + + " }\n" + + " td.row-left {\n" + + " text-align: left;\n" + + " vertical-align: middle;\n" + + " font-family:sans-serif,Tahoma,Arial;\n" + + " color: black;\n" + + " }\n" + + " td.row-center {\n" + + " text-align: center;\n" + + " vertical-align: middle;\n" + + " font-family:sans-serif,Tahoma,Arial;\n" + + " color: black;\n" + + " }\n" + + " td.row-right {\n" + + " text-align: right;\n" + + " vertical-align: middle;\n" + + " font-family:sans-serif,Tahoma,Arial;\n" + + " color: black;\n" + + " }\n" + + " TH {\n" + + " text-align: center;\n" + + " vertical-align: top;\n" + + " font-family:sans-serif,Tahoma,Arial;\n" + + " font-weight: bold;\n" + + " background: #FFDC75;\n" + + " }\n" + + " TD {\n" + + " text-align: center;\n" + + " vertical-align: middle;\n" + + " font-family:sans-serif,Tahoma,Arial;\n" + + " color: black;\n" + + " }\n" + + "</style>\n"; + + public static final String BODY_HEADER_SECTION = + "<title>{0}</title>\n" + + "</head>\n" + + "\n" + + "<body bgcolor=\"#FFFFFF\">\n" + + "\n" + + "<table cellspacing=\"4\" width=\"100%\" border=\"0\">\n" + + " <tr>\n" + + " <td colspan=\"2\">\n" + + " <a href=\"http://jakarta.apache.org/\">\n" + + " <img border=\"0\" alt=\"The Jakarta Project\" align=\"left\"\n" + + " src=\"{0}/images/jakarta-logo.gif\">\n" + + " </a>\n" + + " <a href=\"http://jakarta.apache.org/tomcat/\">\n" + + " <img border=\"0\" alt=\"The Tomcat Servlet/JSP Container\"\n" + + " align=\"right\" src=\"{0}/images/tomcat.gif\">\n" + + " </a>\n" + + " </td>\n" + + " </tr>\n" + + "</table>\n" + + "<hr size=\"1\" noshade=\"noshade\">\n" + + "<table cellspacing=\"4\" width=\"100%\" border=\"0\">\n" + + " <tr>\n" + + " <td class=\"page-title\" bordercolor=\"#000000\" " + + "align=\"left\" nowrap>\n" + + " <font size=\"+2\">{1}</font>\n" + + " </td>\n" + + " </tr>\n" + + "</table>\n" + + "<br>\n" + + "\n"; + + public static final String MESSAGE_SECTION = + "<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\">\n" + + " <tr>\n" + + " <td class=\"row-left\" width=\"10%\">" + + "<small><strong>{0}</strong></small> </td>\n" + + " <td class=\"row-left\"><pre>{1}</pre></td>\n" + + " </tr>\n" + + "</table>\n" + + "<br>\n" + + "\n"; + + public static final String MANAGER_SECTION = + "<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\">\n" + + "<tr>\n" + + " <td colspan=\"4\" class=\"title\">{0}</td>\n" + + "</tr>\n" + + " <tr>\n" + + " <td class=\"row-left\"><a href=\"{1}\">{2}</a></td>\n" + + " <td class=\"row-center\"><a href=\"{3}\">{4}</a></td>\n" + + " <td class=\"row-center\"><a href=\"{5}\">{6}</a></td>\n" + + " <td class=\"row-right\"><a href=\"{7}\">{8}</a></td>\n" + + " </tr>\n" + + "</table>\n" + + "<br>\n" + + "\n"; + + public static final String SERVER_HEADER_SECTION = + "<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\">\n" + + "<tr>\n" + + " <td colspan=\"6\" class=\"title\">{0}</td>\n" + + "</tr>\n" + + "<tr>\n" + + " <td class=\"header-center\"><small>{1}</small></td>\n" + + " <td class=\"header-center\"><small>{2}</small></td>\n" + + " <td class=\"header-center\"><small>{3}</small></td>\n" + + " <td class=\"header-center\"><small>{4}</small></td>\n" + + " <td class=\"header-center\"><small>{5}</small></td>\n" + + " <td class=\"header-center\"><small>{6}</small></td>\n" + + "</tr>\n"; + + public static final String SERVER_ROW_SECTION = + "<tr>\n" + + " <td class=\"row-center\"><small>{0}</small></td>\n" + + " <td class=\"row-center\"><small>{1}</small></td>\n" + + " <td class=\"row-center\"><small>{2}</small></td>\n" + + " <td class=\"row-center\"><small>{3}</small></td>\n" + + " <td class=\"row-center\"><small>{4}</small></td>\n" + + " <td class=\"row-center\"><small>{5}</small></td>\n" + + "</tr>\n" + + "</table>\n" + + "<br>\n" + + "\n"; + + public static final String HTML_TAIL_SECTION = + "<hr size=\"1\" noshade=\"noshade\">\n" + + "<center><font size=\"-1\" color=\"#525D76\">\n" + + " <em>Copyright © 1999-2005, Apache Software Foundation</em>" + + "</font></center>\n" + + "\n" + + "</body>\n" + + "</html>"; + public static final String CHARSET="utf-8"; + + public static final String XML_DECLARATION = + "<?xml version=\"1.0\" encoding=\""+CHARSET+"\"?>"; + + public static final String XML_STYLE = + "<?xml-stylesheet type=\"text/xsl\" href=\"/manager/xform.xsl\" ?>"; + +} + Added: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/manager/StatusTransformer.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/catalina/manager/StatusTransformer.java 2005-11-23 00:01:00 UTC (rev 1625) +++ trunk/labs/jbossweb/src/share/classes/org/apache/catalina/manager/StatusTransformer.java 2005-11-23 01:21:13 UTC (rev 1626) @@ -0,0 +1,933 @@ +/* + * Copyright 1999,2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +package org.apache.catalina.manager; + +import java.io.PrintWriter; +import java.lang.reflect.Method; +import java.text.MessageFormat; +import java.util.Date; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.Set; +import java.util.Vector; + +import javax.servlet.http.HttpServletResponse; +import org.apache.catalina.util.RequestUtil; +import org.apache.tomcat.util.compat.JdkCompat; + +import javax.management.MBeanServer; +import javax.management.ObjectInstance; +import javax.management.ObjectName; + +/** + * This is a refactoring of the servlet to externalize + * the output into a simple class. Although we could + * use XSLT, that is unnecessarily complex. + * + * @author Peter Lin + * @version $Revision: 303967 $ $Date: 2005-06-29 19:31:56 +0200 (mer., 29 juin 2005) $ + */ + +public class StatusTransformer { + + + // --------------------------------------------------------- Public Methods + + + public static void setContentType(HttpServletResponse response, + int mode) { + if (mode == 0){ + response.setContentType("text/html;charset="+Constants.CHARSET); + } else if (mode == 1){ + response.setContentType("text/xml;charset="+Constants.CHARSET); + } + } + + + /** + * Process a GET request for the specified resource. + * + * @param request The servlet request we are processing + * @param response The servlet response we are creating + * + * @exception IOException if an input/output error occurs + * @exception ServletException if a servlet-specified error occurs + */ + public static void writeHeader(PrintWriter writer, int mode) { + if (mode == 0){ + // HTML Header Section + writer.print(Constants.HTML_HEADER_SECTION); + } else if (mode == 1){ + writer.write(Constants.XML_DECLARATION); + writer.write + (Constants.XML_STYLE); + writer.write("<status>"); + } + } + + + /** + * Write the header body. XML output doesn't bother + * to output this stuff, since it's just title. + * + * @param writer The output writer + * @param args What to write + * @param mode 0 means write + */ + public static void writeBody(PrintWriter writer, Object[] args, int mode) { + if (mode == 0){ + writer.print(MessageFormat.format + (Constants.BODY_HEADER_SECTION, args)); + } + } + + + /** + * Write the manager webapp information. + * + * @param writer The output writer + * @param args What to write + * @param mode 0 means write + */ + public static void writeManager(PrintWriter writer, Object[] args, + int mode) { + if (mode == 0){ + writer.print(MessageFormat.format(Constants.MANAGER_SECTION, args)); + } + } + + + public static void writePageHeading(PrintWriter writer, Object[] args, + int mode) { + if (mode == 0){ + writer.print(MessageFormat.format + (Constants.SERVER_HEADER_SECTION, args)); + } + } + + + public static void writeServerInfo(PrintWriter writer, Object[] args, + int mode){ + if (mode == 0){ + writer.print(MessageFormat.format(Constants.SERVER_ROW_SECTION, args)); + } + } + + + /** + * + */ + public static void writeFooter(PrintWriter writer, int mode) { + if (mode == 0){ + // HTML Tail Section + writer.print(Constants.HTML_TAIL_SECTION); + } else if (mode == 1){ + writer.write("</status>"); + } + } + + + /** + * Write the OS state. Mode 0 will generate HTML. + * Mode 1 will generate XML. + */ + public static void writeOSState(PrintWriter writer, int mode) { + long[] result = new long[16]; + boolean ok = false; + try { + String methodName = "info"; + Class paramTypes[] = new Class[1]; + paramTypes[0] = result.getClass(); + Object paramValues[] = new Object[1]; + paramValues[0] = result; + Method method = Class.forName("org.apache.tomcat.jni.OS") + .getMethod(methodName, paramTypes); + method.invoke(null, paramValues); + ok = true; + } catch (Throwable t) { + // Ignore + } + + if (ok) { + if (mode == 0){ + writer.print("<h1>OS</h1>"); + + writer.print("<p>"); + writer.print(" Physical memory: "); + writer.print(formatSize(new Long(result[0]), true)); + writer.print(" Available memory: "); + writer.print(formatSize(new Long(result[1]), true)); + writer.print(" Total page file: "); + writer.print(formatSize(new Long(result[2]), true)); + writer.print(" Free page file: "); + writer.print(formatSize(new Long(result[3]), true)); + writer.print(" Memory load: "); + writer.print(new Long(result[6])); + writer.print("<br>"); + writer.print(" Process kernel time: "); + writer.print(formatTime(new Long(result[11] / 1000), true)); + writer.print(" Process user time: "); + writer.print(formatTime(new Long(result[12] / 1000), true)); + writer.print("</p>"); + } else if (mode == 1){ + } + } + + } + + + /** + * Write the VM state. Mode 0 will generate HTML. + * Mode 1 will generate XML. + */ + public static void writeVMState(PrintWriter writer, int mode) + throws Exception { + + if (mode == 0){ + writer.print("<h1>JVM</h1>"); + + writer.print("<p>"); + writer.print(" Free memory: "); + writer.print(formatSize + (new Long(Runtime.getRuntime().freeMemory()), true)); + writer.print(" Total memory: "); + writer.print(formatSize + (new Long(Runtime.getRuntime().totalMemory()), true)); + writer.print(" Max memory: "); + writer.print(formatSize + (new Long(JdkCompat.getJdkCompat().getMaxMemory()), + true)); + writer.print("</p>"); + } else if (mode == 1){ + writer.write("<jvm>"); + + writer.write("<memory"); + writer.write(" free='" + Runtime.getRuntime().freeMemory() + "'"); + writer.write(" total='" + Runtime.getRuntime().totalMemory() + "'"); + writer.write(" max='" + JdkCompat.getJdkCompat().getMaxMemory() + "'/>"); + + writer.write("</jvm>"); + } + + } + + + /** + * Write connector state. + */ + public static void writeConnectorState(PrintWriter writer, + ObjectName tpName, String name, + MBeanServer mBeanServer, + Vector globalRequestProcessors, + Vector requestProcessors, + int mode) + throws Exception { + + if (mode == 0) { + writer.print("<h1>"); + writer.print(name); + writer.print("</h1>"); + + writer.print("<p>"); + writer.print(" Max threads: "); + writer.print(mBeanServer.getAttribute(tpName, "maxThreads")); + writer.print(" Min spare threads: "); + writer.print(mBeanServer.getAttribute(tpName, "minSpareThreads")); + writer.print(" Max spare threads: "); + writer.print(mBeanServer.getAttribute(tpName, "maxSpareThreads")); + writer.print(" Current thread count: "); + writer.print(mBeanServer.getAttribute(tpName, "currentThreadCount")); + writer.print(" Current thread busy: "); + writer.print(mBeanServer.getAttribute(tpName, "currentThreadsBusy")); + try { + Object value = mBeanServer.getAttribute(tpName, "keepAliveCount"); + writer.print(" Keeped alive sockets count: "); + writer.print(value); + } catch (Exception e) { + // Ignore + } + + writer.print("<br>"); + + ObjectName grpName = null; + + Enumeration enumeration = globalRequestProcessors.elements(); + while (enumeration.hasMoreElements()) { + ObjectName objectName = (ObjectName) enumeration.nextElement(); + if (name.equals(objectName.getKeyProperty("name"))) { + grpName = objectName; + } + } + + if (grpName == null) { + return; + } + + writer.print(" Max processing time: "); + writer.print(formatTime(mBeanServer.getAttribute + (grpName, "maxTime"), false)); + writer.print(" Processing time: "); + writer.print(formatTime(mBeanServer.getAttribute + (grpName, "processingTime"), true)); + writer.print(" Request count: "); + writer.print(mBeanServer.getAttribute(grpName, "requestCount")); + writer.print(" Error count: "); + writer.print(mBeanServer.getAttribute(grpName, "errorCount")); + writer.print(" Bytes received: "); + writer.print(formatSize(mBeanServer.getAttribute + (grpName, "bytesReceived"), true)); + writer.print(" Bytes sent: "); + writer.print(formatSize(mBeanServer.getAttribute + (grpName, "bytesSent"), true)); + writer.print("</p>"); + + writer.print("<table border=\"0\"><tr><th>Stage</th><th>Time</th><th>B Sent</th><th>B Recv</th><th>Client</th><th>VHost</th><th>Request</th></tr>"); + + enumeration = requestProcessors.elements(); + while (enumeration.hasMoreElements()) { + ObjectName objectName = (ObjectName) enumeration.nextElement(); + if (name.equals(objectName.getKeyProperty("worker"))) { + writer.print("<tr>"); + writeProcessorState(writer, objectName, mBeanServer, mode); + writer.print("</tr>"); + } + } + + writer.print("</table>"); + + writer.print("<p>"); + writer.print("P: Parse and prepare request S: Service F: Finishing R: Ready K: Keepalive"); + writer.print("</p>"); + } else if (mode == 1){ + writer.write("<connector name='" + name + "'>"); + + writer.write("<threadInfo "); + writer.write(" maxThreads=\"" + mBeanServer.getAttribute(tpName, "maxThreads") + "\""); + writer.write(" minSpareThreads=\"" + mBeanServer.getAttribute(tpName, "minSpareThreads") + "\""); + writer.write(" maxSpareThreads=\"" + mBeanServer.getAttribute(tpName, "maxSpareThreads") + "\""); + writer.write(" currentThreadCount=\"" + mBeanServer.getAttribute(tpName, "currentThreadCount") + "\""); + writer.write(" currentThreadsBusy=\"" + mBeanServer.getAttribute(tpName, "currentThreadsBusy") + "\""); + writer.write(" />"); + + ObjectName grpName = null; + + Enumeration enumeration = globalRequestProcessors.elements(); + while (enumeration.hasMoreElements()) { + ObjectName objectName = (ObjectName) enumeration.nextElement(); + if (name.equals(objectName.getKeyProperty("name"))) { + grpName = objectName; + } + } + + if (grpName != null) { + + writer.write("<requestInfo "); + writer.write(" maxTime=\"" + mBeanServer.getAttribute(grpName, "maxTime") + "\""); + writer.write(" processingTime=\"" + mBeanServer.getAttribute(grpName, "processingTime") + "\""); + writer.write(" requestCount=\"" + mBeanServer.getAttribute(grpName, "requestCount") + "\""); + writer.write(" errorCount=\"" + mBeanServer.getAttribute(grpName, "errorCount") + "\""); + writer.write(" bytesReceived=\"" + mBeanServer.getAttribute(grpName, "bytesReceived") + "\""); + writer.write(" bytesSent=\"" + mBeanServer.getAttribute(grpName, "bytesSent") + "\""); + writer.write(" />"); + + writer.write("<workers>"); + enumeration = requestProcessors.elements(); + while (enumeration.hasMoreElements()) { + ObjectName objectName = (ObjectName) enumeration.nextElement(); + if (name.equals(objectName.getKeyProperty("worker"))) { + writeProcessorState(writer, objectName, mBeanServer, mode); + } + } + writer.write("</workers>"); + } + + writer.write("</connector>"); + } + + } + + + /** + * Write processor state. + */ + protected static void writeProcessorState(PrintWriter writer, + ObjectName pName, + MBeanServer mBeanServer, + int mode) + throws Exception { + + Integer stageValue = + (Integer) mBeanServer.getAttribute(pName, "stage"); + int stage = stageValue.intValue(); + boolean fullStatus = true; + boolean showRequest = true; + String stageStr = null; + + switch (stage) { + + case (1/*org.apache.coyote.Constants.STAGE_PARSE*/): + stageStr = "P"; + fullStatus = false; + break; + case (2/*org.apache.coyote.Constants.STAGE_PREPARE*/): + stageStr = "P"; + fullStatus = false; + break; + case (3/*org.apache.coyote.Constants.STAGE_SERVICE*/): + stageStr = "S"; + break; + case (4/*org.apache.coyote.Constants.STAGE_ENDINPUT*/): + stageStr = "F"; + break; + case (5/*org.apache.coyote.Constants.STAGE_ENDOUTPUT*/): + stageStr = "F"; + break; + case (7/*org.apache.coyote.Constants.STAGE_ENDED*/): + stageStr = "R"; + fullStatus = false; + break; + case (6/*org.apache.coyote.Constants.STAGE_KEEPALIVE*/): + stageStr = "K"; + fullStatus = true; + showRequest = false; + break; + case (0/*org.apache.coyote.Constants.STAGE_NEW*/): + stageStr = "R"; + fullStatus = false; + break; + default: + // Unknown stage + stageStr = "?"; + fullStatus = false; + + } + + if (mode == 0) { + writer.write("<td><strong>"); + writer.write(stageStr); + writer.write("</strong></td>"); + + if (fullStatus) { + writer.write("<td>"); + writer.print(formatTime(mBeanServer.getAttribute + (pName, "requestProcessingTime"), false)); + writer.write("</td>"); + writer.write("<td>"); + if (showRequest) { + writer.print(formatSize(mBeanServer.getAttribute + (pName, "requestBytesSent"), false)); + } else { + writer.write("?"); + } + writer.write("</td>"); + writer.write("<td>"); + if (showRequest) { + writer.print(formatSize(mBeanServer.getAttribute + (pName, "requestBytesReceived"), + false)); + } else { + writer.write("?"); + } + writer.write("</td>"); + writer.write("<td>"); + writer.print(filter(mBeanServer.getAttribute + (pName, "remoteAddr"))); + writer.write("</td>"); + writer.write("<td nowrap>"); + writer.write(filter(mBeanServer.getAttribute + (pName, "virtualHost"))); + writer.write("</td>"); + writer.write("<td nowrap>"); + if (showRequest) { + writer.write(filter(mBeanServer.getAttribute + (pName, "method"))); + writer.write(" "); + writer.write(filter(mBeanServer.getAttribute + (pName, "currentUri"))); + String queryString = (String) mBeanServer.getAttribute + (pName, "currentQueryString"); + if ((queryString != null) && (!queryString.equals(""))) { + writer.write("?"); + writer.print(RequestUtil.filter(queryString)); + } + writer.write(" "); + writer.write(filter(mBeanServer.getAttribute + (pName, "protocol"))); + } else { + writer.write("?"); + } + writer.write("</td>"); + } else { + writer.write("<td>?</td><td>?</td><td>?</td><td>?</td><td>?</td><td>?</td>"); + } + } else if (mode == 1){ + writer.write("<worker "); + writer.write(" stage=\"" + stageStr + "\""); + + if (fullStatus) { + writer.write(" requestProcessingTime=\"" + + mBeanServer.getAttribute + (pName, "requestProcessingTime") + "\""); + writer.write(" requestBytesSent=\""); + if (showRequest) { + writer.write("" + mBeanServer.getAttribute + (pName, "requestBytesSent")); + } else { + writer.write("0"); + } + writer.write("\""); + writer.write(" requestBytesReceived=\""); + if (showRequest) { + writer.write("" + mBeanServer.getAttribute + (pName, "requestBytesReceived")); + } else { + writer.write("0"); + } + writer.write("\""); + writer.write(" remoteAddr=\"" + + filter(mBeanServer.getAttribute + (pName, "remoteAddr")) + "\""); + writer.write(" virtualHost=\"" + + filter(mBeanServer.getAttribute + (pName, "virtualHost")) + "\""); + + if (showRequest) { + writer.write(" method=\"" + + filter(mBeanServer.getAttribute + (pName, "method")) + "\""); + writer.write(" currentUri=\"" + + filter(mBeanServer.getAttribute + (pName, "currentUri")) + "\""); + + String queryString = (String) mBeanServer.getAttribute + (pName, "currentQueryString"); + if ((queryString != null) && (!queryString.equals(""))) { + writer.write(" currentQueryString=\"" + + RequestUtil.filter(queryString) + "\""); + } else { + writer.write(" currentQueryString=\"?\""); + } + writer.write(" protocol=\"" + + filter(mBeanServer.getAttribute + (pName, "protocol")) + "\""); + } else { + writer.write(" method=\"?\""); + writer.write(" currentUri=\"?\""); + writer.write(" currentQueryString=\"?\""); + writer.write(" protocol=\"?\""); + } + } else { + writer.write(" requestProcessingTime=\"0\""); + writer.write(" requestBytesSent=\"0\""); + writer.write(" requestBytesRecieved=\"0\""); + writer.write(" remoteAddr=\"?\""); + writer.write(" virtualHost=\"?\""); + writer.write(" method=\"?\""); + writer.write(" currentUri=\"?\""); + writer.write(" currentQueryString=\"?\""); + writer.write(" protocol=\"?\""); + } + writer.write(" />"); + } + + } + + + /** + * Write applications state. + */ + public static void writeDetailedState(PrintWriter writer, + MBeanServer mBeanServer, int mode) + throws Exception { + + if (mode == 0){ + ObjectName queryHosts = new ObjectName("*:j2eeType=WebModule,*"); + Set hostsON = mBeanServer.queryNames(queryHosts, null); + + // Navigation menu + writer.print("<h1>"); + writer.print("Application list"); + writer.print("</h1>"); + + writer.print("<p>"); + int count = 0; + Iterator iterator = hostsON.iterator(); + while (iterator.hasNext()) { + ObjectName contextON = (ObjectName) iterator.next(); + String webModuleName = contextON.getKeyProperty("name"); + if (webModuleName.startsWith("//")) { + webModuleName = webModuleName.substring(2); + } + int slash = webModuleName.indexOf("/"); + if (slash == -1) { + count++; + continue; + } + + writer.print("<a href=\"#" + (count++) + ".0\">"); + writer.print(webModuleName); + writer.print("</a>"); + if (iterator.hasNext()) { + writer.print("<br>"); + } + + } + writer.print("</p>"); + + // Webapp list + count = 0; + iterator = hostsON.iterator(); + while (iterator.hasNext()) { + ObjectName contextON = (ObjectName) iterator.next(); + writer.print("<a class=\"A.name\" name=\"" + + (count++) + ".0\">"); + writeContext(writer, contextON, mBeanServer, mode); + } + + } else if (mode == 1){ + // for now we don't write out the Detailed state in XML + } + + } + + + /** + * Write context state. + */ + protected static void writeContext(PrintWriter writer, + ObjectName objectName, + MBeanServer mBeanServer, int mode) + throws Exception { + + if (mode == 0){ + String webModuleName = objectName.getKeyProperty("name"); + String name = webModuleName; + if (name == null) { + return; + } + + String hostName = null; + String contextName = null; + if (name.startsWith("//")) { + name = name.substring(2); + } + int slash = name.indexOf("/"); + if (slash != -1) { + hostName = name.substring(0, slash); + contextName = name.substring(slash); + } else { + return; + } + + ObjectName queryManager = new ObjectName + (objectName.getDomain() + ":type=Manager,path=" + contextName + + ",host=" + hostName + ",*"); + Set managersON = mBeanServer.queryNames(queryManager, null); + ObjectName managerON = null; + Iterator iterator2 = managersON.iterator(); + while (iterator2.hasNext()) { + managerON = (ObjectName) iterator2.next(); + } + + ObjectName queryJspMonitor = new ObjectName + (objectName.getDomain() + ":type=JspMonitor,WebModule=" + + webModuleName + ",*"); + Set jspMonitorONs = mBeanServer.queryNames(queryJspMonitor, null); + + // Special case for the root context + if (contextName.equals("/")) { + contextName = ""; + } + + writer.print("<h1>"); + writer.print(name); + writer.print("</h1>"); + writer.print("</a>"); + + writer.print("<p>"); + Object startTime = mBeanServer.getAttribute(objectName, + "startTime"); + writer.print(" Start time: " + + new Date(((Long) startTime).longValue())); + writer.print(" Startup time: "); + writer.print(formatTime(mBeanServer.getAttribute + (objectName, "startupTime"), false)); + writer.print(" TLD scan time: "); + writer.print(formatTime(mBeanServer.getAttribute + (objectName, "tldScanTime"), false)); + if (managerON != null) { + writeManager(writer, managerON, mBeanServer, mode); + } + if (jspMonitorONs != null) { + writeJspMonitor(writer, jspMonitorONs, mBeanServer, mode); + } + writer.print("</p>"); + + String onStr = objectName.getDomain() + + ":j2eeType=Servlet,WebModule=" + webModuleName + ",*"; + ObjectName servletObjectName = new ObjectName(onStr); + Set set = mBeanServer.queryMBeans(servletObjectName, null); + Iterator iterator = set.iterator(); + while (iterator.hasNext()) { + ObjectInstance oi = (ObjectInstance) iterator.next(); + writeWrapper(writer, oi.getObjectName(), mBeanServer, mode); + } + + } else if (mode == 1){ + // for now we don't write out the context in XML + } + + } + + + /** + * Write detailed information about a manager. + */ + public static void writeManager(PrintWriter writer, ObjectName objectName, + MBeanServer mBeanServer, int mode) + throws Exception { + + if (mode == 0) { + writer.print("<br>"); + writer.print(" Active sessions: "); + writer.print(mBeanServer.getAttribute + (objectName, "activeSessions")); + writer.print(" Session count: "); + writer.print(mBeanServer.getAttribute + (objectName, "sessionCounter")); + writer.print(" Max active sessions: "); + writer.print(mBeanServer.getAttribute(objectName, "maxActive")); + writer.print(" Rejected session creations: "); + writer.print(mBeanServer.getAttribute + (objectName, "rejectedSessions")); + writer.print(" Expired sessions: "); + writer.print(mBeanServer.getAttribute + (objectName, "expiredSessions")); + writer.print(" Longest session alive time: "); + writer.print(formatSeconds(mBeanServer.getAttribute( + objectName, + "sessionMaxAliveTime"))); + writer.print(" Average session alive time: "); + writer.print(formatSeconds(mBeanServer.getAttribute( + objectName, + "sessionAverageAliveTime"))); + writer.print(" Processing time: "); + writer.print(formatTime(mBeanServer.getAttribute + (objectName, "processingTime"), false)); + } else if (mode == 1) { + // for now we don't write out the wrapper details + } + + } + + + /** + * Write JSP monitoring information. + */ + public static void writeJspMonitor(PrintWriter writer, + Set jspMonitorONs, + MBeanServer mBeanServer, + int mode) + throws Exception { + + int jspCount = 0; + int jspReloadCount = 0; + + Iterator iter = jspMonitorONs.iterator(); + while (iter.hasNext()) { + ObjectName jspMonitorON = (ObjectName) iter.next(); + Object obj = mBeanServer.getAttribute(jspMonitorON, "jspCount"); + jspCount += ((Integer) obj).intValue(); + obj = mBeanServer.getAttribute(jspMonitorON, "jspReloadCount"); + jspReloadCount += ((Integer) obj).intValue(); + } + + if (mode == 0) { + writer.print("<br>"); + writer.print(" JSPs loaded: "); + writer.print(jspCount); + writer.print(" JSPs reloaded: "); + writer.print(jspReloadCount); + } else if (mode == 1) { + // for now we don't write out anything + } + } + + + /** + * Write detailed information about a wrapper. + */ + public static void writeWrapper(PrintWriter writer, ObjectName objectName, + MBeanServer mBeanServer, int mode) + throws Exception { + + if (mode == 0) { + String servletName = objectName.getKeyProperty("name"); + + String[] mappings = (String[]) + mBeanServer.invoke(objectName, "findMappings", null, null); + + writer.print("<h2>"); + writer.print(servletName); + if ((mappings != null) && (mappings.length > 0)) { + writer.print(" [ "); + for (int i = 0; i < mappings.length; i++) { + writer.print(mappings[i]); + if (i < mappings.length - 1) { + writer.print(" , "); + } + } + writer.print(" ] "); + } + writer.print("</h2>"); + + writer.print("<p>"); + writer.print(" Processing time: "); + writer.print(formatTime(mBeanServer.getAttribute + (objectName, "processingTime"), true)); + writer.print(" Max time: "); + writer.print(formatTime(mBeanServer.getAttribute + (objectName, "maxTime"), false)); + writer.print(" Request count: "); + writer.print(mBeanServer.getAttribute(objectName, "requestCount")); + writer.print(" Error count: "); + writer.print(mBeanServer.getAttribute(objectName, "errorCount")); + writer.print(" Load time: "); + writer.print(formatTime(mBeanServer.getAttribute + (objectName, "loadTime"), false)); + writer.print(" Classloading time: "); + writer.print(formatTime(mBeanServer.getAttribute + (objectName, "classLoadTime"), false)); + writer.print("</p>"); + } else if (mode == 1){ + // for now we don't write out the wrapper details + } + + } + + + /** + * Filter the specified message string for characters that are sensitive + * in HTML. This avoids potential attacks caused by including JavaScript + * codes in the request URL that is often reported in error messages. + * + * @param obj The message string to be filtered + */ + public static String filter(Object obj) { + + if (obj == null) + return ("?"); + String message = obj.toString(); + + char content[] = new char[message.length()]; + message.getChars(0, message.length(), content, 0); + StringBuffer result = new StringBuffer(content.length + 50); + for (int i = 0; i < content.length; i++) { + switch (content[i]) { + case '<': + result.append("<"); + break; + case '>': + result.append(">"); + break; + case '&': + result.append("&"); + break; + case '"': + result.append("""); + break; + default: + result.append(content[i]); + } + } + return (result.toString()); + + } + + + /** + * Display the given size in bytes, either as KB or MB. + * + * @param mb true to display megabytes, false for kilobytes + */ + public static String formatSize(Object obj, boolean mb) { + + long bytes = -1L; + + if (obj instanceof Long) { + bytes = ((Long) obj).longValue(); + } else if (obj instanceof Integer) { + bytes = ((Integer) obj).intValue(); + } + + if (mb) { + long mbytes = bytes / (1024 * 1024); + long rest = + ((bytes - (mbytes * (1024 * 1024))) * 100) / (1024 * 1024); + return (mbytes + "." + ((rest < 10) ? "0" : "") + rest + " MB"); + } else { + return ((bytes / 1024) + " KB"); + } + + } + + + /** + * Display the given time in ms, either as ms or s. + * + * @param seconds true to display seconds, false for milliseconds + */ + public static String formatTime(Object obj, boolean seconds) { + + long time = -1L; + + if (obj instanceof Long) { + time = ((Long) obj).longValue(); + } else if (obj instanceof Integer) { + time = ((Integer) obj).intValue(); + } + + if (seconds) { + return ((((float) time ) / 1000) + " s"); + } else { + return (time + " ms"); + } + } + + + /** + * Formats the given time (given in seconds) as a string. + * + * @param obj Time object to be formatted as string + * + * @return String formatted time + */ + public static String formatSeconds(Object obj) { + + long time = -1L; + + if (obj instanceof Long) { + time = ((Long) obj).longValue(); + } else if (obj instanceof Integer) { + time = ((Integer) obj).intValue(); + } + + return (time + " s"); + } + +} Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/util/ServerInfo.properties =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/catalina/util/ServerInfo.properties 2005-11-23 00:01:00 UTC (rev 1625) +++ trunk/labs/jbossweb/src/share/classes/org/apache/catalina/util/ServerInfo.properties 2005-11-23 01:21:13 UTC (rev 1626) @@ -1,3 +1,3 @@ -server.info=Apache Tomcat/@VERSION@ +server.info=JBoss Web/@VERSION@ server.number=@VERSION_NUMBER@ server.built=@VERSION_BUILT@ \ No newline at end of file |
From: <jbo...@li...> - 2005-11-23 00:01:10
|
Author: wrzep Date: 2005-11-22 19:01:00 -0500 (Tue, 22 Nov 2005) New Revision: 1625 Added: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java Modified: trunk/forge/portal-extensions/forge-status/project.xml trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusNodeWatcher.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/WeightedScoreAlgorithmFactory.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java Log: Added plugin counting total #commits in project's svn repo. http://jira.jboss.com/jira/browse/JBLAB-415 Pawel Modified: trunk/forge/portal-extensions/forge-status/project.xml =================================================================== --- trunk/forge/portal-extensions/forge-status/project.xml 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/project.xml 2005-11-23 00:01:00 UTC (rev 1625) @@ -65,7 +65,8 @@ <dependency> <groupId>hessian</groupId> <artifactId>hessian</artifactId> - <version>3.0.1</version> <!-- WE NEED 3.0.13 --> + <version>3.0.13</version> + <jar>hessian-3.0.13.jar</jar> <properties> <war.bundle>true</war.bundle> </properties> Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -33,6 +33,12 @@ import java.util.ArrayList; import java.util.concurrent.Delayed; +import org.jboss.forge.common.projects.Projects; +import org.jboss.forge.common.projects.ProjectsHelper; + +import org.jboss.forge.common.projects.permissions.NullPermissionsChecker; +import org.jboss.forge.common.projects.permissions.PermissionsChecker; + import org.jboss.forge.common.XmlTools; import org.jboss.forge.common.projects.AbstractDescriptor; import org.jboss.forge.common.projects.permissions.PermissionsChecker; @@ -54,13 +60,13 @@ import org.jboss.forge.status.plugins.OneStatusPlugin; import org.jboss.forge.status.plugins.SvnStatusPlugin; +import org.jboss.logging.Logger; + /** * @author Pawel Wrzeszcz */ public class Status extends AbstractDescriptor { - private final static String PROJECT_ELEMENT = "project"; - private final static String PLUGIN_ELEMENT = "plugin"; private final static String PLUGIN_ID_ELEMENT = "id"; @@ -71,16 +77,17 @@ private String portalName; private ScoreAlgorithmFactory scoreAlgorithm; - private Set<String> projects; + private Projects projects; private List<StatusPlugin> plugins; - Status(String portalName, Node projectsRoot, Node pluginsRoot, ScoreAlgorithmFactory scoreAlgorithm) { + private Logger log; + + Status(String portalName, Node pluginsRoot, ScoreAlgorithmFactory scoreAlgorithm) { this.portalName = portalName; this.scoreAlgorithm = scoreAlgorithm; // Get the projects - projects = new HashSet<String>(); - projects = getStringsFromNode(projectsRoot, PROJECT_ELEMENT); + projects = ProjectsHelper.getProjects(portalName); // Get the plugins HashSet<String> pluginElementSet = new HashSet<String>(); @@ -113,12 +120,17 @@ /* Fill the context with appropiate values (from each plugin) for each project, */ /* including final score as well. */ - int position = 1; - for (Iterator iter = projects.iterator(); iter.hasNext(); position++) { - String projectName = (String) iter.next(); + PermissionsChecker permissionsChecker = (PermissionsChecker) new NullPermissionsChecker(); + String projectLevel = null; + Set<String> projectIds = projects.getProjectIds(permissionsChecker, projectLevel); + + int position = 0; + for (Iterator iter = projectIds.iterator(); iter.hasNext();) { + String projectId = (String) iter.next(); + position++; DelegateContext projectContext = new DelegateContext(); - fillProjectContext(projectContext, projectName, position); + fillProjectContext(projectContext, projectId, position); context.append("project", projectContext); } @@ -127,9 +139,11 @@ private void fillProjectContext(DelegateContext projectContext, String projectId, int position) { - projectContext.put("name", projectId); projectContext.put("position", position); + projectContext.put("name", projects.getProjectName(projectId)); + projectContext.put("link", projects.getProjectLink(projectId)); + int projectScore = calculateScore(projectId); projectContext.put("score", projectScore); Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -55,10 +55,7 @@ private Status status; public StatusDescriptor(String portalName, ContentManager cm) { - try { - String projectsPath = StatusTools.getPrjXmlCmPath(portalName); - Node projectsRoot = getRoot(cm, projectsPath); - + try { String pluginsPath = StatusTools.getXmlCmPath(portalName,"plugins.xml"); Node pluginsRoot = getRoot(cm, pluginsPath); @@ -66,7 +63,7 @@ if ((root.getNodeType() == Node.ELEMENT_NODE) && (root.getNodeName().equals("projects"))) {}*/ - status = new Status(portalName, projectsRoot, pluginsRoot, new WeightedScoreAlgorithmFactory()); + status = new Status(portalName, pluginsRoot, new WeightedScoreAlgorithmFactory()); fillContext(); Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusNodeWatcher.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusNodeWatcher.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusNodeWatcher.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -26,7 +26,6 @@ import org.jboss.shotoku.ContentManager; public class StatusNodeWatcher implements NodeWatcher { - private ResourceWatcher rw; private ContentManager cm; public StatusNodeWatcher(ContentManager cm) { @@ -34,12 +33,7 @@ } private StatusDescriptor getDesc(String portalName) { - StatusDescriptor desc = new StatusDescriptor(portalName, cm); - - rw = new ResourceWatcher(cm); - rw.watchResource(StatusTools.getPrjXmlCmPath(portalName)); - - return desc; + return new StatusDescriptor(portalName, cm); } public Object init(String portalName) { @@ -47,9 +41,6 @@ } public Object nodeUpdate(String portalName, Object currentValue) { - if ((currentValue == null) || (rw.checkResources())) - return getDesc(portalName); - else - return null; + return getDesc(portalName); } } Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/WeightedScoreAlgorithmFactory.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/WeightedScoreAlgorithmFactory.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/WeightedScoreAlgorithmFactory.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -23,6 +23,7 @@ package org.jboss.forge.status; import java.util.Collection; +import java.util.Iterator; import java.util.Map; import java.util.HashMap; @@ -39,6 +40,14 @@ public WeightedScoreAlgorithmFactory() {} public int calculateScore(String projectId, Collection<StatusPlugin> plugins) { - return 17; + int total = 0; + + for (Iterator iter = plugins.iterator(); iter.hasNext();) { + StatusPlugin plugin = (StatusPlugin) iter.next(); + + total += plugin.getValue(projectId); // TODO weights + } + + return total; } } Added: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -0,0 +1,65 @@ +/* + * 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.status.plugins; + +import java.util.Map; +import java.util.HashMap; + +/** +* @author Pawel Wrzeszcz +*/ + +public class CommitsTotalStatusPlugin extends SvnStatusPlugin { + + protected static String PLUGIN_NAME = "Commits total"; + protected static String PLUGIN_ID = "commitstotal"; + + private Map<String,Map> projects; + + public String getId() { return PLUGIN_ID; } + public String getName() { return PLUGIN_NAME; } + + public CommitsTotalStatusPlugin() { + projects = new HashMap<String,Map>(); + } + + public int getValue(String projectId) { + + if (!projects.containsKey(projectId)) { + projects.put(projectId, getProjectMap(projectId)); + } + + Map projectMap = projects.get(projectId); + + + System.out.println("commits class " + projectMap.get("commitsTotal").getClass()); + return ((Integer)projectMap.get("commitsTotal")).intValue(); + } + + private Map getProjectMap(String projectId) { + String repoUrl = "http://anonsvn.labs.jboss.com/trunk/labs/demo"; // DEBUG ;-) + + return getSvnRepository(repoUrl); + } + +} \ No newline at end of file Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -22,6 +22,8 @@ package org.jboss.forge.status.plugins; +import java.util.Iterator; +import java.util.Collection; import java.util.List; import com.caucho.hessian.client.HessianProxyFactory; @@ -37,18 +39,18 @@ public abstract class JiraStatusPlugin extends StatusPlugin { - protected List<JiraProject> getJiraProjects() { + protected Collection<JiraProject> getJiraProjects() { //Get the projects from kosmo server - List<JiraProject> jiraProjects = null; + Collection<JiraProject> jiraProjects = null; System.out.println("KOSMOS 00"); JiraService service = null; - System.out.println("KOSMOS 001"); + HessianProxyFactory factory = new HessianProxyFactory(); - System.out.println("KOSMOS 002"); + String serviceUrl = "http://localhost:8080/kosmos-server/kosmos-services/jira-service"; - System.out.println("KOSMOS 003"); + try { @@ -67,10 +69,17 @@ System.out.println("***\nKOSMOS jboss\n***"); jiraProjects = service.getProjects("http://jira.jboss.com"); */ + System.out.println("***\nKOSMOS jblab\n***"); jiraProjects = service.getProjects("http://jira.jboss.com/jira/browse/JBLAB"); + System.out.println("class: " + service.getProjects("http://jira.jboss.com/jira/browse/JBLAB").getClass()); System.out.println("KOSMOS FF"); + + for (JiraProject project : jiraProjects) { + + System.out.println("project " + project.getName() + " / " + project.getKey()); + } } catch (Exception e) { e.printStackTrace(); } Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -36,6 +36,6 @@ public String getId() { return PLUGIN_ID; }; public String getName() { return PLUGIN_NAME; }; - public String getValue(String projectId) { return "one :-)";} ; + public int getValue(String projectId) { return -1; } ; } Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -36,8 +36,8 @@ public String getId() { return PLUGIN_ID; }; public String getName() { return PLUGIN_NAME; }; - public ResolvedIssuesStatusPlugin() {getJiraProjects();}; + public ResolvedIssuesStatusPlugin() { getJiraProjects(); }; - public String getValue(String projectId) { return "3";} ; + public int getValue(String projectId) { return 0;} ; } \ No newline at end of file Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -32,6 +32,6 @@ public abstract String getName(); - public abstract String getValue(String projectId); + public abstract int getValue(String projectId); } Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -22,7 +22,9 @@ package org.jboss.forge.status.plugins; +import java.util.Iterator; import java.util.List; +import java.util.Map; import com.caucho.hessian.client.HessianProxyFactory; @@ -33,75 +35,37 @@ * @author Pawel Wrzeszcz */ -public /*abstract*/ class SvnStatusPlugin extends StatusPlugin { +public abstract class SvnStatusPlugin extends StatusPlugin { - public SvnStatusPlugin() {getSvnRepositories();} - - protected static String PLUGIN_NAME = "Svn"; - protected static String PLUGIN_ID = "svn"; - - public String getId() { return PLUGIN_ID; }; - public String getName() { return PLUGIN_NAME; }; - - public String getValue(String projectId) { return "###"; }; - - protected List<SvnRepository> getSvnRepositories() { - //Get the projects from kosmo server - - List<SvnRepository> repositories = null; + protected Map getSvnRepository(String repoUrl) { - System.out.println("KOSMOS 00"); SvnService service = null; - System.out.println("KOSMOS 001"); HessianProxyFactory factory = new HessianProxyFactory(); - System.out.println("KOSMOS 002"); String serviceUrl = "http://localhost:8080/kosmos-server/kosmos-services/svn-service"; - System.out.println("KOSMOS 003"); + Map m = null; + try { - System.out.println("KOSMOS 01"); service = (SvnService) factory.create(SvnService.class, serviceUrl); - if (service != null) { - System.out.println("KOSMOS service: " + service.toString()); - } else { - System.out.println("KOSMOS service == null"); - } + + //repoUrl = "http://anonsvn.labs.jboss.com/trunk/labs/demo"; - String repoUrl; - - /* - System.out.println("KOSMOS ant"); - repoUrl = "http://svn.apache.org/repos/asf/ant"; - repositories = service.getRepositories(repoUrl); - - System.out.println("KOSMOS jbosslabs"); - repoUrl = "http://anonsvn.labs.jboss.com/"; - repositories = service.getRepositories(repoUrl); - */ - - System.out.println("KOSMOS jbosslabs trunk"); - repoUrl = "http://anonsvn.labs.jboss.com/trunk/labs/demo"; - try { - System.out.println("KOSMOS 02"); - repositories = service.getRepositories(repoUrl); - System.out.println("KOSMOS 03"); - SvnRepository repo = repositories.get(0); - if (repo != null) { - System.out.println("total commits " + repo.getCommitsTotal()); - } else { - System.out.println("repo == null"); + List repositories = service.getRepositories(repoUrl); + + m = (Map) repositories.get(0); + if (m != null) { + for (Iterator iter = m.keySet().iterator(); iter.hasNext();) { + Object obj = (Object) iter.next(); + System.out.println("object: " + obj + " binding: " + m.get(obj)); } - } catch (Exception e) { - e.printStackTrace(); - } - - System.out.println("KOSMOS FF"); + } + } catch (Exception e) { e.printStackTrace(); } - return repositories; + return m; } } |
From: <jbo...@li...> - 2005-11-22 23:40:10
|
Author: szimano Date: 2005-11-22 18:39:58 -0500 (Tue, 22 Nov 2005) New Revision: 1624 Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/RecentChangesPlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/ReferringPagesPlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UndefinedPagesPlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UnusedPagesPlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/InsidePluginExcecutor.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorNoPlugins.java Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiTypes.xml 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/WikiInsidePlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/test/java/org/jboss/wiki/test/CheckContentTest.java Log: New inside plugins + modified way they are executed http://jira.jboss.com/jira/browse/JBWIKI-72 http://jira.jboss.com/jira/browse/JBWIKI-71 Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiTypes.xml =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiTypes.xml 2005-11-22 19:50:23 UTC (rev 1623) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiTypes.xml 2005-11-22 23:39:58 UTC (rev 1624) @@ -29,6 +29,10 @@ <class>org.jboss.wiki.plugins.HTMLTranslatorParts</class> </plugin> <plugin> + <name>wikiToHtmlTranslatorNoPlugins</name> + <class>org.jboss.wiki.plugins.HTMLTranslatorNoPlugins</class> + </plugin> + <plugin> <name>friendlyLinks</name> <class>org.jboss.wiki.plugins.FriendlyLinkPlugin</class> </plugin> Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/RecentChangesPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/RecentChangesPlugin.java 2005-11-22 19:50:23 UTC (rev 1623) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/RecentChangesPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) @@ -0,0 +1,117 @@ +package com.ecyrd.jspwiki.plugin; + +// this package is only made for compatibility with JSPWiki + +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Set; +import java.util.TreeMap; +import java.util.TreeSet; + +import org.jboss.wiki.WikiInsidePlugin; +import org.jboss.wiki.WikiPage; +import org.jboss.wiki.WikiSession; +import org.jboss.wiki.plugins.HTMLTranslatorParts; + +public class RecentChangesPlugin extends WikiInsidePlugin { + + @Override + public String process(WikiPage wikiPage, WikiSession wikiSession, + HashMap<String, String> attributes) { + StringBuilder recentChanges = new StringBuilder(); + + Integer numOfDays = Integer.MAX_VALUE; + + if (attributes.get("since") != null) { + + try { + numOfDays = Integer.valueOf(attributes.get("since")); + } catch (NumberFormatException e) { + numOfDays = Integer.MAX_VALUE; + } + + } + + if (numOfDays == Integer.MAX_VALUE) { + recentChanges.append("!!Full recent changes\n"); + } else + recentChanges.append("!!Recent changes from last ").append( + numOfDays).append(" days\n"); + + recentChanges.append("----\n"); + + int offset = recentChanges.length(); + + Set<String> pages = wikiEngine.getAllPageNames(); + + TreeMap<String, TreeSet<String>> sortedByDate = new TreeMap<String, TreeSet<String>>(); + + // get now date + Calendar now = Calendar.getInstance(); + Calendar then = Calendar.getInstance(); + now.setTime(new Date()); + + for (String name : pages) { + WikiPage temp = wikiEngine.getByName(name, null); + + // log.debug("name: "+name+" "+temp.getName()); + then.setTime(temp.getEditDate()); + + then.add(Calendar.DAY_OF_MONTH, numOfDays); + + if (then.after(now)) { + // this page has been edited in last numOfDays days + Calendar cal = Calendar.getInstance(); + String key; + + cal.setTime(temp.getEditDate()); + + String month = String.valueOf(cal.get(Calendar.MONTH) + 1); + String day = String.valueOf(cal.get(Calendar.DAY_OF_MONTH)); + + if (month.length() == 1) + month = "0" + month; + + if (day.length() == 1) + day = "0" + day; + + // create key + key = cal.get(Calendar.YEAR) + "/" + (month) + "/" + day; + + if (sortedByDate.get(key) == null) { + TreeSet<String> set = new TreeSet<String>(); + set.add(temp.getName()); + sortedByDate.put(key, set); + } else { + sortedByDate.get(key).add(temp.getName()); + } + } + + } + + // add pages to recentChanges page + + Set<String> keySet = sortedByDate.keySet(); + + for (String date : keySet) { + StringBuilder day = new StringBuilder(); + + day.append("!''").append(date).append("''\n"); + for (String pageName : sortedByDate.get(date)) { + day.append("[").append(pageName).append("]\\\\\n"); + } + + recentChanges.insert(offset, day.toString()); + } + + return recentChanges.toString(); + } + + @Override + public void init() { + // TODO Auto-generated method stub + + } + +} Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/ReferringPagesPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/ReferringPagesPlugin.java 2005-11-22 19:50:23 UTC (rev 1623) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/ReferringPagesPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) @@ -0,0 +1,106 @@ +package com.ecyrd.jspwiki.plugin; + +import java.util.HashMap; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.jboss.wiki.WikiInsidePlugin; +import org.jboss.wiki.WikiPage; +import org.jboss.wiki.WikiSession; +import org.jboss.wiki.plugins.HTMLTranslatorParts; + +public class ReferringPagesPlugin extends WikiInsidePlugin { + + @Override + public String process(WikiPage wikiPage, WikiSession wikiSession, + HashMap<String, String> attributes) { + Integer max = getNumericValue(attributes, "max"); + Integer maxwidth = getNumericValue(attributes, "maxwidth"); + + if (max == null) + max = 10; + + if ((maxwidth != null) && (maxwidth < 4)) { + maxwidth = 4; + } + + StringBuffer stringBuffer = new StringBuffer(); + + Set<String> pageNames = wikiEngine.getAllPageNames(); + + String uid = wikiEngine.getUid(wikiPage.getName()); + + String pattern1 = "\\[.+\\]"; + String pattern2 = "\\[[\\w\\d]+\\|.+\\]"; + for (String pageName : pageNames) { + if (max == 0) { + // escape for + break; + } + + WikiPage page = wikiEngine.getByName(pageName, null); + + boolean fits = false; + + Matcher matcher = Pattern.compile(pattern1).matcher( + page.getContent()); + + while (matcher.find() && (!fits)) { + String pageUid = page.getContent().substring(matcher.start(), + matcher.end()); + + pageUid = pageUid.substring(1, pageUid + .indexOf(']')); + + pageUid = HTMLTranslatorParts.cleanLink(pageUid); + + if (pageUid != null && pageUid.equals(uid)) { + fits = true; + } + } + + if (!fits) { + matcher = Pattern.compile(pattern2).matcher(page.getContent()); + + while (matcher.find() && (!fits)) { + String pageUid = page.getContent().substring( + matcher.start(), matcher.end()); + + pageUid = pageUid.substring(pageUid.indexOf('|'), pageUid + .indexOf(']')); + + pageUid = HTMLTranslatorParts.cleanLink(pageUid); + + if (pageUid != null && pageUid.equals(uid)) { + fits = true; + } + } + } + + if (fits) { + stringBuffer.append(getLink(page.getName(), maxwidth)); + max--; + } + + } + + return stringBuffer.toString(); + } + + private String getLink(String pageName, Integer maxwidth) { + if ((maxwidth != null) && (pageName.length() > maxwidth)) { + return "[" + pageName.substring(0, maxwidth - 3) + "...|" + + pageName + "]\\\\"; + } else { + return "[" + pageName + "]\\\\"; + } + } + + @Override + public void init() { + // TODO Auto-generated method stub + + } + +} Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UndefinedPagesPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UndefinedPagesPlugin.java 2005-11-22 19:50:23 UTC (rev 1623) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UndefinedPagesPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) @@ -0,0 +1,101 @@ +package com.ecyrd.jspwiki.plugin; + +import java.util.HashMap; +import java.util.Set; +import java.util.TreeSet; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.jboss.wiki.WikiInsidePlugin; +import org.jboss.wiki.WikiPage; +import org.jboss.wiki.WikiSession; +import org.jboss.wiki.plugins.HTMLTranslatorParts; + +public class UndefinedPagesPlugin extends WikiInsidePlugin { + + @Override + public String process(WikiPage wikiPage, WikiSession wikiSession, + HashMap<String, String> attributes) { + Integer maxwidth = getNumericValue(attributes, "maxwidth"); + + if ((maxwidth != null) && (maxwidth < 4)) { + maxwidth = 4; + } + + StringBuffer stringBuffer = new StringBuffer(); + + Set<String> pageNames = wikiEngine.getAllPageNames(); + + String pattern1 = "\\[.+\\]"; + String pattern2 = "\\[[\\w\\d]+\\|.+\\]"; + + Set<String> allRefs = new TreeSet<String>(); + + for (String pageName : pageNames) { + + WikiPage page = wikiEngine.getByName(pageName, null); + + Matcher matcher = Pattern.compile(pattern1).matcher( + page.getContent()); + + while (matcher.find()) { + String pageUid = page.getContent().substring(matcher.start(), + matcher.end()); + + pageUid = pageUid.substring(1, pageUid.indexOf(']')); + + if (!HTMLTranslatorParts.isExternalLink(pageUid)) { + pageUid = HTMLTranslatorParts.cleanLink(pageUid); + + if (pageUid != null) { + allRefs.add(wikiEngine.getRealName(pageUid)); + } + } + } + + matcher = Pattern.compile(pattern2).matcher(page.getContent()); + + while (matcher.find()) { + String pageUid = page.getContent().substring(matcher.start(), + matcher.end()); + + pageUid = pageUid.substring(pageUid.indexOf('|'), pageUid + .indexOf(']')); + + if (!HTMLTranslatorParts.isExternalLink(pageUid)) { + pageUid = HTMLTranslatorParts.cleanLink(pageUid); + + if (pageUid != null) { + allRefs.add(wikiEngine.getRealName(pageUid)); + } + } + } + + } + + for (String pageName : allRefs) { + + if (!wikiEngine.pageExists(pageName)) { + stringBuffer.append(getLink(pageName, maxwidth)); + } + } + + return stringBuffer.toString(); + } + + private String getLink(String pageName, Integer maxwidth) { + if ((maxwidth != null) && (pageName.length() > maxwidth)) { + return "[" + pageName.substring(0, maxwidth - 3) + "...|" + + pageName + "]\\\\"; + } else { + return "[" + pageName + "]\\\\"; + } + } + + @Override + public void init() { + // TODO Auto-generated method stub + + } + +} Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UnusedPagesPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UnusedPagesPlugin.java 2005-11-22 19:50:23 UTC (rev 1623) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/UnusedPagesPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) @@ -0,0 +1,101 @@ +package com.ecyrd.jspwiki.plugin; + +import java.util.HashMap; +import java.util.Set; +import java.util.TreeSet; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.jboss.wiki.WikiInsidePlugin; +import org.jboss.wiki.WikiPage; +import org.jboss.wiki.WikiSession; +import org.jboss.wiki.plugins.HTMLTranslatorParts; + +public class UnusedPagesPlugin extends WikiInsidePlugin { + + @Override + public String process(WikiPage wikiPage, WikiSession wikiSession, + HashMap<String, String> attributes) { + Integer maxwidth = getNumericValue(attributes, "maxwidth"); + + if ((maxwidth != null) && (maxwidth < 4)) { + maxwidth = 4; + } + + StringBuffer stringBuffer = new StringBuffer(); + + Set<String> pageNames = wikiEngine.getAllPageNames(); + + String pattern1 = "\\[.+\\]"; + String pattern2 = "\\[[\\w\\d]+\\|.+\\]"; + + Set<String> allRefs = new TreeSet<String>(); + + for (String pageName : pageNames) { + + WikiPage page = wikiEngine.getByName(pageName, null); + + Matcher matcher = Pattern.compile(pattern1).matcher( + page.getContent()); + + while (matcher.find()) { + String pageUid = page.getContent().substring(matcher.start(), + matcher.end()); + + pageUid = pageUid.substring(1, pageUid.indexOf(']')); + + if (!HTMLTranslatorParts.isExternalLink(pageUid)) { + pageUid = HTMLTranslatorParts.cleanLink(pageUid); + + if (pageUid != null) { + allRefs.add(wikiEngine.getRealName(pageUid)); + } + } + } + + matcher = Pattern.compile(pattern2).matcher(page.getContent()); + + while (matcher.find()) { + String pageUid = page.getContent().substring(matcher.start(), + matcher.end()); + + pageUid = pageUid.substring(pageUid.indexOf('|'), pageUid + .indexOf(']')); + + if (!HTMLTranslatorParts.isExternalLink(pageUid)) { + pageUid = HTMLTranslatorParts.cleanLink(pageUid); + + if (pageUid != null) { + allRefs.add(wikiEngine.getRealName(pageUid)); + } + } + } + + } + + for (String pageName : pageNames) { + + if (!allRefs.contains(pageName)) { + stringBuffer.append(getLink(pageName, maxwidth)); + } + } + + return stringBuffer.toString(); + } + + private String getLink(String pageName, Integer maxwidth) { + if ((maxwidth != null) && (pageName.length() > maxwidth)) { + return "[" + pageName.substring(0, maxwidth - 3) + "...|" + + pageName + "]\\\\"; + } else { + return "[" + pageName + "]\\\\"; + } + } + + @Override + public void init() { + // TODO Auto-generated method stub + + } + +} Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/InsidePluginExcecutor.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/InsidePluginExcecutor.java 2005-11-22 19:50:23 UTC (rev 1623) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/InsidePluginExcecutor.java 2005-11-22 23:39:58 UTC (rev 1624) @@ -0,0 +1,207 @@ +package org.jboss.wiki; + +import java.io.IOException; +import java.util.HashMap; +import java.util.InvalidPropertiesFormatException; +import java.util.Iterator; +import java.util.Properties; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.jboss.logging.Logger; + +public class InsidePluginExcecutor { + + private static final String attribType1 = "[\\s]+[\\w]+=([\\d]+|true|false),?"; + + private static final String attribType2 = "[\\s]+[\\w]+='(\\\\'|[^'])+',?"; + + private static final String insidePluginRegex = "\\{(INSERT[\\s]){0,1}[\\s]*[.\\w]+([\\s]+WHERE[\\s]*)?(" + + attribType1 + "|" + attribType2 + ")*[\\s]*\\}"; + + private HashMap<String, WikiInsidePlugin> insidePlugins; + + private Logger log; + + private WikiEngine wikiEngine; + + public InsidePluginExcecutor(WikiEngine wikiEngine) { + + this.wikiEngine = wikiEngine; + + log = Logger.getLogger(this.getClass()); + + insidePlugins = new HashMap<String, WikiInsidePlugin>(); + + loadInsidePlugins(); + } + + private void loadInsidePlugins() { + Properties props = new Properties(); + + try { + props.loadFromXML(WikiTypeHandler.class + .getResourceAsStream("/WikiInsidePlugins.xml")); + } catch (InvalidPropertiesFormatException e) { + log.error("WikiInsidePlugins.xml has bad format !", e); + } catch (IOException e) { + log.error("There is no WikiInsidePlugins.xml file !", e); + } + + Iterator it = props.keySet().iterator(); + + while (it.hasNext()) { + String pluginName = (String) it.next(); + log.info("Loading inside plugin: " + pluginName + " class: " + + props.getProperty(pluginName)); + + WikiInsidePlugin wikiInsidePlugin = null; + + try { + wikiInsidePlugin = loadObject(props.getProperty(pluginName)); + + insidePlugins.put(pluginName, wikiInsidePlugin); + + } catch (InstantiationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + } + + private WikiInsidePlugin loadObject(String className) + throws InstantiationException, IllegalAccessException, + ClassNotFoundException { + WikiInsidePlugin wikiInsidePlugin = (WikiInsidePlugin) Class.forName(className).newInstance(); + + wikiInsidePlugin.setWikiEngine(wikiEngine); + + return wikiInsidePlugin; + } + + public String executeInsidePlugin(String pluginLink, WikiPage wikiPage, + WikiSession wikiSession) { + + // old inside plugin regex + // "\\{[\\w]+([\\s]+[\\w]+='[\\d\\w\\s]+')*\\s*\\}" + + String localPluginLink = pluginLink; + + WikiInsidePlugin plugin = null; + + log.info("executing plugin: "+pluginLink); + + if (!localPluginLink.matches(insidePluginRegex)) { + // this is not a proper inside plugin link + + return "''INSIDE PLUGIN ERROR: " + pluginLink + + " is not a proper plugin link''"; + } + + plugin = getPluginObject(localPluginLink); + + if (plugin != null) { + HashMap<String, String> attributes = extractAttribs(localPluginLink); + + return plugin.process(wikiPage, wikiSession, + attributes); + } + else + return "''INSIDE PLUGIN ERROR: There is no plugin: " + pluginLink + + "''"; + + } + + private WikiInsidePlugin getPluginObject(String pluginDef) { + WikiInsidePlugin wikiInsidePlugin = null; + + if (pluginDef.startsWith("{")) + pluginDef = pluginDef.substring(1); + + pluginDef = pluginDef.trim(); + + if (pluginDef.startsWith("INSERT")) { + pluginDef = pluginDef.substring("INSERT".length()); + } + + pluginDef = pluginDef.trim(); + + int spacePos = pluginDef.indexOf(" "); + + String className = pluginDef.substring(0, (spacePos != -1) ? spacePos : pluginDef.indexOf("}")); + + pluginDef = pluginDef.substring(className.length()).trim(); + + log.info("Plugin name: "+className); + + if (className.indexOf('.') != -1) { + // full class name + try { + wikiInsidePlugin = loadObject(className); + } catch (InstantiationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ClassNotFoundException e) { + // just return null + } + } else { + wikiInsidePlugin = insidePlugins.get(className); + } + + return wikiInsidePlugin; + } + + private HashMap<String, String> extractAttribs(String pluginDef) { + + HashMap<String, String> attributes = new HashMap<String, String>(); + + Matcher matcher = Pattern.compile(attribType1).matcher(pluginDef); + + while (matcher.find()) { + String attrib = pluginDef.substring(matcher.start(), matcher.end()); + + getAttrib1(attrib.trim(), attributes); + } + + matcher = Pattern.compile(attribType2).matcher(pluginDef); + + while (matcher.find()) { + String attrib = pluginDef.substring(matcher.start(), matcher.end()); + + getAttrib2(attrib.trim(), attributes); + } + + return attributes; + } + + private void getAttrib1(String attrib, HashMap<String,String> attributes) { + // digits or true/false + String attribName = attrib.substring(0, attrib.indexOf("=")); + String attribValue = attrib.substring(attrib.indexOf("=")+1, attrib.length()); + + attributes.put(attribName, attribValue); + + log.info("new attribute: "+attribName+" "+attribValue); + } + + private void getAttrib2(String attrib, HashMap<String,String> attributes) { + // string, digits ... also special characters (\' = ') + + String attribName = attrib.substring(0, attrib.indexOf("=")); + String attribValue = attrib.substring(attrib.indexOf('\'')+1, attrib.length()-1).replaceAll("\\\\'", "'"); + + attributes.put(attribName, attribValue); + + log.info("new attribute: "+attribName+" "+attribValue); + } +} 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-22 19:50:23 UTC (rev 1623) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2005-11-22 23:39:58 UTC (rev 1624) @@ -78,8 +78,6 @@ private HashMap<String, WikiPage> pages; - private HashMap<String, WikiInsidePlugin> insidePlugins; - private HashMap<String, WikiType> wikiTypes; private MediaDataSource mediaDataSource; @@ -103,7 +101,9 @@ private Class credentialsClass; private Logger log; - + + private InsidePluginExcecutor insidePluginExcecutor; + /** * <p> * Does ... @@ -299,7 +299,8 @@ null, this, true, true); loadWikiTypes(); - loadInsidePlugins(); + + insidePluginExcecutor = new InsidePluginExcecutor(this); Properties jbosswikiprops = new Properties(); @@ -439,50 +440,8 @@ } } - private void loadInsidePlugins() { - insidePlugins = new HashMap<String, WikiInsidePlugin>(); + - Properties props = new Properties(); - - try { - props.loadFromXML(WikiTypeHandler.class - .getResourceAsStream("/WikiInsidePlugins.xml")); - } catch (InvalidPropertiesFormatException e) { - log.error("WikiInsidePlugins.xml has bad format !",e); - } catch (IOException e) { - log.error("There is no WikiInsidePlugins.xml file !",e); - } - - Iterator it = props.keySet().iterator(); - - while (it.hasNext()) { - String pluginName = (String) it.next(); - log.info("Loading inside plugin: " - + pluginName + " class: " + props.getProperty(pluginName)); - - WikiInsidePlugin wikiInsidePlugin = null; - - try { - wikiInsidePlugin = (WikiInsidePlugin) Class.forName( - props.getProperty(pluginName)).newInstance(); - - wikiInsidePlugin.setWikiEngine(this); - - insidePlugins.put(pluginName, wikiInsidePlugin); - } catch (InstantiationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IllegalAccessException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ClassNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - } - /** * <p> * Does ... @@ -645,43 +604,9 @@ public String executeInsidePlugin(String pluginLink, WikiPage wikiPage, WikiSession wikiSession) { - String pluginName = null; - - if (!pluginLink - .matches("\\{[\\w]+([\\s]+[\\w]+='[\\d\\w\\s]+')*\\s*\\}")) { - // this is not a proper inside plugin link - - return "<i>INSIDE PLUGIN ERROR: " + pluginLink - + " is not a proper plugin link</i>"; - } - - pluginName = pluginLink.substring(1, - (pluginLink.indexOf(" ") != -1) ? pluginLink.indexOf(" ") - : pluginLink.indexOf("}")); - - // get attributes - HashMap<String, String> attributes = new HashMap<String, String>(); - - Matcher matcher = Pattern.compile("[\\w]+='[\\d\\w\\s]+'").matcher( - pluginLink); - - while (matcher.find()) { - String attrib = pluginLink - .substring(matcher.start(), matcher.end()); - - String attribName = attrib.substring(0, attrib.indexOf("'") - 1); - String attribValue = attrib.substring(attrib.indexOf("'") + 1, - attrib.lastIndexOf("'")); - - attributes.put(attribName, attribValue); - } - - if (insidePlugins.containsKey(pluginName)) - return insidePlugins.get(pluginName).process(wikiPage, wikiSession, - attributes); - else - return "<i>INSIDE PLUGIN ERROR: There is no plugin: " + pluginName - + "</i>"; + + return insidePluginExcecutor.executeInsidePlugin(pluginLink, wikiPage, wikiSession); + } public boolean deletePage(String pageName, boolean deleteSubpages) { Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiInsidePlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiInsidePlugin.java 2005-11-22 19:50:23 UTC (rev 1623) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiInsidePlugin.java 2005-11-22 23:39:58 UTC (rev 1624) @@ -122,5 +122,19 @@ this.name = name; } + protected Integer getNumericValue(HashMap<String, String> attributes, String valName) { + String val = attributes.get(valName); + + if (val != null) { + try { + return Integer.valueOf(val); + } catch (NumberFormatException e) { + return null; + } + } + else { + return null; + } + } } Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorNoPlugins.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorNoPlugins.java 2005-11-22 19:50:23 UTC (rev 1623) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorNoPlugins.java 2005-11-22 23:39:58 UTC (rev 1624) @@ -0,0 +1,5 @@ +package org.jboss.wiki.plugins; + +public class HTMLTranslatorNoPlugins extends HTMLTranslatorParts { + private boolean executePlugins = true; +} Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java 2005-11-22 19:50:23 UTC (rev 1623) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java 2005-11-22 23:39:58 UTC (rev 1624) @@ -125,6 +125,8 @@ // stores the name of the wiki page we are currently processing private String pageName = ""; + private boolean executePlugins = true; + public HTMLTranslatorParts() { } @@ -808,7 +810,12 @@ if (isPluginLink(link)) { //return null; // we do not include plugin links for now - return wikiEngine.executeInsidePlugin(link, wPage, wikiSession); + if (executePlugins ) { + return HTMLTranslatorParts.pagePartRegexStart+wikiEngine.executeInsidePlugin(link, wPage, wikiSession)+HTMLTranslatorParts.pagePartRegexEnd; + } + else { + return link; + } } int border = link.indexOf('|'); if (border != -1) // [text|link] case Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/test/java/org/jboss/wiki/test/CheckContentTest.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/test/java/org/jboss/wiki/test/CheckContentTest.java 2005-11-22 19:50:23 UTC (rev 1623) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/test/java/org/jboss/wiki/test/CheckContentTest.java 2005-11-22 23:39:58 UTC (rev 1624) @@ -10,7 +10,7 @@ public class CheckContentTest extends WikiTest { - private static final String PATTERN = "<i>INSIDE PLUGIN ERROR:.*</i>"; + private static final String PATTERN = "INSIDE PLUGIN ERROR:.*\\}"; public void testNotExisitngInsidePlugins() { // this test doesn't fail but only generates list of pages that use improper INSIDE PLUGINS |
From: <jbo...@li...> - 2005-11-22 19:50:34
|
Author: aron.gombas Date: 2005-11-22 14:50:23 -0500 (Tue, 22 Nov 2005) New Revision: 1623 Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/AbstractKosmosService.java trunk/labs/kosmos/src/java/hu/midori/kosmos/server/jira/JiraServiceImpl.java trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java Log: Data list trimming 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-22 19:26:00 UTC (rev 1622) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/AbstractKosmosService.java 2005-11-22 19:50:23 UTC (rev 1623) @@ -9,6 +9,7 @@ import java.io.InputStream; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Locale; import java.util.Map; import java.util.ResourceBundle; @@ -29,7 +30,12 @@ */ public abstract class AbstractKosmosService implements ApplicationContextAware { private final static Log log = LogFactory.getLog(AbstractKosmosService.class); - + + /** + * Heavy lists will be trimmed to this size or set to -1 if you want to disable trimming. + * @see #trimList(List) + */ + private static final int MAX_RECORDS = 64; /** Cache timeout in milliseconds: a new request over this period will receive the cached result. */ private static final int CACHE_TIMEOUT = 10*60*1000; @@ -132,4 +138,15 @@ return ""; } } + + /** + * Trims long lists to some limited size to avoid large datasets that would result in + * huge network transfers and unuseable web pages. + */ + protected List trimList(List data) { + if((MAX_RECORDS != -1) && (data.size() > MAX_RECORDS)) + return data.subList(0, MAX_RECORDS); + + return data; + } } Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/jira/JiraServiceImpl.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/jira/JiraServiceImpl.java 2005-11-22 19:26:00 UTC (rev 1622) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/jira/JiraServiceImpl.java 2005-11-22 19:50:23 UTC (rev 1623) @@ -256,12 +256,12 @@ out.reset(); ChartUtils.writeChartAsPng(ChartUtils.generateColorCodedPieChart(ChartUtils.collectionToPieDataset(openIssuesPerPriorityMap)), out); String openIssuesPerPriorityChartUrl = storeFile(prefix + "_open_issues_per_priority.png", new ByteArrayInputStream(out.toByteArray())); - + // save JiraProject project = new JiraProject(name, prefix, projectKey, projectUrl, description, lead, openIssues, codingInProgressIssues, reopenedIssues, resolvedIssues, closedIssues, blockerOpenIssues, criticalOpenIssues, majorOpenIssues, minorOpenIssues, trivialOpenIssues, optionalOpenIssues, - (List<Map.Entry<String, Integer>>)openIssuesPerAssignee, + (List<Map.Entry<String, Integer>>)trimList(openIssuesPerAssignee), issuesPerStatusChartUrl, openIssuesPerPriorityChartUrl, openIssuesPerAssigneeChartUrl); log.debug(String.format("Adding %s...", project)); projects.add(project); Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java 2005-11-22 19:26:00 UTC (rev 1622) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java 2005-11-22 19:50:23 UTC (rev 1623) @@ -113,12 +113,12 @@ // save previousLatestRevision = repo.getLatestRevision(); SvnRepository repository = new SvnRepository(ScrapingUtils.removeUserInfoFromUrl(repo.getLocation().toString()), repo.getLatestRevision(), - logStats.createdDate, logStats.commits, + logStats.createdDate, trimList(logStats.commits), logStats.commitsTotal, logStats.commitsToday, logStats.commitsLast7Days, logStats.commitsLast31Days, logStats.committersTotal.size(), logStats.committersToday.size(), logStats.committersLast7Days.size(), logStats.committersLast31Days.size(), logStats.commitsPerAuthorChartUrl, logStats.commitsPerFileChartUrl, logStats.commitsPerWeekChartUrl, logStats.repoEntriesPerWeekChartUrl, contentStats.dirs, contentStats.files, contentStats.totalSize, - (List<Map.Entry<String, Integer>>)logStats.commitsPerAuthor, (List<Map.Entry<String, Integer>>)logStats.commitsPerFile); + (List<Map.Entry<String, Integer>>)trimList(logStats.commitsPerAuthor), (List<Map.Entry<String, Integer>>)trimList(logStats.commitsPerFile)); log.debug(String.format("Adding %s...", repository)); repositories.add(repository); } catch (Exception ex) { |
From: <jbo...@li...> - 2005-11-22 19:26:20
|
Author: aron.gombas Date: 2005-11-22 14:26:00 -0500 (Tue, 22 Nov 2005) New Revision: 1622 Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ChartUtils.java Log: Cosmetic changes Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ChartUtils.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ChartUtils.java 2005-11-22 19:03:27 UTC (rev 1621) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ChartUtils.java 2005-11-22 19:26:00 UTC (rev 1622) @@ -36,15 +36,10 @@ */ public class ChartUtils { /** - * Max number of items in clamped datasets. + * Max number of items in trimmed datasets. * @see #collectionToPieDataset(Collection, int) */ public static final int MAX_ITEMS = 8; - /** - * Pass this as max number of items for unclamped datasets. - * @see #collectionToPieDataset(Collection, int) - */ - public static final int NO_CLAMP_MAX_ITEMS = -1; /** Horizontal resolution of chart images. */ protected static final int CHART_RESOLUTION_X = 320; @@ -103,18 +98,18 @@ } /** - * Returns the passed collection as unclamped pie-dataset. + * Returns the passed collection as untrimmed pie-dataset. * @see #collectionToPieDataset(Collection, int) */ public static PieDataset collectionToPieDataset(Collection items) { - return collectionToPieDataset(items, NO_CLAMP_MAX_ITEMS); + return collectionToPieDataset(items, -1); } /** * Returns the passed collection of <code>Map.Entry</code> objects as pie-dataset - * (equivalent key-value pairs), optionally clamped to a maximum number of items + * (equivalent key-value pairs), optionally trimmed to a maximum number of items * to prevent unreadably busy charts. - * @param maxItems the maximum number of items in the returned pie-dataset or <code>NO_CLAMP_MAX_ITEMS</code> if clamping is not needed. + * @param maxItems the maximum number of items in the returned pie-dataset or -1 if trimming is not needed. */ public static PieDataset collectionToPieDataset(Collection items, int maxItems) { DefaultPieDataset dataset = new DefaultPieDataset(); @@ -122,7 +117,7 @@ // generate dataset int counter = 0; for(Map.Entry<? extends Comparable, Integer> item : (Collection<Map.Entry<? extends Comparable, Integer>>)items) { - if((maxItems != NO_CLAMP_MAX_ITEMS) && (++counter > maxItems)) + if((maxItems != -1) && (++counter > maxItems)) break; dataset.setValue(item.getKey(), item.getValue()); } |
From: <jbo...@li...> - 2005-11-22 19:03:49
|
Author: aron.gombas Date: 2005-11-22 14:03:27 -0500 (Tue, 22 Nov 2005) New Revision: 1621 Modified: trunk/labs/kosmos/build/kosmos-project.properties Log: Verno increased Modified: trunk/labs/kosmos/build/kosmos-project.properties =================================================================== --- trunk/labs/kosmos/build/kosmos-project.properties 2005-11-22 18:24:36 UTC (rev 1620) +++ trunk/labs/kosmos/build/kosmos-project.properties 2005-11-22 19:03:27 UTC (rev 1621) @@ -1,3 +1,3 @@ project.name=Kosmos project.name.short=kosmos -project.version=0.1.4 +project.version=0.1.5 |
From: <jbo...@li...> - 2005-11-22 18:25:07
|
Author: aron.gombas Date: 2005-11-22 13:24:36 -0500 (Tue, 22 Nov 2005) New Revision: 1620 Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ChartUtils.java Log: Ordering is not only by Int-value, but also by String-key as secondary Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ChartUtils.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ChartUtils.java 2005-11-22 18:22:51 UTC (rev 1619) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ChartUtils.java 2005-11-22 18:24:36 UTC (rev 1620) @@ -134,11 +134,18 @@ public static List intValuedMapToSortedList(Map map) {// TODO should be Map<?, Integer> and List<Map.Entry<?, Integer>> List<Map.Entry> sorted = new ArrayList<Map.Entry>(map.entrySet()); Collections.sort(sorted, new Comparator() {// TODO should be Comparator<Map.Entry<?, Integer>> - public int compare(Object o1, Object o2) { - Integer v1 = (Integer)((Map.Entry)o1).getValue(); - Integer v2 = (Integer)((Map.Entry)o2).getValue(); + public int compare(Object obj1, Object obj2) { // revert-compare for descending order - return v2.compareTo(v1); + Integer value1 = (Integer)((Map.Entry)obj1).getValue(); + Integer value2 = (Integer)((Map.Entry)obj2).getValue(); + int comparison = value2.compareTo(value1); + if(comparison != 0) + return comparison; + + // compare keys in ascending order for identical-valued entries + String key1 = (String)((Map.Entry)obj1).getKey(); + String key2 = (String)((Map.Entry)obj2).getKey(); + return key1.compareTo(key2); } }); |
From: <jbo...@li...> - 2005-11-22 18:23:19
|
Author: aron.gombas Date: 2005-11-22 13:22:51 -0500 (Tue, 22 Nov 2005) New Revision: 1619 Modified: trunk/labs/kosmos/web-portlet/WEB-INF/web.xml trunk/labs/kosmos/web-server/WEB-INF/web.xml Log: Default locale changed back to "en" Modified: trunk/labs/kosmos/web-portlet/WEB-INF/web.xml =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/web.xml 2005-11-22 11:06:05 UTC (rev 1618) +++ trunk/labs/kosmos/web-portlet/WEB-INF/web.xml 2005-11-22 18:22:51 UTC (rev 1619) @@ -12,6 +12,6 @@ <!-- JSTL configuration --> <context-param> <param-name>javax.servlet.jsp.jstl.fmt.locale</param-name> - <param-value>hu</param-value> + <param-value>en</param-value> </context-param> </web-app> Modified: trunk/labs/kosmos/web-server/WEB-INF/web.xml =================================================================== --- trunk/labs/kosmos/web-server/WEB-INF/web.xml 2005-11-22 11:06:05 UTC (rev 1618) +++ trunk/labs/kosmos/web-server/WEB-INF/web.xml 2005-11-22 18:22:51 UTC (rev 1619) @@ -11,7 +11,7 @@ <context-param> <param-name>locale</param-name> - <param-value>hu</param-value> + <param-value>en</param-value> </context-param> <servlet> |
From: <jbo...@li...> - 2005-11-22 11:06:35
|
Author: rem...@jb... Date: 2005-11-22 06:06:05 -0500 (Tue, 22 Nov 2005) New Revision: 1618 Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/authenticator/AuthenticatorBase.java trunk/labs/jbossweb/src/share/classes/org/apache/catalina/realm/RealmBase.java Log: - Port patch. Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/authenticator/AuthenticatorBase.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/catalina/authenticator/AuthenticatorBase.java 2005-11-22 00:12:38 UTC (rev 1617) +++ trunk/labs/jbossweb/src/share/classes/org/apache/catalina/authenticator/AuthenticatorBase.java 2005-11-22 11:06:05 UTC (rev 1618) @@ -69,7 +69,7 @@ * requests. Requests of any other type will simply be passed through. * * @author Craig R. McClanahan - * @version $Revision: 322520 $ $Date: 2005-10-17 00:21:00 +0200 (lun., 17 oct. 2005) $ + * @version $Revision: 348087 $ $Date: 2005-11-22 06:06:40 +0100 (mar., 22 nov. 2005) $ */ @@ -468,28 +468,33 @@ */ return; } - - for(i=0; i < constraints.length; i++) { - // Authenticate based upon the specified login configuration - if (constraints[i].getAuthConstraint()) { + + // Since authenticate modifies the response on failure, + // we have to check for allow-from-all first. + boolean authRequired = true; + for(i=0; i < constraints.length && authRequired; i++) { + if(!constraints[i].getAuthConstraint()) { + authRequired = false; + } + } + + if(authRequired) { + if (log.isDebugEnabled()) { + log.debug(" Calling authenticate()"); + } + if (!authenticate(request, response, config)) { if (log.isDebugEnabled()) { - log.debug(" Calling authenticate()"); + log.debug(" Failed authenticate() test"); } - if (!authenticate(request, response, config)) { - if (log.isDebugEnabled()) { - log.debug(" Failed authenticate() test"); - } - /* - * ASSERT: Authenticator already set the appropriate - * HTTP status code, so we do not have to do anything - * special - */ - return; - } else { - break; - } - } + /* + * ASSERT: Authenticator already set the appropriate + * HTTP status code, so we do not have to do anything + * special + */ + return; + } } + if (log.isDebugEnabled()) { log.debug(" Calling accessControl()"); } Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/realm/RealmBase.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/catalina/realm/RealmBase.java 2005-11-22 00:12:38 UTC (rev 1617) +++ trunk/labs/jbossweb/src/share/classes/org/apache/catalina/realm/RealmBase.java 2005-11-22 11:06:05 UTC (rev 1618) @@ -60,7 +60,7 @@ * location) are identical to those currently supported by Tomcat 3.X. * * @author Craig R. McClanahan - * @version $Revision: 325874 $ $Date: 2005-10-17 12:39:15 +0200 (lun., 17 oct. 2005) $ + * @version $Revision: 348091 $ $Date: 2005-11-22 06:18:05 +0100 (mar., 22 nov. 2005) $ */ public abstract class RealmBase @@ -724,26 +724,26 @@ // Which user principal have we already authenticated? Principal principal = request.getPrincipal(); + boolean status = false; + boolean denyfromall = false; for(int i=0; i < constraints.length; i++) { SecurityConstraint constraint = constraints[i]; String roles[] = constraint.findAuthRoles(); if (roles == null) roles = new String[0]; - if (constraint.getAllRoles()) - return (true); + if (constraint.getAllRoles() && !denyfromall) + status = true; if (log.isDebugEnabled()) log.debug(" Checking roles " + principal); if (roles.length == 0) { if(constraint.getAuthConstraint()) { - response.sendError - (HttpServletResponse.SC_FORBIDDEN, - sm.getString("realmBase.forbidden")); if( log.isDebugEnabled() ) log.debug("No roles "); - return (false); // No listed roles means no access at all + status = false; // No listed roles means no access at all + denyfromall = true; } else { if(log.isDebugEnabled()) log.debug("Passing all access"); @@ -752,25 +752,24 @@ } else if (principal == null) { if (log.isDebugEnabled()) log.debug(" No user authenticated, cannot grant access"); - response.sendError - (HttpServletResponse.SC_FORBIDDEN, - sm.getString("realmBase.notAuthenticated")); - return (false); - } + status = false; + } else if(!denyfromall) { - - for (int j = 0; j < roles.length; j++) { - if (hasRole(principal, roles[j])) - return (true); - if( log.isDebugEnabled() ) - log.debug( "No role found: " + roles[j]); + for (int j = 0; j < roles.length; j++) { + if (hasRole(principal, roles[j])) + status = true; + if( log.isDebugEnabled() ) + log.debug( "No role found: " + roles[j]); + } } } // Return a "Forbidden" message denying access to this resource - response.sendError - (HttpServletResponse.SC_FORBIDDEN, - sm.getString("realmBase.forbidden")); - return (false); + if(!status) { + response.sendError + (HttpServletResponse.SC_FORBIDDEN, + sm.getString("realmBase.forbidden")); + } + return status; } |
From: <jbo...@li...> - 2005-11-21 18:45:47
|
Author: adamw Date: 2005-11-21 13:45:34 -0500 (Mon, 21 Nov 2005) New Revision: 1615 Added: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/TextEscaping.java Modified: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java Log: Text escaping, dates for atom, rdf 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-21 18:33:09 UTC (rev 1614) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java 2005-11-21 18:45:34 UTC (rev 1615) @@ -335,6 +335,9 @@ return param; } + private final static String RFC_822_DATE = "EEE, d MMM yyyy HH:mm:ss Z"; + private final static String RFC_3339_DATE = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; + private void generateShotokuFeeds(String portalName, Map<String, Node> feedDefs, Properties props) { Set<String> parametrized = new HashSet<String>(Arrays.asList(props.getProperty( @@ -372,8 +375,11 @@ String dateFormat = attributes.get("dateFormat"); vc.put("dateFormat", new SimpleDateFormat( dateFormat == null ? "MM/dd/yy" : dateFormat)); + vc.put("rssDateFormat", new SimpleDateFormat(RFC_822_DATE)); + vc.put("rdfDateFormat", new SimpleDateFormat(RFC_3339_DATE)); vc.put("now", Calendar.getInstance().getTime()); vc.put("baseServerAddress", baseServerAddress); + vc.put("escape", new TextEscaping()); for (String project : projects) { String feedNameReplaced = feedName.replace(PROJECT_PARAM, Added: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/TextEscaping.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/TextEscaping.java 2005-11-21 18:33:09 UTC (rev 1614) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/TextEscaping.java 2005-11-21 18:45:34 UTC (rev 1615) @@ -0,0 +1,128 @@ +/* + * 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.feeds; + +import java.text.StringCharacterIterator; + +/** + * + * @author http://www.javapractices.com/Topic96.cjp + */ +public class TextEscaping { + /** + * Replace characters having special meaning <em>inside</em> HTML tags + * with their escaped equivalents, using character entities such as + * <tt>'&'</tt>. + * + * <P> + * The escaped characters are : + * <ul> + * <li> < + * <li> > + * <li> " + * <li> ' + * <li> \ + * <li> & + * </ul> + * + * <P> + * This method ensures that arbitrary text appearing inside a tag does not + * "confuse" the tag. For example, <tt>HREF='Blah.do?Page=1&Sort=ASC'</tt> + * does not comply with strict HTML because of the ampersand, and should be + * changed to <tt>HREF='Blah.do?Page=1&Sort=ASC'</tt>. This is + * commonly seen in building query strings. (In JSTL, the c:url tag performs + * this task automatically.) + */ + public static String tags(String aTagFragment) { + if (aTagFragment == null) + return null; + + final StringBuffer result = new StringBuffer(); + + final StringCharacterIterator iterator = new StringCharacterIterator( + aTagFragment); + char character = iterator.current(); + while (character != StringCharacterIterator.DONE) { + if (character == '<') { + result.append("<"); + } else if (character == '>') { + result.append(">"); + } else if (character == '\"') { + result.append("""); + } else if (character == '\'') { + result.append("'"); + } else if (character == '\\') { + result.append("\"); + } else if (character == '&') { + result.append("&"); + } else { + // the char is not a special one + // add it to the result as is + result.append(character); + } + character = iterator.next(); + } + return result.toString(); + } + + /** + * Return <tt>aText</tt> with all start-of-tag and end-of-tag characters + * replaced by their escaped equivalents. + * + * <P> + * If user input may contain tags which must be disabled, then call this + * method, not {@link #forHTMLTag}. This method is used for text appearing + * <em>outside</em> of a tag, while {@link #forHTMLTag} is used for text + * appearing <em>inside</em> an HTML tag. + * + * <P> + * It is not uncommon to see text on a web page presented erroneously, + * because <em>all</em> special characters are escaped (as in + * {@link #forHTMLTag}). In particular, the ampersand character is often + * escaped not once but <em>twice</em> : once when the original input + * occurs, and then a second time when the same item is retrieved from the + * database. This occurs because the ampersand is the only escaped character + * which appears in a character entity. + */ + public static String all(String aText) { + if (aText == null) + return null; + + final StringBuffer result = new StringBuffer(); + final StringCharacterIterator iterator = new StringCharacterIterator( + aText); + char character = iterator.current(); + while (character != StringCharacterIterator.DONE) { + if (character == '<') { + result.append("<"); + } else if (character == '>') { + result.append(">"); + } else { + // the char is not a special one + // add it to the result as is + result.append(character); + } + character = iterator.next(); + } + return result.toString(); + } +} |
From: <jbo...@li...> - 2005-11-21 18:33:22
|
Author: wrzep Date: 2005-11-21 13:33:09 -0500 (Mon, 21 Nov 2005) New Revision: 1614 Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java Log: removed debug log messages http://jira.jboss.com/jira/browse/JBLAB-406 Pawel Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-11-21 15:24:08 UTC (rev 1613) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-11-21 18:33:09 UTC (rev 1614) @@ -200,10 +200,10 @@ } // TODO itunes tags - + /* System.out.println("channel / element value / author = " + channel.getElementValue("itunes:author")); System.out.println("item / element value / image = " + item.getElementValue("itunes:image")); - + */ context.append("podcast", nodeContext); } } |
From: <jbo...@li...> - 2005-11-21 12:20:09
|
Author: wrzep Date: 2005-11-21 07:20:01 -0500 (Mon, 21 Nov 2005) New Revision: 1612 Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java Log: Warnings when feed adress is incorrect or we are unable to parse the feed. http://jira.jboss.com/jira/browse/JBLAB-406 Pawel Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-11-21 11:08:10 UTC (rev 1611) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-11-21 12:20:01 UTC (rev 1612) @@ -34,6 +34,8 @@ import java.util.SimpleTimeZone; import java.net.URL; +import java.net.MalformedURLException; +import java.io.IOException; import org.jboss.forge.common.XmlTools; import org.jboss.forge.common.projects.AbstractDescriptor; @@ -44,6 +46,8 @@ import org.jboss.portal.common.context.DelegateContext; import org.jboss.shotoku.ContentManager; +import org.jboss.logging.Logger; + import org.apache.xerces.parsers.DOMParser; import org.xml.sax.InputSource; @@ -59,6 +63,7 @@ import de.nava.informa.core.ItemIF; import de.nava.informa.core.ItemEnclosureIF; import de.nava.informa.core.ImageIF; +import de.nava.informa.core.ParseException; /** * A class holding the podcast feeds. @@ -89,6 +94,8 @@ private String portalName; private String serverAdress; + private Logger log; + /** * <code>allItemsArr</code> - Array if ItemIF objects, containing items from all feeds. */ @@ -98,6 +105,8 @@ this.portalName = portalName; this.serverAdress = serverAdress; + log = Logger.getLogger(this.getClass()); + podcastsNumber = getPodcastsNumber(root); // Get the feeds nodes @@ -160,9 +169,6 @@ nodeContext.put("link", link.toString()); } - // TODO itunes tags - - // filling the context with enclosure information ItemEnclosureIF enclosure = item.getEnclosure(); @@ -193,6 +199,11 @@ nodeContext.put("channel-image", channelImage.getLocation().toString()); } + // TODO itunes tags + + System.out.println("channel / element value / author = " + channel.getElementValue("itunes:author")); + System.out.println("item / element value / image = " + item.getElementValue("itunes:image")); + context.append("podcast", nodeContext); } } @@ -253,13 +264,16 @@ private Set<ItemIF> getAllItems(Set<Map<String,Node>> nodes) { HashSet<ItemIF> ret = new HashSet<ItemIF>(); + Node urlNode = null; + String urlString = null; + for (Iterator iter = nodes.iterator(); iter.hasNext();) { try { Map nodeProperties = (Map<String,Node>) iter.next(); - Node urlNode = (Node) nodeProperties.get(URL_ELEMENT); + urlNode = (Node) nodeProperties.get(URL_ELEMENT); - String urlString = XmlTools.unmarshallText(urlNode); + urlString = XmlTools.unmarshallText(urlNode); if (urlString.charAt(0) == '/') { // local link urlString = serverAdress + urlString; } @@ -268,8 +282,10 @@ ChannelIF channel = FeedParser.parse(new ChannelBuilder(), url); ret.addAll(channel.getItems()); - } catch (Exception e) { - e.printStackTrace(); + } catch (IOException e) { + log.warn(urlString + " could not be found."); + } catch (ParseException e) { + log.warn("Parse error: " + urlString); } } return ret; |
From: <jbo...@li...> - 2005-11-21 11:08:36
|
Author: wrzep Date: 2005-11-21 06:08:10 -0500 (Mon, 21 Nov 2005) New Revision: 1611 Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastDescriptor.java trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastNodeWatcher.java Log: After adding a new item to the watched feed it is visible instantly. http://jira.jboss.com/jira/browse/JBLAB-406 Pawel Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-11-20 19:18:12 UTC (rev 1610) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-11-21 11:08:10 UTC (rev 1611) @@ -142,7 +142,7 @@ DelegateContext nodeContext = new DelegateContext(); // filling the context with item information - + nodeContext.put("no", i+1); nodeContext.put("title", item.getTitle()); nodeContext.put("description", item.getDescription()); @@ -160,9 +160,8 @@ nodeContext.put("link", link.toString()); } - // itunes tags + // TODO itunes tags - // filling the context with enclosure information Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastDescriptor.java 2005-11-20 19:18:12 UTC (rev 1610) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastDescriptor.java 2005-11-21 11:08:10 UTC (rev 1611) @@ -64,7 +64,6 @@ .getXmlCmPath(portalName)).getContentInputStream())); Node root = parser.getDocument().getDocumentElement(); - if ((root.getNodeType() == Node.ELEMENT_NODE) && (root.getNodeName().equals(Podcast.PODCAST_ELEMENT))) { @@ -75,7 +74,7 @@ } catch (Exception e) { e.printStackTrace(); - } + } } private void fillContext() { @@ -84,7 +83,6 @@ } public DelegateContext getContext(JBossRenderRequest request) { - return context; } } Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastNodeWatcher.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastNodeWatcher.java 2005-11-20 19:18:12 UTC (rev 1610) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastNodeWatcher.java 2005-11-21 11:08:10 UTC (rev 1611) @@ -32,7 +32,6 @@ */ public class PodcastNodeWatcher implements NodeWatcher { - private ResourceWatcher rw; private ContentManager cm; private String serverAdress; @@ -42,12 +41,7 @@ } private PodcastDescriptor getDesc(String portalName) { - PodcastDescriptor desc = new PodcastDescriptor(portalName, serverAdress, cm); - - rw = new ResourceWatcher(cm); - rw.watchResource(PodcastTools.getXmlCmPath(portalName)); - - return desc; + return new PodcastDescriptor(portalName, serverAdress, cm); } public Object init(String portalName) { @@ -55,9 +49,6 @@ } public Object nodeUpdate(String portalName, Object currentValue) { - if ((currentValue == null) || (rw.checkResources())) - return getDesc(portalName); - else - return null; + return getDesc(portalName); } } |
From: <jbo...@li...> - 2005-11-20 19:18:17
|
Author: unibrew Date: 2005-11-20 14:18:12 -0500 (Sun, 20 Nov 2005) New Revision: 1610 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java Log: [JBLAB-407] Adding few needed tool features. Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java 2005-11-20 19:17:16 UTC (rev 1609) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java 2005-11-20 19:18:12 UTC (rev 1610) @@ -24,7 +24,17 @@ package org.jboss.forge.common.projects; import java.io.File; +import java.util.List; +import java.util.Map; +import javax.portlet.PortletURL; + +import org.jboss.forge.common.ForgeHelper; +import org.jboss.portal.common.context.Context; +import org.jboss.portal.common.context.DelegateContext; +import org.jboss.portlet.JBossRenderResponse; +import org.jboss.shotoku.ContentManager; + public class PollTools { /** @@ -33,11 +43,24 @@ public static final String POLLS_DIR="polls"; /** - * Name of JSP view file. + * Name of JSP view file prepared for displaying voting results. */ - public static final String POLLS_JSP="normal.jsp"; + public static final String POLLS_INFO_JSP="polls_info.jsp"; /** + * Name of JSP view file prepared for voting. + */ + public static final String POLLS_VOTING_JSP="polls_voting.jsp"; + + /** + * Private constructor made in order to prevent from creating + * PollTools object. + */ + private PollTools () { + + } + + /** * Method constructs path to polls descriptor. * * @param portalName @@ -60,14 +83,86 @@ File.separator+ProjectsHelper.POLL_DESC; } + public static PollsDescriptor getDesc(final String portalName,ContentManager contentManager) { + PollsDescriptor desc = (PollsDescriptor) ForgeHelper + .getForgeManagement().getFromCache(portalName, + PollsDescriptor.class.getName()); + if (desc==null) { + desc = (PollsDescriptor) ForgeHelper.getForgeManagement() + .addNodeWatcher(portalName, + PollsDescriptor.class.getName(), + new PollsWatcher(contentManager)); + } + return desc; + } + /** - * Method constructs path to the PollPortlet JSP view file. + * Method constructs path to the PollPortlet JSP view file containing + * information about voting results. * * @param portalName - * @return Path to the PollPortlet's JSP view file. + * @return Path to the PollPortlet's JSP voting info view file. */ - public static String getJspCmPath() { - return POLLS_DIR + File.separator + POLLS_JSP; + public static String getInfoJsp() { + return POLLS_DIR + File.separator + POLLS_INFO_JSP; } + /** + * Method constructs path to the PollPortlet JSP view file containing + * voting question. + * + * @param portalName + * @return Path to the PollPortlet's JSP voting view file. + */ + public static String getVotingJsp() { + return POLLS_DIR + File.separator + POLLS_VOTING_JSP; + } + + public static Context getInfoContext (String portalName,String projectId, + ContentManager cm,JBossRenderResponse response) { + + return new DelegateContext(); + } + + public static Context getVotingContext (String portalName, String projectId, + ContentManager cm,JBossRenderResponse response) { +// If the projectId is null method returns empty DelegateContext object. + if (projectId==null) { + return new DelegateContext(); + } + + // Creating new empty context. + DelegateContext ctx = new DelegateContext(); + + // Getting the PollsDescriptor object containing counters. + PollsDescriptor desc = getDesc(portalName,cm); + + // If there isn't a descriptor in cache, return empty context. + if (desc==null) { + return ctx; + } + + // If there is no tracked link for projectId return empty context. + if (!desc.checkForProjectPolls(projectId)) { + return ctx; + } + + // Getting the polls for given projectId. + List<Poll> values = desc.getPollsMap().get(projectId); + + // Filling the context for portlet. + DelegateContext polls = ctx.next("polls"); + for (Poll pollElem:values) { + + DelegateContext poll = polls.next("poll"); + + // Resolving the question + String question = pollElem.getQuestion(); + + poll.put("question",question); + poll.put("actionurl",response.createActionURL().toString()); + } + return ctx; + } + } |