You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(233) |
Sep
(199) |
Oct
(206) |
Nov
(185) |
Dec
(270) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(232) |
Feb
(426) |
Mar
(623) |
Apr
(592) |
May
(506) |
Jun
(389) |
Jul
(160) |
Aug
(3) |
Sep
(1) |
Oct
(1) |
Nov
(2) |
Dec
(5) |
2007 |
Jan
(1) |
Feb
(1) |
Mar
(2) |
Apr
(2) |
May
(4) |
Jun
(2) |
Jul
|
Aug
(3) |
Sep
(5) |
Oct
(9) |
Nov
(6) |
Dec
(6) |
2008 |
Jan
(3) |
Feb
|
Mar
(1) |
Apr
(3) |
May
(3) |
Jun
(5) |
Jul
(10) |
Aug
(2) |
Sep
(12) |
Oct
(10) |
Nov
(54) |
Dec
(49) |
2009 |
Jan
(19) |
Feb
(13) |
Mar
(20) |
Apr
(24) |
May
(44) |
Jun
(29) |
Jul
(32) |
Aug
(10) |
Sep
(7) |
Oct
(10) |
Nov
(4) |
Dec
(17) |
2010 |
Jan
(14) |
Feb
(5) |
Mar
(23) |
Apr
(50) |
May
(31) |
Jun
(9) |
Jul
(5) |
Aug
(4) |
Sep
(7) |
Oct
(5) |
Nov
(2) |
Dec
(3) |
2011 |
Jan
(12) |
Feb
(5) |
Mar
(5) |
Apr
(3) |
May
(4) |
Jun
(3) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2012 |
Jan
(1) |
Feb
(2) |
Mar
|
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(4) |
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2015 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <jbo...@li...> - 2005-11-11 07:07:01
|
Author: aron.gombas Date: 2005-11-11 02:00:55 -0500 (Fri, 11 Nov 2005) New Revision: 1554 Added: trunk/labs/kosmos/etc/ trunk/labs/kosmos/etc/commons-logging-1.0.3.jar trunk/labs/kosmos/etc/slide.war Log: "/etc" dir added Added: trunk/labs/kosmos/etc/commons-logging-1.0.3.jar =================================================================== (Binary files differ) Property changes on: trunk/labs/kosmos/etc/commons-logging-1.0.3.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/kosmos/etc/slide.war =================================================================== (Binary files differ) Property changes on: trunk/labs/kosmos/etc/slide.war ___________________________________________________________________ Name: svn:mime-type + application/octet-stream |
From: <jbo...@li...> - 2005-11-11 07:00:14
|
Author: aron.gombas Date: 2005-11-11 02:00:03 -0500 (Fri, 11 Nov 2005) New Revision: 1553 Modified: trunk/labs/kosmos/conf-server/jboss-as/readme.txt trunk/labs/kosmos/conf-server/tomcat/readme.txt Log: Server deployment readme's updated Modified: trunk/labs/kosmos/conf-server/jboss-as/readme.txt =================================================================== --- trunk/labs/kosmos/conf-server/jboss-as/readme.txt 2005-11-10 22:41:31 UTC (rev 1552) +++ trunk/labs/kosmos/conf-server/jboss-as/readme.txt 2005-11-11 07:00:03 UTC (rev 1553) @@ -1,2 +1,2 @@ -There are no special config files for JBoss AS. +There are no special config files for Kosmos Server on JBoss AS. Please refer to the reference manual for more details. Modified: trunk/labs/kosmos/conf-server/tomcat/readme.txt =================================================================== --- trunk/labs/kosmos/conf-server/tomcat/readme.txt 2005-11-10 22:41:31 UTC (rev 1552) +++ trunk/labs/kosmos/conf-server/tomcat/readme.txt 2005-11-11 07:00:03 UTC (rev 1553) @@ -1,2 +1,2 @@ -There are no special config files for Apache Tomcat. +There are no special config files for Kosmos Server on Apache Tomcat. Please refer to the reference manual for more details. |
From: <jbo...@li...> - 2005-11-10 22:41:45
|
Author: adamw Date: 2005-11-10 17:41:31 -0500 (Thu, 10 Nov 2005) New Revision: 1552 Modified: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java trunk/forge/portal-extensions/forge-status/ trunk/forge/portal-extensions/jbosswiki/ Log: Some comments 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-10 20:16:39 UTC (rev 1551) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java 2005-11-10 22:41:31 UTC (rev 1552) @@ -172,7 +172,7 @@ // Firstly - the remote feeds. generateRemoteFeeds(portalName, remoteFeedDefs); - // Then, shotoku feeds. + // Then, shotoku feeds - first loading the properties - directive classes. Properties props = new Properties(); try { props.load(cm.getNode(SHOTOKU_CONFIG).getContentInputStream()); @@ -189,6 +189,12 @@ fillContext(); } + /** + * Adds a feed of the given name and type. + * @param name + * @param type + * @param feed + */ private void addFeed(String name, String type, Feed feed) { Map<String, Feed> typesMap = feeds.get(name); if (typesMap == null) { @@ -199,6 +205,13 @@ typesMap.put(type, feed); } + /** + * Gets an array of ids of projects basing on the given project level attribute + * (the level can be a *). + * @param portalName + * @param projectLevelAttr + * @return An array of project ids that are on the specified level. + */ private String[] getProjectsIds(String portalName, String projectLevelAttr) { if (projectLevelAttr != null) { return ProjectsHelper.getProjects(portalName).getProjectIds( @@ -210,10 +223,20 @@ } } + /** + * @param portalName + * @param projectId + * @return Name of a project with the given id. + */ private String getProjectName(String portalName, String projectId) { return ProjectsHelper.getProjects(portalName).getProjectName(projectId); } + /** + * Gets an array of types basing on the given type attribute (the attribute can be a *). + * @param typesAttr + * @return An array of types. + */ private String[] getTypes(String typesAttr) { if (ALL_TOKENS.equals(typesAttr)) { return FeedFactory.getAllFeedTypes(); @@ -222,6 +245,14 @@ } } + /** + * In the given <code>map</code>, in its values, replaces each occurence of + * <code>replaceWhat</code> with <code>replaceTo</code>. + * @param map + * @param replaceWhat + * @param replaceTo + * @return <code>map</code> + */ private Map<String, String> replaceInMapValues(Map<String, String> map, String replaceWhat, String replaceTo) { for (String key : map.keySet()) { @@ -231,13 +262,33 @@ return map; } + /** + * Recursively generates a search parameter basing on its description that is + * contained in the given node. + * @param n Node from which to read the search parameters. + * @param props Properties with directives classes. + * @param parametrized Set of directive names that accept a parameter map + * in their constructor. + * @param portalName + * @param projectId + * @return A search parameter that is described in the given node. + * @throws IllegalArgumentException + * @throws SecurityException + * @throws InstantiationException + * @throws IllegalAccessException + * @throws InvocationTargetException + * @throws NoSuchMethodException + * @throws ClassNotFoundException + */ private SearchParameter generateSearchParameter(Node n, Properties props, - Set parametrized, String portalName, String projectId) + Set<String> parametrized, String portalName, String projectId) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, ClassNotFoundException { String paramName = n.getNodeName(); + + // Looking for a corresponding class. String paramClass = props.getProperty(paramName); if (paramClass == null) @@ -246,6 +297,9 @@ SearchParameter param; if (parametrized.contains(paramName)) { + // Instatiating the class, it should have a constructor accepting a + // map. We take the map from node attributes, and replace + // ${project} and ${project-name} in them. param = (SearchParameter) Class.forName(paramClass).getConstructor( new Class[] { Map.class }).newInstance( new Object[] { replaceInMapValues(replaceInMapValues( @@ -261,6 +315,10 @@ Node child = nodeList.item(i); if (child.getNodeType() == Node.ELEMENT_NODE) { + // If the search paramater has child nodes, then the + // corresponding class should have an "add" method. + // Invoking the function recursively and adding the + // resulting parameter. SearchParameter childParam = generateSearchParameter(child, props, parametrized, portalName, projectId); @@ -279,7 +337,7 @@ private void generateShotokuFeeds(String portalName, Map<String, Node> feedDefs, Properties props) { - Set parametrized = new HashSet<String>(Arrays.asList(props.getProperty( + Set<String> parametrized = new HashSet<String>(Arrays.asList(props.getProperty( "parametrized").split("[,]"))); for (String feedName : feedDefs.keySet()) { @@ -307,6 +365,8 @@ Map<String, String> attributes = XmlTools .getMapFromNodeAttributes(feedNode); + // Creating a velcoity context with parts that won't change in all + // generated feeds. VelocityContext vc = new VelocityContext(attributes); String dateFormat = attributes.get("dateFormat"); @@ -320,6 +380,9 @@ NodeList feedNodeChildren = feedNode.getChildNodes(); for (int i = 0; i < feedNodeChildren.getLength(); i++) { + // For each search node, generating and performing the + // search, placing it under the demanded attribute in + // velocity's context. Node searchNode = feedNodeChildren.item(i); if ("search".equals(searchNode.getNodeName())) { try { @@ -351,11 +414,14 @@ vc.put("link", generateFeedLink(true, feedNameReplaced, type)); + // Now that we have type and project, we can render the + // template. Writer w = newFeed.getWriter(); cm.getVelocityEngine().mergeTemplate(template, vc, w); w.flush(); w.close(); + // And add the feed. addFeed(feedNameReplaced, type, newFeed); } catch (Exception e) { log.warn("Cannot merge template " + template + " for " @@ -364,6 +430,8 @@ } } + // Finally, adding a feed name. We have to replace ${project} + // and ${project-name} in it. feedDisplayNames.put(feedNameReplaced, displayNameAttr.replace( PROJECT_PARAM, project).replace(PROJECT_NAME_PARAM, getProjectName(portalName, project))); @@ -410,6 +478,8 @@ } } + // Adding a feed name. We have to replace ${project} + // and ${project-name} in it. feedDisplayNames.put(feedNameReplaced, displayNameAttr.replace( PROJECT_PARAM, project).replace(PROJECT_NAME_PARAM, getProjectName(portalName, project))); @@ -425,6 +495,9 @@ new HashMap<String, Set<String>>(); Map<String, String[]> parameters = new HashMap<String, String[]>(); + // Gathering information about defined feeds, their requirements + // (that is, from which other feeds they are composed) and their + // parameters. for (String feedName : feedDefs.keySet()) { Node n; Node feedNode = feedDefs.get(feedName); @@ -524,12 +597,24 @@ } } + /** + * Generates a link to a specified feed. If the link is to be full, an + * absolute address is returned. Otherwise, a relative one. + * @param full + * @param feedName + * @param feedType + * @return + */ private String generateFeedLink(boolean full, String feedName, String feedType) { return (full ? baseServerAddress : "") + "/feeds/" + feedName + "/" + feedType; } + /** + * Fills the <code>context</code> variable with feed information that is + * to be shown in the portlet. + */ private void fillContext() { String[] allFeedTypes = FeedFactory.getAllFeedTypes(); @@ -568,6 +653,15 @@ } } + /** + * To the given feed group, adds feeds names that are defined by the given + * node and feed name (this can be more then one, as we can have iteration + * over many projects). + * @param portalName + * @param feedGroup + * @param feedName + * @param node + */ private void addFeedNamesToGroup(String portalName, Set<String> feedGroup, String feedName, Node node) { String projectLevelAttr = XmlTools.getAttributeValue(node, @@ -580,6 +674,15 @@ } } + /** + * Adds definitions of feeds to the given map, placing child nodes of + * the given node in the appropriate map. + * @param portalName + * @param feedDefinitions + * @param node + * @throws SAXException + * @throws IOException + */ private void addFeedDefinitions(String portalName, Map<String, Map<String, Node>> feedDefinitions, org.jboss.shotoku.Node node) throws SAXException, IOException { @@ -604,6 +707,12 @@ } } + /** + * Gets a feed of the given type and name. + * @param name + * @param type + * @return + */ public Feed getFeed(String name, String type) { Map<String, Feed> feedTypes = feeds.get(name); if (feedTypes == null) Property changes on: trunk/forge/portal-extensions/forge-status ___________________________________________________________________ Name: svn:ignore + target Property changes on: trunk/forge/portal-extensions/jbosswiki ___________________________________________________________________ Name: svn:ignore - target + target wiki.ear |
From: <jbo...@li...> - 2005-11-10 20:16:56
|
Author: adamw Date: 2005-11-10 15:16:39 -0500 (Thu, 10 Nov 2005) New Revision: 1551 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java Log: http://jira.jboss.com/jira/browse/JBLAB-408 : Shotoku feeds cntd 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-10 17:24:35 UTC (rev 1550) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java 2005-11-10 20:16:39 UTC (rev 1551) @@ -137,7 +137,7 @@ } /** - * Gets the name of the project with the given id. + * Gets a link to the project with the given id. */ public String getProjectLink(String projectId) { return getProjectsDescriptor().getProjectLink(projectId); 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-10 17:24:35 UTC (rev 1550) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java 2005-11-10 20:16:39 UTC (rev 1551) @@ -59,35 +59,44 @@ /** * Class which handles parsing feed descriptions, generates the feeds and * provides access to them. + * * @author adamw */ public class FeedsDescriptor { private static final Logger log = Logger.getLogger(FeedsDescriptor.class); - + /** * <code>FEEDS_DIRECTORY</code> - shotoku directory in which feed * definitions are stored. */ - protected final static String FEEDS_DIRECTORY = "feeds"; + protected final static String FEEDS_DIRECTORY = "feeds"; + /** * <code>FEEDS_NODE_ENDING</code> - node with names ending with this * string are parsed and feed definitons are read from them. */ - private final static String FEEDS_NODE_ENDING = "-feeds.xml"; - private final static String REM_FEED_TAG = "remote-feed"; - private final static String AGG_FEED_TAG = "aggregated-feed"; - private final static String SHO_FEED_TAG = "shotoku-feed"; - - private final static String SHOTOKU_CONFIG = "shotoku-config.properties"; - - private final static String ALL_TOKENS = "*"; - private final static String TOKENS_DELIMITER = ","; - - private final static String TYPE_PARAM = "${type}"; - private final static String PROJECT_PARAM = "${project}"; - - protected final static String FEEDS_FILE_PREFIX = "forge-feeds"; - + private final static String FEEDS_NODE_ENDING = "-feeds.xml"; + + private final static String REM_FEED_TAG = "remote-feed"; + + private final static String AGG_FEED_TAG = "aggregated-feed"; + + private final static String SHO_FEED_TAG = "shotoku-feed"; + + private final static String SHOTOKU_CONFIG = "shotoku-config.properties"; + + private final static String ALL_TOKENS = "*"; + + private final static String TOKENS_DELIMITER = ","; + + private final static String TYPE_PARAM = "${type}"; + + private final static String PROJECT_PARAM = "${project}"; + + private final static String PROJECT_NAME_PARAM = "${project-name}"; + + protected final static String FEEDS_FILE_PREFIX = "forge-feeds"; + static synchronized FeedsDescriptor getInstance(final String portalName, final String baseServerAddress) { FeedsDescriptor desc = (FeedsDescriptor) ForgeHelper @@ -102,54 +111,54 @@ return desc; } - + /** - * <code>feeds</code> - a map of ready feeds: - * feed name -> (feed type -> feed)). + * <code>feeds</code> - a map of ready feeds: feed name -> (feed type -> + * feed)). */ private Map<String, Map<String, Feed>> feeds; - + /** - * <code>feedGroups</code> - map: - * feed group display name -> set of feed names. + * <code>feedGroups</code> - map: feed group display name -> set of feed + * names. */ private Map<String, Set<String>> feedGroups; - + /** - * <code>feedDisplayNames</code> - map: feed name -> - * feed display name. + * <code>feedDisplayNames</code> - map: feed name -> feed display name. */ private Map<String, String> feedDisplayNames; - + private DelegateContext context; - + private String baseServerAddress; - + public FeedsDescriptor(String portalName, String baseServerAddress) { this.baseServerAddress = baseServerAddress; - - ContentManager cm = ContentManager.getContentManager(portalName - + "/" + FEEDS_DIRECTORY); - + + ContentManager cm = ContentManager.getContentManager(portalName + "/" + + FEEDS_DIRECTORY); + // Creating the maps that will hold the feeds. feeds = new HashMap<String, Map<String, Feed>>(); feedGroups = new LinkedHashMap<String, Set<String>>(); feedDisplayNames = new HashMap<String, String>(); - + // Preparing maps which will hold feed definitions. Map<String, Node> remoteFeedDefs = new HashMap<String, Node>(); Map<String, Node> aggregatedFeedDefs = new HashMap<String, Node>(); Map<String, Node> shotokuFeedDefs = new HashMap<String, Node>(); - + Map<String, Map<String, Node>> allFeedDefs = new HashMap<String, Map<String, Node>>(); - + allFeedDefs.put(REM_FEED_TAG, remoteFeedDefs); allFeedDefs.put(AGG_FEED_TAG, aggregatedFeedDefs); allFeedDefs.put(SHO_FEED_TAG, shotokuFeedDefs); - + // Looking for file containing feed definitons and filling the maps. - for (org.jboss.shotoku.Node feedNode : cm.getRootDirectory().getNodes().toList()) { + for (org.jboss.shotoku.Node feedNode : cm.getRootDirectory().getNodes() + .toList()) { if (feedNode.getName().endsWith(FEEDS_NODE_ENDING)) { try { addFeedDefinitions(portalName, allFeedDefs, feedNode); @@ -159,10 +168,10 @@ } } } - + // Firstly - the remote feeds. generateRemoteFeeds(portalName, remoteFeedDefs); - + // Then, shotoku feeds. Properties props = new Properties(); try { @@ -170,64 +179,91 @@ } catch (Exception e) { log.warn("Error loading shotoku feeds configuration.", e); } - + generateShotokuFeeds(portalName, shotokuFeedDefs, props); - + // After that, we can create the aggregated feeds. generateAggregatedFeeds(portalName, aggregatedFeedDefs); - + // Finally, filling the context. fillContext(); } - + private void addFeed(String name, String type, Feed feed) { Map<String, Feed> typesMap = feeds.get(name); if (typesMap == null) { typesMap = new HashMap<String, Feed>(); feeds.put(name, typesMap); } - + typesMap.put(type, feed); - } - - private String[] getProjectNames(String portalName, String projectLevelAttr) { + } + + private String[] getProjectsIds(String portalName, String projectLevelAttr) { if (projectLevelAttr != null) { - return ProjectsHelper.getProjects( - portalName).getProjectIds(new NullPermissionsChecker(), - ALL_TOKENS.equals(projectLevelAttr) ? - null : projectLevelAttr).toArray( - new String[0]); + return ProjectsHelper.getProjects(portalName).getProjectIds( + new NullPermissionsChecker(), + ALL_TOKENS.equals(projectLevelAttr) ? null + : projectLevelAttr).toArray(new String[0]); } else { return new String[] { "" }; } } - - private SearchParameter generateSearchParameter(Node n, Properties props, Set parametrized) - throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, - InvocationTargetException, NoSuchMethodException, ClassNotFoundException { + + private String getProjectName(String portalName, String projectId) { + return ProjectsHelper.getProjects(portalName).getProjectName(projectId); + } + + private String[] getTypes(String typesAttr) { + if (ALL_TOKENS.equals(typesAttr)) { + return FeedFactory.getAllFeedTypes(); + } else { + return typesAttr.split("[" + TOKENS_DELIMITER + "]"); + } + } + + private Map<String, String> replaceInMapValues(Map<String, String> map, + String replaceWhat, String replaceTo) { + for (String key : map.keySet()) { + map.put(key, map.get(key).replace(replaceWhat, replaceTo)); + } + + return map; + } + + private SearchParameter generateSearchParameter(Node n, Properties props, + Set parametrized, String portalName, String projectId) + throws IllegalArgumentException, SecurityException, + InstantiationException, IllegalAccessException, + InvocationTargetException, NoSuchMethodException, + ClassNotFoundException { String paramName = n.getNodeName(); String paramClass = props.getProperty(paramName); - + if (paramClass == null) - throw new RuntimeException("Unknown parameter name: " + paramName + "."); - + throw new RuntimeException("Unknown parameter name: " + paramName + + "."); + SearchParameter param; if (parametrized.contains(paramName)) { param = (SearchParameter) Class.forName(paramClass).getConstructor( - new Class[] { Map.class }).newInstance(new Object[] { - XmlTools.getMapFromNodeAttributes(n) }); + new Class[] { Map.class }).newInstance( + new Object[] { replaceInMapValues(replaceInMapValues( + XmlTools.getMapFromNodeAttributes(n), + PROJECT_PARAM, projectId), PROJECT_NAME_PARAM, + getProjectName(portalName, projectId)) }); } else { param = (SearchParameter) Class.forName(paramClass).newInstance(); } - + NodeList nodeList = n.getChildNodes(); - for (int i=0; i<nodeList.getLength(); i++) { + for (int i = 0; i < nodeList.getLength(); i++) { Node child = nodeList.item(i); - + if (child.getNodeType() == Node.ELEMENT_NODE) { - SearchParameter childParam = generateSearchParameter( - child, props, parametrized); - + SearchParameter childParam = generateSearchParameter(child, + props, parametrized, portalName, projectId); + Method[] methods = param.getClass().getMethods(); for (Method method : methods) { if ("add".equals(method.getName())) { @@ -237,129 +273,161 @@ } } } - + return param; } - - private void generateShotokuFeeds(String portalName, Map<String, Node> feedDefs, - Properties props) { - Set parametrized = new HashSet<String>( - Arrays.asList(props.getProperty("parametrized").split("[,]"))); - + + private void generateShotokuFeeds(String portalName, + Map<String, Node> feedDefs, Properties props) { + Set parametrized = new HashSet<String>(Arrays.asList(props.getProperty( + "parametrized").split("[,]"))); + for (String feedName : feedDefs.keySet()) { Node feedNode = feedDefs.get(feedName); - String templateAttr = XmlTools.getAttributeValue(feedNode, "template"); + String templateAttr = XmlTools.getAttributeValue(feedNode, + "template"); String prefixAttr = XmlTools.getAttributeValue(feedNode, "prefix"); String idAttr = XmlTools.getAttributeValue(feedNode, "id"); String typesAttr = XmlTools.getAttributeValue(feedNode, "type"); - - feedDisplayNames.put(feedName, - XmlTools.getAttributeValue(feedNode, "display-name")); - - ContentManager cm = ContentManager.getContentManager(idAttr, prefixAttr); - + String projectLevelAttr = XmlTools.getAttributeValue(feedNode, + "project-level"); + String displayNameAttr = XmlTools.getAttributeValue(feedNode, + "display-name"); + + ContentManager cm = ContentManager.getContentManager(idAttr, + prefixAttr); + // Generating the type of feeds that have been requested. - String[] types; - if (ALL_TOKENS.equals(typesAttr)) { - types = FeedFactory.getAllFeedTypes(); - } else { - types = typesAttr.split("[" + TOKENS_DELIMITER + "]"); - } - - Search search; - try { - search = (Search) generateSearchParameter(feedNode, props, - parametrized); - } catch (Exception e) { - log.warn("Error generating shotoku feed " + feedName + ".", e); - continue; - } - - org.jboss.shotoku.NodeList list = search.perform(cm); - - - VelocityContext vc = new VelocityContext(); - vc.put("title", XmlTools.getAttributeValue(feedNode, "title")); - vc.put("description", XmlTools.getAttributeValue(feedNode, "description")); - vc.put("author", XmlTools.getAttributeValue(feedNode, "author")); - vc.put("dateFormat", new SimpleDateFormat("MM/dd/yy")); - vc.put("pubDate", Calendar.getInstance().getTime()); - vc.put("linkBase", - XmlTools.getAttributeValue(feedNode, "link-base") + prefixAttr + "/"); - - for (String type : types) { - String template = templateAttr.replace(TYPE_PARAM, type); - - Feed newFeed = FeedFactory.getNewFeed(type); - try { - vc.put("link", generateFeedLink(true, feedName, type)); - - Writer w = newFeed.getWriter(); - list.mergeWithTemplate(cm, template, "nodes", vc, w); - w.flush(); - w.close(); - - addFeed(feedName, type, newFeed); - } catch (Exception e) { - log.warn("Cannot merge template " + template + " for " + feedName + ".", e); + String[] types = getTypes(typesAttr); + + // Generating the projects for which the feeds have been requested, + // if any. + String[] projects = getProjectsIds(portalName, projectLevelAttr); + + Map<String, String> attributes = XmlTools + .getMapFromNodeAttributes(feedNode); + + VelocityContext vc = new VelocityContext(attributes); + + String dateFormat = attributes.get("dateFormat"); + vc.put("dateFormat", new SimpleDateFormat( + dateFormat == null ? "MM/dd/yy" : dateFormat)); + vc.put("now", Calendar.getInstance().getTime()); + + for (String project : projects) { + String feedNameReplaced = feedName.replace(PROJECT_PARAM, + project); + + NodeList feedNodeChildren = feedNode.getChildNodes(); + for (int i = 0; i < feedNodeChildren.getLength(); i++) { + Node searchNode = feedNodeChildren.item(i); + if ("search".equals(searchNode.getNodeName())) { + try { + Search search = (Search) generateSearchParameter( + searchNode, props, parametrized, + portalName, project); + + org.jboss.shotoku.NodeList list = cm.search(search); + + String searchNameAttr = XmlTools.getAttributeValue( + searchNode, "name"); + if (searchNameAttr == null) + searchNameAttr = "nodes"; + + vc.put(searchNameAttr, list.toList()); + } catch (Exception e) { + log.warn("Error generating shotoku feed " + + feedName + ".", e); + continue; + } + } } + + for (String type : types) { + String template = templateAttr.replace(TYPE_PARAM, type); + + Feed newFeed = FeedFactory.getNewFeed(type); + try { + vc.put("link", generateFeedLink(true, feedNameReplaced, + type)); + + Writer w = newFeed.getWriter(); + cm.getVelocityEngine().mergeTemplate(template, vc, w); + w.flush(); + w.close(); + + addFeed(feedNameReplaced, type, newFeed); + } catch (Exception e) { + log.warn("Cannot merge template " + template + " for " + + feedName + ".", e); + continue; + } + } + + feedDisplayNames.put(feedNameReplaced, displayNameAttr.replace( + PROJECT_PARAM, project).replace(PROJECT_NAME_PARAM, + getProjectName(portalName, project))); } } } - - private void generateRemoteFeeds(String portalName, Map<String, Node> feedDefs) { + + private void generateRemoteFeeds(String portalName, + Map<String, Node> feedDefs) { for (String feedName : feedDefs.keySet()) { Node feedNode = feedDefs.get(feedName); - String addressAttr = XmlTools.getAttributeValue(feedNode, "address"); + String addressAttr = XmlTools + .getAttributeValue(feedNode, "address"); String typesAttr = XmlTools.getAttributeValue(feedNode, "type"); - String displayNameAttr = XmlTools.getAttributeValue(feedNode, "display-name"); - String projectLevelAttr = XmlTools.getAttributeValue(feedNode, "project-level"); - + String displayNameAttr = XmlTools.getAttributeValue(feedNode, + "display-name"); + String projectLevelAttr = XmlTools.getAttributeValue(feedNode, + "project-level"); + // Generating the type of feeds that have been requested. - String[] types; - if (ALL_TOKENS.equals(typesAttr)) { - types = FeedFactory.getAllFeedTypes(); - } else { - types = typesAttr.split("[" + TOKENS_DELIMITER + "]"); - } - + String[] types = getTypes(typesAttr); + // Generating the projects for which the feeds have been requested, // if any. - String[] projects = getProjectNames(portalName, projectLevelAttr); - + String[] projects = getProjectsIds(portalName, projectLevelAttr); + // For each type, project pair, generating a feed and storing it in // the feeds map. for (String project : projects) { - String feedNameReplaced = feedName.replace(PROJECT_PARAM, project); + String feedNameReplaced = feedName.replace(PROJECT_PARAM, + project); + for (String type : types) { - String address = addressAttr.replace(TYPE_PARAM, type). - replace(PROJECT_PARAM, project); - + String address = addressAttr.replace(TYPE_PARAM, type) + .replace(PROJECT_PARAM, project); + try { Feed newFeed = FeedFactory.getNewFeed(type); newFeed.generate(new URL(address)); addFeed(feedNameReplaced, type, newFeed); } catch (Exception e) { - log.warn("Can't add feeed " + address + " : " + type + log.warn("Can't add feeed " + address + " : " + type + ".", e); } } - - feedDisplayNames.put(feedNameReplaced, - displayNameAttr.replace(PROJECT_PARAM, project)); + + feedDisplayNames.put(feedNameReplaced, displayNameAttr.replace( + PROJECT_PARAM, project).replace(PROJECT_NAME_PARAM, + getProjectName(portalName, project))); } } } - - private void generateAggregatedFeeds(String portalName, Map<String, Node> feedDefs) { + + private void generateAggregatedFeeds(String portalName, + Map<String, Node> feedDefs) { // First building requirements of each feed - that is, whit which // feeds each aggregated feed is built. - Map<String, Set<String>> requirements = new HashMap<String, Set<String>>(); + Map<String, Set<String>> requirements = + new HashMap<String, Set<String>>(); Map<String, String[]> parameters = new HashMap<String, String[]>(); for (String feedName : feedDefs.keySet()) { Node n; - Node feedNode = feedDefs.get(feedName); + Node feedNode = feedDefs.get(feedName); NodeList nodes = feedNode.getChildNodes(); Set<String> feedRequirements = new HashSet<String>(); @@ -367,48 +435,50 @@ parameters.put(feedName, new String[] { XmlTools.getAttributeValue(feedNode, "title"), XmlTools.getAttributeValue(feedNode, "description"), - XmlTools.getAttributeValue(feedNode, "author") - }); - feedDisplayNames.put(feedName, - XmlTools.getAttributeValue(feedNode, "display-name")); - + XmlTools.getAttributeValue(feedNode, "author") }); + feedDisplayNames.put(feedName, XmlTools.getAttributeValue(feedNode, + "display-name")); + for (int i = 0; i < nodes.getLength(); i++) { n = nodes.item(i); if ("include".equals(n.getNodeName())) { String nameAttr = XmlTools.getAttributeValue(n, "name"); - String projectLevelAttr = XmlTools.getAttributeValue(n, "project-level"); - - String[] projects = getProjectNames(portalName, projectLevelAttr); - + String projectLevelAttr = XmlTools.getAttributeValue(n, + "project-level"); + + String[] projects = getProjectsIds(portalName, + projectLevelAttr); + for (String project : projects) { - feedRequirements.add(nameAttr.replace(PROJECT_PARAM, project)); + feedRequirements.add(nameAttr.replace(PROJECT_PARAM, + project)); } } } } - + while (requirements.size() > 0) { int sizeBefore = requirements.size(); - - for (Iterator<String> iter = requirements.keySet().iterator(); - iter.hasNext();) { + + for (Iterator<String> iter = requirements.keySet().iterator(); iter + .hasNext();) { String feedName = iter.next(); Set<String> feedRequirements = requirements.get(feedName); String[] feedParameters = parameters.get(feedName); Set<String> types = null; - + // Checking if the all of this feed's requirements are met // and if so, of what types it can consist. boolean allRequirementsMet = true; for (String requirement : feedRequirements) { Map<String, Feed> feedTypes = feeds.get(requirement); - + if (feedTypes == null) { // Missing feed - cannot create the aggregated one. allRequirementsMet = false; break; } - + // Intersecting the types set with the types of the current // feed. if (types == null) { @@ -417,10 +487,10 @@ } else types.retainAll(feedTypes.keySet()); } - + if (!allRequirementsMet) continue; - + // Gathering the feed parts from which the new feed will be // composed. for (String type : types) { @@ -428,61 +498,68 @@ for (String requirement : feedRequirements) { requiredFeeds.add(feeds.get(requirement).get(type)); } - + Feed newFeed = FeedFactory.getNewFeed(type); try { newFeed.generate(requiredFeeds.toArray(new Feed[0]), feedParameters[0], feedParameters[1], - feedParameters[2], generateFeedLink(true, feedName, type)); + feedParameters[2], generateFeedLink(true, + feedName, type)); } catch (Exception e) { - log.warn("Can't add aggregated feed " + feedName + " : " + type - + ".", e); + log.warn("Can't add aggregated feed " + feedName + + " : " + type + ".", e); } - + addFeed(feedName, type, newFeed); } - + iter.remove(); } - + if (sizeBefore == requirements.size()) { - log.warn("Aggregation feed definitions cycle, or demanded " + - "feeds are not defined; unable to create feeds."); + log.warn("Aggregation feed definitions cycle, or demanded " + + "feeds are not defined; unable to create feeds."); return; } } } - - private String generateFeedLink(boolean full, String feedName, String feedType) { - return (full ? baseServerAddress : "") + "/feeds/" + feedName + "/" + feedType; + + private String generateFeedLink(boolean full, String feedName, + String feedType) { + return (full ? baseServerAddress : "") + "/feeds/" + feedName + "/" + + feedType; } - + private void fillContext() { String[] allFeedTypes = FeedFactory.getAllFeedTypes(); - + context = new DelegateContext(); for (String feedGroup : feedGroups.keySet()) { Set<String> feedsInGroup = feedGroups.get(feedGroup); - + if (feedsInGroup.size() > 0) { DelegateContext groupContext = context.next("groups"); groupContext.put("name", feedGroup); - + for (String feedName : feedsInGroup) { Map<String, Feed> feedTypes = feeds.get(feedName); - + if (feedTypes != null) { - DelegateContext feedContext = groupContext.next("feeds"); - feedContext.put("name", feedDisplayNames.get(feedName)); - + DelegateContext feedContext = groupContext + .next("feeds"); + feedContext.put("name", + feedDisplayNames.get(feedName)); + Set availableTypes = feedTypes.keySet(); for (String feedType : allFeedTypes) { - DelegateContext typeContext = feedContext.next("types"); - + DelegateContext typeContext = feedContext + .next("types"); + if (availableTypes.contains(feedType)) { typeContext.next("feed"); typeContext.put("name", feedType); - typeContext.put("link", generateFeedLink(false, feedName, feedType)); + typeContext.put("link", generateFeedLink(false, + feedName, feedType)); } } } @@ -490,32 +567,31 @@ } } } - - private void addFeedNamesToGroup(String portalName, Set<String> feedGroup, + + private void addFeedNamesToGroup(String portalName, Set<String> feedGroup, String feedName, Node node) { - String projectLevelAttr = XmlTools.getAttributeValue(node, + String projectLevelAttr = XmlTools.getAttributeValue(node, "project-level"); - - String[] projects = getProjectNames(portalName, projectLevelAttr); - + + String[] projects = getProjectsIds(portalName, projectLevelAttr); + for (String project : projects) { feedGroup.add(feedName.replace(PROJECT_PARAM, project)); } } - - private void addFeedDefinitions( - String portalName, + + private void addFeedDefinitions(String portalName, Map<String, Map<String, Node>> feedDefinitions, org.jboss.shotoku.Node node) throws SAXException, IOException { DOMParser parser = new DOMParser(); parser.parse(new InputSource(node.getContentInputStream())); Node root = parser.getDocument().getDocumentElement(); - + Node n; NodeList nodes = root.getChildNodes(); - + Set<String> feedGroup = new LinkedHashSet<String>(); - feedGroups.put(XmlTools.getAttributeValue(root, "display-name"), + feedGroups.put(XmlTools.getAttributeValue(root, "display-name"), feedGroup); for (int i = 0; i < nodes.getLength(); i++) { @@ -523,19 +599,19 @@ if (feedDefinitions.get(n.getNodeName()) != null) { String feedName = XmlTools.getAttributeValue(n, "name"); addFeedNamesToGroup(portalName, feedGroup, feedName, n); - feedDefinitions.get(n.getNodeName()).put( - feedName, n); + feedDefinitions.get(n.getNodeName()).put(feedName, n); } } } - + public Feed getFeed(String name, String type) { Map<String, Feed> feedTypes = feeds.get(name); - if (feedTypes == null) return null; - + if (feedTypes == null) + return null; + return feedTypes.get(type); } - + public DelegateContext getContext() { return context; } Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java =================================================================== --- trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java 2005-11-10 17:24:35 UTC (rev 1550) +++ trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java 2005-11-10 20:16:39 UTC (rev 1551) @@ -1,6 +1,5 @@ package org.jboss.forge.projects.freezone; -import java.io.IOException; import java.util.ArrayList; import java.util.List; Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java =================================================================== --- trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-11-10 17:24:35 UTC (rev 1550) +++ trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-11-10 20:16:39 UTC (rev 1551) @@ -22,23 +22,15 @@ package org.jboss.forge.projects.freezone; import java.io.IOException; -import java.util.ArrayList; import java.util.List; -import javax.portlet.ActionRequest; -import javax.portlet.ActionResponse; import javax.portlet.PortletException; import javax.portlet.PortletSecurityException; -import javax.portlet.RenderRequest; -import javax.portlet.RenderResponse; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; import org.jboss.forge.common.ForgeHelper; import org.jboss.forge.common.portlet.JBossLabsPortlet; import org.jboss.forge.common.projects.ProjectsHelper; import org.jboss.forge.common.projects.permissions.ActionRequestPermissionsChecker; -import org.jboss.logging.Logger; import org.jboss.portal.core.CoreConstants; import org.jboss.portlet.JBossActionRequest; import org.jboss.portlet.JBossActionResponse; @@ -47,12 +39,7 @@ import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Node; import org.jboss.shotoku.aop.Inject; -import org.jboss.shotoku.aop.NodeInject; -import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; -import org.w3c.dom.Document; -import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; /** * A portlet for a project freezone. @@ -71,8 +58,6 @@ private final static String PATH_PARAM = "path"; - private Logger log = Logger.getLogger(this.getClass()); - @Inject private ContentManager cm; @@ -210,6 +195,7 @@ } } + @SuppressWarnings("unchecked") @Override protected boolean isAllowed(JBossRenderRequest request, JBossRenderResponse response) { @@ -221,6 +207,7 @@ return (request.getUser() != null) || (!loggedInOnly.contains(cmsPath)); } + @SuppressWarnings("unchecked") @Override public void init() throws PortletException { // ConDescriptor desc = (ConDescriptor) Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-11-10 17:24:35 UTC (rev 1550) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-11-10 20:16:39 UTC (rev 1551) @@ -31,6 +31,7 @@ import org.apache.xerces.parsers.DOMParser; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; import org.jboss.shotoku.exceptions.RepositoryException; +import org.jboss.shotoku.search.Search; import org.w3c.dom.Document; import org.xml.sax.InputSource; @@ -88,6 +89,17 @@ throws ResourceDoesNotExist, RepositoryException; /** + * Performs the given search in this content manager. + * + * @param search + * Search to perform. + * @return A node list that is the result of the search. + */ + public NodeList search(Search search) { + return search.perform(this); + } + + /** * Gets a velocity engine, initialized with default properties, as defined * in velocity.properties in shotoku-base jar. Additionaly, the shotoku * resource loader will be set to read templates from this content manager Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java 2005-11-10 17:24:35 UTC (rev 1550) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java 2005-11-10 20:16:39 UTC (rev 1551) @@ -113,12 +113,29 @@ } } + /** + * @deprecated + * @param cm + * @param templateName + * @param nodesParameter + * @param w + * @throws RepositoryException + */ public void mergeWithTemplate(ContentManager cm, String templateName, String nodesParameter, Writer w) throws RepositoryException { mergeWithTemplate(cm, templateName, nodesParameter, new VelocityContext(), w); } + /** + * @deprecated + * @param cm + * @param templateName + * @param nodesParameter + * @param context + * @param w + * @throws RepositoryException + */ public void mergeWithTemplate(ContentManager cm, String templateName, String nodesParameter, VelocityContext context, Writer w) throws RepositoryException { |
From: <jbo...@li...> - 2005-11-10 17:24:46
|
Author: aron.gombas Date: 2005-11-10 12:24:35 -0500 (Thu, 10 Nov 2005) New Revision: 1550 Modified: trunk/labs/kosmos/build/deploy.xml trunk/labs/kosmos/build/portlet-exo-deploy.properties trunk/labs/kosmos/build/portlet-gridsphere-deploy.properties trunk/labs/kosmos/build/portlet-jboss-portal-deploy.properties trunk/labs/kosmos/build/portlet-liferay-portal-deploy.properties trunk/labs/kosmos/build/portlet-pluto-deploy.properties trunk/labs/kosmos/build/server-jboss-as-deploy.properties trunk/labs/kosmos/build/server-tomcat-deploy.properties Log: Fix: ".war" can't appear in the TC/webapps/dirname Modified: trunk/labs/kosmos/build/deploy.xml =================================================================== --- trunk/labs/kosmos/build/deploy.xml 2005-11-10 01:17:01 UTC (rev 1549) +++ trunk/labs/kosmos/build/deploy.xml 2005-11-10 17:24:35 UTC (rev 1550) @@ -14,6 +14,7 @@ <property environment="env"/> <property file="build/kosmos-project.properties"/> <property file="build/${module.name}-module.properties"/> + <property name="webapp.name" value="${project.name.short}-${module.name}"/> <property name="war.name" value="${project.name.short}-${module.name}.war"/> <property file="build/${module.name}-${container.name}-deploy.properties"/> @@ -29,7 +30,7 @@ </target> <target name="deploy" depends="init" description="Deploys the portlet to the container"> - <echo message="Deploying to ${container.name} at ${container.dir}"/> + <echo message="Deploying to ${container.displayName} at ${container.dir}"/> <mkdir dir="${container.dir}"/> <!-- expand WAR --> <unzip src="${war.name}" dest="${container.dir}"/> Modified: trunk/labs/kosmos/build/portlet-exo-deploy.properties =================================================================== --- trunk/labs/kosmos/build/portlet-exo-deploy.properties 2005-11-10 01:17:01 UTC (rev 1549) +++ trunk/labs/kosmos/build/portlet-exo-deploy.properties 2005-11-10 17:24:35 UTC (rev 1550) @@ -1 +1,2 @@ -container.dir=${env.CATALINA_HOME}/webapps/${war.name} +container.displayName=eXo Platform +container.dir=${env.CATALINA_HOME}/webapps/${webapp.name} Modified: trunk/labs/kosmos/build/portlet-gridsphere-deploy.properties =================================================================== --- trunk/labs/kosmos/build/portlet-gridsphere-deploy.properties 2005-11-10 01:17:01 UTC (rev 1549) +++ trunk/labs/kosmos/build/portlet-gridsphere-deploy.properties 2005-11-10 17:24:35 UTC (rev 1550) @@ -1 +1,2 @@ -container.dir=${env.CATALINA_HOME}/webapps/${war.name} +container.displayName=GridSphere Portal Framework +container.dir=${env.CATALINA_HOME}/webapps/${webapp.name} Modified: trunk/labs/kosmos/build/portlet-jboss-portal-deploy.properties =================================================================== --- trunk/labs/kosmos/build/portlet-jboss-portal-deploy.properties 2005-11-10 01:17:01 UTC (rev 1549) +++ trunk/labs/kosmos/build/portlet-jboss-portal-deploy.properties 2005-11-10 17:24:35 UTC (rev 1550) @@ -1,2 +1,3 @@ +container.displayName=JBoss Portal container.dir=${env.JBOSS_HOME}/server/default/deploy/${war.name} Modified: trunk/labs/kosmos/build/portlet-liferay-portal-deploy.properties =================================================================== --- trunk/labs/kosmos/build/portlet-liferay-portal-deploy.properties 2005-11-10 01:17:01 UTC (rev 1549) +++ trunk/labs/kosmos/build/portlet-liferay-portal-deploy.properties 2005-11-10 17:24:35 UTC (rev 1550) @@ -1 +1,2 @@ - +container.displayName=Liferay Portal +container.dir=${env.CATALINA_HOME}/webapps/${webapp.name} Modified: trunk/labs/kosmos/build/portlet-pluto-deploy.properties =================================================================== --- trunk/labs/kosmos/build/portlet-pluto-deploy.properties 2005-11-10 01:17:01 UTC (rev 1549) +++ trunk/labs/kosmos/build/portlet-pluto-deploy.properties 2005-11-10 17:24:35 UTC (rev 1550) @@ -1,2 +1,2 @@ -container.dir=${env.CATALINA_HOME}/webapps/${war.name} - +container.displayName=Apache Pluto +container.dir=${env.CATALINA_HOME}/webapps/${webapp.name} Modified: trunk/labs/kosmos/build/server-jboss-as-deploy.properties =================================================================== --- trunk/labs/kosmos/build/server-jboss-as-deploy.properties 2005-11-10 01:17:01 UTC (rev 1549) +++ trunk/labs/kosmos/build/server-jboss-as-deploy.properties 2005-11-10 17:24:35 UTC (rev 1550) @@ -1,2 +1,3 @@ +container.displayName=JBoss Application Server container.dir=${env.JBOSS_HOME}/server/default/deploy/${war.name} Modified: trunk/labs/kosmos/build/server-tomcat-deploy.properties =================================================================== --- trunk/labs/kosmos/build/server-tomcat-deploy.properties 2005-11-10 01:17:01 UTC (rev 1549) +++ trunk/labs/kosmos/build/server-tomcat-deploy.properties 2005-11-10 17:24:35 UTC (rev 1550) @@ -1,2 +1,3 @@ -container.dir=${env.CATALINA_HOME}/webapps/${war.name} +container.displayName=Apache Tomcat +container.dir=${env.CATALINA_HOME}/webapps/${webapp.name} |
Author: wrzep Date: 2005-11-09 20:17:01 -0500 (Wed, 09 Nov 2005) New Revision: 1549 Added: trunk/forge/portal-extensions/forge-status/ trunk/forge/portal-extensions/forge-status/maven.xml trunk/forge/portal-extensions/forge-status/project.properties trunk/forge/portal-extensions/forge-status/project.xml trunk/forge/portal-extensions/forge-status/src/ trunk/forge/portal-extensions/forge-status/src/java/ trunk/forge/portal-extensions/forge-status/src/java/org/ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/ 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/StatusPortlet.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusTools.java trunk/forge/portal-extensions/forge-status/src/web/ trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/ trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/jboss-app.xml trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/jboss-portlet.xml trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/jboss-service.xml trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/portlet-instances.xml trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/portlet.xml trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/tld/ trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/tld/forge.tld trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/tld/portlet.tld trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/web.xml Modified: trunk/forge/portal-extensions/forge-ear/src/META-INF/application.xml trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml Log: project status portlet basic clasess Pawel Modified: trunk/forge/portal-extensions/forge-ear/src/META-INF/application.xml =================================================================== --- trunk/forge/portal-extensions/forge-ear/src/META-INF/application.xml 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-ear/src/META-INF/application.xml 2005-11-10 01:17:01 UTC (rev 1549) @@ -82,5 +82,10 @@ <web> <web-uri>forgeLogin.war</web-uri> </web> - </module> + </module> + <module> + <web> + <web-uri>forge-status.war</web-uri> + </web> + </module> </application> Added: trunk/forge/portal-extensions/forge-status/maven.xml =================================================================== --- trunk/forge/portal-extensions/forge-status/maven.xml 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/maven.xml 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,24 @@ +<!-- + JBoss, the OpenSource J2EE webOS + Distributable under LGPL license. + See terms of license at gnu.org. + --> +<project xmlns:j="jelly:core" xmlns:ant="jelly:ant" xmlns:u="jelly:util"> + <!-- Default war-project goals --> + + <goal name="all"> + <attainGoal name="prj-all" /> + </goal> + + <goal name="build"> + <attainGoal name="prj-war-build" /> + </goal> + + <goal name="deploy"> + <attainGoal name="prj-war-deploy" /> + </goal> + + <goal name="clean"> + <attainGoal name="prj-clean" /> + </goal> +</project> Added: trunk/forge/portal-extensions/forge-status/project.properties =================================================================== --- trunk/forge/portal-extensions/forge-status/project.properties 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/project.properties 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,3 @@ +maven.repo.remote=http://repository.atlassian.com,http://www.ibiblio.org/maven,http://dist.codehaus.org/ +maven.junit.fork=yes +maven.war.src=${basedir}/src/web Added: trunk/forge/portal-extensions/forge-status/project.xml =================================================================== --- trunk/forge/portal-extensions/forge-status/project.xml 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/project.xml 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,55 @@ +<?xml version='1.0' encoding='ISO-8859-1'?> +<!-- + JBoss, the OpenSource J2EE webOS + Distributable under LGPL license. + See terms of license at gnu.org. + --> +<project> + <pomVersion>3</pomVersion> + <extend>../common.xml</extend> + <id>forge-status</id> + <name>Dashboard status portlet</name> + <currentVersion>1.0</currentVersion> + <organization> + <name>Pawel Wrzeszcz</name> + <url></url> + </organization> + <description></description> + + <dependencies> + <dependency> + <groupId>tmate</groupId> + <artifactId>javasvn</artifactId> + <version>1.0</version> + <jar>javasvn.jar</jar> + </dependency> + + <dependency> + <groupId>tmate</groupId> + <artifactId>jsch</artifactId> + <version>1.0</version> + <jar>jsch.jar</jar> + </dependency> + + <dependency> + <groupId>jboss-forge</groupId> + <artifactId>forge-common</artifactId> + <version>1.0</version> + </dependency> + + <dependency> + <groupId>aslibs</groupId> + <artifactId>javax.servlet</artifactId> + <version>1.0</version> + <jar>javax.servlet.jar</jar> + </dependency> + + <dependency> + <id>jdom</id> + <version>1.0</version> + <properties> + <war.bundle>true</war.bundle> + </properties> + </dependency> + </dependencies> +</project> Added: 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-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,143 @@ +/* + * 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; + +import java.util.Iterator; +import java.util.Map; +import java.util.HashMap; +import java.util.Set; +import java.util.HashSet; + +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.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; + +/** +* @author Pawel Wrzeszcz +*/ +public class Status extends AbstractDescriptor { + + private final static String PROJECT_ELEMENT = "project"; + + private String portalName; + + /** + * <code>allItemsArr</code> - Array if ItemIF objects, containing items from all feeds. + */ + private HashSet<String> projects; + + Status(String portalName, Node root) { + this.portalName = portalName; + + // Get the projects nodes + projects = new HashSet<String>(); + + HashSet<String> projectNodes = new HashSet(); + projectNodes.add(PROJECT_ELEMENT); + + Set<Node> prjNodes; + prjNodes = getChildNodesSet(root, projectNodes); + + for (Iterator iter = prjNodes.iterator(); iter.hasNext();) { + Node n = (Node) iter.next(); + projects.add(XmlTools.unmarshallText(n)); + } + } + + /** + * Fills the given context with podcast information. + * + * @param context Context to fill. + */ + public void fillContext(DelegateContext context) { + + int i = 1; + for (Iterator iter = projects.iterator(); iter.hasNext(); i++) { + String projectName = (String) iter.next(); + + DelegateContext projectContext = context.next("project"); + + projectContext.put("name", projectName); + projectContext.put("position", i); + } + } + + + /** + * For the given Node, computes Set of it's child Nodes. + * Only child Nodes with names included in <code>nodesNames</code> Set + * appear in computed Set. + * + * @param root + * @param nodesNames + * @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>(); + NodeList list = root.getChildNodes(); + + for (int i = 0; i < list.getLength(); i++) { + Node n = list.item(i); + if ((n.getNodeType() == Node.ELEMENT_NODE) + && (nodesNames.contains(n.getNodeName()))) { + ret.add(n); + } + } + + return ret; + } + + /** + * 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>(); + NodeList list = root.getChildNodes(); + + for (int i = 0; i < list.getLength(); i++) { + Node n = list.item(i); + if ((n.getNodeType() == Node.ELEMENT_NODE) + && (nodesNames.contains(n.getNodeName()))) { + ret.put(n.getNodeName(),n); + } + } + + return ret; + } + +} Added: 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-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,82 @@ +/* + * 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; + +import java.io.IOException; +import java.util.Set; +import java.util.HashSet; + +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 + * A class which handles xml parsing and accessing parsed feeds information. + */ +public class StatusDescriptor { + + private static final Logger log = Logger.getLogger(StatusDescriptor.class); + + private DelegateContext context; + private Status status; + + public StatusDescriptor(String portalName, ContentManager cm) { + try { + + DOMParser parser = new DOMParser(); + parser.parse(new InputSource(cm.getNode(StatusTools + .getPrjXmlCmPath(portalName)).getContentInputStream())); + + Node root = parser.getDocument().getDocumentElement(); + + if ((root.getNodeType() == Node.ELEMENT_NODE) + && (root.getNodeName().equals("projects"))) { + status = new Status(portalName, root); + } + + fillContext(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void fillContext() { + context = new DelegateContext(); + status.fillContext(context); + } + + public DelegateContext getContext(JBossRenderRequest request) { + return context; + } +} Added: 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-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusNodeWatcher.java 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,55 @@ +/* + * 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; + +import org.jboss.forge.common.service.NodeWatcher; +import org.jboss.forge.common.service.ResourceWatcher; +import org.jboss.shotoku.ContentManager; + +public class StatusNodeWatcher implements NodeWatcher { + private ResourceWatcher rw; + private ContentManager cm; + + public StatusNodeWatcher(ContentManager cm) { + this.cm = cm; + } + + private StatusDescriptor getDesc(String portalName) { + StatusDescriptor desc = new StatusDescriptor(portalName, cm); + + rw = new ResourceWatcher(cm); + rw.watchResource(StatusTools.getPrjXmlCmPath(portalName)); + + return desc; + } + + public Object init(String portalName) { + return getDesc(portalName); + } + + public Object nodeUpdate(String portalName, Object currentValue) { + if ((currentValue == null) || (rw.checkResources())) + return getDesc(portalName); + else + return null; + } +} Added: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusPortlet.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusPortlet.java 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusPortlet.java 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,67 @@ + /* + * 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; + +import java.io.IOException; + +import javax.portlet.PortletException; +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; + +import org.jboss.portlet.JBossPortlet; +import org.jboss.portlet.JBossRenderRequest; +import org.jboss.portlet.JBossRenderResponse; + +/** + * Podcast portlet. + * @author Pawel Wrzeszcz + */ +public class StatusPortlet extends JBossPortlet { + + public void doView(JBossRenderRequest request, JBossRenderResponse response) + throws IOException, PortletException { + response.setContentType("text/html"); + + String portalName = ForgeHelper.getPortalName(request); + + // Getting the podcast context + DelegateContext context = StatusTools.getDesc(portalName).getContext(request); + + // Displaying the JSP + request.setAttribute(PortalJsp.CTX_REQUEST, context); + + PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher( + ForgeHelper.createRepoAccessPath(portalName, StatusTools + .getJspCmPath())); + rd.include(request, response); + + } +} Added: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusTools.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusTools.java 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusTools.java 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,61 @@ +package org.jboss.forge.status; + +import org.jboss.forge.common.ForgeHelper; + +import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.aop.Inject; + +/** + * Common constants and functions. + * @author Pawel Wrzeszcz + */ +public class StatusTools { + + /** + * <code>STATUS_XML<code> - file defining the list of watched feeds + */ + private final static String STATUS_XML = "status.xml"; + + /** + * <code>STATUS_DIR</code> - directory in which file <code>PODCAST_XML<code> is stored. + */ + private final static String STATUS_DIR = "status"; + + private final static String STATUS_JSP = "status.jsp"; + private final static String STATUS_JSP_DIR = "status"; + + private final static String MEMBERS_DIR = "members"; + private final static String PROJECTS_XML = "projects.xml"; + + @Inject + private static ContentManager cm; + + /** + * Path to the xml file defining list of watched feeds. + */ + public static String getPrjXmlCmPath(String portalName) { + return portalName + "/" + MEMBERS_DIR + "/" + PROJECTS_XML; + } + + /** + * Path to the file displaying the podcast feeds. + */ + public static String getJspCmPath() { + return STATUS_JSP_DIR + "/" + STATUS_JSP; + } + + public static synchronized StatusDescriptor getDesc(final String portalName) { + String cacheKey = StatusDescriptor.class.getName(); + + StatusDescriptor desc = (StatusDescriptor) ForgeHelper + .getForgeManagement().getFromCache(portalName, cacheKey); + + if (desc == null) + desc = (StatusDescriptor) ForgeHelper.getForgeManagement() + .addNodeWatcher(portalName, + cacheKey, + new StatusNodeWatcher(cm)); + + return desc; + } +} Added: trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/jboss-app.xml =================================================================== --- trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/jboss-app.xml 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/jboss-app.xml 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,3 @@ +<jboss-app> + <app-name>status</app-name> +</jboss-app> Added: trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/jboss-portlet.xml 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/jboss-portlet.xml 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,6 @@ +<portlet-app> + <portlet> + <portlet-name>StatusPortlet</portlet-name> + <security></security> + </portlet> +</portlet-app> \ No newline at end of file Added: trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/jboss-service.xml =================================================================== --- trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/jboss-service.xml 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/jboss-service.xml 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1 @@ +<server></server> \ No newline at end of file Added: trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/portlet-instances.xml =================================================================== --- trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/portlet-instances.xml 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/portlet-instances.xml 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,7 @@ +<?xml version="1.0" standalone="yes"?> +<instances> + <instance> + <instance-name>StatusPortletInstance</instance-name> + <component-ref>StatusPortlet</component-ref> + </instance> +</instances> Added: trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/portlet.xml =================================================================== --- trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/portlet.xml 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/portlet.xml 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" + version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"> + <portlet> + <description>Status Portlet</description> + <portlet-name>StatusPortlet</portlet-name> + <display-name>Status</display-name> + <portlet-class>org.jboss.forge.status.StatusPortlet</portlet-class> + <supports> + <mime-type>text/html</mime-type> + <portlet-mode>VIEW</portlet-mode> + </supports> + <portlet-info> + <title>Status</title> + </portlet-info> + </portlet> + </portlet-app> Added: trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/tld/forge.tld =================================================================== --- trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/tld/forge.tld 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/tld/forge.tld 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,139 @@ +<taglib xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd" + version="2.0"> + <!-- + JBoss, the OpenSource J2EE webOS + Distributable under LGPL license. + See terms of license at gnu.org. + --> + <tlib-version>1.1</tlib-version> + <jsp-version>2.0</jsp-version> + <shortname>forge</shortname> + <info>Forge tags</info> + + <tag> + <name>pageURL</name> + <tagclass>org.jboss.forge.common.taglib.PageURLTag</tagclass> + <attribute> + <name>page</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>form</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>param</name> + <tagclass>org.jboss.forge.common.taglib.ParamTag</tagclass> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>wikiURL</name> + <tagclass>org.jboss.forge.common.taglib.WikiURLTag</tagclass> + <attribute> + <name>page</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>freezoneURL</name> + <tagclass>org.jboss.forge.common.taglib.FreezoneURLTag</tagclass> + <attribute> + <name>page</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>projectURL</name> + <tagclass>org.jboss.forge.common.taglib.ProjectURLTag</tagclass> + <attribute> + <name>project</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>page</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>form</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>categoryURL</name> + <tagclass>org.jboss.forge.common.taglib.CategoryURLTag</tagclass> + <attribute> + <name>category</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>form</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>selectedProject</name> + <tagclass>org.jboss.forge.common.taglib.SelectedProjectTag</tagclass> + </tag> + + <tag> + <name>imagePath</name> + <tagclass>org.jboss.forge.common.taglib.ImagePathTag</tagclass> + <attribute> + <name>src</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>project</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>attrValue</name> + <tagclass>org.jboss.forge.common.taglib.AttrValueTag</tagclass> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>attrIf</name> + <tagclass>org.jboss.forge.common.taglib.AttrIfTag</tagclass> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> +</taglib> Added: trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/tld/portlet.tld =================================================================== --- trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/tld/portlet.tld 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/tld/portlet.tld 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,77 @@ +<taglib xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd" + version="2.0"> + <tlib-version>1.1</tlib-version> + <jsp-version>2.0</jsp-version> + <shortname>JBoss Portal tags</shortname> + <info>JBoss Portal tags</info> + + <function> + <name>i18n</name> + <function-class>org.jboss.portal.core.servlet.jsp.taglib.PortalLib</function-class> + <function-signature>java.lang.String getMessage(java.lang.String)</function-signature> + </function> + + <function> + <name>out</name> + <function-class>org.jboss.portal.core.servlet.jsp.taglib.PortalLib</function-class> + <function-signature>java.lang.String out(java.lang.String)</function-signature> + </function> + + <function> + <name>i18nout</name> + <function-class>org.jboss.portal.core.servlet.jsp.taglib.PortalLib</function-class> + <function-signature>java.lang.String i18nOut(java.lang.String)</function-signature> + </function> + + <tag> + <name>if</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.IfTag</tagclass> + <attribute> + <name>ctx</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>iterate</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.IterateTag</tagclass> + <attribute> + <name>ctx</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>include</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.IncludeTag</tagclass> + <attribute> + <name>page</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>error</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.ErrorTag</tagclass> + <attribute> + <name>key</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>errors</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.ErrorsTag</tagclass> + </tag> + + <tag> + <name>success</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.SuccessTag</tagclass> + </tag> +</taglib> Added: trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/web.xml =================================================================== --- trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/web.xml 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/forge-status/src/web/WEB-INF/web.xml 2005-11-10 01:17:01 UTC (rev 1549) @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<!DOCTYPE web-app PUBLIC + "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" + "http://java.sun.com/dtd/web-app_2_3.dtd"> +<web-app> + <filter> + <filter-name>filesFromRepoFilter</filter-name> + <filter-class>org.jboss.forge.common.FilesFromRepoFilter</filter-class> + </filter> + + <filter-mapping> + <filter-name>filesFromRepoFilter</filter-name> + <url-pattern>/repo-access/*</url-pattern> + <dispatcher>INCLUDE</dispatcher> + </filter-mapping> +</web-app> \ No newline at end of file Modified: trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml =================================================================== --- trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml 2005-11-09 22:23:15 UTC (rev 1548) +++ trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml 2005-11-10 01:17:01 UTC (rev 1549) @@ -384,6 +384,34 @@ </window> </page> + + <page> + <page-name>status</page-name> + + <window> + <window-name>NavigationPortletWindowDefaultStatus</window-name> + <instance-ref>navigation.NavigationPortlet.NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + <window-state>normal</window-state> + </window> + + <window> + <window-name>AdsPortletWindowDefaultStatus</window-name> + <instance-ref>ads.AdsPortlet.AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + <window-state>normal</window-state> + </window> + + <window> + <window-name>StatusPortletWindowDefaultStatus</window-name> + <instance-ref>status.StatusPortlet.StatusPortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + + </page> </pages> </portal> |
From: <jbo...@li...> - 2005-11-09 22:23:18
|
Author: szimano Date: 2005-11-09 17:23:15 -0500 (Wed, 09 Nov 2005) New Revision: 1548 Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java Log: Added node watcher to reparse configuration file when it changes http://jira.jboss.com/jira/browse/JBLAB-396 Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java =================================================================== --- trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java 2005-11-09 22:10:10 UTC (rev 1547) +++ trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java 2005-11-09 22:23:15 UTC (rev 1548) @@ -1,17 +1,72 @@ package org.jboss.forge.projects.freezone; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.parsers.DocumentBuilderFactory; + import org.jboss.forge.common.service.NodeWatcher; +import org.jboss.logging.Logger; +import org.jboss.shotoku.Node; +import org.jboss.shotoku.aop.NodeInject; +import org.w3c.dom.Document; +import org.w3c.dom.NodeList; public class ForgeConfWatcher implements NodeWatcher { + private final static String TAG_NAME = "page"; + + private final static String ATTR_NAME = "pagePath"; + + private long lastNodeModification; + + private Logger log = Logger.getLogger(this.getClass()); + + @NodeInject("/default/freezone/forcelogin.xml") + private Node configuration; + public Object init(String arg0) { - // TODO Auto-generated method stub - return null; + lastNodeModification = configuration.getLastModification(); + + return parseConfiguration(); } public Object nodeUpdate(String arg0, Object arg1) { - // TODO Auto-generated method stub + if (lastNodeModification < configuration.getLastModification()) { + lastNodeModification = configuration.getLastModification(); + return parseConfiguration(); + } return null; } + private List<String> parseConfiguration() { + try { + List<String> loggedInOnly = new ArrayList<String>(); + + // clear the list first + loggedInOnly.clear(); + + Document doc = DocumentBuilderFactory.newInstance() + .newDocumentBuilder().parse( + configuration.getContentInputStream()); + + NodeList nodeList = doc.getElementsByTagName(TAG_NAME); + + for (int i = 0; i < nodeList.getLength(); i++) { + loggedInOnly.add(nodeList.item(i).getAttributes().getNamedItem( + ATTR_NAME).getNodeValue()); + } + + return loggedInOnly; + } catch (Exception e) { + log.error("Unable to parse configuration file", e); + return null; + } + } + + public ForgeConfWatcher() { + + } + } Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java =================================================================== --- trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-11-09 22:10:10 UTC (rev 1547) +++ trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-11-09 22:23:15 UTC (rev 1548) @@ -71,16 +71,11 @@ private final static String PATH_PARAM = "path"; - private final static String TAG_NAME = "page"; - private Logger log = Logger.getLogger(this.getClass()); @Inject private ContentManager cm; - @NodeInject("/default/freezone/forcelogin.xml") - private Node configuration; - private List<String> loggedInOnly; private void sendResponseNotFound(JBossRenderResponse response) @@ -195,7 +190,7 @@ cmsPath += DEFAULT_PAGE; } - + // Getting the node and its content type. If it the same as the // content type of the response, passing it for rendering. Otherwise, // sending bytes. @@ -220,37 +215,27 @@ JBossRenderResponse response) { String cmsPath = request.getParameter(PATH_PARAM); + loggedInOnly = (List<String>) ForgeHelper.getForgeManagement() + .getFromCache("", ForgeConfWatcher.class.getName()); + return (request.getUser() != null) || (!loggedInOnly.contains(cmsPath)); } @Override public void init() throws PortletException { - // TODO read configuration file + // ConDescriptor desc = (ConDescriptor) + // ForgeHelper.getForgeManagement(). + // getFromCache(portalName, ConServer.class.getName()); - loggedInOnly = new ArrayList<String>(); + /* + * desc = (ConDescriptor) ForgeHelper.getForgeManagement(). + * addNodeWatcher(portalName, ConServer.class.getName(), new + * ConNodeWatcher(cm)); + */ - try { - parseConfiguration(); - } catch (Exception e) { - throw new PortletException(e); - } + loggedInOnly = (List<String>) ForgeHelper.getForgeManagement() + .addNodeWatcher("", ForgeConfWatcher.class.getName(), + new ForgeConfWatcher()); } - - private void parseConfiguration() throws ParserConfigurationException, - RepositoryException, SAXException, IOException { - - // clear the list first - loggedInOnly.clear(); - - Document doc = DocumentBuilderFactory.newInstance() - .newDocumentBuilder().parse( - configuration.getContentInputStream()); - - NodeList nodeList = doc.getElementsByTagName(TAG_NAME); - - for (int i = 0; i < nodeList.getLength(); i++) { - loggedInOnly.add(nodeList.item(i).getAttributes().getNamedItem("pagePath").getNodeValue()); - } - } } |
From: <jbo...@li...> - 2005-11-09 22:10:14
|
Author: adamw Date: 2005-11-09 17:10:10 -0500 (Wed, 09 Nov 2005) New Revision: 1547 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java Log: No exceptinos printing Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java 2005-11-09 21:30:50 UTC (rev 1546) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java 2005-11-09 22:10:10 UTC (rev 1547) @@ -164,7 +164,6 @@ blogFileCreated = true; } catch (IOException e) { - e.printStackTrace(); continue; } } @@ -186,7 +185,6 @@ blogFile.setLastModified(blogFileLastModified); } catch (IOException e) { - e.printStackTrace(); // Do nothing - no changes. } } |
From: <jbo...@li...> - 2005-11-09 21:30:56
|
Author: szimano Date: 2005-11-09 16:30:50 -0500 (Wed, 09 Nov 2005) New Revision: 1546 Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java Log: freezone back to its shape :) Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java =================================================================== --- trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-11-09 21:29:38 UTC (rev 1545) +++ trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-11-09 21:30:50 UTC (rev 1546) @@ -215,13 +215,13 @@ } } - /*@Override + @Override protected boolean isAllowed(JBossRenderRequest request, JBossRenderResponse response) { String cmsPath = request.getParameter(PATH_PARAM); return (request.getUser() != null) || (!loggedInOnly.contains(cmsPath)); - }*/ + } @Override public void init() throws PortletException { @@ -253,9 +253,4 @@ loggedInOnly.add(nodeList.item(i).getAttributes().getNamedItem("pagePath").getNodeValue()); } } - - @Override - protected boolean checkPermision(JBossRenderRequest arg0, JBossRenderResponse arg1) { - return true; - } } |
From: <jbo...@li...> - 2005-11-09 21:29:41
|
Author: szimano Date: 2005-11-09 16:29:38 -0500 (Wed, 09 Nov 2005) New Revision: 1545 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/portlet/JBossLabsPortlet.java Log: changed checkPermissions to isAllow Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/portlet/JBossLabsPortlet.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/portlet/JBossLabsPortlet.java 2005-11-09 21:14:50 UTC (rev 1544) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/portlet/JBossLabsPortlet.java 2005-11-09 21:29:38 UTC (rev 1545) @@ -13,13 +13,13 @@ private final static String errorMsg = "403 - not authorized<br />I'm sorry but you need to login to view this page."; - protected abstract boolean checkPermision(JBossRenderRequest request, JBossRenderResponse response); + protected abstract boolean isAllowed(JBossRenderRequest request, JBossRenderResponse response); protected abstract void labsDoView(JBossRenderRequest request, JBossRenderResponse response) throws PortletException, PortletSecurityException, IOException; @Override protected final void doView(JBossRenderRequest request, JBossRenderResponse response) throws PortletException, PortletSecurityException, IOException { - if (checkPermision(request, response)) { + if (isAllowed(request, response)) { labsDoView(request, response); } else { |
From: <jbo...@li...> - 2005-11-09 21:14:54
|
Author: adamw Date: 2005-11-09 16:14:50 -0500 (Wed, 09 Nov 2005) New Revision: 1544 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java Log: Blog bug fix Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java 2005-11-09 20:30:40 UTC (rev 1543) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java 2005-11-09 21:14:50 UTC (rev 1544) @@ -103,7 +103,7 @@ ProjectsHelper.BLOG_DIR).getNodes().toList(); } catch (ResourceDoesNotExist e) { // No blog in this project. - return; + continue; } // Getting blog entries that are now present in blojsom. @@ -164,6 +164,7 @@ blogFileCreated = true; } catch (IOException e) { + e.printStackTrace(); continue; } } @@ -185,6 +186,7 @@ blogFile.setLastModified(blogFileLastModified); } catch (IOException e) { + e.printStackTrace(); // Do nothing - no changes. } } |
From: <jbo...@li...> - 2005-11-09 20:30:48
|
Author: adamw Date: 2005-11-09 15:30:40 -0500 (Wed, 09 Nov 2005) New Revision: 1543 Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java Log: Making the code compile Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java =================================================================== --- trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-11-09 16:08:14 UTC (rev 1542) +++ trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-11-09 20:30:40 UTC (rev 1543) @@ -25,8 +25,12 @@ import java.util.ArrayList; import java.util.List; +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; import javax.portlet.PortletException; import javax.portlet.PortletSecurityException; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -211,13 +215,13 @@ } } - @Override + /*@Override protected boolean isAllowed(JBossRenderRequest request, JBossRenderResponse response) { String cmsPath = request.getParameter(PATH_PARAM); return (request.getUser() != null) || (!loggedInOnly.contains(cmsPath)); - } + }*/ @Override public void init() throws PortletException { @@ -249,4 +253,9 @@ loggedInOnly.add(nodeList.item(i).getAttributes().getNamedItem("pagePath").getNodeValue()); } } + + @Override + protected boolean checkPermision(JBossRenderRequest arg0, JBossRenderResponse arg1) { + return true; + } } |
From: <jbo...@li...> - 2005-11-09 16:08:23
|
Author: szimano Date: 2005-11-09 11:08:14 -0500 (Wed, 09 Nov 2005) New Revision: 1542 Added: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java Log: configuration file works. Still need NodeWatcher to reparse it when it changes. http://jira.jboss.com/jira/browse/JBLAB-396 Added: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java =================================================================== --- trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java 2005-11-09 15:59:09 UTC (rev 1541) +++ trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/ForgeConfWatcher.java 2005-11-09 16:08:14 UTC (rev 1542) @@ -0,0 +1,17 @@ +package org.jboss.forge.projects.freezone; + +import org.jboss.forge.common.service.NodeWatcher; + +public class ForgeConfWatcher implements NodeWatcher { + + public Object init(String arg0) { + // TODO Auto-generated method stub + return null; + } + + public Object nodeUpdate(String arg0, Object arg1) { + // TODO Auto-generated method stub + return null; + } + +} Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java =================================================================== --- trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-11-09 15:59:09 UTC (rev 1541) +++ trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-11-09 16:08:14 UTC (rev 1542) @@ -22,14 +22,19 @@ package org.jboss.forge.projects.freezone; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import javax.portlet.PortletException; import javax.portlet.PortletSecurityException; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; import org.jboss.forge.common.ForgeHelper; import org.jboss.forge.common.portlet.JBossLabsPortlet; import org.jboss.forge.common.projects.ProjectsHelper; import org.jboss.forge.common.projects.permissions.ActionRequestPermissionsChecker; +import org.jboss.logging.Logger; import org.jboss.portal.core.CoreConstants; import org.jboss.portlet.JBossActionRequest; import org.jboss.portlet.JBossActionResponse; @@ -39,12 +44,17 @@ import org.jboss.shotoku.Node; import org.jboss.shotoku.aop.Inject; import org.jboss.shotoku.aop.NodeInject; +import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; +import org.w3c.dom.Document; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; /** * A portlet for a project freezone. * * @author adamw + * @author Tomasz Szymanski */ public class Freezone extends JBossLabsPortlet { /** @@ -52,31 +62,38 @@ * page is selected. */ private final static String DEFAULT_PAGE = "index.html"; - + private final static String DEFAULT_DIR = "default"; - + private final static String PATH_PARAM = "path"; + private final static String TAG_NAME = "page"; + + private Logger log = Logger.getLogger(this.getClass()); + @Inject private ContentManager cm; - @NodeInject ("/default/freezone/forcelogin.xml") + @NodeInject("/default/freezone/forcelogin.xml") private Node configuration; - - private void sendResponseNotFound(JBossRenderResponse response) throws IOException { + + private List<String> loggedInOnly; + + private void sendResponseNotFound(JBossRenderResponse response) + throws IOException { response.setContentType("text/html"); response.getWriter().println("404 - Not found."); } - - public void labsDoView(JBossRenderRequest request, JBossRenderResponse response) - throws IOException { + + public void labsDoView(JBossRenderRequest request, + JBossRenderResponse response) throws IOException { String requestedPath = request.getParameter(PATH_PARAM); - + if (requestedPath == null) { sendResponseNotFound(response); return; } - + Node requestedNode; try { requestedNode = cm.getNode(requestedPath); @@ -84,49 +101,50 @@ sendResponseNotFound(response); return; } - + response.setContentType("text/html"); response.getWriter().write(requestedNode.getContent()); } - + private final static String[][] PROJECT_REDIRECTS = { - { "downloads", "downloads" }, - { "news", "blog" }, - { "blog", "blog" }, - { "", "" } - }; + { "downloads", "downloads" }, { "news", "blog" }, + { "blog", "blog" }, { "", "" } }; @Override - protected void processAction(JBossActionRequest request, JBossActionResponse response) - throws PortletException, PortletSecurityException, IOException { + protected void processAction(JBossActionRequest request, + JBossActionResponse response) throws PortletException, + PortletSecurityException, IOException { String portalName = ForgeHelper.getPortalName(request); - + // Getting the requested path. - String reqPath = request.getParameter(CoreConstants.REQ_ACTION_PARAM_PATH); - + String reqPath = request + .getParameter(CoreConstants.REQ_ACTION_PARAM_PATH); + // For "root" requests, redirecting to a default page. if ((reqPath == null) || ("".equals(reqPath)) || ("/".equals(reqPath))) { - response.sendRedirect(ForgeHelper.createPageLink(ForgeHelper.LABS_PORTAL, "default")); + response.sendRedirect(ForgeHelper.createPageLink( + ForgeHelper.LABS_PORTAL, "default")); return; } - + // Invalid path - nothing to display. if (reqPath.contains("..")) return; - + // Ignoring any possible parameters. int qmIndex = reqPath.indexOf('?'); if (qmIndex != -1) reqPath = reqPath.substring(0, qmIndex); - + // Checking if the first part of the path is a project name. - String[] tokens = reqPath.split("[/]"); + String[] tokens = reqPath.split("[/]"); boolean isProjectLink = false; if (tokens.length > 1) - isProjectLink = - ProjectsHelper.getProjects(portalName).projectExists( - new ActionRequestPermissionsChecker(request), tokens[1]); - + isProjectLink = ProjectsHelper.getProjects(portalName) + .projectExists( + new ActionRequestPermissionsChecker(request), + tokens[1]); + // Checking for special links, making possible redirects. if (isProjectLink) { String projectId = tokens[1]; @@ -134,48 +152,46 @@ for (String[] projectRedirect : PROJECT_REDIRECTS) { if (projectRedirect[0].equals(requestedPage)) { String url; - + if ("".equals(projectRedirect[1])) { url = ProjectsHelper.getProjects( ForgeHelper.LABS_PORTAL).getProjectLink( - projectId); + projectId); } else { url = ProjectsHelper.createPageLink( - ForgeHelper.LABS_PORTAL, projectId, - projectRedirect[1]); + ForgeHelper.LABS_PORTAL, projectId, + projectRedirect[1]); } - + response.sendRedirect(url); return; } } } - + // If the requested path references a project, getting the page from - // the project's freezone dir. Otherwise, getting the page from the + // the project's freezone dir. Otherwise, getting the page from the // default directory. String cmsPath = portalName + "/" + ProjectsHelper.MEMBERS_DIR + "/"; if (isProjectLink) { String[] limitedTokens = reqPath.split("[/]", 3); - + cmsPath += tokens[1] + "/" + ProjectsHelper.FREEZONE_DIR + "/" - + (limitedTokens.length > 2 ? limitedTokens[2] : ""); + + (limitedTokens.length > 2 ? limitedTokens[2] : ""); } else { cmsPath += DEFAULT_DIR + "/" + ProjectsHelper.FREEZONE_DIR - + reqPath; + + reqPath; } - + // Checking if we don't have to add a default page to the constructed // path. if (!cmsPath.contains(".")) { if (!cmsPath.endsWith("/")) cmsPath += "/"; - + cmsPath += DEFAULT_PAGE; } - System.out.println(cmsPath); - // Getting the node and its content type. If it the same as the // content type of the response, passing it for rendering. Otherwise, // sending bytes. @@ -185,23 +201,52 @@ } catch (ResourceDoesNotExist e) { return; } - - String mimeType = requestedNode.getMimeType(); - if (request.getResponseContentType().equalsIgnoreCase(mimeType)) { - response.setRenderParameter(PATH_PARAM, cmsPath); - } else { - response.sendRedirect("/" + ForgeHelper.FILE_ACCESS_DIR + "/" + cmsPath); - } + + String mimeType = requestedNode.getMimeType(); + if (request.getResponseContentType().equalsIgnoreCase(mimeType)) { + response.setRenderParameter(PATH_PARAM, cmsPath); + } else { + response.sendRedirect("/" + ForgeHelper.FILE_ACCESS_DIR + "/" + + cmsPath); + } } @Override - protected boolean checkPermision(JBossRenderRequest request, JBossRenderResponse response) { - // TODO Auto-generated method stub - return true; + protected boolean isAllowed(JBossRenderRequest request, + JBossRenderResponse response) { + String cmsPath = request.getParameter(PATH_PARAM); + + return (request.getUser() != null) || (!loggedInOnly.contains(cmsPath)); } @Override public void init() throws PortletException { - //TODO read configuration file + // TODO read configuration file + + loggedInOnly = new ArrayList<String>(); + + try { + parseConfiguration(); + } catch (Exception e) { + throw new PortletException(e); + } + } + + private void parseConfiguration() throws ParserConfigurationException, + RepositoryException, SAXException, IOException { + + // clear the list first + loggedInOnly.clear(); + + Document doc = DocumentBuilderFactory.newInstance() + .newDocumentBuilder().parse( + configuration.getContentInputStream()); + + NodeList nodeList = doc.getElementsByTagName(TAG_NAME); + + for (int i = 0; i < nodeList.getLength(); i++) { + loggedInOnly.add(nodeList.item(i).getAttributes().getNamedItem("pagePath").getNodeValue()); + } + } } |
From: <jbo...@li...> - 2005-11-09 15:59:30
|
Author: aron.gombas Date: 2005-11-09 10:59:09 -0500 (Wed, 09 Nov 2005) New Revision: 1541 Modified: trunk/labs/kosmos/conf-portlet/exo/web.xml trunk/labs/kosmos/conf-portlet/gridsphere/web.xml trunk/labs/kosmos/web-portlet/WEB-INF/web.xml Log: Cosmetic fixes in web.xml's Modified: trunk/labs/kosmos/conf-portlet/exo/web.xml =================================================================== --- trunk/labs/kosmos/conf-portlet/exo/web.xml 2005-11-09 14:23:29 UTC (rev 1540) +++ trunk/labs/kosmos/conf-portlet/exo/web.xml 2005-11-09 15:59:09 UTC (rev 1541) @@ -15,7 +15,7 @@ <param-value>en</param-value> </context-param> - <!-- eXo-specific parts --> + <!-- eXo-specific configuration --> <listener> <listener-class>org.exoplatform.services.portletcontainer.impl.servlet.PortletApplicationListener</listener-class> </listener> Modified: trunk/labs/kosmos/conf-portlet/gridsphere/web.xml =================================================================== --- trunk/labs/kosmos/conf-portlet/gridsphere/web.xml 2005-11-09 14:23:29 UTC (rev 1540) +++ trunk/labs/kosmos/conf-portlet/gridsphere/web.xml 2005-11-09 15:59:09 UTC (rev 1541) @@ -5,23 +5,16 @@ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd" version="2.4"> + <display-name>Kosmos Portlets</display-name> + <description>Kosmos is a portlet-based web application. It can run only inside a portlet container.</description> + <!-- JSTL configuration --> <context-param> <param-name>javax.servlet.jsp.jstl.fmt.locale</param-name> <param-value>en</param-value> </context-param> - <!-- JSP configuration --> - <taglib> - <taglib-uri>http://labs.jboss.com/projects/kosmos</taglib-uri> - <taglib-location>/WEB-INF/tld/kosmos-taglib.tld</taglib-location> - </taglib> - <taglib> - <taglib-uri>http://displaytag.sf.net/el</taglib-uri> - <taglib-location>/WEB-INF/tld/displaytag-el-12.tld</taglib-location> - </taglib> - - <!-- Gridsphere configuration --> + <!-- Gridsphere-specific configuration --> <servlet> <servlet-name>PortletServlet</servlet-name> <servlet-class>org.gridlab.gridsphere.provider.portlet.jsr.PortletServlet</servlet-class> Modified: trunk/labs/kosmos/web-portlet/WEB-INF/web.xml =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/web.xml 2005-11-09 14:23:29 UTC (rev 1540) +++ trunk/labs/kosmos/web-portlet/WEB-INF/web.xml 2005-11-09 15:59:09 UTC (rev 1541) @@ -14,14 +14,4 @@ <param-name>javax.servlet.jsp.jstl.fmt.locale</param-name> <param-value>en</param-value> </context-param> - - <!-- JSP configuration --> - <taglib> - <taglib-uri>http://labs.jboss.com/projects/kosmos</taglib-uri> - <taglib-location>/WEB-INF/tld/kosmos-taglib.tld</taglib-location> - </taglib> - <taglib> - <taglib-uri>http://displaytag.sf.net/el</taglib-uri> - <taglib-location>/WEB-INF/tld/displaytag-el-12.tld</taglib-location> - </taglib> </web-app> |
From: <jbo...@li...> - 2005-11-09 14:23:37
|
Author: aron.gombas Date: 2005-11-09 09:23:29 -0500 (Wed, 09 Nov 2005) New Revision: 1540 Added: trunk/labs/kosmos/build/portlet-exo-deploy.properties trunk/labs/kosmos/deploy-portlet-exo.xml Modified: trunk/labs/kosmos/conf-portlet/exo/web.xml Log: eXo deployment files added Added: trunk/labs/kosmos/build/portlet-exo-deploy.properties =================================================================== --- trunk/labs/kosmos/build/portlet-exo-deploy.properties 2005-11-09 14:14:48 UTC (rev 1539) +++ trunk/labs/kosmos/build/portlet-exo-deploy.properties 2005-11-09 14:23:29 UTC (rev 1540) @@ -0,0 +1 @@ +container.dir=${env.CATALINA_HOME}/webapps/${war.name} Modified: trunk/labs/kosmos/conf-portlet/exo/web.xml =================================================================== --- trunk/labs/kosmos/conf-portlet/exo/web.xml 2005-11-09 14:14:48 UTC (rev 1539) +++ trunk/labs/kosmos/conf-portlet/exo/web.xml 2005-11-09 14:23:29 UTC (rev 1540) @@ -6,7 +6,7 @@ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd" version="2.4"> - <display-name>kosmos-portlet</display-name><!-- required to be identical with the web-app name, by eXo --> + <display-name>kosmos-portlet.war</display-name><!-- required to be identical with the web-app name, by eXo --> <description>Kosmos is a portlet-based web application. It can run only inside a portlet container.</description> <!-- JSTL configuration --> @@ -29,16 +29,4 @@ <servlet-name>PortletWrapper</servlet-name> <url-pattern>/PortletWrapper</url-pattern> </servlet-mapping> - - <!-- JSP configuration --> -<!-- - <taglib> - <taglib-uri>http://labs.jboss.com/projects/kosmos</taglib-uri> - <taglib-location>/WEB-INF/tld/kosmos-taglib.tld</taglib-location> - </taglib> - <taglib> - <taglib-uri>http://displaytag.sf.net/el</taglib-uri> - <taglib-location>/WEB-INF/tld/displaytag-el-12.tld</taglib-location> - </taglib> ---> </web-app> Added: trunk/labs/kosmos/deploy-portlet-exo.xml =================================================================== --- trunk/labs/kosmos/deploy-portlet-exo.xml 2005-11-09 14:14:48 UTC (rev 1539) +++ trunk/labs/kosmos/deploy-portlet-exo.xml 2005-11-09 14:23:29 UTC (rev 1540) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Kosmos Portlet deploy-script for eXo Platform --> +<!-- $Id$ --> +<project basedir="." default="redeploy" name="Kosmos Portlet on eXo Platform"> + <description>Kosmos Portlet Module deploy-file</description> + + <property name="module.name" value="portlet"/> + <property name="container.name" value="exo"/> + <import file="build/deploy.xml"/> +</project> |
From: <jbo...@li...> - 2005-11-09 14:15:02
|
Author: aron.gombas Date: 2005-11-09 09:14:48 -0500 (Wed, 09 Nov 2005) New Revision: 1539 Modified: trunk/labs/kosmos/xdocs/reference/reference-manual.xml Log: eXo section added to the manual Modified: trunk/labs/kosmos/xdocs/reference/reference-manual.xml =================================================================== --- trunk/labs/kosmos/xdocs/reference/reference-manual.xml 2005-11-09 14:14:17 UTC (rev 1538) +++ trunk/labs/kosmos/xdocs/reference/reference-manual.xml 2005-11-09 14:14:48 UTC (rev 1539) @@ -853,21 +853,51 @@ <para> - Follow these steps: + <orderedlist> <listitem> - <para>TODO write all the deployment steps</para> + <para>Install eXo as written in its <ulink url="http://www.exoplatform.com/portal/faces/public/exo/home/community/wiki">documentation</ulink>. + You can find eXo at <ulink url="http://www.exoplatform.com">http://www.exoplatform.com</ulink>.</para> </listitem> <listitem> + <para>Deploy <ulink url="http://jakarta.apache.org/slide">Jakarta Slide</ulink> to the Tomcat instance used by eXo + as written in the JBoss AS step-by-step.</para> + + </listitem> + + <listitem> + + <para>You can deploy the server component into the Apache Tomcat + instance used by eXo, by running the server deploy script: + <programlisting>ant -f deploy-server-tomcat.xml</programlisting> + Please don't forget to set the <literal>CATALINA_HOME</literal> + environment variable before. + </para> + + </listitem> + + + <listitem> + + <para>Run the portlet deploy script as: + <programlisting>ant -f deploy-portlet-exo.xml</programlisting> + </para> + + </listitem> + + <listitem> + <para>Lauch eXo, open the default portal page (e.g. <literal>http://localhost:8080/portal</literal>), and login with the default account (<literal>admin</literal> - and <literal>exo</literal>).</para> + and <literal>exo</literal>).</para> Go to page <literal>edit</literal> mode + and add the Kosmos portlets to the page. Change back + to <literal>view</literal> mode. </listitem> @@ -883,15 +913,13 @@ <para> - Follow these steps: + <orderedlist> <listitem> - <para>Install Gridsphere as written in its manual - (<ulink url="http://www.gridsphere.org/gridsphere/docs/UsersGuide/UsersGuide.html">http://www.gridsphere.org/gridsphere/docs/UsersGuide/UsersGuide.html</ulink>). - You can find Gridsphere at <ulink url="http://www.gridsphere.org"> - http://www.gridsphere.org</ulink>.</para> + <para>Install Gridsphere as written in its <ulink url="http://www.gridsphere.org/gridsphere/docs/UsersGuide/UsersGuide.html">manual</ulink>. + You can find Gridsphere at <ulink url="http://www.gridsphere.org">http://www.gridsphere.org</ulink>.</para> </listitem> @@ -969,7 +997,7 @@ <para> - Follow these steps: + <orderedlist> <listitem> @@ -977,8 +1005,7 @@ <para>Install JBoss AS as written in its manual. The current reference documentation both for JBoss AS and JBoss Portal is available from the - <ulink url="http://www.jboss.org"> - http://www.jboss.org</ulink> site.</para> + <ulink url="http://www.jboss.org">http://www.jboss.org</ulink> site.</para> </listitem> @@ -1039,7 +1066,7 @@ <para> - Follow these steps: + <orderedlist> <listitem> |
From: <jbo...@li...> - 2005-11-09 14:14:25
|
Author: aron.gombas Date: 2005-11-09 09:14:17 -0500 (Wed, 09 Nov 2005) New Revision: 1538 Removed: trunk/labs/kosmos/build/portlet-sun-portal-server-deploy.properties trunk/labs/kosmos/deploy-portlet-sun-portal-server.xml Log: Sun Portal stuffs removed Deleted: trunk/labs/kosmos/build/portlet-sun-portal-server-deploy.properties =================================================================== --- trunk/labs/kosmos/build/portlet-sun-portal-server-deploy.properties 2005-11-09 11:08:37 UTC (rev 1537) +++ trunk/labs/kosmos/build/portlet-sun-portal-server-deploy.properties 2005-11-09 14:14:17 UTC (rev 1538) @@ -1 +0,0 @@ - Deleted: trunk/labs/kosmos/deploy-portlet-sun-portal-server.xml =================================================================== --- trunk/labs/kosmos/deploy-portlet-sun-portal-server.xml 2005-11-09 11:08:37 UTC (rev 1537) +++ trunk/labs/kosmos/deploy-portlet-sun-portal-server.xml 2005-11-09 14:14:17 UTC (rev 1538) @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Kosmos Portlet deploy-script for Sun Java System Portal Server --> -<!-- $Id$ --> -<project basedir="." default="redeploy" name="Kosmos Portlet on Sun Java System Portal Server"> - <description>Kosmos Portlet Module deploy-file</description> - - <property name="module.name" value="portlet"/> - <property name="container.name" value="sun-portal-server"/> - <import file="build/deploy.xml"/> -</project> |
From: <jbo...@li...> - 2005-11-09 11:08:54
|
Author: aron.gombas Date: 2005-11-09 06:08:37 -0500 (Wed, 09 Nov 2005) New Revision: 1537 Modified: trunk/labs/kosmos/conf-portlet/exo/web.xml trunk/labs/kosmos/web-portlet/WEB-INF/web.xml trunk/labs/kosmos/web-server/WEB-INF/web.xml Log: Cosmetic changes on web.xml's Modified: trunk/labs/kosmos/conf-portlet/exo/web.xml =================================================================== --- trunk/labs/kosmos/conf-portlet/exo/web.xml 2005-11-09 00:26:34 UTC (rev 1536) +++ trunk/labs/kosmos/conf-portlet/exo/web.xml 2005-11-09 11:08:37 UTC (rev 1537) @@ -1,10 +1,11 @@ <?xml version="1.0"?> - -<!DOCTYPE web-app - PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" - "http://java.sun.com/dtd/web-app_2_3.dtd"> -<web-app> +<!-- $Id$ --> +<web-app xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd" + version="2.4"> + <display-name>kosmos-portlet</display-name><!-- required to be identical with the web-app name, by eXo --> <description>Kosmos is a portlet-based web application. It can run only inside a portlet container.</description> @@ -31,11 +32,11 @@ <!-- JSP configuration --> <!-- - <taglib> - <taglib-uri>http://labs.jboss.com/projects/kosmos</taglib-uri> - <taglib-location>/WEB-INF/tld/kosmos-taglib.tld</taglib-location> - </taglib> <taglib> + <taglib-uri>http://labs.jboss.com/projects/kosmos</taglib-uri> + <taglib-location>/WEB-INF/tld/kosmos-taglib.tld</taglib-location> + </taglib> + <taglib> <taglib-uri>http://displaytag.sf.net/el</taglib-uri> <taglib-location>/WEB-INF/tld/displaytag-el-12.tld</taglib-location> </taglib> Modified: trunk/labs/kosmos/web-portlet/WEB-INF/web.xml =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/web.xml 2005-11-09 00:26:34 UTC (rev 1536) +++ trunk/labs/kosmos/web-portlet/WEB-INF/web.xml 2005-11-09 11:08:37 UTC (rev 1537) @@ -1,5 +1,6 @@ <?xml version="1.0"?> +<!-- $Id$ --> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd" Modified: trunk/labs/kosmos/web-server/WEB-INF/web.xml =================================================================== --- trunk/labs/kosmos/web-server/WEB-INF/web.xml 2005-11-09 00:26:34 UTC (rev 1536) +++ trunk/labs/kosmos/web-server/WEB-INF/web.xml 2005-11-09 11:08:37 UTC (rev 1537) @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE web-app - PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" - "http://java.sun.com/dtd/web-app_2_3.dtd"> +<!-- $Id$ --> +<web-app xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd" + version="2.4"> -<!-- $Id$ --> -<web-app> <display-name>Kosmos Services Servlet</display-name> <description>Server component of Kosmos. Runs as a regular web application.</description> |
Author: szimano Date: 2005-11-08 19:26:34 -0500 (Tue, 08 Nov 2005) New Revision: 1536 Added: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/portlet/JBossLabsPortlet.java Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java trunk/forge/portal-extensions/forge-portal-attr/project.xml Log: Added JBossLabsPortlet to provide permision check for a portlet. Startet implementing it in Freezone http://jira.jboss.com/jira/browse/JBLAB-396 Added: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/portlet/JBossLabsPortlet.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/portlet/JBossLabsPortlet.java 2005-11-08 22:14:46 UTC (rev 1535) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/portlet/JBossLabsPortlet.java 2005-11-09 00:26:34 UTC (rev 1536) @@ -0,0 +1,37 @@ +package org.jboss.forge.common.portlet; + +import java.io.IOException; + +import javax.portlet.PortletException; +import javax.portlet.PortletSecurityException; + +import org.jboss.portlet.JBossPortlet; +import org.jboss.portlet.JBossRenderRequest; +import org.jboss.portlet.JBossRenderResponse; + +public abstract class JBossLabsPortlet extends JBossPortlet { + + private final static String errorMsg = "403 - not authorized<br />I'm sorry but you need to login to view this page."; + + protected abstract boolean checkPermision(JBossRenderRequest request, JBossRenderResponse response); + + protected abstract void labsDoView(JBossRenderRequest request, JBossRenderResponse response) throws PortletException, PortletSecurityException, IOException; + + @Override + protected final void doView(JBossRenderRequest request, JBossRenderResponse response) throws PortletException, PortletSecurityException, IOException { + if (checkPermision(request, response)) { + labsDoView(request, response); + } + else { + //show error message + showErrorMessage(response); + } + } + + + private void showErrorMessage(JBossRenderResponse response) throws IOException{ + response.setContentType("text/html"); + response.getWriter().write(errorMsg); + } + +} Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java =================================================================== --- trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-11-08 22:14:46 UTC (rev 1535) +++ trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-11-09 00:26:34 UTC (rev 1536) @@ -27,17 +27,18 @@ import javax.portlet.PortletSecurityException; import org.jboss.forge.common.ForgeHelper; +import org.jboss.forge.common.portlet.JBossLabsPortlet; import org.jboss.forge.common.projects.ProjectsHelper; import org.jboss.forge.common.projects.permissions.ActionRequestPermissionsChecker; import org.jboss.portal.core.CoreConstants; import org.jboss.portlet.JBossActionRequest; import org.jboss.portlet.JBossActionResponse; -import org.jboss.portlet.JBossPortlet; import org.jboss.portlet.JBossRenderRequest; import org.jboss.portlet.JBossRenderResponse; import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Node; import org.jboss.shotoku.aop.Inject; +import org.jboss.shotoku.aop.NodeInject; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; /** @@ -45,7 +46,7 @@ * * @author adamw */ -public class Freezone extends JBossPortlet { +public class Freezone extends JBossLabsPortlet { /** * <code>DEFAULT_PAGE</code> - Name of the page that is displayed if no * page is selected. @@ -59,12 +60,15 @@ @Inject private ContentManager cm; + @NodeInject ("/default/freezone/forcelogin.xml") + private Node configuration; + private void sendResponseNotFound(JBossRenderResponse response) throws IOException { response.setContentType("text/html"); response.getWriter().println("404 - Not found."); } - public void doView(JBossRenderRequest request, JBossRenderResponse response) + public void labsDoView(JBossRenderRequest request, JBossRenderResponse response) throws IOException { String requestedPath = request.getParameter(PATH_PARAM); @@ -170,6 +174,8 @@ cmsPath += DEFAULT_PAGE; } + System.out.println(cmsPath); + // Getting the node and its content type. If it the same as the // content type of the response, passing it for rendering. Otherwise, // sending bytes. @@ -187,4 +193,15 @@ response.sendRedirect("/" + ForgeHelper.FILE_ACCESS_DIR + "/" + cmsPath); } } + + @Override + protected boolean checkPermision(JBossRenderRequest request, JBossRenderResponse response) { + // TODO Auto-generated method stub + return true; + } + + @Override + public void init() throws PortletException { + //TODO read configuration file + } } Modified: trunk/forge/portal-extensions/forge-portal-attr/project.xml =================================================================== --- trunk/forge/portal-extensions/forge-portal-attr/project.xml 2005-11-08 22:14:46 UTC (rev 1535) +++ trunk/forge/portal-extensions/forge-portal-attr/project.xml 2005-11-09 00:26:34 UTC (rev 1536) @@ -36,8 +36,17 @@ <version>1.0</version> <jar>activation.jar</jar> </dependency> + + <dependency> + <groupId>jboss</groupId> + <artifactId>jboss-common</artifactId> + <version>1.0</version> + <jar>jboss-common.jar</jar> + </dependency> </dependencies> + + <build> <sourceDirectory>src/java</sourceDirectory> </build> |
From: <jbo...@li...> - 2005-11-08 22:14:56
|
Author: unibrew Date: 2005-11-08 17:14:46 -0500 (Tue, 08 Nov 2005) New Revision: 1535 Modified: trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java Log: [JBLAB-263] Import commented for download counter Modified: trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java 2005-11-08 22:00:44 UTC (rev 1534) +++ trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java 2005-11-08 22:14:46 UTC (rev 1535) @@ -38,10 +38,12 @@ import org.jboss.shotoku.Node; import org.jboss.shotoku.aop.Inject; import org.jboss.forge.common.ForgeHelper; -import org.jboss.forge.common.projects.DownloadCountersDescriptor; -import org.jboss.forge.common.projects.DownloadCountersWatcher; +/* TEMPORARY COMMENTED DOWNLOAD COUNTER PROJECT */ +//import org.jboss.forge.common.projects.DownloadCountersDescriptor; +//import org.jboss.forge.common.projects.DownloadCountersWatcher; + /** * A filter that enables to download files which are stored in a working copy of * a content repository. |
From: <jbo...@li...> - 2005-11-08 22:00:48
|
Author: unibrew Date: 2005-11-08 17:00:44 -0500 (Tue, 08 Nov 2005) New Revision: 1534 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectDescriptor.java Log: [JBLAB-263] Temporary disabling download counter. Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectDescriptor.java 2005-11-08 21:59:25 UTC (rev 1533) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectDescriptor.java 2005-11-08 22:00:44 UTC (rev 1534) @@ -120,6 +120,7 @@ } // Trying to create a downloads counter descriptor. + /* IMPLEMENTATION OF DOWNLOAD COUNTER TEMPORARY COMMENTED try { downloadCounter = new DownloadCounterDescriptor(isf, xht, portalName, getId()); } catch (XmlNotFoundException e1) { @@ -129,7 +130,7 @@ log.warn("Project "+getId()+", unable te parse download counter" + " descriptor: "+e); downloadCounter = null; - } + }*/ } /** |
From: <jbo...@li...> - 2005-11-08 21:59:28
|
Author: unibrew Date: 2005-11-08 16:59:25 -0500 (Tue, 08 Nov 2005) New Revision: 1533 Modified: trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java Log: [JBLAB-263] Temporary commented all download counter code Modified: trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java 2005-11-08 17:33:35 UTC (rev 1532) +++ trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java 2005-11-08 21:59:25 UTC (rev 1533) @@ -21,6 +21,7 @@ */ package org.jboss.forge.fileaccess; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -36,7 +37,11 @@ import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Node; import org.jboss.shotoku.aop.Inject; +import org.jboss.forge.common.ForgeHelper; +import org.jboss.forge.common.projects.DownloadCountersDescriptor; +import org.jboss.forge.common.projects.DownloadCountersWatcher; + /** * A filter that enables to download files which are stored in a working copy of * a content repository. @@ -120,11 +125,26 @@ // Checking if we can allow access to this resource. checkResource(requestedRes); + /* IMPLEMENTATION OF DOWNLOAD COUNTER TEMPORARY COMMENTED if (requestedRes.indexOf(DOWNLOADS_ACCESS)!=-1) { - // Sending the request to the DownloadCounter to increment + String portalName = resolvePortalName(requestedRes); + DownloadCountersDescriptor downloadCounters = (DownloadCountersDescriptor) ForgeHelper + .getForgeManagement().getFromCache(portalName, + DownloadCountersDescriptor.class.getName()); + + if (downloadCounters == null) + downloadCounters = (DownloadCountersDescriptor) ForgeHelper.getForgeManagement() + .addNodeWatcher(portalName, + DownloadCountersDescriptor.class.getName(), + new DownloadCountersWatcher(contentManager)); + + + // Sending the request link to the DownloadCounter to increment // counter for this link if it's one of the tracked links. - //DownloadCounter.increment(requestedRes,contentManager); - } + + downloadCounters.increment(requestedRes); + + } */ Node requestedNode = contentManager.getNode(requestedRes); String mimeType = requestedNode.getMimeType(); @@ -159,6 +179,15 @@ } } + /** + * Method used to resolve portal name to which the download link aims. + * @param link + * @return + */ + private static String resolvePortalName (String link) { + return link.split(File.separator)[0]; + } + public void destroy() { } |
From: <jbo...@li...> - 2005-11-08 17:33:42
|
Author: aron.gombas Date: 2005-11-08 12:33:35 -0500 (Tue, 08 Nov 2005) New Revision: 1532 Modified: trunk/labs/kosmos/conf-portlet/exo/web.xml Log: eXo-specific web.xml fixed Modified: trunk/labs/kosmos/conf-portlet/exo/web.xml =================================================================== --- trunk/labs/kosmos/conf-portlet/exo/web.xml 2005-11-08 17:21:03 UTC (rev 1531) +++ trunk/labs/kosmos/conf-portlet/exo/web.xml 2005-11-08 17:33:35 UTC (rev 1532) @@ -5,7 +5,7 @@ "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> - <display-name>Kosmos Portlet</display-name> + <display-name>kosmos-portlet</display-name><!-- required to be identical with the web-app name, by eXo --> <description>Kosmos is a portlet-based web application. It can run only inside a portlet container.</description> <!-- JSTL configuration --> @@ -30,6 +30,7 @@ </servlet-mapping> <!-- JSP configuration --> +<!-- <taglib> <taglib-uri>http://labs.jboss.com/projects/kosmos</taglib-uri> <taglib-location>/WEB-INF/tld/kosmos-taglib.tld</taglib-location> @@ -38,4 +39,5 @@ <taglib-uri>http://displaytag.sf.net/el</taglib-uri> <taglib-location>/WEB-INF/tld/displaytag-el-12.tld</taglib-location> </taglib> +--> </web-app> |
Author: wrzep Date: 2005-11-08 12:21:03 -0500 (Tue, 08 Nov 2005) New Revision: 1531 Added: branches/forge/interns/pawel/portal-extensions/binaries/maven-repo-addons/informa/ branches/forge/interns/pawel/portal-extensions/binaries/maven-repo-addons/informa/jars/ branches/forge/interns/pawel/portal-extensions/binaries/maven-repo-addons/informa/jars/informa.jar branches/forge/interns/pawel/portal-extensions/binaries/maven-repo-addons/jdom/ branches/forge/interns/pawel/portal-extensions/binaries/maven-repo-addons/jdom/jdom.jar branches/forge/interns/pawel/portal-extensions/forge-podcast/ branches/forge/interns/pawel/portal-extensions/forge-podcast/maven.xml branches/forge/interns/pawel/portal-extensions/forge-podcast/project.properties branches/forge/interns/pawel/portal-extensions/forge-podcast/project.xml branches/forge/interns/pawel/portal-extensions/forge-podcast/src/ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastDescriptor.java branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastNodeWatcher.java branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastPortlet.java branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastTools.java branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/jboss-app.xml branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/jboss-portlet.xml branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/jboss-service.xml branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/portlet-instances.xml branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/portlet.xml branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/tld/ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/tld/forge.tld branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/tld/portlet.tld branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/web.xml Modified: branches/forge/interns/pawel/portal-extensions/forge-ear/src/META-INF/application.xml branches/forge/interns/pawel/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml Log: Podcast portlet. Pawel Added: branches/forge/interns/pawel/portal-extensions/binaries/maven-repo-addons/informa/jars/informa.jar =================================================================== (Binary files differ) Property changes on: branches/forge/interns/pawel/portal-extensions/binaries/maven-repo-addons/informa/jars/informa.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/forge/interns/pawel/portal-extensions/binaries/maven-repo-addons/jdom/jdom.jar =================================================================== (Binary files differ) Property changes on: branches/forge/interns/pawel/portal-extensions/binaries/maven-repo-addons/jdom/jdom.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: branches/forge/interns/pawel/portal-extensions/forge-ear/src/META-INF/application.xml =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-ear/src/META-INF/application.xml 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-ear/src/META-INF/application.xml 2005-11-08 17:21:03 UTC (rev 1531) @@ -82,5 +82,10 @@ <web> <web-uri>forgeLogin.war</web-uri> </web> - </module> + </module> + <module> + <web> + <web-uri>forge-podcast.war</web-uri> + </web> + </module> </application> Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/maven.xml =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/maven.xml 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/maven.xml 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,24 @@ +<!-- + JBoss, the OpenSource J2EE webOS + Distributable under LGPL license. + See terms of license at gnu.org. + --> +<project xmlns:j="jelly:core" xmlns:ant="jelly:ant" xmlns:u="jelly:util"> + <!-- Default war-project goals --> + + <goal name="all"> + <attainGoal name="prj-all" /> + </goal> + + <goal name="build"> + <attainGoal name="prj-war-build" /> + </goal> + + <goal name="deploy"> + <attainGoal name="prj-war-deploy" /> + </goal> + + <goal name="clean"> + <attainGoal name="prj-clean" /> + </goal> +</project> Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/project.properties =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/project.properties 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/project.properties 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,3 @@ +maven.repo.remote=http://repository.atlassian.com,http://www.ibiblio.org/maven,http://dist.codehaus.org/ +maven.junit.fork=yes +maven.war.src=${basedir}/src/web Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/project.xml =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/project.xml 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/project.xml 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,63 @@ +<?xml version='1.0' encoding='ISO-8859-1'?> +<!-- + JBoss, the OpenSource J2EE webOS + Distributable under LGPL license. + See terms of license at gnu.org. + --> +<project> + <pomVersion>3</pomVersion> + <extend>../common.xml</extend> + <id>forge-podcast</id> + <name>Podcast portlet</name> + <currentVersion>1.0</currentVersion> + <organization> + <name>Pawel Wrzeszcz</name> + <url></url> + </organization> + <description></description> + + <dependencies> + <dependency> + <groupId>tmate</groupId> + <artifactId>javasvn</artifactId> + <version>1.0</version> + <jar>javasvn.jar</jar> + </dependency> + + <dependency> + <groupId>tmate</groupId> + <artifactId>jsch</artifactId> + <version>1.0</version> + <jar>jsch.jar</jar> + </dependency> + + <dependency> + <groupId>jboss-forge</groupId> + <artifactId>forge-common</artifactId> + <version>1.0</version> + </dependency> + + <dependency> + <groupId>aslibs</groupId> + <artifactId>javax.servlet</artifactId> + <version>1.0</version> + <jar>javax.servlet.jar</jar> + </dependency> + <dependency> + <groupId>informa</groupId> + <artifactId>informa</artifactId> + <version>0.6.5</version> + <jar>informa.jar</jar> + <properties> + <war.bundle>true</war.bundle> + </properties> + </dependency> + <dependency> + <id>jdom</id> + <version>1.0</version> + <properties> + <war.bundle>true</war.bundle> + </properties> + </dependency> + </dependencies> +</project> Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,278 @@ +/* + * 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.podcast; + +import java.util.Iterator; +import java.util.Map; +import java.util.HashMap; +import java.util.Set; +import java.util.HashSet; +import java.util.SimpleTimeZone; + +import java.util.Date; +import java.text.DateFormat; +import java.util.SimpleTimeZone; + +import java.net.URL; + +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.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; + +import de.nava.informa.core.ChannelIF; +import de.nava.informa.impl.basic.ChannelBuilder; +import de.nava.informa.parsers.FeedParser; +import de.nava.informa.utils.ItemComparator; +import de.nava.informa.core.ItemIF; +import de.nava.informa.core.ItemEnclosureIF; +import de.nava.informa.core.ImageIF; + +/** + * A class holding the podcast feeds. + * + * @author Pawel Wrzeszcz + */ +public class Podcast extends AbstractDescriptor { + + /** + * <code>PODCAST_ELEMENT</code> - root tag in the xml file defining the list of watched feeds + */ + public static final String PODCAST_ELEMENT = "podcast"; + + /** + * <code>podcasts_number</code> - Defines maximum number of podcasts to display. + */ + public int podcastsNumber; + + private static int DEFAULT_PODCASTS_NUMBER = 50; + + /* Other tags in the xml file */ + private static final String FEED_ELEMENT = "feed"; + private static final String ID_ELEMENT = "id"; + private static final String URL_ELEMENT = "url"; + + private static final int BYTES_IN_MB = (1024*1024); + + private String portalName; + + /** + * <code>allItemsArr</code> - Array if ItemIF objects, containing items from all feeds. + */ + private Object[] allItemsArr; + + Podcast(String portalName, Node root) { + this.portalName = portalName; + + podcastsNumber = getPodcastsNumber(root); + + // Get the feeds nodes + HashSet<String> podcastNodes = new HashSet<String>(); + podcastNodes.add(FEED_ELEMENT); + + Set<Node> feedsNodes; + feedsNodes = getChildNodesSet(root, podcastNodes); + + // Parse each node to get the feed url + HashSet<String> propertiesTags = new HashSet<String>(); + propertiesTags.add(ID_ELEMENT); + propertiesTags.add(URL_ELEMENT); + + HashSet<Map<String,Node>> nodes = new HashSet<Map<String,Node>>(); + // Each Map in this Set describes one feed + // (contains it's id and url Nodes) + Map<String,Node> nodeProperties; + + for (Iterator iter = feedsNodes.iterator(); iter.hasNext();) { + Node n = (Node) iter.next(); + nodeProperties = getChildNodesMap(n, propertiesTags); + nodes.add(nodeProperties); + } + + // Parse and sort the items + allItemsArr = getAllItems(nodes).toArray(); + java.util.Arrays.sort((Object[]) allItemsArr, new ItemComparator(true)); + } + + /** + * Fills the given context with podcast information. + * + * @param context Context to fill. + */ + public void fillContext(DelegateContext context) { + + int iterations = Math.min(allItemsArr.length, podcastsNumber); + + for (int i = 0; i < iterations; i++) { + ItemIF item = (ItemIF) allItemsArr[i]; + DelegateContext nodeContext = new DelegateContext(); + + nodeContext.put("no", i+1); + nodeContext.put("title", item.getTitle()); + nodeContext.put("description", item.getDescription()); + + Date date = item.getDate(); + if (date != null) { + DateFormat dateFormat = DateFormat.getInstance(); + dateFormat.setTimeZone(new SimpleTimeZone(0, "GMT")); + String dateString = dateFormat.format(date) + " GMT"; + nodeContext.put("date", dateString); + } + + URL link = item.getLink(); + if (link != null) { + nodeContext.put("link", link.toString()); + } + + ItemEnclosureIF enclosure = item.getEnclosure(); + if (enclosure != null) { + DelegateContext enclosureContext = nodeContext.next("enclosure-link"); + + nodeContext.put("enclosure-type", enclosure.getType()); + nodeContext.put("enclosure-size", Math.round(enclosure.getLength() / BYTES_IN_MB)); + + URL enclosureLocation = enclosure.getLocation(); + if (enclosureLocation != null) { + nodeContext.put("enclosure-link", enclosureLocation.toString()); + } + } + + ChannelIF channel = item.getChannel(); + + nodeContext.put("channel-title", channel.getTitle()); + URL channelLocation = channel.getLocation(); + if (channelLocation != null) { + nodeContext.put("channel-link", channelLocation.toString()); + } + + ImageIF channelImage = channel.getImage(); + if ((channelImage != null) && (channelImage.getLocation() != null)) { + nodeContext.put("channel-image", channelImage.getLocation().toString()); + } + + context.append("podcast", nodeContext); + } + } + + + /** + * For the given Node, computes Set of it's child Nodes. + * Only child Nodes with names included in <code>nodesNames</code> Set + * appear in computed Set. + * + * @param root + * @param nodesNames + * @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>(); + NodeList list = root.getChildNodes(); + + for (int i = 0; i < list.getLength(); i++) { + Node n = list.item(i); + if ((n.getNodeType() == Node.ELEMENT_NODE) + && (nodesNames.contains(n.getNodeName()))) { + ret.add(n); + } + } + + return ret; + } + + /** + * 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>(); + NodeList list = root.getChildNodes(); + + for (int i = 0; i < list.getLength(); i++) { + Node n = list.item(i); + if ((n.getNodeType() == Node.ELEMENT_NODE) + && (nodesNames.contains(n.getNodeName()))) { + ret.put(n.getNodeName(),n); + } + } + + return ret; + } + + /** + * For the given Set of feeds descripions, computes Set of all items from these feeds. + * + * @param nodes Set of Maps describing the feeds. + * For each feed, it's Map binds "id" and "url" with appropiate Nodes. + * + * @return Set of all items from feeds described in the given Set. + */ + private Set<ItemIF> getAllItems(Set<Map<String,Node>> nodes) { + HashSet<ItemIF> ret = new HashSet<ItemIF>(); + + for (Iterator iter = nodes.iterator(); iter.hasNext();) { + try { + Map nodeProperties = (Map<String,Node>) iter.next(); + + Node urlNode = (Node) nodeProperties.get(URL_ELEMENT); + URL url = new URL(XmlTools.unmarshallText(urlNode)); + + ChannelIF channel = FeedParser.parse(new ChannelBuilder(), url); + ret.addAll(channel.getItems()); + + } catch (Exception e) { + e.printStackTrace(); + } + } + return ret; + } + + /** + * Parses attribute defining maximum number of podcasts to display. + * If it is not defined in the xml file, returns default value (DEFAULT_PODCASTS_NUMBER). + * + * @param root Root Node of the xml file. + * @return + */ + private int getPodcastsNumber(Node root) { + if (!root.hasAttributes()) { + return DEFAULT_PODCASTS_NUMBER; + } + NamedNodeMap m = root.getAttributes(); + String intString = XmlTools.unmarshallText(m.item(0)); + return Integer.parseInt(intString); + } + +} Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastDescriptor.java =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastDescriptor.java 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastDescriptor.java 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,90 @@ +/* + * 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.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 + * A class which handles xml parsing and accessing parsed feeds information. + */ +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, ContentManager cm) { + try { + feeds = new HashSet<String>(); + + DOMParser parser = new DOMParser(); + parser.parse(new InputSource(cm.getNode(PodcastTools + .getXmlCmPath(portalName)).getContentInputStream())); + + Node root = parser.getDocument().getDocumentElement(); + + + if ((root.getNodeType() == Node.ELEMENT_NODE) + && (root.getNodeName().equals(Podcast.PODCAST_ELEMENT))) { + podcast = new Podcast(portalName, root); + } + + fillContext(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void fillContext() { + context = new DelegateContext(); + podcast.fillContext(context); + } + + public DelegateContext getContext(JBossRenderRequest request) { + + return context; + } +} Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastNodeWatcher.java =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastNodeWatcher.java 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastNodeWatcher.java 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,61 @@ +/* + * 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.podcast; + +import org.jboss.forge.common.service.NodeWatcher; +import org.jboss.forge.common.service.ResourceWatcher; + +import org.jboss.shotoku.ContentManager; + +/** +* @author Pawel Wrzeszcz +*/ + +public class PodcastNodeWatcher implements NodeWatcher { + private ResourceWatcher rw; + private ContentManager cm; + + public PodcastNodeWatcher(ContentManager cm) { + this.cm = cm; + } + + private PodcastDescriptor getDesc(String portalName) { + PodcastDescriptor desc = new PodcastDescriptor(portalName, cm); + + rw = new ResourceWatcher(cm); + rw.watchResource(PodcastTools.getXmlCmPath(portalName)); + + return desc; + } + + public Object init(String portalName) { + return getDesc(portalName); + } + + public Object nodeUpdate(String portalName, Object currentValue) { + if ((currentValue == null) || (rw.checkResources())) + return getDesc(portalName); + else + return null; + } +} Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastPortlet.java =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastPortlet.java 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastPortlet.java 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,67 @@ + /* + * 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.podcast; + +import java.io.IOException; + +import javax.portlet.PortletException; +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; + +import org.jboss.portlet.JBossPortlet; +import org.jboss.portlet.JBossRenderRequest; +import org.jboss.portlet.JBossRenderResponse; + +/** + * Podcast portlet. + * @author Pawel Wrzeszcz + */ +public class PodcastPortlet extends JBossPortlet { + + public void doView(JBossRenderRequest request, JBossRenderResponse response) + throws IOException, PortletException { + response.setContentType("text/html"); + + String portalName = ForgeHelper.getPortalName(request); + + // Getting the podcast context + DelegateContext context = PodcastTools.getDesc(portalName).getContext(request); + + // Displaying the JSP + request.setAttribute(PortalJsp.CTX_REQUEST, context); + + PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher( + ForgeHelper.createRepoAccessPath(portalName, PodcastTools + .getJspCmPath())); + rd.include(request, response); + + } +} Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastTools.java =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastTools.java 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/PodcastTools.java 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,58 @@ +package org.jboss.forge.podcast; + +import org.jboss.forge.common.ForgeHelper; + +import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.aop.Inject; + +/** + * Common constants and functions. + * @author Pawel Wrzeszcz + */ +public class PodcastTools { + + /** + * <code>PODCAST_XML<code> - file defining the list of watched feeds + */ + private final static String PODCAST_XML = "podcast.xml"; + + /** + * <code>PODCAST_DIR</code> - directory in which file <code>PODCAST_XML<code> is stored. + */ + private final static String PODCAST_DIR = "podcast"; + + private final static String PODCAST_JSP = "podcast.jsp"; + private final static String PODCAST_JSP_DIR = "podcast"; + + @Inject + private static ContentManager cm; + + /** + * Path to the xml file defining list of watched feeds. + */ + public static String getXmlCmPath(String portalName) { + return portalName + "/" + PODCAST_DIR + "/" + PODCAST_XML; + } + + /** + * Path to the file displaying the podcast feeds. + */ + public static String getJspCmPath() { + return PODCAST_JSP_DIR + "/" + PODCAST_JSP; + } + + public static synchronized PodcastDescriptor getDesc(final String portalName) { + String cacheKey = PodcastDescriptor.class.getName(); + + PodcastDescriptor desc = (PodcastDescriptor) ForgeHelper + .getForgeManagement().getFromCache(portalName, cacheKey); + + if (desc == null) + desc = (PodcastDescriptor) ForgeHelper.getForgeManagement() + .addNodeWatcher(portalName, + cacheKey, + new PodcastNodeWatcher(cm)); + + return desc; + } +} Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/jboss-app.xml =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/jboss-app.xml 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/jboss-app.xml 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,3 @@ +<jboss-app> + <app-name>podcast</app-name> +</jboss-app> Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/jboss-portlet.xml =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/jboss-portlet.xml 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/jboss-portlet.xml 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,6 @@ +<portlet-app> + <portlet> + <portlet-name>PodcastPortlet</portlet-name> + <security></security> + </portlet> +</portlet-app> \ No newline at end of file Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/jboss-service.xml =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/jboss-service.xml 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/jboss-service.xml 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1 @@ +<server></server> \ No newline at end of file Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/portlet-instances.xml =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/portlet-instances.xml 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/portlet-instances.xml 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,7 @@ +<?xml version="1.0" standalone="yes"?> +<instances> + <instance> + <instance-name>PodcastPortletInstance</instance-name> + <component-ref>PodcastPortlet</component-ref> + </instance> +</instances> Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/portlet.xml =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/portlet.xml 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/portlet.xml 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" + version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"> + <portlet> + <description>Podcast Portlet</description> + <portlet-name>PodcastPortlet</portlet-name> + <display-name>Feeds</display-name> + <portlet-class>org.jboss.forge.podcast.PodcastPortlet</portlet-class> + <supports> + <mime-type>text/html</mime-type> + <portlet-mode>VIEW</portlet-mode> + </supports> + <portlet-info> + <title>Podcast</title> + </portlet-info> + </portlet> + </portlet-app> Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/tld/forge.tld =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/tld/forge.tld 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/tld/forge.tld 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,139 @@ +<taglib xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd" + version="2.0"> + <!-- + JBoss, the OpenSource J2EE webOS + Distributable under LGPL license. + See terms of license at gnu.org. + --> + <tlib-version>1.1</tlib-version> + <jsp-version>2.0</jsp-version> + <shortname>forge</shortname> + <info>Forge tags</info> + + <tag> + <name>pageURL</name> + <tagclass>org.jboss.forge.common.taglib.PageURLTag</tagclass> + <attribute> + <name>page</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>form</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>param</name> + <tagclass>org.jboss.forge.common.taglib.ParamTag</tagclass> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>wikiURL</name> + <tagclass>org.jboss.forge.common.taglib.WikiURLTag</tagclass> + <attribute> + <name>page</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>freezoneURL</name> + <tagclass>org.jboss.forge.common.taglib.FreezoneURLTag</tagclass> + <attribute> + <name>page</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>projectURL</name> + <tagclass>org.jboss.forge.common.taglib.ProjectURLTag</tagclass> + <attribute> + <name>project</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>page</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>form</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>categoryURL</name> + <tagclass>org.jboss.forge.common.taglib.CategoryURLTag</tagclass> + <attribute> + <name>category</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>form</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>selectedProject</name> + <tagclass>org.jboss.forge.common.taglib.SelectedProjectTag</tagclass> + </tag> + + <tag> + <name>imagePath</name> + <tagclass>org.jboss.forge.common.taglib.ImagePathTag</tagclass> + <attribute> + <name>src</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>project</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>attrValue</name> + <tagclass>org.jboss.forge.common.taglib.AttrValueTag</tagclass> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>attrIf</name> + <tagclass>org.jboss.forge.common.taglib.AttrIfTag</tagclass> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> +</taglib> Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/tld/portlet.tld =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/tld/portlet.tld 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/tld/portlet.tld 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,77 @@ +<taglib xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd" + version="2.0"> + <tlib-version>1.1</tlib-version> + <jsp-version>2.0</jsp-version> + <shortname>JBoss Portal tags</shortname> + <info>JBoss Portal tags</info> + + <function> + <name>i18n</name> + <function-class>org.jboss.portal.core.servlet.jsp.taglib.PortalLib</function-class> + <function-signature>java.lang.String getMessage(java.lang.String)</function-signature> + </function> + + <function> + <name>out</name> + <function-class>org.jboss.portal.core.servlet.jsp.taglib.PortalLib</function-class> + <function-signature>java.lang.String out(java.lang.String)</function-signature> + </function> + + <function> + <name>i18nout</name> + <function-class>org.jboss.portal.core.servlet.jsp.taglib.PortalLib</function-class> + <function-signature>java.lang.String i18nOut(java.lang.String)</function-signature> + </function> + + <tag> + <name>if</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.IfTag</tagclass> + <attribute> + <name>ctx</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>iterate</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.IterateTag</tagclass> + <attribute> + <name>ctx</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>include</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.IncludeTag</tagclass> + <attribute> + <name>page</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>error</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.ErrorTag</tagclass> + <attribute> + <name>key</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <name>errors</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.ErrorsTag</tagclass> + </tag> + + <tag> + <name>success</name> + <tagclass>org.jboss.portal.core.servlet.jsp.taglib.SuccessTag</tagclass> + </tag> +</taglib> Added: branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/web.xml =================================================================== --- branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/web.xml 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/forge-podcast/src/web/WEB-INF/web.xml 2005-11-08 17:21:03 UTC (rev 1531) @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<!DOCTYPE web-app PUBLIC + "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" + "http://java.sun.com/dtd/web-app_2_3.dtd"> +<web-app> + <filter> + <filter-name>filesFromRepoFilter</filter-name> + <filter-class>org.jboss.forge.common.FilesFromRepoFilter</filter-class> + </filter> + + <filter-mapping> + <filter-name>filesFromRepoFilter</filter-name> + <url-pattern>/repo-access/*</url-pattern> + <dispatcher>INCLUDE</dispatcher> + </filter-mapping> +</web-app> \ No newline at end of file Modified: branches/forge/interns/pawel/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml =================================================================== --- branches/forge/interns/pawel/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml 2005-11-08 17:15:38 UTC (rev 1530) +++ branches/forge/interns/pawel/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml 2005-11-08 17:21:03 UTC (rev 1531) @@ -74,33 +74,33 @@ <height>2</height> <window-state>normal</window-state> </window> - </page> - - <!-- login page --> - <page> - <page-name>login</page-name> - <window> - <window-name>LoginWindow</window-name> - <instance-ref>forgeLogin.Login.LoginInstance</instance-ref> - <default>true</default> - <region>center</region> - <height>0</height> - </window> - <window> - <window-name>NavigationPortletWindowDefaultLogin</window-name> - <instance-ref>navigation.NavigationPortlet.NavigationPortletInstance</instance-ref> - <region>left</region> - <height>0</height> - <window-state>normal</window-state> - </window> - <window> - <window-name>AdsPortletWindowDefaultLogin</window-name> - <instance-ref>ads.AdsPortlet.AdsPortletInstance</instance-ref> - <region>left</region> - <height>2</height> - <window-state>normal</window-state> - </window> </page> + + <!-- login page --> + <page> + <page-name>login</page-name> + <window> + <window-name>LoginWindow</window-name> + <instance-ref>forgeLogin.Login.LoginInstance</instance-ref> + <default>true</default> + <region>center</region> + <height>0</height> + </window> + <window> + <window-name>NavigationPortletWindowDefaultLogin</window-name> + <instance-ref>navigation.NavigationPortlet.NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + <window-state>normal</window-state> + </window> + <window> + <window-name>AdsPortletWindowDefaultLogin</window-name> + <instance-ref>ads.AdsPortlet.AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + <window-state>normal</window-state> + </window> + </page> <page> <page-name>softwaremap</page-name> @@ -383,7 +383,31 @@ <height>0</height> </window> - </page> - + </page> + + <page> + <page-name>podcast</page-name> + <window> + <window-name>NavigationPortletWindowDefaultPodcast</window-name> + <instance-ref>navigation.NavigationPortlet.NavigationPortletInstance</instance-ref> + <region>left</region> + <height>0</height> + <window-state>normal</window-state> + </window> + <window> + <window-name>AdsPortletWindowDefaultPodcast</window-name> + <instance-ref>ads.AdsPortlet.AdsPortletInstance</instance-ref> + <region>left</region> + <height>2</height> + <window-state>normal</window-state> + </window> + <window> + <window-name>PodcastPortletWindowDefaultPodcast</window-name> + <instance-ref>podcast.PodcastPortlet.PodcastPortletInstance</instance-ref> + <region>center</region> + <height>0</height> + </window> + </page> + </pages> </portal> |
From: <jbo...@li...> - 2005-11-08 08:37:43
|
Author: aron.gombas Date: 2005-11-08 03:37:34 -0500 (Tue, 08 Nov 2005) New Revision: 1529 Modified: trunk/labs/kosmos/web-portlet/WEB-INF/portlet.xml Log: /testdata path fixed Modified: trunk/labs/kosmos/web-portlet/WEB-INF/portlet.xml =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/portlet.xml 2005-11-08 08:37:15 UTC (rev 1528) +++ trunk/labs/kosmos/web-portlet/WEB-INF/portlet.xml 2005-11-08 08:37:34 UTC (rev 1529) @@ -16,22 +16,22 @@ <init-param> <name>monitored.dirs</name><!-- replace these with your local CruiseControl log dir paths --> <value> - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/ais, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/cargo-m2-trunk, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/commons-math, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/frifinans, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/gridportlets, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/gridsphere, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/gvlam, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/jboss-3.2, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/jboss-remoting, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/log4rss, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/mobicents-dailytckrun, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/mock-apis-trunk, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/openpacs, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/scarab-mysql, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/scarab-pgsql, - /!Usr/Aron/Own/midori/projects/kosmos/testdata/cc-log/weta-dfs + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/ais, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/cargo-m2-trunk, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/commons-math, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/frifinans, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/gridportlets, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/gridsphere, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/gvlam, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/jboss-3.2, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/jboss-remoting, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/log4rss, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/mobicents-dailytckrun, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/mock-apis-trunk, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/openpacs, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/scarab-mysql, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/scarab-pgsql, + /!Usr/Aron/Own/midori/projects/kosmos/src-repo/testdata/cc-log/weta-dfs </value> </init-param> <supports> |