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...> - 2006-06-09 17:05:23
|
Author: dam...@jb... Date: 2006-06-09 13:05:18 -0400 (Fri, 09 Jun 2006) New Revision: 4698 Removed: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/ Log: Removing data dir for screwed up merge. |
Author: dam...@jb... Date: 2006-06-09 13:03:21 -0400 (Fri, 09 Jun 2006) New Revision: 4697 Added: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/TagFeedTagHandler.java labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/Constants.java labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/FeedsTools.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/IdEntity.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/Constants.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/FeedType.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/TagTools.java labs/shotoku/branches/qa/shotoku-tags/src/web/ labs/shotoku/branches/qa/shotoku-tags/src/web/WEB-INF/ labs/shotoku/branches/qa/shotoku-tags/src/web/WEB-INF/web.xml Removed: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/Constants.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagList.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagListImpl.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagTools.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/Constants.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/FeedType.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/TagTools.java labs/shotoku/branches/qa/shotoku-tags/src/web/WEB-INF/ labs/shotoku/branches/qa/shotoku-tags/src/web/WEB-INF/web.xml Modified: labs/shotoku/branches/qa/project.properties labs/shotoku/branches/qa/shotoku-feeds/project.xml labs/shotoku/branches/qa/shotoku-feeds/shotoku-feeds.iml labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedFactory.java labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsDescriptor.java labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsServlet.java labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandler.java labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandlerManager.java labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/RemoteFeedTagHandler.java labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/ShotokuFeedTagHandler.java labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/MultiValueVariableResolver.java labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/VariableResolverManager.java labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/XmlNodeTypeVariableResolver.java labs/shotoku/branches/qa/shotoku-tags/src/etc/META-INF/persistence.xml labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/AbstractTag.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/Tag.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/WebsiteTag.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java Log: MERGED: -r 4653:4696 https://svn.labs.jboss.com/labs/shotoku/trunk into qa EXCEPT: shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java. Couldn't due to svn bug. Hand merging in next rev. Modified: labs/shotoku/branches/qa/project.properties =================================================================== --- labs/shotoku/branches/qa/project.properties 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/project.properties 2006-06-09 17:03:21 UTC (rev 4697) @@ -5,7 +5,7 @@ shotoku.sar.dir=shotoku.sar shotoku.subprojects.cms=base,files,jcr,svn -shotoku.subprojects=${shotoku.subprojects.cms},aop,test,web,admin,feeds,portal,file-access,tags +shotoku.subprojects=${shotoku.subprojects.cms},aop,test,web,admin,tags,feeds,portal,file-access maven.final.name=${pom.artifactId} @@ -33,3 +33,4 @@ maven.jar.shotoku-base=${shotoku.root.dir}shotoku-base/target/shotoku-base.jar maven.jar.shotoku-svn=${shotoku.root.dir}shotoku-svn/target/shotoku-svn.jar maven.jar.shotoku-aop=${shotoku.root.dir}shotoku-aop/target/shotoku-aop.jar +maven.jar.shotoku-tags=${shotoku.root.dir}shotoku-tags/target/shotoku-tags.jar Modified: labs/shotoku/branches/qa/shotoku-feeds/project.xml =================================================================== --- labs/shotoku/branches/qa/shotoku-feeds/project.xml 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-feeds/project.xml 2006-06-09 17:03:21 UTC (rev 4697) @@ -25,6 +25,12 @@ <dependency> <groupId>shotoku</groupId> + <artifactId>shotoku-tags</artifactId> + <jar>shotoku-tags.jar</jar> + </dependency> + + <dependency> + <groupId>shotoku</groupId> <artifactId>shotoku-aop</artifactId> <jar>shotoku-aop.jar</jar> </dependency> Modified: labs/shotoku/branches/qa/shotoku-feeds/shotoku-feeds.iml =================================================================== --- labs/shotoku/branches/qa/shotoku-feeds/shotoku-feeds.iml 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-feeds/shotoku-feeds.iml 2006-06-09 17:03:21 UTC (rev 4697) @@ -17,6 +17,7 @@ <orderEntry type="library" name="commons" level="application" /> <orderEntry type="library" name="velocity" level="application" /> <orderEntry type="library" name="junit" level="application" /> + <orderEntry type="module" module-name="shotoku-tags" /> <orderEntryProperties /> </component> </module> Deleted: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/Constants.java =================================================================== --- labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/Constants.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/Constants.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,56 +0,0 @@ -package org.jboss.shotoku.feeds; - -/** - * @author Adam Warski (ad...@as...) - */ -public class Constants { - /** - * Node with names ending with this string are parsed and - * feed definitons are read from them. - */ - public final static String NODE_ENDING = "-feeds.xml"; - - /* - * Tag names. - */ - public final static String REM_FEED_TAG = "remote-feed"; - public final static String AGG_FEED_TAG = "aggregated-feed"; - public final static String SHO_FEED_TAG = "shotoku-feed"; - - /* - * Property name, under which content manager id and name of the - * directory which contains the configuration file can be found. - */ - public final static String CONFIGDIR = "shotoku.internal.feeds.configdir"; - public final static String CONFIGID = "shotoku.internal.feeds.configcmid"; - - /* - * Property name suffixes, under which content manager id and name - * of the directory which contains the feed files can be found. - */ - public final static String FEEDDIR = ".xml.directory"; - public final static String FEEDID = ".xml.cmid"; - - /** - * Property name suffix, under which information about available - * variables can be found. - */ - public final static String ALL_VARS = ".variables"; - /** - * Property name middle, under which informatin about a concerete - * variable can be found (should be prepended with an id and followed - * by a property name). - */ - public final static String ONE_VAR = ".variable."; - - /** - * Variable, for which feed type will be substituted. - */ - public final static String TYPE_VARIABLE = "${type}"; - - /* - * Xml node attributes denoting a feed name and display name. - */ - public static final String NAME_ATTR = "name"; - public static final String DISP_NAME_ATTR = "display-name"; -} Modified: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedFactory.java =================================================================== --- labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedFactory.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedFactory.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -21,10 +21,8 @@ */ package org.jboss.shotoku.feeds; -import org.jboss.shotoku.feeds.data.AtomFeed; -import org.jboss.shotoku.feeds.data.Feed; -import org.jboss.shotoku.feeds.data.RdfFeed; -import org.jboss.shotoku.feeds.data.Rss2Feed; +import org.jboss.shotoku.feeds.data.*; +import org.apache.velocity.VelocityContext; import java.io.File; import java.util.HashMap; @@ -36,50 +34,63 @@ * @author adamw */ public class FeedFactory { - /** - * <code>feedClasses</code> - map feed type -> feed class. - */ - private static Map<String, Class> feedClasses; - private static final Random random; - - static { - feedClasses = new HashMap<String, Class>(); - feedClasses.put("rss2", Rss2Feed.class); - feedClasses.put("atom", AtomFeed.class); - feedClasses.put("rdf", RdfFeed.class); - - random = new Random(); - } - - /** - * Creates a new instance of a feed implementation of the given type. - * @param type Type of feed to create. - * @return A new instance of a feed of the given type. - */ - public static Feed getNewFeed(String name, String displayName, String type) { - Class feedClass = feedClasses.get(type); - if (feedClass == null) return null; - - int nextInt; - synchronized(random) { - nextInt = random.nextInt(); - } - - try { - File file = File.createTempFile("shotoku-feeds" + nextInt, type); - return (Feed) feedClass.getConstructor( + /** + * Map feed type -> feed class. + */ + private static Map<String, Class> feedClasses; + private static Map<String, Class> specialFeedClasses; + private static final Random random; + + static { + feedClasses = new HashMap<String, Class>(); + feedClasses.put("rss2", Rss2Feed.class); + feedClasses.put("atom", AtomFeed.class); + feedClasses.put("rdf", RdfFeed.class); + + specialFeedClasses = new HashMap<String, Class>(); + specialFeedClasses.put("rss2", Rss2TagFeed.class); + + random = new Random(); + } + + /** + * Creates a new instance of a normal feed implementation of the given type. + * @param type Type of feed to create. + * @return A new instance of a feed of the given type. + */ + public static NormalFeed getNewNormalFeed(String name, String displayName, String type) { + Class feedClass = feedClasses.get(type); + if (feedClass == null) return null; + + int nextInt; + synchronized(random) { + nextInt = random.nextInt(); + } + + try { + File file = File.createTempFile("shotoku-feeds" + nextInt, type); + return (NormalFeed) feedClass.getConstructor( String.class, String.class, String.class, File.class).newInstance( - name, displayName, type, file); - } catch (Exception e) { - return null; - } - } - - /** - * Gets all feed types that have been defined. - * @return An array of defined feed types. - */ - public static String[] getAllFeedTypes() { - return feedClasses.keySet().toArray(new String[0]); - } + name, displayName, type, file); + } catch (Exception e) { + return null; + } + } + + /** + * Creates a new instance of a special feed implementation of the given type. + * @param type Type of feed to create. + * @return A new instance of a feed of the given type. + */ + public static Class getNewSpecialFeedClass(String type) { + return specialFeedClasses.get(type); + } + + /** + * Gets all feed types that have been defined. + * @return An array of defined feed types. + */ + public static String[] getAllFeedTypes() { + return feedClasses.keySet().toArray(new String[0]); + } } Modified: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsDescriptor.java =================================================================== --- labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsDescriptor.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsDescriptor.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -24,8 +24,6 @@ import java.io.IOException; import java.util.HashMap; import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; import java.util.Map; import java.util.Properties; import java.util.Set; @@ -33,10 +31,13 @@ import org.apache.xerces.parsers.DOMParser; import org.apache.log4j.Logger; import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.feeds.data.NormalFeed; +import org.jboss.shotoku.feeds.data.SpecialFeed; import org.jboss.shotoku.feeds.data.Feed; import org.jboss.shotoku.feeds.variables.VariableResolverManager; import org.jboss.shotoku.feeds.tag.FeedTagHandler; import org.jboss.shotoku.feeds.tag.FeedTagHandlerManager; +import org.jboss.shotoku.feeds.tools.Constants; import org.jboss.shotoku.tools.Pair; import org.jboss.shotoku.tools.Tools; import org.jboss.shotoku.aop.CacheItem; @@ -68,13 +69,12 @@ /** * Ready feeds: feed name -> (feed type -> feed). */ - private Map<String, Map<String, Feed>> feeds; + private Map<String, Map<String, NormalFeed>> feeds; /** - * Feed group display name -> set of feed - * names. + * Special feeds: feed name prefix -> (feed type -> feed). */ - private Map<String, Set<String>> feedGroups; + private Map<String, Map<String, SpecialFeed>> specialFeeds; private VariableResolverManager vrm; @@ -113,8 +113,8 @@ feedTagHandlers = new HashMap<String, Map<String, FeedTagHandler>>(); // Creating the maps that will hold the feeds. - feeds = new HashMap<String, Map<String, Feed>>(); - feedGroups = new LinkedHashMap<String, Set<String>>(); + feeds = new HashMap<String, Map<String, NormalFeed>>(); + specialFeeds = new HashMap<String, Map<String, SpecialFeed>>(); // Looking for file containing feed definitons and filling the maps. for (org.jboss.shotoku.Node feedNode : @@ -136,8 +136,6 @@ // Trying to generate any feed found in the feed tag handler map. generateFeed(feedTagHandlers.keySet().iterator().next()); } - - // TODO populate the groups } private void addFeedDefinitions(org.jboss.shotoku.Node node) throws SAXException, IOException { @@ -148,11 +146,6 @@ Node root = parser.getDocument().getDocumentElement(); String group = Tools.getAttributeValue(root, "display-name"); - Set<String> feedGroup = new LinkedHashSet<String>(); - // Each feed descriptor file has one feed group. - // Get the name of the feed group for this file. - feedGroups.put(group, feedGroup); - NodeList nodes = root.getChildNodes(); // Iterate through the rest of the feed descriptor @@ -185,10 +178,10 @@ * @param type * @param feed */ - public void addFeed(String name, String type, Feed feed) { - Map<String, Feed> typesMap = feeds.get(name); + public void addFeed(String name, String type, NormalFeed feed) { + Map<String, NormalFeed> typesMap = feeds.get(name); if (typesMap == null) { - typesMap = new HashMap<String, Feed>(); + typesMap = new HashMap<String, NormalFeed>(); feeds.put(name, typesMap); } @@ -196,6 +189,22 @@ } /** + * Adds a ready special feed of the given name and type. + * @param name + * @param type + * @param feed + */ + public void addSpecialFeed(String name, String type, SpecialFeed feed) { + Map<String, SpecialFeed> typesMap = specialFeeds.get(name); + if (typesMap == null) { + typesMap = new HashMap<String, SpecialFeed>(); + specialFeeds.put(name, typesMap); + } + + typesMap.put(type, feed); + } + + /** * Tries to generate a feed with the given name. If the feed is absent, * or is being already generated (this case indicates a loop in feed * definitions), no actions are taken. @@ -225,19 +234,47 @@ } /** - * Gets a feed of the given type and name. + * Gets a normal feed of the given type and name. * @param name Name of the feed to get. * @param type Type of the feed to get. * @return Feed with the given name and type. */ - public Feed getFeed(String name, String type) { - Map<String, Feed> feedTypes = feeds.get(name); - if (feedTypes == null) + public NormalFeed getNormalFeed(String name, String type) { + Map<String, NormalFeed> feedTypes = feeds.get(name); + if (feedTypes == null) { return null; + } return feedTypes.get(type); } + /** + * Gets a feed (any - special or normal) of the given type and name. + * @param name Name of the feed to get. + * @param type Type of the feed to get. + * @return Feed with the given name and type. + */ + public Feed getFeed(String name, String type) { + Feed ret = getNormalFeed(name, type); + if (ret == null) { + // Checking for a special feed. + for (String feedNamePrefix : specialFeeds.keySet()) { + if (name.startsWith(feedNamePrefix)) { + SpecialFeed unconcreteFeed = specialFeeds.get(feedNamePrefix).get(type); + if (unconcreteFeed != null) { + return unconcreteFeed.concretizeFeed(name); + } else { + return null; + } + } + } + + return null; + } + + return ret; + } + public String getBaseServerAddress() { return baseServerAddress; } @@ -250,8 +287,8 @@ * Releases all feeds - deletes temporary files which contain them. */ public void release() { - for (Map<String, Feed> feedTypes : feeds.values()) { - for (Feed feed : feedTypes.values()) { + for (Map<String, NormalFeed> feedTypes : feeds.values()) { + for (NormalFeed feed : feedTypes.values()) { feed.release(); } } Modified: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsServlet.java =================================================================== --- labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsServlet.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsServlet.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -38,13 +38,13 @@ } private static String makeAddress(String scheme, String server, int port) { - return scheme + "://" + server + ":" + port; - } + return scheme + "://" + server + ":" + port; + } - public static String getBaseServerAddress(ServletRequest request) { - return makeAddress(request.getScheme(), request.getServerName(), - request.getServerPort()); - } + public static String getBaseServerAddress(ServletRequest request) { + return makeAddress(request.getScheme(), request.getServerName(), + request.getServerPort()); + } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) Modified: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java =================================================================== --- labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -2,10 +2,10 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import org.jboss.shotoku.feeds.data.Feed; +import org.jboss.shotoku.feeds.data.NormalFeed; import org.jboss.shotoku.feeds.FeedFactory; import org.jboss.shotoku.feeds.FeedsDescriptor; -import org.jboss.shotoku.feeds.Constants; +import org.jboss.shotoku.feeds.tools.Constants; import org.jboss.shotoku.feeds.variables.Substitution; import org.jboss.shotoku.tools.Tools; import org.apache.log4j.Logger; @@ -34,7 +34,7 @@ // First, getting (and if need be, generating) the feeds to be // aggregated as written in the tag. - Set<Feed> toAggregate = new HashSet<Feed>(); + Set<NormalFeed> toAggregate = new HashSet<NormalFeed>(); NodeList nodes = definition.getChildNodes(); for (int i=0; i<nodes.getLength(); i++) { Node n = nodes.item(i); @@ -52,7 +52,7 @@ for (Substitution s : substitutions) { String name = s.make(nameAttr); - Feed f = fd.getFeed(name, feedType); + NormalFeed f = fd.getNormalFeed(name, feedType); if (f == null) { // Trying to generate the feed. @@ -63,7 +63,7 @@ } // The feeds have been successfully generated. - f = fd.getFeed(name, feedType); + f = fd.getNormalFeed(name, feedType); } toAggregate.add(f); @@ -76,11 +76,11 @@ return false; } - Feed feed = FeedFactory.getNewFeed(feedName, attributes.get(Constants.DISP_NAME_ATTR), + NormalFeed feed = FeedFactory.getNewNormalFeed(feedName, attributes.get(Constants.DISP_NAME_ATTR), feedType); try { - feed.generate(toAggregate.toArray(new Feed[0]), + feed.generate(toAggregate.toArray(new NormalFeed[0]), attributes.get("title"), attributes.get("description"), attributes.get("author"), generateFeedLink(fd, true, feedName, feedType)); } catch (IOException e) { Modified: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandler.java =================================================================== --- labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandler.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandler.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -3,7 +3,7 @@ import org.w3c.dom.Node; import org.jboss.shotoku.feeds.variables.Substitution; import org.jboss.shotoku.feeds.FeedsDescriptor; -import org.jboss.shotoku.feeds.Constants; +import org.jboss.shotoku.feeds.tools.Constants; /** * A base class for classes which handle generation of various feed types, Modified: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandlerManager.java =================================================================== --- labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandlerManager.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandlerManager.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,7 +1,7 @@ package org.jboss.shotoku.feeds.tag; import org.jboss.shotoku.tools.Tools; -import org.jboss.shotoku.feeds.Constants; +import org.jboss.shotoku.feeds.tools.Constants; import org.jboss.shotoku.feeds.FeedsDescriptor; import org.jboss.shotoku.feeds.variables.VariableResolverManager; import org.jboss.shotoku.feeds.variables.Substitution; @@ -44,6 +44,7 @@ addHandler(Constants.AGG_FEED_TAG, AggregatedFeedTagHandler.class); addHandler(Constants.REM_FEED_TAG, RemoteFeedTagHandler.class); addHandler(Constants.SHO_FEED_TAG, ShotokuFeedTagHandler.class); + addHandler(Constants.TAG_FEED_TAG, TagFeedTagHandler.class); } /** Modified: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/RemoteFeedTagHandler.java =================================================================== --- labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/RemoteFeedTagHandler.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/RemoteFeedTagHandler.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -3,9 +3,9 @@ import org.w3c.dom.Node; import org.jboss.shotoku.tools.Tools; import org.jboss.shotoku.feeds.variables.Substitution; -import org.jboss.shotoku.feeds.data.Feed; +import org.jboss.shotoku.feeds.data.NormalFeed; import org.jboss.shotoku.feeds.FeedFactory; -import org.jboss.shotoku.feeds.Constants; +import org.jboss.shotoku.feeds.tools.Constants; import org.jboss.shotoku.feeds.FeedsDescriptor; import org.apache.log4j.Logger; @@ -31,7 +31,7 @@ Constants.DISP_NAME_ATTR)); try { - Feed feed = FeedFactory.getNewFeed(feedName, displayName, feedType); + NormalFeed feed = FeedFactory.getNewNormalFeed(feedName, displayName, feedType); feed.generate(new URL(address)); fd.addFeed(feedName, feedType, feed); } catch (Exception e) { Modified: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/ShotokuFeedTagHandler.java =================================================================== --- labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/ShotokuFeedTagHandler.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/ShotokuFeedTagHandler.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -5,19 +5,17 @@ import org.jboss.shotoku.search.*; import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.tools.Tools; -import org.jboss.shotoku.feeds.tools.RdfDateFormat; -import org.jboss.shotoku.feeds.tools.TextEscaping; -import org.jboss.shotoku.feeds.data.Feed; +import org.jboss.shotoku.feeds.tools.FeedsTools; +import org.jboss.shotoku.feeds.data.NormalFeed; import org.jboss.shotoku.feeds.FeedFactory; import org.jboss.shotoku.feeds.FeedsDescriptor; -import org.jboss.shotoku.feeds.Constants; +import org.jboss.shotoku.feeds.tools.Constants; import org.jboss.shotoku.feeds.variables.Substitution; import org.apache.velocity.VelocityContext; import org.apache.log4j.Logger; import java.util.*; import java.lang.reflect.Constructor; -import java.text.SimpleDateFormat; import java.io.Writer; /** @@ -109,9 +107,6 @@ return param; } - - private final static String RFC_822_DATE = "EEE, d MMM yyyy HH:mm:ss Z"; - public boolean generate(FeedsDescriptor fd) { Node definition = getDefinition(); Substitution s = getSubstitution(); @@ -129,15 +124,8 @@ // Creating a velocity context with parts that won't change in all // generated feeds. VelocityContext vc = new VelocityContext(attributes); + FeedsTools.prepareVelocityContext(attributes, fd, vc); - String dateFormat = attributes.get("dateFormat"); - vc.put("dateFormat", new SimpleDateFormat(dateFormat == null ? "MM/dd/yy" : dateFormat)); - vc.put("rssDateFormat", new SimpleDateFormat(RFC_822_DATE)); - vc.put("rdfDateFormat", new RdfDateFormat()); - vc.put("now", Calendar.getInstance().getTime()); - vc.put("baseServerAddress", fd.getBaseServerAddress()); - vc.put("escape", new TextEscaping()); - NodeList feedNodeChildren = definition.getChildNodes(); for (int i = 0; i < feedNodeChildren.getLength(); i++) { // For each search node, generating and performing the @@ -180,7 +168,7 @@ String feedName = getFeedName(); String feedType = getFeedType(); - Feed newFeed = FeedFactory.getNewFeed(feedName, displayName, feedType); + NormalFeed newFeed = FeedFactory.getNewNormalFeed(feedName, displayName, feedType); try { vc.put("link", generateFeedLink(fd, true, feedName, feedType)); Copied: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/TagFeedTagHandler.java (from rev 4696, labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/TagFeedTagHandler.java) Copied: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/Constants.java (from rev 4696, labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/Constants.java) Copied: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/FeedsTools.java (from rev 4696, labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/FeedsTools.java) Modified: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/MultiValueVariableResolver.java =================================================================== --- labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/MultiValueVariableResolver.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/MultiValueVariableResolver.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,7 +1,5 @@ package org.jboss.shotoku.feeds.variables; -import org.jboss.shotoku.feeds.Constants; - import java.util.Set; import java.util.HashSet; Modified: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/VariableResolverManager.java =================================================================== --- labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/VariableResolverManager.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/VariableResolverManager.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,7 +1,7 @@ package org.jboss.shotoku.feeds.variables; import org.w3c.dom.Node; -import org.jboss.shotoku.feeds.Constants; +import org.jboss.shotoku.feeds.tools.Constants; import org.jboss.shotoku.feeds.FeedsDescriptor; import org.apache.log4j.Logger; Modified: labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/XmlNodeTypeVariableResolver.java =================================================================== --- labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/XmlNodeTypeVariableResolver.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/XmlNodeTypeVariableResolver.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -3,11 +3,8 @@ import org.w3c.dom.Node; import org.jboss.shotoku.tools.Tools; import org.jboss.shotoku.feeds.FeedFactory; -import org.jboss.shotoku.feeds.FeedsDescriptor; -import org.jboss.shotoku.feeds.Constants; +import org.jboss.shotoku.feeds.tools.Constants; -import java.util.Set; - /** * @author Adam Warski (ad...@as...) */ Modified: labs/shotoku/branches/qa/shotoku-tags/src/etc/META-INF/persistence.xml =================================================================== --- labs/shotoku/branches/qa/shotoku-tags/src/etc/META-INF/persistence.xml 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/etc/META-INF/persistence.xml 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,6 +1,6 @@ <entity-manager> <name>tags</name> - <jta-data-source>java:/JBossDS</jta-data-source> + <jta-data-source>java:/LabsDS</jta-data-source> <properties> <property name="hibernate.connection.datasource" value="JBossDS" /> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> Modified: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/AbstractTag.java =================================================================== --- labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/AbstractTag.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/AbstractTag.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -8,8 +8,6 @@ * @author Adam Warski (ad...@as...) */ public abstract class AbstractTag implements Tag { - private Integer id; - private String name; private String author; private String resourceId; @@ -17,9 +15,8 @@ private Date dateCreated; - public AbstractTag(Integer id, String name, String author, String resourceId, + public AbstractTag(String name, String author, String resourceId, String data, Date dateCreated) { - this.id = id; this.name = name; this.author = author; this.resourceId = resourceId; @@ -27,23 +24,10 @@ this.dateCreated = dateCreated; } - public AbstractTag(TagEntity te) { - this.id = te.getId(); - this.name = te.getName(); - this.author = te.getAuthor(); - this.resourceId = te.getResourceId(); - this.data = te.getData(); - this.dateCreated = te.getDateCreated(); - } - /* * TAG implementation. */ - public Integer getId() { - return id; - } - public String getName() { return name; } Modified: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java =================================================================== --- labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,7 +1,6 @@ package org.jboss.shotoku.tags; -import org.jboss.shotoku.tags.dal.ShotokuTagEntity; -import org.jboss.shotoku.tags.dal.TagEntity; +import org.jboss.shotoku.tags.tools.Constants; import java.util.Date; @@ -11,19 +10,10 @@ public class ShotokuTag extends AbstractTag { public ShotokuTag(String name, String author, String resourceId, String data, Date dateCreated) { - super(null, name, author, resourceId, data, dateCreated); + super(name, author, resourceId, data, dateCreated); } - public ShotokuTag(ShotokuTagEntity te) { - super(te); - } - public String getType() { - return "shotoku"; + return Constants.SHOTOKU_TAG; } - - public TagEntity getTagEntity() { - //return new ShotokuTagEntity(this); - return new TagEntity(this); - } } Modified: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/Tag.java =================================================================== --- labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/Tag.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/Tag.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -8,14 +8,10 @@ * @author Adam Warski (ad...@as...) */ public interface Tag { - public Integer getId(); - public String getName(); public String getAuthor(); public String getResourceId(); public String getData(); public String getType(); public Date getDateCreated(); - - public TagEntity getTagEntity(); } Deleted: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagList.java =================================================================== --- labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagList.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagList.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,11 +0,0 @@ -package org.jboss.shotoku.tags; - -import java.util.List; - -/** - * @author Adam Warski (ad...@as...) - */ -public interface TagList { - public List<Tag> getList(); - public String getFeedAddress(); -} Deleted: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagListImpl.java =================================================================== --- labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagListImpl.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagListImpl.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,24 +0,0 @@ -package org.jboss.shotoku.tags; - -import java.util.List; - -/** - * @author Adam Warski (ad...@as...) - */ -public class TagListImpl implements TagList { - private List<Tag> list; - private String feedAddress; - - public TagListImpl(List<Tag> list, String feedAddress) { - this.list = list; - this.feedAddress = feedAddress; - } - - public List<Tag> getList() { - return list; - } - - public String getFeedAddress() { - return feedAddress; - } -} Modified: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java =================================================================== --- labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,6 +1,10 @@ package org.jboss.shotoku.tags; import org.jboss.shotoku.service.AdministratedService; +import org.jboss.shotoku.tags.exceptions.TagAddException; +import org.jboss.shotoku.tags.exceptions.TagDeleteException; +import org.jboss.shotoku.tags.exceptions.TagGetException; +import org.jboss.shotoku.tags.tools.FeedType; import java.util.List; @@ -8,11 +12,22 @@ * @author Adam Warski (ad...@as...) */ public interface TagService extends AdministratedService { - public void addTag(Tag t); - public void deleteTag(Tag t); + public void addTag(Tag t) throws TagAddException; + public void deleteTag(Tag t) throws TagDeleteException; - public TagList getTags(List<String> tagNames); - public TagList getTags(String resourceId); - public TagList getTagsByAuthor(String author); - public TagList getRelatedTags(List<Tag> relateTo); + public Tag getTag(String tagName) throws TagGetException; + + public List<Tag> getTags(List<String> tagNames) throws TagGetException; + public List<Tag> getTags(String resourceId) throws TagGetException; + public List<Tag> getTagsByAuthor(String author) throws TagGetException; + public List<Tag> getRelatedTags(List<Tag> relateTo) throws TagGetException; + + /** + * Gets a link to a tag feed. + * @param feedType Type of the tag feed - resource feed, author feed etc. + * @param data Additinal data - resource id, author name etc. + * @param type Type of the feed - rss2, atom or rdf. + * @return A relative link to a feed with the given parameters. + */ + public String getFeedLink(FeedType feedType, String data, String type); } Deleted: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagTools.java =================================================================== --- labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagTools.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/TagTools.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,43 +0,0 @@ -package org.jboss.shotoku.tags; - -import org.jboss.shotoku.ContentManager; -import org.jboss.shotoku.tags.service.TagServiceImpl; -import org.jboss.mx.util.MBeanProxyExt; -import org.jboss.mx.util.MBeanServerLocator; - -/** - * @author Adam Warski (ad...@as...) - */ -public class TagTools { - public static final String TAG_SERVICE_NAME = "shotoku:service=tag"; - - private static TagService instance; - - /** - * Gets an instance of Shotoku tag service - this should be always the same - * the object, so the dirty sets work properly. - * @return An instance of org.jboss.shotoku.svn.SvnService - */ - public static TagService getService() { - try { - if (instance == null) { - if (ContentManager.isEmbedded()) { - // Embedded mode - simply creating a new service instance. - instance = new TagServiceImpl(); - instance.create(); - instance.start(); - } else { - // Application server mode - creating a proxy to a mbean. - instance = (TagService) MBeanProxyExt.create( - TagService.class, - TAG_SERVICE_NAME, - MBeanServerLocator.locate()); - } - } - - return instance; - } catch (Exception e) { - throw new RuntimeException(e); - } - } -} Modified: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/WebsiteTag.java =================================================================== --- labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/WebsiteTag.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/WebsiteTag.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,7 +1,6 @@ package org.jboss.shotoku.tags; -import org.jboss.shotoku.tags.dal.WebsiteTagEntity; -import org.jboss.shotoku.tags.dal.TagEntity; +import org.jboss.shotoku.tags.tools.Constants; import java.util.Date; @@ -11,18 +10,10 @@ public class WebsiteTag extends AbstractTag { public WebsiteTag(String name, String author, String resourceId, String data, Date dateCreated) { - super(null, name, author, resourceId, data, dateCreated); + super(name, author, resourceId, data, dateCreated); } - public WebsiteTag(WebsiteTagEntity te) { - super(te); - } - public String getType() { - return "website"; + return Constants.WEBSITE_TAG; } - - public TagEntity getTagEntity() { - return new WebsiteTagEntity(this); - } } Copied: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/IdEntity.java (from rev 4696, labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/IdEntity.java) Deleted: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java =================================================================== --- labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,23 +0,0 @@ -package org.jboss.shotoku.tags.dal; - -import org.jboss.shotoku.tags.AbstractTag; -import org.jboss.shotoku.tags.ShotokuTag; -import org.jboss.shotoku.tags.Tag; - -/** - * @author Adam Warski (ad...@as...) - */ -/*@Entity -@Inheritance(strategy = InheritanceType.SINGLE_TABLE) -@DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING) -@DiscriminatorValue("shotoku") */ -public class ShotokuTagEntity extends TagEntity { - public ShotokuTagEntity(Tag t) { - super(t); - } - - //@Transient - public AbstractTag getTag() { - return new ShotokuTag(this); - } -} Modified: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java =================================================================== --- labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,8 +1,9 @@ package org.jboss.shotoku.tags.dal; -import org.jboss.shotoku.tags.Tag; import org.jboss.shotoku.tags.AbstractTag; import org.jboss.shotoku.tags.ShotokuTag; +import org.jboss.shotoku.tags.WebsiteTag; +import org.jboss.shotoku.tags.tools.Constants; import javax.persistence.*; import java.util.Date; @@ -12,16 +13,14 @@ * @author Adam Warski (ad...@as...) */ @Entity -//@Inheritance(strategy = InheritanceType.SINGLE_TABLE) -//@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING) @Table(name = "ShotokuTags") -public /*abstract*/ class TagEntity implements Serializable { - private Integer id; - +@IdClass(IdEntity.class) +public class TagEntity implements Serializable { private String name; private String author; private String resourceId; private String data; + private String type; private Date dateCreated; @@ -29,28 +28,11 @@ } - public TagEntity(Tag t) { - //this.id = t.getId(); - this.name = t.getName(); - this.author = t.getAuthor(); - this.resourceId = t.getResourceId(); - this.data = t.getData(); - this.dateCreated = t.getDateCreated(); - } - /* * Fields. */ @Id - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - public String getName() { return name; } @@ -59,6 +41,7 @@ this.name = name; } + @Id public String getAuthor() { return author; } @@ -67,6 +50,7 @@ this.author = author; } + @Id public String getResourceId() { return resourceId; } @@ -91,10 +75,28 @@ this.dateCreated = dateCreated; } + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + /* * Other methods. */ - //@Transient - //public abstract AbstractTag getTag(); + @Transient + public AbstractTag getTag() { + if (Constants.SHOTOKU_TAG.equals(getType())) { + return new ShotokuTag(getName(), getAuthor(), getResourceId(), + getData(), getDateCreated()); + } else if (Constants.WEBSITE_TAG.equals(getType())) { + return new WebsiteTag(getName(), getAuthor(), getResourceId(), + getData(), getDateCreated()); + } else { + return null; + } + } } Deleted: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java =================================================================== --- labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,23 +0,0 @@ -package org.jboss.shotoku.tags.dal; - -import org.jboss.shotoku.tags.AbstractTag; -import org.jboss.shotoku.tags.WebsiteTag; -import org.jboss.shotoku.tags.Tag; - -/** - * @author Adam Warski (ad...@as...) - */ -/*@Entity -@Inheritance(strategy = InheritanceType.SINGLE_TABLE) -@DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING) -@DiscriminatorValue("website")*/ -public class WebsiteTagEntity extends TagEntity { - public WebsiteTagEntity(Tag t) { - super(t); - } - - //@Transient - public AbstractTag getTag() { - return new WebsiteTag(this); - } -} Copied: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions (from rev 4696, labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions) Deleted: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,10 +0,0 @@ -package org.jboss.shotoku.tags.exceptions; - -/** - * @author Adam Warski (ad...@as...) - */ -public class TagAddException extends Exception { - public TagAddException(Throwable e) { super(e); } - public TagAddException(String message, Throwable e) { super(message, e); } - public TagAddException(String message) { super(message); } -} Copied: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java (from rev 4696, labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java) Deleted: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,10 +0,0 @@ -package org.jboss.shotoku.tags.exceptions; - -/** - * @author Adam Warski (ad...@as...) - */ -public class TagDeleteException extends Exception { - public TagDeleteException(Throwable e) { super(e); } - public TagDeleteException(String message, Throwable e) { super(message, e); } - public TagDeleteException(String message) { super(message); } -} Copied: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java (from rev 4696, labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java) Deleted: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,10 +0,0 @@ -package org.jboss.shotoku.tags.exceptions; - -/** - * @author Adam Warski (ad...@as...) - */ -public class TagGetException extends Exception { - public TagGetException(Throwable e) { super(e); } - public TagGetException(String message, Throwable e) { super(message, e); } - public TagGetException(String message) { super(message); } -} Copied: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java (from rev 4696, labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java) Modified: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java =================================================================== --- labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -24,6 +24,8 @@ import java.util.Calendar; import java.util.List; import java.util.ArrayList; +import java.net.URLEncoder; +import java.io.UnsupportedEncodingException; import javax.ejb.Local; import javax.persistence.EntityManager; @@ -39,13 +41,18 @@ import org.jboss.shotoku.service.AdministratedServiceGetter; import org.jboss.shotoku.service.AdministratedService; import org.jboss.shotoku.tags.*; +import org.jboss.shotoku.tags.tools.TagTools; +import org.jboss.shotoku.tags.tools.FeedType; +import org.jboss.shotoku.tags.exceptions.TagGetException; +import org.jboss.shotoku.tags.exceptions.TagAddException; +import org.jboss.shotoku.tags.exceptions.TagDeleteException; import org.jboss.shotoku.tags.dal.TagEntity; /** * @author Adam Warski (ad...@as...) * @author Damon Sicore (da...@si...) */ -@Service(objectName=TagTools.TAG_SERVICE_NAME) +@Service(objectName=org.jboss.shotoku.tags.tools.Constants.TAG_SERVICE_NAME) @Local(TagServiceLocal.class) @Management(TagService.class) @Depends(Constants.SHOTOKU_SERVICE_NAME) @@ -140,35 +147,87 @@ @PersistenceContext private EntityManager manager; - public void addTag(Tag t) { - manager.persist(t.getTagEntity()); + private TagEntity getTagEntity(Tag t) { + TagEntity te = new TagEntity(); + + te.setAuthor(t.getAuthor()); + te.setData(t.getData()); + te.setDateCreated(t.getDateCreated()); + te.setName(t.getName()); + te.setResourceId(t.getResourceId()); + te.setType(t.getType()); + + return te; } - public void deleteTag(Tag t) { + public void addTag(Tag t) throws TagAddException { + try { + manager.persist(getTagEntity(t)); + } catch (Throwable e) { + throw new TagAddException(e); + } } - public TagList getTags(String resourceId) { - /*List<TagEntity> result = manager.createQuery("from TagEntity where resourceId = :resourceId"). - setParameter("resourceId", resourceId).getResultList(); + public void deleteTag(Tag t) throws TagDeleteException { + try { + manager.remove(getTagEntity(t)); + } catch (Throwable e) { + throw new TagDeleteException(e); + } + } - List<Tag> t = new ArrayList<Tag>(); - for (TagEntity te : result) { - t.add(te.) + public List<Tag> getTags(String resourceId) throws TagGetException { + try { + //noinspection unchecked + List<TagEntity> result = manager.createQuery( + "from TagEntity where resourceId = :resourceId order by dateCreated desc"). + setParameter("resourceId", resourceId).getResultList(); + + List<Tag> ret = new ArrayList<Tag>(); + for (TagEntity te : result) { + ret.add(te.getTag()); + } + + return ret; + } catch (Throwable e) { + throw new TagGetException(e); } + } - return new TagListImpl(ret, ""); */ - return null; + public Tag getTag(String tagName) throws TagGetException { + try { + //noinspection unchecked + TagEntity result = (TagEntity) manager.createQuery("from TagEntity where name = :name"). + setParameter("name", tagName).getSingleResult(); + + if (result == null) { + return null; + } + + return result.getTag(); + } catch (Throwable e) { + throw new TagGetException(e); + } } - public TagList getTags(List<String> tagNames) { + public List<Tag> getTags(List<String> tagNames) throws TagGetException { return null; } - public TagList getRelatedTags(List<Tag> relateTo) { + public List<Tag> getRelatedTags(List<Tag> relateTo) throws TagGetException { return null; } - public TagList getTagsByAuthor(String author) { + public List<Tag> getTagsByAuthor(String author) throws TagGetException { return null; } + + public String getFeedLink(FeedType feedType, String data, String type) { + try { + return "/feeds/tag/" + feedType.toString() + "/" + + URLEncoder.encode(data, "UTF-8") + "/" + type; + } catch (UnsupportedEncodingException e) { + return ""; + } + } } Modified: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java =================================================================== --- labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,8 +1,10 @@ package org.jboss.shotoku.tags.test; -import org.jboss.shotoku.tags.TagTools; +import org.jboss.shotoku.tags.tools.TagTools; import org.jboss.shotoku.tags.ShotokuTag; import org.jboss.shotoku.tags.Tag; +import org.jboss.shotoku.tags.exceptions.TagAddException; +import org.jboss.shotoku.tags.exceptions.TagGetException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; @@ -16,15 +18,25 @@ */ public class TagsTestServlet extends HttpServlet { + static int i = 2; + protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException { httpServletResponse.setContentType("text/html"); httpServletResponse.getWriter().println(TagTools.getService().getServiceName()); - TagTools.getService().addTag(new ShotokuTag("n1", "a1", "r1", "d1", - Calendar.getInstance().getTime())); + try { + TagTools.getService().addTag(new ShotokuTag("n" + i++, "a1", "r1", "d1", + Calendar.getInstance().getTime())); + } catch (TagAddException e) { + e.printStackTrace(); + } - /*for (Tag t : TagTools.getService().getTags("r1").getList()) { - httpServletResponse.getWriter().println(t.getName() + " - " + t.getData()); - } */ + try { + for (Tag t : TagTools.getService().getTags("r1")) { + httpServletResponse.getWriter().println(t.getName() + " - " + t.getData()); + } + } catch (TagGetException e) { + e.printStackTrace(); + } } } Copied: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/tools (from rev 4696, labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools) Deleted: labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/Constants.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/Constants.java 2006-06-09 16:37:08 UTC (rev 4696) +++ labs/shotoku/branches/qa/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/Constants.java 2006-06-09 17:03:21 UTC (rev 4697) @@ -1,13 +0,0 @@ -package org.jboss.shotoku.tags.tools; - -/** - * @author Adam Warski (ad...@as...) - */ -public class Constants { - public static final String TAG_SERVICE_NAME = "shotoku:service=tag"; - - public static final String SHOTOKU_TAG = "shotoku"; - public static final String WE... [truncated message content] |
|
From: <jbo...@li...> - 2006-06-09 16:37:13
|
Author: adamw Date: 2006-06-09 12:37:08 -0400 (Fri, 09 Jun 2006) New Revision: 4696 Removed: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagList.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagListImpl.java Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/Constants.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-86 Deleted: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagList.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagList.java 2006-06-09 16:27:37 UTC (rev 4695) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagList.java 2006-06-09 16:37:08 UTC (rev 4696) @@ -1,11 +0,0 @@ -package org.jboss.shotoku.tags; - -import java.util.List; - -/** - * @author Adam Warski (ad...@as...) - */ -public interface TagList { - public List<Tag> getList(); - public String getFeedAddress(String type); -} Deleted: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagListImpl.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagListImpl.java 2006-06-09 16:27:37 UTC (rev 4695) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagListImpl.java 2006-06-09 16:37:08 UTC (rev 4696) @@ -1,24 +0,0 @@ -package org.jboss.shotoku.tags; - -import java.util.List; - -/** - * @author Adam Warski (ad...@as...) - */ -public class TagListImpl implements TagList { - private List<Tag> list; - private String feedAddress; - - public TagListImpl(List<Tag> list, String feedAddress) { - this.list = list; - this.feedAddress = feedAddress; - } - - public List<Tag> getList() { - return list; - } - - public String getFeedAddress(String type) { - return feedAddress + type; - } -} Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java 2006-06-09 16:27:37 UTC (rev 4695) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java 2006-06-09 16:37:08 UTC (rev 4696) @@ -4,6 +4,7 @@ import org.jboss.shotoku.tags.exceptions.TagAddException; import org.jboss.shotoku.tags.exceptions.TagDeleteException; import org.jboss.shotoku.tags.exceptions.TagGetException; +import org.jboss.shotoku.tags.tools.FeedType; import java.util.List; @@ -16,8 +17,17 @@ public Tag getTag(String tagName) throws TagGetException; - public TagList getTags(List<String> tagNames) throws TagGetException; - public TagList getTags(String resourceId) throws TagGetException; - public TagList getTagsByAuthor(String author) throws TagGetException; - public TagList getRelatedTags(List<Tag> relateTo) throws TagGetException; + public List<Tag> getTags(List<String> tagNames) throws TagGetException; + public List<Tag> getTags(String resourceId) throws TagGetException; + public List<Tag> getTagsByAuthor(String author) throws TagGetException; + public List<Tag> getRelatedTags(List<Tag> relateTo) throws TagGetException; + + /** + * Gets a link to a tag feed. + * @param feedType Type of the tag feed - resource feed, author feed etc. + * @param data Additinal data - resource id, author name etc. + * @param type Type of the feed - rss2, atom or rdf. + * @return A relative link to a feed with the given parameters. + */ + public String getFeedLink(FeedType feedType, String data, String type); } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-09 16:27:37 UTC (rev 4695) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-09 16:37:08 UTC (rev 4696) @@ -25,6 +25,7 @@ import java.util.List; import java.util.ArrayList; import java.net.URLEncoder; +import java.io.UnsupportedEncodingException; import javax.ejb.Local; import javax.persistence.EntityManager; @@ -41,6 +42,7 @@ import org.jboss.shotoku.service.AdministratedService; import org.jboss.shotoku.tags.*; import org.jboss.shotoku.tags.tools.TagTools; +import org.jboss.shotoku.tags.tools.FeedType; import org.jboss.shotoku.tags.exceptions.TagGetException; import org.jboss.shotoku.tags.exceptions.TagAddException; import org.jboss.shotoku.tags.exceptions.TagDeleteException; @@ -174,7 +176,7 @@ } } - public TagList getTags(String resourceId) throws TagGetException { + public List<Tag> getTags(String resourceId) throws TagGetException { try { //noinspection unchecked List<TagEntity> result = manager.createQuery( @@ -186,8 +188,7 @@ ret.add(te.getTag()); } - return new TagListImpl(ret, - "/feeds/tag/resource/" + URLEncoder.encode(resourceId, "UTF-8") + "/"); + return ret; } catch (Throwable e) { throw new TagGetException(e); } @@ -209,15 +210,24 @@ } } - public TagList getTags(List<String> tagNames) throws TagGetException { + public List<Tag> getTags(List<String> tagNames) throws TagGetException { return null; } - public TagList getRelatedTags(List<Tag> relateTo) throws TagGetException { + public List<Tag> getRelatedTags(List<Tag> relateTo) throws TagGetException { return null; } - public TagList getTagsByAuthor(String author) throws TagGetException { + public List<Tag> getTagsByAuthor(String author) throws TagGetException { return null; } + + public String getFeedLink(FeedType feedType, String data, String type) { + try { + return "/feeds/tag/" + feedType.toString() + "/" + + URLEncoder.encode(data, "UTF-8") + "/" + type; + } catch (UnsupportedEncodingException e) { + return ""; + } + } } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java 2006-06-09 16:27:37 UTC (rev 4695) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java 2006-06-09 16:37:08 UTC (rev 4696) @@ -32,7 +32,7 @@ } try { - for (Tag t : TagTools.getService().getTags("r1").getList()) { + for (Tag t : TagTools.getService().getTags("r1")) { httpServletResponse.getWriter().println(t.getName() + " - " + t.getData()); } } catch (TagGetException e) { Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/Constants.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/Constants.java 2006-06-09 16:27:37 UTC (rev 4695) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/Constants.java 2006-06-09 16:37:08 UTC (rev 4696) @@ -10,7 +10,4 @@ public static final String WEBSITE_TAG = "website"; public static final String TAG_FEED_TYPE_VARIABLE = "%type%"; - public static final String TAG_FEED_TYPE_RESOURCE = "resource"; - public static final String TAG_FEED_TYPE_AUTHOR = "author"; - public static final String TAG_FEED_TYPE_TAGS = "tags"; } |
|
From: <jbo...@li...> - 2006-06-09 16:27:40
|
Author: adamw Date: 2006-06-09 12:27:37 -0400 (Fri, 09 Jun 2006) New Revision: 4695 Added: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/FeedType.java Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-86 Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java 2006-06-09 16:19:30 UTC (rev 4694) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java 2006-06-09 16:27:37 UTC (rev 4695) @@ -13,7 +13,6 @@ * @author Adam Warski (ad...@as...) */ @Entity -@Inheritance(strategy = InheritanceType.SINGLE_TABLE) @Table(name = "ShotokuTags") @IdClass(IdEntity.class) public class TagEntity implements Serializable { Added: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/FeedType.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/FeedType.java 2006-06-09 16:19:30 UTC (rev 4694) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/FeedType.java 2006-06-09 16:27:37 UTC (rev 4695) @@ -0,0 +1,20 @@ +package org.jboss.shotoku.tags.tools; + +/** + * @author Adam Warski (ad...@as...) + */ +public enum FeedType { + RESOURCE("resource"), + AUTHOR("author"), + TAGS("tags"); + + private String strRep; + + FeedType(String strRep) { + this.strRep = strRep; + } + + public String toString() { + return strRep; + } +} |
Author: dam...@jb... Date: 2006-06-09 12:19:30 -0400 (Fri, 09 Jun 2006) New Revision: 4694 Added: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/configuration/to-copy/JBLabs-ds.xml.sample labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/DeleteTagClickListener.java labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/web/images/ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/web/images/delete.gif Removed: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-freezone/src/web/WEB-INF/jsp/ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/web/images/delete.gif Modified: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/configuration/maven.xml labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/configuration/to-copy/ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/project.xml labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-theme/project.xml labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-theme/src/java/org/jboss/portal/core/theme/render/impl/JBFRegionRenderer.java Log: MERGED: -r 4662:4692 https://svn.labs.jboss.com/labs/jbosslabs/trunk into qa for Labs 1.1 promote. This updates the Red Hat theme at the top. Modified: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/configuration/maven.xml =================================================================== --- labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/configuration/maven.xml 2006-06-09 16:18:16 UTC (rev 4693) +++ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/configuration/maven.xml 2006-06-09 16:19:30 UTC (rev 4694) @@ -18,7 +18,9 @@ <goal name="deploy"> <ant:copy todir="${local.deploy.dir}" overwrite="true"> - <ant:fileset dir="to-copy" /> + <ant:fileset dir="to-copy"> + <exclude name="**/*.sample"/> + </ant:fileset> </ant:copy> <ant:delete file="${local.deploy.dir}/jboss-portal.sar/conf/data/default-object.xml" /> <ant:delete dir="${local.deploy.dir}/jboss-portal.sar/portal-samples.war" /> Property changes on: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/configuration/to-copy ___________________________________________________________________ Name: svn:ignore + JBLabs-ds.xml Copied: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/configuration/to-copy/JBLabs-ds.xml.sample (from rev 4692, labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/JBLabs-ds.xml.sample) Modified: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java =================================================================== --- labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2006-06-09 16:18:16 UTC (rev 4693) +++ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2006-06-09 16:19:30 UTC (rev 4694) @@ -57,6 +57,8 @@ private final static String ERROR_404_MSG = "404 - Not found."; + private final static String TAGME_JSP = "freezone/tagme.jsp"; + private void sendResponseNotFound(JBossRenderResponse response) throws IOException { response.setContentType(Constants.PAGES_MIME_TYPE); @@ -114,7 +116,7 @@ // (possibly) create a new page.ru if (isAllowedToEdit(portalName, request, response)) { response.setContentType(Constants.PAGES_MIME_TYPE); - writeTagmeButton(request, response, requestedPath); + writeTagmeButton(portalName, request, response, requestedPath); writeEditLink(portalName, requestedPath, request, response); response.getWriter().println(ERROR_404_MSG); } else { @@ -125,7 +127,7 @@ } response.setContentType(Constants.PAGES_MIME_TYPE); - writeTagmeButton(request, response, requestedPath); + writeTagmeButton(portalName, request, response, requestedPath); if (isAllowedToEdit(portalName, request, response)) { writeEditLink(portalName, requestedPath, request, response); Tools.transfer(requestedNode.getContentInputStream(), response @@ -136,15 +138,17 @@ } } - private void writeTagmeButton(JBossRenderRequest request, - JBossRenderResponse response, String requestedPath) - throws PortletException, IOException { + private void writeTagmeButton(String portalName, + JBossRenderRequest request, JBossRenderResponse response, + String requestedPath) throws PortletException, IOException { if (request.getUser() != null) { request.setAttribute("TAGME_PATH", requestedPath); request.setAttribute("TAGME_USER", request.getUser().getUserName()); - + PortletRequestDispatcher rd = getPortletContext() - .getRequestDispatcher("/WEB-INF/jsp/normal.jsp"); + .getRequestDispatcher( + ForgeHelper.createRepoAccessPath(portalName, + TAGME_JSP)); rd.include(request, response); } Modified: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/project.xml =================================================================== --- labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/project.xml 2006-06-09 16:18:16 UTC (rev 4693) +++ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/project.xml 2006-06-09 16:19:30 UTC (rev 4694) @@ -42,5 +42,26 @@ <version>1.0</version> <jar>shotoku-tags.jar</jar> </dependency> + + <dependency> + <groupId>jboss</groupId> + <artifactId>ejb3-persistence</artifactId> + <jar>ejb3-persistence.jar</jar> + </dependency> + <dependency> + <groupId>jboss</groupId> + <artifactId>jboss-ejb3x</artifactId> + <jar>jboss-ejb3x.jar</jar> + </dependency> + <dependency> + <groupId>jboss</groupId> + <artifactId>jboss-j2ee</artifactId> + <jar>jboss-j2ee.jar</jar> + </dependency> + <dependency> + <groupId>jboss</groupId> + <artifactId>jboss-annotations-ejb3</artifactId> + <jar>jboss-annotations-ejb3.jar</jar> + </dependency> </dependencies> </project> Modified: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java =================================================================== --- labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java 2006-06-09 16:18:16 UTC (rev 4693) +++ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java 2006-06-09 16:19:30 UTC (rev 4694) @@ -86,4 +86,27 @@ } } + public boolean deleteTag(String user, String path, String clas, String tag) { + + try { + TagMeTagger tagger = (TagMeTagger)Class.forName(clas).newInstance(); + + tagger.deleteTag(user, path, tag); + + return true; + } catch (InstantiationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return false; + + } + } Copied: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/DeleteTagClickListener.java (from rev 4692, labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/DeleteTagClickListener.java) Modified: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java =================================================================== --- labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java 2006-06-09 16:18:16 UTC (rev 4693) +++ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java 2006-06-09 16:19:30 UTC (rev 4694) @@ -26,6 +26,7 @@ import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.RootPanel; public class TagMe implements EntryPoint { @@ -109,9 +110,14 @@ } } - private Button getButton(String path, String user, String clas) { + private Image getButton(String path, String user, String clas) { - return new Button("TagMe", new TagMeShowPopupListener(path, user, clas)); + Image image = new Image("/file-access/default/theme/images/but_tagme.gif"); + image.setStyleName("tagme_btn"); + image.addClickListener(new TagMeShowPopupListener(path, user, clas)); + + return image; + //return new Button("TagMe", new TagMeShowPopupListener(path, user, clas)); } } Modified: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java =================================================================== --- labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java 2006-06-09 16:18:16 UTC (rev 4693) +++ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java 2006-06-09 16:19:30 UTC (rev 4694) @@ -35,28 +35,25 @@ import com.google.gwt.user.client.ui.Widget; public class TagMeClickListener implements ClickListener { - + public static final String TAG_SEP = ";&&tagMeSeparator&&;"; - - private static final String ADDING_TXT = "Adding tags"; private String path; private String user; private Vector textBoxes; - + private String clas; - + private Label info; - + private Button button; - - private Timer timer; - + private TagMeShowPopupListener parent; - public TagMeClickListener(String path, String user, String clas, Vector textBoxes, Label info, TagMeShowPopupListener parent) { + public TagMeClickListener(String path, String user, String clas, + Vector textBoxes, Label info, TagMeShowPopupListener parent) { this.path = path; this.user = user; this.textBoxes = textBoxes; @@ -66,56 +63,46 @@ } public void onClick(Widget sender) { + TaggingServiceAsync tagging = (TaggingServiceAsync) GWT .create(TaggingService.class); - this.button = (Button)sender; - + this.button = (Button) sender; + ServiceDefTarget endpoint = (ServiceDefTarget) tagging; endpoint.setServiceEntryPoint("/tagme-servlet/tag/"); - info.setText(ADDING_TXT); - - timer = new Timer() { - - public void run() { - info.setText(info.getText() + "."); - } - - }; - - timer.scheduleRepeating(1000); - + parent.startProgressAnim("Adding tags"); + AsyncCallback callback = new AsyncCallback() { public void onSuccess(Object result) { - timer.cancel(); - button.setEnabled(true); + parent.stopProgressAnim("Tags added"); parent.refreshTags(); - info.setText("Tags added"); } public void onFailure(Throwable caught) { Window.alert("Error ! " + caught.getMessage()); + parent.stopProgressAnim("Error while adding tags"); } }; button.setEnabled(false); - + String tags = ""; - + for (int i = 0; i < textBoxes.size(); i++) { - String tag = ((TextBox)textBoxes.get(i)).getText(); + String tag = ((TextBox) textBoxes.get(i)).getText(); if (tag != null && tag.length() > 0) { if (tags.length() == 0) { tags = tag; - } - else { + } else { tags += TAG_SEP + tag; } } } - tagging.addTag(user, path, clas, tags, callback); + tagging.addTag(user, path, clas, tags, callback); + } } Modified: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java =================================================================== --- labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java 2006-06-09 16:18:16 UTC (rev 4693) +++ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java 2006-06-09 16:19:30 UTC (rev 4694) @@ -25,6 +25,7 @@ import java.util.Vector; import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.ServiceDefTarget; @@ -33,6 +34,7 @@ import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; @@ -42,6 +44,8 @@ private static final String TAGME_STYLE = "tagmePanel"; + private Timer timer; + private String path; private String currentUser; @@ -52,12 +56,18 @@ private FlexTable table; + private Button saveBtn; + public TagMeShowPopupListener(String path, String user, String clas) { this.path = path; this.currentUser = user; this.clas = clas; } + public TagMeShowPopupListener getMyself() { + return this; + } + public void refreshTags() { while (table.getRowCount() > 0) { @@ -79,37 +89,44 @@ int rowsNum = 0; for (int i = 0; i < vect.size(); i++) { - - String[] to = ((String) vect.get(i)).split(TagMeClickListener.TAG_SEP); - + + String[] to = ((String) vect.get(i)) + .split(TagMeClickListener.TAG_SEP); + String tag = to[0]; String user = to[1]; String fullName = to[2]; if (!rows.keySet().contains(user)) { rows.put(user, new Integer(rowsNum)); - table.setHTML(rowsNum++, 0, "<b>"+fullName+"</b>"); + table.setHTML(rowsNum++, 0, "<b>" + fullName + "</b>"); } int curRow = ((Integer) rows.get(user)).intValue(); - + if (table.getText(curRow, 0).equals(currentUser)) { // current user - add delete button - VerticalPanel vpanel = new VerticalPanel(); - vpanel.add(new Label(tag)); - vpanel.add(new Button()); - - table.setWidget(curRow, table.getCellCount(curRow), vpanel); - } - else { - //just show tag + Image im = new Image("/tagme-servlet/images/delete.gif"); + + HorizontalPanel hpanel = new HorizontalPanel(); + hpanel.add(new Label(tag)); + hpanel.add(im); + + im.addClickListener(new DeleteTagClickListener( + currentUser, tag, path, getMyself(), clas)); + + table.setWidget(curRow, table.getCellCount(curRow), + hpanel); + } else { + // just show tag table.setText(curRow, table.getCellCount(curRow), tag); } } } public void onFailure(Throwable caught) { - Window.alert("Error ! " + caught.getMessage() + " Throwable: " + caught); + Window.alert("Error ! " + caught.getMessage() + " Throwable: " + + caught); } }; @@ -141,8 +158,9 @@ final DialogBox dialog = new DialogBox(); HorizontalPanel btnPanel = new HorizontalPanel(); - btnPanel.add(new Button("Save", new TagMeClickListener(path, currentUser, - clas, textBoxes, info, this))); + this.saveBtn = new Button("Save", new TagMeClickListener(path, + currentUser, clas, textBoxes, info, this)); + btnPanel.add(saveBtn); btnPanel.add(new Button("Close", new ClickListener() { public void onClick(Widget sender) { @@ -177,4 +195,24 @@ } + public void startProgressAnim(String text) { + info.setText(text); + + timer = new Timer() { + + public void run() { + info.setText(info.getText() + "."); + } + + }; + + timer.scheduleRepeating(1000); + } + + public void stopProgressAnim(String text) { + timer.cancel(); + saveBtn.setEnabled(true); + info.setText(text); + } + } Modified: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java =================================================================== --- labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java 2006-06-09 16:18:16 UTC (rev 4693) +++ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java 2006-06-09 16:19:30 UTC (rev 4694) @@ -42,4 +42,6 @@ public Vector getTags(String path, String clas); public boolean addTag(String user, String path, String clas, String tags); + + public boolean deleteTag(String user, String path, String clas, String tag); } Modified: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java =================================================================== --- labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java 2006-06-09 16:18:16 UTC (rev 4693) +++ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java 2006-06-09 16:19:30 UTC (rev 4694) @@ -35,4 +35,7 @@ public void addTag(String user, String path, String clas, String tags, AsyncCallback callback); + + public void deleteTag(String user, String path, String clas, String tag, + AsyncCallback callback); } Modified: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java =================================================================== --- labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java 2006-06-09 16:18:16 UTC (rev 4693) +++ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java 2006-06-09 16:19:30 UTC (rev 4694) @@ -21,7 +21,9 @@ */ package org.jboss.labs.tagme.services; +import java.util.Date; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Vector; @@ -32,6 +34,14 @@ import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; import org.jboss.shotoku.exceptions.SaveException; +import org.jboss.shotoku.tags.ShotokuTag; +import org.jboss.shotoku.tags.Tag; +import org.jboss.shotoku.tags.TagList; +import org.jboss.shotoku.tags.TagService; +import org.jboss.shotoku.tags.tools.TagTools; +import org.jboss.shotoku.tags.exceptions.TagAddException; +import org.jboss.shotoku.tags.exceptions.TagDeleteException; +import org.jboss.shotoku.tags.exceptions.TagGetException; public class ShotokuTaggingService implements TagMeTagger { @@ -40,104 +50,117 @@ private static final Logger log = Logger .getLogger(ShotokuTaggingService.class); + private TagService service = TagTools.getService(); + public Vector getTags(String path) { log.info("Getting tags for: " + path); - ContentManager manager = ContentManager.getContentManager(); Vector<String> tags = new Vector<String>(); - Node node; try { - node = manager.getNode(path); + TagList tagList = service.getTags(path); - Map<String, String> map = node.getProperties(); + if (tagList != null) { + List<Tag> allTags = tagList.getList(); - for (String key : map.keySet()) { - log.info(key); - if (key.startsWith(SHOTOKU_TAG)) { - String tag = (String) map.get(key); - String user = (String) key.substring(key.indexOf(':') + 1, key - .lastIndexOf(':')); - tags.add(tag + TagMeClickListener.TAG_SEP + user - + TagMeClickListener.TAG_SEP + user); + for (Tag tag : allTags) { + tags.add(tag.getName() + TagMeClickListener.TAG_SEP + + tag.getAuthor() + TagMeClickListener.TAG_SEP + + tag.getAuthor()); } } - } catch (RepositoryException e) { + } catch (TagGetException e) { // TODO Auto-generated catch block e.printStackTrace(); - } catch (ResourceDoesNotExist e) { - // TODO Auto-generated catch block - e.printStackTrace(); } + /* + * ContentManager manager = ContentManager.getContentManager(); + * + * Node node; try { node = manager.getNode(path); + * + * Map<String, String> map = node.getProperties(); + * + * for (String key : map.keySet()) { log.info(key); if + * (key.startsWith(SHOTOKU_TAG)) { String tag = (String) map.get(key); + * String user = (String) key.substring(key.indexOf(':') + 1, + * key.lastIndexOf(':')); tags.add(tag + TagMeClickListener.TAG_SEP + + * user + TagMeClickListener.TAG_SEP + user); } } } catch + * (RepositoryException e) { // TODO Auto-generated catch block + * e.printStackTrace(); } catch (ResourceDoesNotExist e) { // TODO + * Auto-generated catch block e.printStackTrace(); } + */ return tags; } public void addTag(String user, String path, String tag) { log.info("Adding tag: " + tag + " for node: " + path); - ContentManager manager = ContentManager.getContentManager(); - - Node node; - try { - node = manager.getNode(path); - - if (!getTags(path).contains(tag)) { - int i = 0; - while (node.getProperty(SHOTOKU_TAG + ":" + user + ":" + i) != null) { - i++; - } - - node.setProperty(SHOTOKU_TAG + ":" + user + ":" + i, tag); - - try { - node.save("Saving tag: " + tag + " by: " + user); - } catch (SaveException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } catch (RepositoryException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ResourceDoesNotExist e) { - // TODO Auto-generated catch block - e.printStackTrace(); + service.addTag(new ShotokuTag(tag, user, path, null, new Date())); + } catch (TagAddException e) { + throw new RuntimeException(e); } + /* + * ContentManager manager = ContentManager.getContentManager(); + * + * Node node; + * + * try { node = manager.getNode(path); + * + * if (!getTags(path).contains(tag)) { int i = 0; while + * (node.getProperty(SHOTOKU_TAG + ":" + user + ":" + i) != null) { i++; } + * + * node.setProperty(SHOTOKU_TAG + ":" + user + ":" + i, tag); + * + * try { node.save("Saving tag: " + tag + " by: " + user); } catch + * (SaveException e) { // TODO Auto-generated catch block + * e.printStackTrace(); } } } catch (RepositoryException e) { // TODO + * Auto-generated catch block e.printStackTrace(); } catch + * (ResourceDoesNotExist e) { // TODO Auto-generated catch block + * e.printStackTrace(); } + */ } public void deleteTag(String user, String path, String tag) { + log.info("Deleting tag " + tag + " " + path + "..."); + try { - Node node = ContentManager.getContentManager().getNode(path); - - Iterator it = node.getProperties().keySet().iterator(); - boolean found = false; - String key = null; - - while(!found && it.hasNext()) { - key = (String)it.next(); - if (node.getProperties().get(key).equals(tag)) { - found = true; + List<Tag> tags = service.getTags(path).getList(); + + for (Tag tagObj : tags) { + if (tagObj.getName().equals(tag) + && tagObj.getAuthor().equals(user)) { + service.deleteTag(tagObj); } } - - if (found) { - node.getProperties().remove(key); - try { - node.save("Removing tag: "+tag+" by user: "+user); - } catch (SaveException e) { - e.printStackTrace(); - } - } - - } catch (RepositoryException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ResourceDoesNotExist e) { - // TODO Auto-generated catch block - e.printStackTrace(); + } catch (TagGetException e) { + throw new RuntimeException(e); + } catch (TagDeleteException e) { + throw new RuntimeException(e); } + + /* + * try { + * + * + * Node node = ContentManager.getContentManager().getNode(path); + * + * Iterator it = node.getProperties().keySet().iterator(); boolean found = + * false; String key = null; + * + * while (!found && it.hasNext()) { key = (String) it.next(); if + * (node.getProperties().get(key).equals(tag)) { found = true; } } + * + * if (found) { node.deleteProperty(key); try { node.save("Removing tag: " + + * tag + " by user: " + user); + * + * log.info("tag deleted ! (key: " + key + " )"); } catch (SaveException + * e) { e.printStackTrace(); } } } catch (RepositoryException e) { // + * TODO Auto-generated catch block e.printStackTrace(); } catch + * (ResourceDoesNotExist e) { // TODO Auto-generated catch block + * e.printStackTrace(); } + */ } } Copied: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/web/images (from rev 4692, labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/web/images) Deleted: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/web/images/delete.gif =================================================================== (Binary files differ) Copied: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-tagme/src/web/images/delete.gif (from rev 4692, labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/web/images/delete.gif) Modified: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-theme/project.xml =================================================================== --- labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-theme/project.xml 2006-06-09 16:18:16 UTC (rev 4693) +++ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-theme/project.xml 2006-06-09 16:19:30 UTC (rev 4694) @@ -45,5 +45,6 @@ <version>1.0</version> <jar>javax.servlet.jar</jar> </dependency> + </dependencies> </project> Modified: labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-theme/src/java/org/jboss/portal/core/theme/render/impl/JBFRegionRenderer.java =================================================================== --- labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-theme/src/java/org/jboss/portal/core/theme/render/impl/JBFRegionRenderer.java 2006-06-09 16:18:16 UTC (rev 4693) +++ labs/jbosslabs/branches/qa/jbosslabs/portal-extensions/forge-theme/src/java/org/jboss/portal/core/theme/render/impl/JBFRegionRenderer.java 2006-06-09 16:19:30 UTC (rev 4694) @@ -42,6 +42,9 @@ if (renderContext.getRegionID() != null){ markup.append(" id='").append(renderContext.getRegionID()).append("'>"); } + else { + markup.append(">"); + } } for (Iterator i = region.getWindows().iterator(); i.hasNext();) |
|
From: <jbo...@li...> - 2006-06-09 16:18:20
|
Author: adamw Date: 2006-06-09 12:18:16 -0400 (Fri, 09 Jun 2006) New Revision: 4693 Removed: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-86 Deleted: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java 2006-06-09 15:51:28 UTC (rev 4692) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java 2006-06-09 16:18:16 UTC (rev 4693) @@ -1,25 +0,0 @@ -package org.jboss.shotoku.tags.dal; - -import org.jboss.shotoku.tags.AbstractTag; -import org.jboss.shotoku.tags.ShotokuTag; -import org.jboss.shotoku.tags.Tag; - -import javax.persistence.*; - -/** - * @author Adam Warski (ad...@as...) - */ -@Entity -@Inheritance(strategy = InheritanceType.SINGLE_TABLE) -@DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING) -@DiscriminatorValue("shotoku") -public class ShotokuTagEntity extends TagEntity { - public ShotokuTagEntity() { - - } - - @Transient - public AbstractTag getTag() { - return new ShotokuTag(getName(), getAuthor(), getResourceId(), getData(), getDateCreated()); - } -} Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java 2006-06-09 15:51:28 UTC (rev 4692) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java 2006-06-09 16:18:16 UTC (rev 4693) @@ -1,6 +1,9 @@ package org.jboss.shotoku.tags.dal; import org.jboss.shotoku.tags.AbstractTag; +import org.jboss.shotoku.tags.ShotokuTag; +import org.jboss.shotoku.tags.WebsiteTag; +import org.jboss.shotoku.tags.tools.Constants; import javax.persistence.*; import java.util.Date; @@ -11,14 +14,14 @@ */ @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) -@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING, length = 255) @Table(name = "ShotokuTags") @IdClass(IdEntity.class) -public abstract class TagEntity implements Serializable { +public class TagEntity implements Serializable { private String name; private String author; private String resourceId; private String data; + private String type; private Date dateCreated; @@ -73,10 +76,28 @@ this.dateCreated = dateCreated; } + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + /* * Other methods. */ @Transient - public abstract AbstractTag getTag(); + public AbstractTag getTag() { + if (Constants.SHOTOKU_TAG.equals(getType())) { + return new ShotokuTag(getName(), getAuthor(), getResourceId(), + getData(), getDateCreated()); + } else if (Constants.WEBSITE_TAG.equals(getType())) { + return new WebsiteTag(getName(), getAuthor(), getResourceId(), + getData(), getDateCreated()); + } else { + return null; + } + } } Deleted: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java 2006-06-09 15:51:28 UTC (rev 4692) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java 2006-06-09 16:18:16 UTC (rev 4693) @@ -1,25 +0,0 @@ -package org.jboss.shotoku.tags.dal; - -import org.jboss.shotoku.tags.AbstractTag; -import org.jboss.shotoku.tags.WebsiteTag; -import org.jboss.shotoku.tags.Tag; - -import javax.persistence.*; - -/** - * @author Adam Warski (ad...@as...) - */ -@Entity -@Inheritance(strategy = InheritanceType.SINGLE_TABLE) -@DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING) -@DiscriminatorValue("website") -public class WebsiteTagEntity extends TagEntity { - public WebsiteTagEntity() { - - } - - @Transient - public AbstractTag getTag() { - return new WebsiteTag(getName(), getAuthor(), getResourceId(), getData(), getDateCreated()); - } -} Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-09 15:51:28 UTC (rev 4692) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-09 16:18:16 UTC (rev 4693) @@ -45,8 +45,6 @@ import org.jboss.shotoku.tags.exceptions.TagAddException; import org.jboss.shotoku.tags.exceptions.TagDeleteException; import org.jboss.shotoku.tags.dal.TagEntity; -import org.jboss.shotoku.tags.dal.ShotokuTagEntity; -import org.jboss.shotoku.tags.dal.WebsiteTagEntity; /** * @author Adam Warski (ad...@as...) @@ -148,20 +146,14 @@ private EntityManager manager; private TagEntity getTagEntity(Tag t) { - TagEntity te = null; - if (org.jboss.shotoku.tags.tools.Constants.SHOTOKU_TAG.equals(t.getType())) { - te = new ShotokuTagEntity(); - } else if (org.jboss.shotoku.tags.tools.Constants.WEBSITE_TAG.equals(t.getType())) { - te = new WebsiteTagEntity(); - } + TagEntity te = new TagEntity(); - if (te != null) { - te.setAuthor(t.getAuthor()); - te.setData(t.getData()); - te.setDateCreated(t.getDateCreated()); - te.setName(t.getName()); - te.setResourceId(t.getResourceId()); - } + te.setAuthor(t.getAuthor()); + te.setData(t.getData()); + te.setDateCreated(t.getDateCreated()); + te.setName(t.getName()); + te.setResourceId(t.getResourceId()); + te.setType(t.getType()); return te; } |
|
From: <jbo...@li...> - 2006-06-09 15:51:33
|
Author: adamw Date: 2006-06-09 11:51:28 -0400 (Fri, 09 Jun 2006) New Revision: 4692 Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-86 Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java 2006-06-09 15:30:48 UTC (rev 4691) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java 2006-06-09 15:51:28 UTC (rev 4692) @@ -38,7 +38,7 @@ import org.jboss.shotoku.tags.Tag; import org.jboss.shotoku.tags.TagList; import org.jboss.shotoku.tags.TagService; -import org.jboss.shotoku.tags.TagTools; +import org.jboss.shotoku.tags.tools.TagTools; import org.jboss.shotoku.tags.exceptions.TagAddException; import org.jboss.shotoku.tags.exceptions.TagDeleteException; import org.jboss.shotoku.tags.exceptions.TagGetException; |
Author: adamw Date: 2006-06-09 11:30:48 -0400 (Fri, 09 Jun 2006) New Revision: 4691 Added: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/ConcreteTagFeed.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/NormalFeed.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Rss2TagFeed.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/SpecialFeed.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/TagFeed.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/TagFeedTagHandler.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/Constants.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/FeedsTools.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/Constants.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/TagTools.java Removed: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/Constants.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagTools.java Modified: labs/shotoku/trunk/project.properties labs/shotoku/trunk/shotoku-feeds/project.xml labs/shotoku/trunk/shotoku-feeds/shotoku-feeds.iml labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedFactory.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsDescriptor.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsServlet.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/AtomFeed.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/FileBasedFeed.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/InformaBasedFeed.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RdfFeed.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Rss2Feed.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandler.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandlerManager.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/RemoteFeedTagHandler.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/ShotokuFeedTagHandler.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/MultiValueVariableResolver.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/VariableResolverManager.java labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/XmlNodeTypeVariableResolver.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagList.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagListImpl.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/WebsiteTag.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-86 Modified: labs/shotoku/trunk/project.properties =================================================================== --- labs/shotoku/trunk/project.properties 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/project.properties 2006-06-09 15:30:48 UTC (rev 4691) @@ -5,7 +5,7 @@ shotoku.sar.dir=shotoku.sar shotoku.subprojects.cms=base,files,jcr,svn -shotoku.subprojects=${shotoku.subprojects.cms},aop,test,web,admin,feeds,portal,file-access,tags +shotoku.subprojects=${shotoku.subprojects.cms},aop,test,web,admin,tags,feeds,portal,file-access maven.final.name=${pom.artifactId} @@ -33,3 +33,4 @@ maven.jar.shotoku-base=${shotoku.root.dir}shotoku-base/target/shotoku-base.jar maven.jar.shotoku-svn=${shotoku.root.dir}shotoku-svn/target/shotoku-svn.jar maven.jar.shotoku-aop=${shotoku.root.dir}shotoku-aop/target/shotoku-aop.jar +maven.jar.shotoku-tags=${shotoku.root.dir}shotoku-tags/target/shotoku-tags.jar Modified: labs/shotoku/trunk/shotoku-feeds/project.xml =================================================================== --- labs/shotoku/trunk/shotoku-feeds/project.xml 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/project.xml 2006-06-09 15:30:48 UTC (rev 4691) @@ -25,6 +25,12 @@ <dependency> <groupId>shotoku</groupId> + <artifactId>shotoku-tags</artifactId> + <jar>shotoku-tags.jar</jar> + </dependency> + + <dependency> + <groupId>shotoku</groupId> <artifactId>shotoku-aop</artifactId> <jar>shotoku-aop.jar</jar> </dependency> Modified: labs/shotoku/trunk/shotoku-feeds/shotoku-feeds.iml =================================================================== --- labs/shotoku/trunk/shotoku-feeds/shotoku-feeds.iml 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/shotoku-feeds.iml 2006-06-09 15:30:48 UTC (rev 4691) @@ -17,6 +17,7 @@ <orderEntry type="library" name="commons" level="application" /> <orderEntry type="library" name="velocity" level="application" /> <orderEntry type="library" name="junit" level="application" /> + <orderEntry type="module" module-name="shotoku-tags" /> <orderEntryProperties /> </component> </module> Deleted: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/Constants.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/Constants.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/Constants.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -1,56 +0,0 @@ -package org.jboss.shotoku.feeds; - -/** - * @author Adam Warski (ad...@as...) - */ -public class Constants { - /** - * Node with names ending with this string are parsed and - * feed definitons are read from them. - */ - public final static String NODE_ENDING = "-feeds.xml"; - - /* - * Tag names. - */ - public final static String REM_FEED_TAG = "remote-feed"; - public final static String AGG_FEED_TAG = "aggregated-feed"; - public final static String SHO_FEED_TAG = "shotoku-feed"; - - /* - * Property name, under which content manager id and name of the - * directory which contains the configuration file can be found. - */ - public final static String CONFIGDIR = "shotoku.internal.feeds.configdir"; - public final static String CONFIGID = "shotoku.internal.feeds.configcmid"; - - /* - * Property name suffixes, under which content manager id and name - * of the directory which contains the feed files can be found. - */ - public final static String FEEDDIR = ".xml.directory"; - public final static String FEEDID = ".xml.cmid"; - - /** - * Property name suffix, under which information about available - * variables can be found. - */ - public final static String ALL_VARS = ".variables"; - /** - * Property name middle, under which informatin about a concerete - * variable can be found (should be prepended with an id and followed - * by a property name). - */ - public final static String ONE_VAR = ".variable."; - - /** - * Variable, for which feed type will be substituted. - */ - public final static String TYPE_VARIABLE = "${type}"; - - /* - * Xml node attributes denoting a feed name and display name. - */ - public static final String NAME_ATTR = "name"; - public static final String DISP_NAME_ATTR = "display-name"; -} Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedFactory.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedFactory.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedFactory.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -21,10 +21,8 @@ */ package org.jboss.shotoku.feeds; -import org.jboss.shotoku.feeds.data.AtomFeed; -import org.jboss.shotoku.feeds.data.Feed; -import org.jboss.shotoku.feeds.data.RdfFeed; -import org.jboss.shotoku.feeds.data.Rss2Feed; +import org.jboss.shotoku.feeds.data.*; +import org.apache.velocity.VelocityContext; import java.io.File; import java.util.HashMap; @@ -36,50 +34,63 @@ * @author adamw */ public class FeedFactory { - /** - * <code>feedClasses</code> - map feed type -> feed class. - */ - private static Map<String, Class> feedClasses; - private static final Random random; - - static { - feedClasses = new HashMap<String, Class>(); - feedClasses.put("rss2", Rss2Feed.class); - feedClasses.put("atom", AtomFeed.class); - feedClasses.put("rdf", RdfFeed.class); - - random = new Random(); - } - - /** - * Creates a new instance of a feed implementation of the given type. - * @param type Type of feed to create. - * @return A new instance of a feed of the given type. - */ - public static Feed getNewFeed(String name, String displayName, String type) { - Class feedClass = feedClasses.get(type); - if (feedClass == null) return null; - - int nextInt; - synchronized(random) { - nextInt = random.nextInt(); - } - - try { - File file = File.createTempFile("shotoku-feeds" + nextInt, type); - return (Feed) feedClass.getConstructor( + /** + * Map feed type -> feed class. + */ + private static Map<String, Class> feedClasses; + private static Map<String, Class> specialFeedClasses; + private static final Random random; + + static { + feedClasses = new HashMap<String, Class>(); + feedClasses.put("rss2", Rss2Feed.class); + feedClasses.put("atom", AtomFeed.class); + feedClasses.put("rdf", RdfFeed.class); + + specialFeedClasses = new HashMap<String, Class>(); + specialFeedClasses.put("rss2", Rss2TagFeed.class); + + random = new Random(); + } + + /** + * Creates a new instance of a normal feed implementation of the given type. + * @param type Type of feed to create. + * @return A new instance of a feed of the given type. + */ + public static NormalFeed getNewNormalFeed(String name, String displayName, String type) { + Class feedClass = feedClasses.get(type); + if (feedClass == null) return null; + + int nextInt; + synchronized(random) { + nextInt = random.nextInt(); + } + + try { + File file = File.createTempFile("shotoku-feeds" + nextInt, type); + return (NormalFeed) feedClass.getConstructor( String.class, String.class, String.class, File.class).newInstance( - name, displayName, type, file); - } catch (Exception e) { - return null; - } - } - - /** - * Gets all feed types that have been defined. - * @return An array of defined feed types. - */ - public static String[] getAllFeedTypes() { - return feedClasses.keySet().toArray(new String[0]); - } + name, displayName, type, file); + } catch (Exception e) { + return null; + } + } + + /** + * Creates a new instance of a special feed implementation of the given type. + * @param type Type of feed to create. + * @return A new instance of a feed of the given type. + */ + public static Class getNewSpecialFeedClass(String type) { + return specialFeedClasses.get(type); + } + + /** + * Gets all feed types that have been defined. + * @return An array of defined feed types. + */ + public static String[] getAllFeedTypes() { + return feedClasses.keySet().toArray(new String[0]); + } } Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsDescriptor.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsDescriptor.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsDescriptor.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -24,8 +24,6 @@ import java.io.IOException; import java.util.HashMap; import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; import java.util.Map; import java.util.Properties; import java.util.Set; @@ -33,10 +31,13 @@ import org.apache.xerces.parsers.DOMParser; import org.apache.log4j.Logger; import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.feeds.data.NormalFeed; +import org.jboss.shotoku.feeds.data.SpecialFeed; import org.jboss.shotoku.feeds.data.Feed; import org.jboss.shotoku.feeds.variables.VariableResolverManager; import org.jboss.shotoku.feeds.tag.FeedTagHandler; import org.jboss.shotoku.feeds.tag.FeedTagHandlerManager; +import org.jboss.shotoku.feeds.tools.Constants; import org.jboss.shotoku.tools.Pair; import org.jboss.shotoku.tools.Tools; import org.jboss.shotoku.aop.CacheItem; @@ -68,13 +69,12 @@ /** * Ready feeds: feed name -> (feed type -> feed). */ - private Map<String, Map<String, Feed>> feeds; + private Map<String, Map<String, NormalFeed>> feeds; /** - * Feed group display name -> set of feed - * names. + * Special feeds: feed name prefix -> (feed type -> feed). */ - private Map<String, Set<String>> feedGroups; + private Map<String, Map<String, SpecialFeed>> specialFeeds; private VariableResolverManager vrm; @@ -113,8 +113,8 @@ feedTagHandlers = new HashMap<String, Map<String, FeedTagHandler>>(); // Creating the maps that will hold the feeds. - feeds = new HashMap<String, Map<String, Feed>>(); - feedGroups = new LinkedHashMap<String, Set<String>>(); + feeds = new HashMap<String, Map<String, NormalFeed>>(); + specialFeeds = new HashMap<String, Map<String, SpecialFeed>>(); // Looking for file containing feed definitons and filling the maps. for (org.jboss.shotoku.Node feedNode : @@ -136,8 +136,6 @@ // Trying to generate any feed found in the feed tag handler map. generateFeed(feedTagHandlers.keySet().iterator().next()); } - - // TODO populate the groups } private void addFeedDefinitions(org.jboss.shotoku.Node node) throws SAXException, IOException { @@ -148,11 +146,6 @@ Node root = parser.getDocument().getDocumentElement(); String group = Tools.getAttributeValue(root, "display-name"); - Set<String> feedGroup = new LinkedHashSet<String>(); - // Each feed descriptor file has one feed group. - // Get the name of the feed group for this file. - feedGroups.put(group, feedGroup); - NodeList nodes = root.getChildNodes(); // Iterate through the rest of the feed descriptor @@ -185,10 +178,10 @@ * @param type * @param feed */ - public void addFeed(String name, String type, Feed feed) { - Map<String, Feed> typesMap = feeds.get(name); + public void addFeed(String name, String type, NormalFeed feed) { + Map<String, NormalFeed> typesMap = feeds.get(name); if (typesMap == null) { - typesMap = new HashMap<String, Feed>(); + typesMap = new HashMap<String, NormalFeed>(); feeds.put(name, typesMap); } @@ -196,6 +189,22 @@ } /** + * Adds a ready special feed of the given name and type. + * @param name + * @param type + * @param feed + */ + public void addSpecialFeed(String name, String type, SpecialFeed feed) { + Map<String, SpecialFeed> typesMap = specialFeeds.get(name); + if (typesMap == null) { + typesMap = new HashMap<String, SpecialFeed>(); + specialFeeds.put(name, typesMap); + } + + typesMap.put(type, feed); + } + + /** * Tries to generate a feed with the given name. If the feed is absent, * or is being already generated (this case indicates a loop in feed * definitions), no actions are taken. @@ -225,19 +234,47 @@ } /** - * Gets a feed of the given type and name. + * Gets a normal feed of the given type and name. * @param name Name of the feed to get. * @param type Type of the feed to get. * @return Feed with the given name and type. */ - public Feed getFeed(String name, String type) { - Map<String, Feed> feedTypes = feeds.get(name); - if (feedTypes == null) + public NormalFeed getNormalFeed(String name, String type) { + Map<String, NormalFeed> feedTypes = feeds.get(name); + if (feedTypes == null) { return null; + } return feedTypes.get(type); } + /** + * Gets a feed (any - special or normal) of the given type and name. + * @param name Name of the feed to get. + * @param type Type of the feed to get. + * @return Feed with the given name and type. + */ + public Feed getFeed(String name, String type) { + Feed ret = getNormalFeed(name, type); + if (ret == null) { + // Checking for a special feed. + for (String feedNamePrefix : specialFeeds.keySet()) { + if (name.startsWith(feedNamePrefix)) { + SpecialFeed unconcreteFeed = specialFeeds.get(feedNamePrefix).get(type); + if (unconcreteFeed != null) { + return unconcreteFeed.concretizeFeed(name); + } else { + return null; + } + } + } + + return null; + } + + return ret; + } + public String getBaseServerAddress() { return baseServerAddress; } @@ -250,8 +287,8 @@ * Releases all feeds - deletes temporary files which contain them. */ public void release() { - for (Map<String, Feed> feedTypes : feeds.values()) { - for (Feed feed : feedTypes.values()) { + for (Map<String, NormalFeed> feedTypes : feeds.values()) { + for (NormalFeed feed : feedTypes.values()) { feed.release(); } } Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsServlet.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsServlet.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsServlet.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -38,13 +38,13 @@ } private static String makeAddress(String scheme, String server, int port) { - return scheme + "://" + server + ":" + port; - } + return scheme + "://" + server + ":" + port; + } - public static String getBaseServerAddress(ServletRequest request) { - return makeAddress(request.getScheme(), request.getServerName(), - request.getServerPort()); - } + public static String getBaseServerAddress(ServletRequest request) { + return makeAddress(request.getScheme(), request.getServerName(), + request.getServerPort()); + } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/AtomFeed.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/AtomFeed.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/AtomFeed.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -25,19 +25,20 @@ import java.io.IOException; import com.sun.syndication.feed.synd.SyndFeed; +import org.jboss.shotoku.feeds.tools.Constants; public class AtomFeed extends RomeBasedFeed { - public AtomFeed(String name, String displayName, String type, File file) throws IOException { + public AtomFeed(String name, String displayName, String type, File file) throws IOException { super(name, displayName, type, file); } - @Override - protected void setFeedType(SyndFeed feed) { - feed.setFeedType("atom_0.3"); - } + @Override + protected void setFeedType(SyndFeed feed) { + feed.setFeedType("atom_0.3"); + } - @Override - protected String getContentType() { - return "application/atom+xml"; - } + @Override + protected String getContentType() { + return Constants.ATOM_CONTENT_TYPE; + } } Added: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/ConcreteTagFeed.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/ConcreteTagFeed.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/ConcreteTagFeed.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -0,0 +1,42 @@ +package org.jboss.shotoku.feeds.data; + +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; +import java.io.IOException; + +/** + * @author Adam Warski (ad...@as...) + */ +public class ConcreteTagFeed implements Feed { + private TagFeed tagFeed; + private String fullName; + + public ConcreteTagFeed(TagFeed tagFeed, String fullName) { + this.tagFeed = tagFeed; + this.fullName = fullName; + } + + public void write(OutputStream os) throws IOException { + tagFeed.write(os, fullName); + } + + public void write(HttpServletResponse response) throws IOException { + tagFeed.write(response, fullName); + } + + public String getName() { + return tagFeed.getName(); + } + + public String getDisplayName() { + return tagFeed.getDisplayName(); + } + + public String getType() { + return tagFeed.getType(); + } + + public void release() { + tagFeed.release(); + } +} Deleted: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -1,99 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2005, JBoss Inc., and individual contributors as indicated - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.jboss.shotoku.feeds.data; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.Writer; -import java.net.URL; - -import javax.servlet.http.HttpServletResponse; - -/** - * An interface that should be implemented by classes representing data feeds. - * @author adamw - */ -public interface Feed { - /** - * Writes the feed data to the given output stream. - * @param os Output stream to write to. - * @throws IOException - */ - public void write(OutputStream os) throws IOException; - /** - * Writes the feed data to the given http servlet response, setting an - * appropriate content type. - * @param response Response to write to. - * @throws IOException - */ - public void write(HttpServletResponse response) throws IOException; - /** - * Generates a feed getting data from the given url. - * @param url Url from which to get the content. - */ - public void generate(URL url) throws IOException; - /** - * Generates a feed getting data from the given input stream. - * @param is Input stream from which to get the content. - * @throws IOException - */ - public void generate(InputStream is) throws IOException; - /** - * Gets a writer to which content of this feed can be written. - * @return A writer for writing content of this feed. - */ - public Writer getWriter() throws IOException; - /** - * Generates a feed using the given feeds. - * @param feeds Feeds which should be aggregated into a single - * feed. - */ - public void generate(Feed[] feeds, String title, - String description, String author, String link) - throws IllegalArgumentException, IOException; - /** - * Gets an input stream of this feed. - * @return Input stream of this feed. - */ - public InputStream getInputStream(); - /** - * Gets the name of this feed. - * @return Name of this feed. - */ - public String getName(); - /** - * Gets the display name of this feed. - * @return Display name of this feed. - */ - public String getDisplayName(); - /** - * Gets the type of this feed. - * @return Type of this feed. - */ - public String getType(); - /** - * Called when this feed is no longer needed, so that any resources can - * be released (like temporary files). - */ - public void release(); -} Added: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -0,0 +1,45 @@ +package org.jboss.shotoku.feeds.data; + +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; +import java.io.IOException; + +/** + * A base interface for feeds. + * @author Adam Warski (ad...@as...) + */ +public interface Feed { + /** + * Writes the feed data to the given output stream. + * @param os Output stream to write to. + * @throws java.io.IOException + */ + public void write(OutputStream os) throws IOException; + /** + * Writes the feed data to the given http servlet response, setting an + * appropriate content type. + * @param response Response to write to. + * @throws IOException + */ + public void write(HttpServletResponse response) throws IOException; + /** + * Gets the name of this feed. + * @return Name of this feed. + */ + public String getName(); + /** + * Gets the display name of this feed. + * @return Display name of this feed. + */ + public String getDisplayName(); + /** + * Gets the type of this feed. + * @return Type of this feed. + */ + public String getType(); + /** + * Called when this feed is no longer needed, so that any resources can + * be released (like temporary files). + */ + public void release(); +} Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/FileBasedFeed.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/FileBasedFeed.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/FileBasedFeed.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -38,7 +38,7 @@ import javax.servlet.http.HttpServletResponse; -public abstract class FileBasedFeed implements Feed { +public abstract class FileBasedFeed implements NormalFeed { private File file; private String name; private String displayName; Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/InformaBasedFeed.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/InformaBasedFeed.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/InformaBasedFeed.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -12,7 +12,7 @@ import de.nava.informa.impl.basic.ChannelBuilder; import de.nava.informa.parsers.FeedParser; import de.nava.informa.utils.ItemComparator; -import org.jboss.shotoku.feeds.data.Feed; +import org.jboss.shotoku.feeds.data.NormalFeed; public abstract class InformaBasedFeed extends FileBasedFeed { public InformaBasedFeed(String name, String displayName, String type, File file) { @@ -22,7 +22,7 @@ protected abstract ChannelExporterIF getExporter() throws IOException; @SuppressWarnings("unchecked") - public void generate(Feed[] feeds, String title, String description, + public void generate(NormalFeed[] feeds, String title, String description, String author, String link) throws IllegalArgumentException, IOException { ChannelBuilder builder = new ChannelBuilder(); @@ -37,7 +37,7 @@ long pubDate = 0; - for (Feed feed : feeds) { + for (NormalFeed feed : feeds) { ChannelIF childChannel; try { childChannel = FeedParser.parse(builder, feed.getInputStream()); Copied: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/NormalFeed.java (from rev 4655, labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java) =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java 2006-06-07 21:28:18 UTC (rev 4655) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/NormalFeed.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -0,0 +1,66 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.shotoku.feeds.data; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.Writer; +import java.net.URL; + +import javax.servlet.http.HttpServletResponse; + +/** + * An interface that should be implemented by classes representing normal data feeds. + * @author adamw + */ +public interface NormalFeed extends Feed { + /** + * Generates a feed getting data from the given url. + * @param url Url from which to get the content. + */ + public void generate(URL url) throws IOException; + /** + * Generates a feed getting data from the given input stream. + * @param is Input stream from which to get the content. + * @throws IOException + */ + public void generate(InputStream is) throws IOException; + /** + * Gets a writer to which content of this feed can be written. + * @return A writer for writing content of this feed. + */ + public Writer getWriter() throws IOException; + /** + * Generates a feed using the given feeds. + * @param feeds Feeds which should be aggregated into a single + * feed. + */ + public void generate(NormalFeed[] feeds, String title, + String description, String author, String link) + throws IllegalArgumentException, IOException; + /** + * Gets an input stream of this feed. + * @return Input stream of this feed. + */ + public InputStream getInputStream(); +} Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RdfFeed.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RdfFeed.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RdfFeed.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -26,18 +26,19 @@ import de.nava.informa.core.ChannelExporterIF; import de.nava.informa.exporters.RSS_1_0_Exporter; +import org.jboss.shotoku.feeds.tools.Constants; public class RdfFeed extends InformaBasedFeed { - public RdfFeed(String name, String displayName, String type, File file) { + public RdfFeed(String name, String displayName, String type, File file) { super(name, displayName, type, file); } - protected ChannelExporterIF getExporter() throws IOException { - return new RSS_1_0_Exporter(getFile()); - } + protected ChannelExporterIF getExporter() throws IOException { + return new RSS_1_0_Exporter(getFile()); + } - @Override - protected String getContentType() { - return "text/xml"; - } + @Override + protected String getContentType() { + return Constants.RDF_CONTENT_TYPE; + } } Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -45,7 +45,7 @@ protected abstract void setFeedType(SyndFeed feed); @SuppressWarnings("unchecked") - public void generate(Feed[] feeds, String title, String description, + public void generate(NormalFeed[] feeds, String title, String description, String author, String link) throws IllegalArgumentException, IOException { SyndFeed syndFeed = new SyndFeedImpl(); @@ -62,7 +62,7 @@ long pubDate = 0; - for (Feed feed : feeds) { + for (NormalFeed feed : feeds) { SyndFeedInput input = new SyndFeedInput(); SyndFeed inFeed; try { Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Rss2Feed.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Rss2Feed.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Rss2Feed.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -26,6 +26,7 @@ import com.sun.syndication.feed.synd.SyndFeed; import org.jboss.shotoku.feeds.data.RomeBasedFeed; +import org.jboss.shotoku.feeds.tools.Constants; public class Rss2Feed extends RomeBasedFeed { public Rss2Feed(String name, String displayName, String type, File file) throws IOException { @@ -39,6 +40,6 @@ @Override protected String getContentType() { - return "text/xml"; + return Constants.RSS_CONTENT_TYPE; } } Added: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Rss2TagFeed.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Rss2TagFeed.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Rss2TagFeed.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -0,0 +1,20 @@ +package org.jboss.shotoku.feeds.data; + +import org.jboss.shotoku.feeds.tools.Constants; +import org.apache.velocity.VelocityContext; + +import java.util.Map; + +/** + * @author Adam Warski (ad...@as...) + */ +public class Rss2TagFeed extends TagFeed { + public Rss2TagFeed(String name, String type, + Map<String, String> attributes, VelocityContext vc) { + super(name, type, attributes, vc); + } + + public String getContentType() { + return Constants.RSS_CONTENT_TYPE; + } +} Added: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/SpecialFeed.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/SpecialFeed.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/SpecialFeed.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -0,0 +1,9 @@ +package org.jboss.shotoku.feeds.data; + +/** + * A special feed interface, which has to be concretized, to get a full feed. + * @author Adam Warski (ad...@as...) + */ +public interface SpecialFeed extends Feed { + public Feed concretizeFeed(String fullName); +} Added: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/TagFeed.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/TagFeed.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/TagFeed.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -0,0 +1,166 @@ +package org.jboss.shotoku.feeds.data; + +import org.apache.velocity.VelocityContext; +import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.tags.Tag; +import org.jboss.shotoku.tags.tools.TagTools; +import org.jboss.shotoku.tags.tools.Constants; +import org.jboss.shotoku.tags.exceptions.TagGetException; + +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.StringWriter; +import java.util.*; +import java.net.URLDecoder; + +/** + * @author Adam Warski (ad...@as...) + */ +public abstract class TagFeed implements SpecialFeed { + private String name; + private String type; + Map<String, String> attributes; + private VelocityContext vcOriginal; + + private int limit; + private int nameLength; + private ContentManager cm; + + public TagFeed(String name, String type, + Map<String, String> attributes, VelocityContext vc) { + this.name = name; + this.type = type; + this.attributes = attributes; + this.vcOriginal = vc; + + nameLength = name.length(); + cm = ContentManager.getContentManager(attributes.get("id"), + attributes.get("prefix")); + try { + limit = Integer.parseInt(attributes.get("limit")); + } catch (NumberFormatException e) { + limit = 0; + } + } + + public Feed concretizeFeed(String fullName) { + return new ConcreteTagFeed(this, fullName); + } + + public abstract String getContentType(); + + public Date getYoungestTagDate(List<Tag> tags) { + long youngest = 0; + + for (Tag tag : tags) { + long dateCreated = tag.getDateCreated().getTime(); + if (dateCreated > youngest) { + youngest = dateCreated; + } + } + + return new Date(youngest); + } + + public void write(OutputStream os, String fullName) throws IOException { + // Computing the type of the feed to generate. + if (fullName.length() < nameLength+1) { + throw new IOException("Invalid tag feed request."); + } + + String info = fullName.substring(nameLength+1); + String[] infoTokens = info.split("[/]", 2); + if (infoTokens.length != 2) { + throw new IOException("Invalid tag feed request."); + } + + VelocityContext vc = new VelocityContext(vcOriginal); + + String infoDataDecoded = infoTokens[1]; + infoDataDecoded = URLDecoder.decode(infoDataDecoded, "UTF-8"); + String template = attributes.get("template"); + + List<Tag> tags; + + if (Constants.TAG_FEED_TYPE_RESOURCE.equals(infoTokens[0])) { + vc.put(Constants.TAG_FEED_TYPE_RESOURCE, infoDataDecoded); + + // Getting the list of tags. + try { + tags = TagTools.getService().getTags(infoDataDecoded).getList(); + } catch (TagGetException e) { + throw new IOException(e.getMessage()); + } + + template = template.replace(Constants.TAG_FEED_TYPE_VARIABLE, + Constants.TAG_FEED_TYPE_RESOURCE); + + } else if (Constants.TAG_FEED_TYPE_AUTHOR.equals(infoTokens[0])) { + try { + tags = TagTools.getService().getTagsByAuthor(infoDataDecoded).getList(); + } catch (TagGetException e) { + throw new IOException(e.getMessage()); + } + + template = template.replace(Constants.TAG_FEED_TYPE_VARIABLE, + Constants.TAG_FEED_TYPE_AUTHOR); + + } else if (Constants.TAG_FEED_TYPE_TAGS.equals(infoTokens[0])) { + try { + tags = TagTools.getService().getTags( + Arrays.asList(infoDataDecoded.split("[+]"))).getList(); + } catch (TagGetException e) { + throw new IOException(e.getMessage()); + } + + template = template.replace(Constants.TAG_FEED_TYPE_VARIABLE, + Constants.TAG_FEED_TYPE_TAGS); + + } else { + throw new IOException("Invalid tag feed request."); + } + + // Computing the date of the youngest tag. + vc.put("youngest", getYoungestTagDate(tags)); + vc.put("tags", tags.subList(0, limit)); + + try { + OutputStreamWriter osw = new OutputStreamWriter(os); + cm.getVelocityEngine().mergeTemplate(template, vc, osw); + osw.flush(); + } catch (Exception e) { + throw new IOException(e.getMessage()); + } + } + + public void write(HttpServletResponse response, String fullName) throws IOException { + response.setContentType(getContentType()); + write(response.getOutputStream(), fullName); + } + + public void write(OutputStream os) throws IOException { + throw new IOException("Can't write a non-concrete tag feed"); + } + + public void write(HttpServletResponse response) throws IOException { + throw new IOException("Can't write a non-concrete tag feed"); + } + + public String getName() { + return name; + } + + public String getDisplayName() { + return null; + } + + public String getType() { + return type; + } + + public void release() { + + } +} Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -2,10 +2,10 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import org.jboss.shotoku.feeds.data.Feed; +import org.jboss.shotoku.feeds.data.NormalFeed; import org.jboss.shotoku.feeds.FeedFactory; import org.jboss.shotoku.feeds.FeedsDescriptor; -import org.jboss.shotoku.feeds.Constants; +import org.jboss.shotoku.feeds.tools.Constants; import org.jboss.shotoku.feeds.variables.Substitution; import org.jboss.shotoku.tools.Tools; import org.apache.log4j.Logger; @@ -34,7 +34,7 @@ // First, getting (and if need be, generating) the feeds to be // aggregated as written in the tag. - Set<Feed> toAggregate = new HashSet<Feed>(); + Set<NormalFeed> toAggregate = new HashSet<NormalFeed>(); NodeList nodes = definition.getChildNodes(); for (int i=0; i<nodes.getLength(); i++) { Node n = nodes.item(i); @@ -52,7 +52,7 @@ for (Substitution s : substitutions) { String name = s.make(nameAttr); - Feed f = fd.getFeed(name, feedType); + NormalFeed f = fd.getNormalFeed(name, feedType); if (f == null) { // Trying to generate the feed. @@ -63,7 +63,7 @@ } // The feeds have been successfully generated. - f = fd.getFeed(name, feedType); + f = fd.getNormalFeed(name, feedType); } toAggregate.add(f); @@ -76,11 +76,11 @@ return false; } - Feed feed = FeedFactory.getNewFeed(feedName, attributes.get(Constants.DISP_NAME_ATTR), + NormalFeed feed = FeedFactory.getNewNormalFeed(feedName, attributes.get(Constants.DISP_NAME_ATTR), feedType); try { - feed.generate(toAggregate.toArray(new Feed[0]), + feed.generate(toAggregate.toArray(new NormalFeed[0]), attributes.get("title"), attributes.get("description"), attributes.get("author"), generateFeedLink(fd, true, feedName, feedType)); } catch (IOException e) { Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandler.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandler.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandler.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -3,7 +3,7 @@ import org.w3c.dom.Node; import org.jboss.shotoku.feeds.variables.Substitution; import org.jboss.shotoku.feeds.FeedsDescriptor; -import org.jboss.shotoku.feeds.Constants; +import org.jboss.shotoku.feeds.tools.Constants; /** * A base class for classes which handle generation of various feed types, Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandlerManager.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandlerManager.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/FeedTagHandlerManager.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -1,7 +1,7 @@ package org.jboss.shotoku.feeds.tag; import org.jboss.shotoku.tools.Tools; -import org.jboss.shotoku.feeds.Constants; +import org.jboss.shotoku.feeds.tools.Constants; import org.jboss.shotoku.feeds.FeedsDescriptor; import org.jboss.shotoku.feeds.variables.VariableResolverManager; import org.jboss.shotoku.feeds.variables.Substitution; @@ -44,6 +44,7 @@ addHandler(Constants.AGG_FEED_TAG, AggregatedFeedTagHandler.class); addHandler(Constants.REM_FEED_TAG, RemoteFeedTagHandler.class); addHandler(Constants.SHO_FEED_TAG, ShotokuFeedTagHandler.class); + addHandler(Constants.TAG_FEED_TAG, TagFeedTagHandler.class); } /** Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/RemoteFeedTagHandler.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/RemoteFeedTagHandler.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/RemoteFeedTagHandler.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -3,9 +3,9 @@ import org.w3c.dom.Node; import org.jboss.shotoku.tools.Tools; import org.jboss.shotoku.feeds.variables.Substitution; -import org.jboss.shotoku.feeds.data.Feed; +import org.jboss.shotoku.feeds.data.NormalFeed; import org.jboss.shotoku.feeds.FeedFactory; -import org.jboss.shotoku.feeds.Constants; +import org.jboss.shotoku.feeds.tools.Constants; import org.jboss.shotoku.feeds.FeedsDescriptor; import org.apache.log4j.Logger; @@ -31,7 +31,7 @@ Constants.DISP_NAME_ATTR)); try { - Feed feed = FeedFactory.getNewFeed(feedName, displayName, feedType); + NormalFeed feed = FeedFactory.getNewNormalFeed(feedName, displayName, feedType); feed.generate(new URL(address)); fd.addFeed(feedName, feedType, feed); } catch (Exception e) { Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/ShotokuFeedTagHandler.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/ShotokuFeedTagHandler.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/ShotokuFeedTagHandler.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -5,19 +5,17 @@ import org.jboss.shotoku.search.*; import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.tools.Tools; -import org.jboss.shotoku.feeds.tools.RdfDateFormat; -import org.jboss.shotoku.feeds.tools.TextEscaping; -import org.jboss.shotoku.feeds.data.Feed; +import org.jboss.shotoku.feeds.tools.FeedsTools; +import org.jboss.shotoku.feeds.data.NormalFeed; import org.jboss.shotoku.feeds.FeedFactory; import org.jboss.shotoku.feeds.FeedsDescriptor; -import org.jboss.shotoku.feeds.Constants; +import org.jboss.shotoku.feeds.tools.Constants; import org.jboss.shotoku.feeds.variables.Substitution; import org.apache.velocity.VelocityContext; import org.apache.log4j.Logger; import java.util.*; import java.lang.reflect.Constructor; -import java.text.SimpleDateFormat; import java.io.Writer; /** @@ -109,9 +107,6 @@ return param; } - - private final static String RFC_822_DATE = "EEE, d MMM yyyy HH:mm:ss Z"; - public boolean generate(FeedsDescriptor fd) { Node definition = getDefinition(); Substitution s = getSubstitution(); @@ -129,15 +124,8 @@ // Creating a velocity context with parts that won't change in all // generated feeds. VelocityContext vc = new VelocityContext(attributes); + FeedsTools.prepareVelocityContext(attributes, fd, vc); - String dateFormat = attributes.get("dateFormat"); - vc.put("dateFormat", new SimpleDateFormat(dateFormat == null ? "MM/dd/yy" : dateFormat)); - vc.put("rssDateFormat", new SimpleDateFormat(RFC_822_DATE)); - vc.put("rdfDateFormat", new RdfDateFormat()); - vc.put("now", Calendar.getInstance().getTime()); - vc.put("baseServerAddress", fd.getBaseServerAddress()); - vc.put("escape", new TextEscaping()); - NodeList feedNodeChildren = definition.getChildNodes(); for (int i = 0; i < feedNodeChildren.getLength(); i++) { // For each search node, generating and performing the @@ -180,7 +168,7 @@ String feedName = getFeedName(); String feedType = getFeedType(); - Feed newFeed = FeedFactory.getNewFeed(feedName, displayName, feedType); + NormalFeed newFeed = FeedFactory.getNewNormalFeed(feedName, displayName, feedType); try { vc.put("link", generateFeedLink(fd, true, feedName, feedType)); Added: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/TagFeedTagHandler.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/TagFeedTagHandler.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/TagFeedTagHandler.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -0,0 +1,55 @@ +package org.jboss.shotoku.feeds.tag; + +import org.apache.log4j.Logger; +import org.apache.velocity.VelocityContext; +import org.jboss.shotoku.feeds.FeedsDescriptor; +import org.jboss.shotoku.feeds.tools.Constants; +import org.jboss.shotoku.feeds.FeedFactory; +import org.jboss.shotoku.feeds.data.SpecialFeed; +import org.jboss.shotoku.feeds.tools.FeedsTools; +import org.jboss.shotoku.feeds.variables.Substitution; +import org.jboss.shotoku.tools.Tools; +import org.w3c.dom.Node; + +import java.util.Map; + +/** + * @author Adam Warski (ad...@as...) + */ +public class TagFeedTagHandler extends FeedTagHandler { + //private static final Logger log = Logger.getLogger(FeedsDescriptor.class); + + public TagFeedTagHandler(String feedName, String group, Node definition, Substitution s) { + super(feedName, group, definition, s); + } + + public boolean generate(FeedsDescriptor fd) { + Node definition = getDefinition(); + Substitution s = getSubstitution(); + + // Reading all attributes and making the substitution on them. + Map<String, String> attributes = Tools.getMapFromNodeAttributes(definition); + s.make(attributes); + + // Creating a velocity context with parts that won't change in all + // generated feeds. + VelocityContext vc = new VelocityContext(attributes); + FeedsTools.prepareVelocityContext(attributes, fd, vc); + + String feedName = getFeedName(); + String feedType = getFeedType(); + + Class feedClass = FeedFactory.getNewSpecialFeedClass(feedType); + + try { + fd.addSpecialFeed(feedName, feedType, + (SpecialFeed) feedClass.getConstructor(String.class, + String.class, Map.class, VelocityContext.class).newInstance(feedName, + feedType, attributes, vc)); + } catch (Exception e) { + return false; + } + + return true; + } +} Copied: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/Constants.java (from rev 4655, labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/Constants.java) =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/Constants.java 2006-06-07 21:28:18 UTC (rev 4655) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/Constants.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -0,0 +1,69 @@ +package org.jboss.shotoku.feeds.tools; + +/** + * @author Adam Warski (ad...@as...) + */ +public class Constants { + /** + * Node with names ending with this string are parsed and + * feed definitons are read from them. + */ + public final static String NODE_ENDING = "-feeds.xml"; + + /* + * Tag names. + */ + public final static String REM_FEED_TAG = "remote-feed"; + public final static String AGG_FEED_TAG = "aggregated-feed"; + public final static String SHO_FEED_TAG = "shotoku-feed"; + public final static String TAG_FEED_TAG = "tag-feed"; + + /* + * Date format compatible with RFC822. + */ + public final static String RFC_822_DATE = "EEE, d MMM yyyy HH:mm:ss Z"; + + /* + * Content types. + */ + public static final String ATOM_CONTENT_TYPE = "application/atom+xml"; + public static final String RSS_CONTENT_TYPE = "text/xml"; + public static final String RDF_CONTENT_TYPE = "text/xml"; + + /* + * Property name, under which content manager id and name of the + * directory which contains the configuration file can be found. + */ + public final static String CONFIGDIR = "shotoku.internal.feeds.configdir"; + public final static String CONFIGID = "shotoku.internal.feeds.configcmid"; + + /* + * Property name suffixes, under which content manager id and name + * of the directory which contains the feed files can be found. + */ + public final static String FEEDDIR = ".xml.directory"; + public final static String FEEDID = ".xml.cmid"; + + /** + * Property name suffix, under which information about available + * variables can be found. + */ + public final static String ALL_VARS = ".variables"; + /** + * Property name middle, under which informatin about a concerete + * variable can be found (should be prepended with an id and followed + * by a property name). + */ + public final static String ONE_VAR = ".variable."; + + /** + * Variable, for which feed type will be substituted. + */ + public final static String TYPE_VARIABLE = "${type}"; + + /* + * Xml node attributes denoting a feed name and display name. + */ + public static final String NAME_ATTR = "name"; + public static final String DISP_NAME_ATTR = "display-name"; +} Added: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/FeedsTools.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/FeedsTools.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/FeedsTools.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -0,0 +1,24 @@ +package org.jboss.shotoku.feeds.tools; + +import org.apache.velocity.VelocityContext; +import org.jboss.shotoku.feeds.FeedsDescriptor; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Map; + +/** + * @author Adam Warski (ad...@as...) + */ +public class FeedsTools { + public static void prepareVelocityContext(Map<String, String> attributes, + FeedsDescriptor fd, VelocityContext vc) { + String dateFormat = attributes.get("dateFormat"); + vc.put("dateFormat", new SimpleDateFormat(dateFormat == null ? "MM/dd/yy" : dateFormat)); + vc.put("rssDateFormat", new SimpleDateFormat(Constants.RFC_822_DATE)); + vc.put("rdfDateFormat", new RdfDateFormat()); + vc.put("now", Calendar.getInstance().getTime()); + vc.put("baseServerAddress", fd.getBaseServerAddress()); + vc.put("escape", new TextEscaping()); + } +} Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/MultiValueVariableResolver.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/MultiValueVariableResolver.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/MultiValueVariableResolver.java 2006-06-09 15:30:48 UTC (rev 4691) @@ -1,7 +1,5 @@ package org.jboss.shotoku.feeds.variables; -import org.jboss.shotoku.feeds.Constants; - import java.util.Set; import java.util.HashSet; Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/VariableResolverManager.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/VariableResolverManager.java 2006-06-09 09:55:03 UTC (rev 4690) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/VariableResolverManager.java 2006-06-09 15:30:48 UTC (rev 4691) @... [truncated message content] |
|
From: <jbo...@li...> - 2006-06-09 09:55:06
|
Author: jfr...@jb...
Date: 2006-06-09 05:55:03 -0400 (Fri, 09 Jun 2006)
New Revision: 4690
Modified:
labs/jbossweb/trunk/src/share/native/build/buildphp.sh
Log:
Add the missing lib64 directories.
Modified: labs/jbossweb/trunk/src/share/native/build/buildphp.sh
===================================================================
--- labs/jbossweb/trunk/src/share/native/build/buildphp.sh 2006-06-09 07:12:34 UTC (rev 4689)
+++ labs/jbossweb/trunk/src/share/native/build/buildphp.sh 2006-06-09 09:55:03 UTC (rev 4690)
@@ -570,6 +570,11 @@
LIBS="-L$TOOLS/ICNV/lib -liconv"
export LIBS
fi
+if ${BUILDLBGD}
+then
+ GD_LIB="$TOOLS/LBGD/lib"
+ export GD_LIB
+fi
if ${BUILDLDAP}
then
EXTRA_LDFLAGS=-L$TOOLS/LDAP/lib
@@ -578,6 +583,22 @@
export EXTRA_LDFLAGS_PROGRAM
fi
+#
+# Add links for some platforms
+case ${PR} in
+ x86_64)
+ for dir in `ls ${TOOLS}`
+ do
+ if [ -d ${TOOLS}/${dir}/lib ]
+ then
+ (cd ${TOOLS}/${dir}
+ ln -fs lib lib64
+ )
+ fi
+ done
+ ;;
+esac
+
# configure php
if ! ${ALLOWCRYPTO}
then
|
|
From: <jbo...@li...> - 2006-06-09 07:12:39
|
Author: aron.gombas
Date: 2006-06-09 03:12:34 -0400 (Fri, 09 Jun 2006)
New Revision: 4689
Modified:
labs/kosmos/trunk/src/java/hu/midori/kosmos/server/jira/JiraSoapServiceImpl.java
Log:
Unknown priorities or statuses will not throw an exception
Modified: labs/kosmos/trunk/src/java/hu/midori/kosmos/server/jira/JiraSoapServiceImpl.java
===================================================================
--- labs/kosmos/trunk/src/java/hu/midori/kosmos/server/jira/JiraSoapServiceImpl.java 2006-06-09 02:17:28 UTC (rev 4688)
+++ labs/kosmos/trunk/src/java/hu/midori/kosmos/server/jira/JiraSoapServiceImpl.java 2006-06-09 07:12:34 UTC (rev 4689)
@@ -124,7 +124,7 @@
case 4: reopenedIssues++; break;
case 5: resolvedIssues++; break;
case 6: closedIssues++; break;
- default: throw new IllegalArgumentException(String.format("Unknown issue status: %d", status));
+ default: log.warn(String.format("Unknown issue status: %d", status));
}
// process priority if open
@@ -139,7 +139,7 @@
case 5: trivialOpenIssues++; break;
// TODO what is 6?
case 7: optionalOpenIssues++; break;
- default: throw new IllegalArgumentException(String.format("Unknown issue priority: %d", priority));
+ default: log.warn(String.format("Unknown issue priority: %d", priority));
}
}
|
Author: mic...@jb...
Date: 2006-06-08 22:17:28 -0400 (Thu, 08 Jun 2006)
New Revision: 4688
Added:
labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/compiler/
labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/compiler/package.html
labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/package.html
labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/xml/
labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/xml/package.html
labs/jbossrules/trunk/drools-core/src/main/resources/org/
labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/
labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/audit/
labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/audit/package.html
labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/event/
labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/event/package.html
labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/package.html
labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/rule/
labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/rule/package.html
labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/visualize/
labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/visualize/package.html
labs/jbossrules/trunk/drools-core/src/main/resources/overview.html
labs/jbossrules/trunk/drools-decisiontables/src/main/resources/org/
labs/jbossrules/trunk/drools-decisiontables/src/main/resources/org/drools/
labs/jbossrules/trunk/drools-decisiontables/src/main/resources/org/drools/decisiontable/
labs/jbossrules/trunk/drools-decisiontables/src/main/resources/org/drools/decisiontable/package.html
Modified:
labs/jbossrules/trunk/build.xml
labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/Instructions.txt
Log:
improved javadocs
Modified: labs/jbossrules/trunk/build.xml
===================================================================
--- labs/jbossrules/trunk/build.xml 2006-06-08 22:05:22 UTC (rev 4687)
+++ labs/jbossrules/trunk/build.xml 2006-06-09 02:17:28 UTC (rev 4688)
@@ -483,7 +483,8 @@
packagenames="org.drools.*"
excludepackagenames="org.drools.asm.*"
destdir="target/docs/apidocs"
- author="false"
+ author="false"
+ Overview="drools-core/target/classes/overview.html"
version="false">
<sourcepath>
@@ -499,7 +500,7 @@
</classpath>
<group title="Runtime Core API"
- packages="org.drools"/>
+ packages="org.drools:org.drools.rule"/>
<group title="Compiler Core API"
packages="org.drools.compiler"/>
@@ -508,11 +509,12 @@
packages="org.drools.lang:org.drools.xml"/>
<group title="Runtime Utilities"
- packages="org.drools.audit*:org.drools.event:org.drools.visualize"/>
+ packages="org.drools.audit:org.drools.event:org.drools.visualize"/>
<group title="Decision Tables"
packages="org.drools.decisiontable"/>
-
+ <group title="Internal"
+ packages="org.drools*" />
</javadoc>
</target>
@@ -523,6 +525,7 @@
destdir="target/docs/apidocs"
author="false"
version="false"
+ Overview="drools-core/target/classes/overview.html"
source="1.4">
<sourcepath>
@@ -558,8 +561,9 @@
<param name="-breakiterator"/>
</doclet>
+
<group title="Runtime Core API"
- packages="org.drools"/>
+ packages="org.drools:org.drools.rule"/>
<group title="Compiler Core API"
packages="org.drools.compiler"/>
@@ -568,9 +572,12 @@
packages="org.drools.lang:org.drools.xml"/>
<group title="Runtime Utilities"
- packages="org.drools.audit*:org.drools.event:org.drools.visualize"/>
+ packages="org.drools.audit:org.drools.event:org.drools.visualize"/>
<group title="Decision Tables"
packages="org.drools.decisiontable"/>
+
+ <group title="Internal"
+ packages="org.drools*" />
</javadoc>
Modified: labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/Instructions.txt
===================================================================
--- labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/Instructions.txt 2006-06-08 22:05:22 UTC (rev 4687)
+++ labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/Instructions.txt 2006-06-09 02:17:28 UTC (rev 4688)
@@ -1,5 +1,5 @@
---------------------------------------------
-JBoss Rules Essentual Lab Excercise 4
+JBoss Rules Essentials Lab Excercise 4
- Alternative rule formats -
---------------------------------------------
Added: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/compiler/package.html
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/compiler/package.html 2006-06-08 22:05:22 UTC (rev 4687)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/compiler/package.html 2006-06-09 02:17:28 UTC (rev 4688)
@@ -0,0 +1,3 @@
+<body>
+ This is the main package to load rules. Use PackageBuilder and RuleBaseLoader classes.
+</body>
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/compiler/package.html
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/package.html
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/package.html 2006-06-08 22:05:22 UTC (rev 4687)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/package.html 2006-06-09 02:17:28 UTC (rev 4688)
@@ -0,0 +1,3 @@
+<body>
+ This contains the parser and utilities for the native DRL format, for handling DRL source.
+</body>
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/package.html
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/xml/package.html
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/xml/package.html 2006-06-08 22:05:22 UTC (rev 4687)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/xml/package.html 2006-06-09 02:17:28 UTC (rev 4688)
@@ -0,0 +1,3 @@
+<body>
+ This contains the parser and utilities for handling rules in XML format.
+</body>
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/xml/package.html
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/audit/package.html
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/audit/package.html 2006-06-08 22:05:22 UTC (rev 4687)
+++ labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/audit/package.html 2006-06-09 02:17:28 UTC (rev 4688)
@@ -0,0 +1,3 @@
+<body>
+ This is a utility for providing audit trails/explanations of rule actions.
+</body>
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/audit/package.html
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/event/package.html
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/event/package.html 2006-06-08 22:05:22 UTC (rev 4687)
+++ labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/event/package.html 2006-06-09 02:17:28 UTC (rev 4688)
@@ -0,0 +1,3 @@
+<body>
+ Events provide all sorts of call backs to monitor the engine as it is running.
+</body>
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/event/package.html
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/package.html
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/package.html 2006-06-08 22:05:22 UTC (rev 4687)
+++ labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/package.html 2006-06-09 02:17:28 UTC (rev 4688)
@@ -0,0 +1,3 @@
+<body>
+ This is the engine that works off binary RuleBases, you will mostly use WorkingMemory, RuleBase and RuleBaseFactory
+</body>
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/package.html
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/rule/package.html
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/rule/package.html 2006-06-08 22:05:22 UTC (rev 4687)
+++ labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/rule/package.html 2006-06-09 02:17:28 UTC (rev 4688)
@@ -0,0 +1,3 @@
+<body>
+ Contains the binary representations of rule constructs, like Package (which the compiler produces), Rule, and Conditional Elements.
+</body>
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/rule/package.html
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/visualize/package.html
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/visualize/package.html 2006-06-08 22:05:22 UTC (rev 4687)
+++ labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/visualize/package.html 2006-06-09 02:17:28 UTC (rev 4688)
@@ -0,0 +1,3 @@
+<body>
+ Some visual utilities for viewing RETE networks (can also use the plug in for this)
+</body>
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-core/src/main/resources/org/drools/visualize/package.html
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-core/src/main/resources/overview.html
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/resources/overview.html 2006-06-08 22:05:22 UTC (rev 4687)
+++ labs/jbossrules/trunk/drools-core/src/main/resources/overview.html 2006-06-09 02:17:28 UTC (rev 4688)
@@ -0,0 +1,22 @@
+<body>
+
+<h2>Drools API</h2>
+<P/>
+The documentation concentrates upon the following key interfaces:
+<li><tt>org.drools.WorkingMemory</tt></li>
+<li><tt>org.drools.RuleBase</tt></li>
+<li><tt>org.drools.RuleBaseFactory</tt></li>
+<li><tt>org.drools.compiler.PackageBuilder</tt></li>
+<li><tt>org.drools.compiler.RuleBaseLoader</tt></li>
+<li><tt>org.drools.rule.Package</tt></li>
+
+These interfaces are fully intended to be exposed to application code.
+Gernally speaking, PackageBuilder would be used to assemble binary rule Packages, which are what is used by the
+core engine (RuleBase, WorkingMemory).<br>
+
+<br>
+The other utility classes are optional, and you may or may not need to use them based on your specific needs.
+<br>
+The Internal APIs are not intended for "normal" application code use, but from time to time, advanced uses may need to refer to or use this API directly.
+
+</body>
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-core/src/main/resources/overview.html
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-decisiontables/src/main/resources/org/drools/decisiontable/package.html
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/main/resources/org/drools/decisiontable/package.html 2006-06-08 22:05:22 UTC (rev 4687)
+++ labs/jbossrules/trunk/drools-decisiontables/src/main/resources/org/drools/decisiontable/package.html 2006-06-09 02:17:28 UTC (rev 4688)
@@ -0,0 +1,3 @@
+<body>
+ This it a utility for using spreadsheets to manage rules. Use SpreasheetCompiler.
+</body>
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-decisiontables/src/main/resources/org/drools/decisiontable/package.html
___________________________________________________________________
Name: svn:eol-style
+ native
|
|
From: <jbo...@li...> - 2006-06-08 22:05:30
|
Author: jfr...@jb...
Date: 2006-06-08 18:05:22 -0400 (Thu, 08 Jun 2006)
New Revision: 4687
Modified:
labs/jbossweb/trunk/src/share/examples/php/font.php
Log:
Otherwise the font files are not found.
Modified: labs/jbossweb/trunk/src/share/examples/php/font.php
===================================================================
--- labs/jbossweb/trunk/src/share/examples/php/font.php 2006-06-08 21:16:13 UTC (rev 4686)
+++ labs/jbossweb/trunk/src/share/examples/php/font.php 2006-06-08 22:05:22 UTC (rev 4687)
@@ -10,7 +10,7 @@
// improved by jean-frederic clere (jf...@ap...)
// The fonts are needed to have the nice letters.
- $fontdir = "";
+ $fontdir = "webapps/php-examples/";
if (!isset($height))
$height=60;
|
|
From: <jbo...@li...> - 2006-06-08 21:16:21
|
Author: adamw Date: 2006-06-08 17:16:13 -0400 (Thu, 08 Jun 2006) New Revision: 4686 Added: labs/shotoku/trunk/shotoku-tags/src/web/ labs/shotoku/trunk/shotoku-tags/src/web/WEB-INF/ labs/shotoku/trunk/shotoku-tags/src/web/WEB-INF/web.xml Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-86 Added: labs/shotoku/trunk/shotoku-tags/src/web/WEB-INF/web.xml =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/web/WEB-INF/web.xml 2006-06-08 21:13:03 UTC (rev 4685) +++ labs/shotoku/trunk/shotoku-tags/src/web/WEB-INF/web.xml 2006-06-08 21:16:13 UTC (rev 4686) @@ -0,0 +1,15 @@ +<?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> + <servlet> + <servlet-name>tagsTestServlet</servlet-name> + <servlet-class>org.jboss.shotoku.tags.test.TagsTestServlet</servlet-class> + </servlet> + + <servlet-mapping> + <servlet-name>tagsTestServlet</servlet-name> + <url-pattern>/servlet/*</url-pattern> + </servlet-mapping> +</web-app> |
|
From: <jbo...@li...> - 2006-06-08 21:13:13
|
Author: adamw Date: 2006-06-08 17:13:03 -0400 (Thu, 08 Jun 2006) New Revision: 4685 Added: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/IdEntity.java Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/AbstractTag.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/Tag.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagTools.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/WebsiteTag.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-86 Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/AbstractTag.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/AbstractTag.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/AbstractTag.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -8,8 +8,6 @@ * @author Adam Warski (ad...@as...) */ public abstract class AbstractTag implements Tag { - private Integer id; - private String name; private String author; private String resourceId; @@ -17,9 +15,8 @@ private Date dateCreated; - public AbstractTag(Integer id, String name, String author, String resourceId, + public AbstractTag(String name, String author, String resourceId, String data, Date dateCreated) { - this.id = id; this.name = name; this.author = author; this.resourceId = resourceId; @@ -27,23 +24,10 @@ this.dateCreated = dateCreated; } - public AbstractTag(TagEntity te) { - this.id = te.getId(); - this.name = te.getName(); - this.author = te.getAuthor(); - this.resourceId = te.getResourceId(); - this.data = te.getData(); - this.dateCreated = te.getDateCreated(); - } - /* * TAG implementation. */ - public Integer getId() { - return id; - } - public String getName() { return name; } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -11,18 +11,10 @@ public class ShotokuTag extends AbstractTag { public ShotokuTag(String name, String author, String resourceId, String data, Date dateCreated) { - super(null, name, author, resourceId, data, dateCreated); + super(name, author, resourceId, data, dateCreated); } - public ShotokuTag(ShotokuTagEntity te) { - super(te); - } - public String getType() { - return "shotoku"; + return TagTools.SHOTOKU_TAG; } - - public TagEntity getTagEntity() { - return new ShotokuTagEntity(this); - } } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/Tag.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/Tag.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/Tag.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -8,14 +8,10 @@ * @author Adam Warski (ad...@as...) */ public interface Tag { - public Integer getId(); - public String getName(); public String getAuthor(); public String getResourceId(); public String getData(); public String getType(); public Date getDateCreated(); - - public TagEntity getTagEntity(); } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagTools.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagTools.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagTools.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -11,6 +11,9 @@ public class TagTools { public static final String TAG_SERVICE_NAME = "shotoku:service=tag"; + public static final String SHOTOKU_TAG = "shotoku"; + public static final String WEBSITE_TAG = "website"; + private static TagService instance; /** Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/WebsiteTag.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/WebsiteTag.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/WebsiteTag.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -11,18 +11,10 @@ public class WebsiteTag extends AbstractTag { public WebsiteTag(String name, String author, String resourceId, String data, Date dateCreated) { - super(null, name, author, resourceId, data, dateCreated); + super(name, author, resourceId, data, dateCreated); } - public WebsiteTag(WebsiteTagEntity te) { - super(te); - } - public String getType() { - return "website"; + return TagTools.WEBSITE_TAG; } - - public TagEntity getTagEntity() { - return new WebsiteTagEntity(this); - } } Added: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/IdEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/IdEntity.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/IdEntity.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -0,0 +1,41 @@ +package org.jboss.shotoku.tags.dal; + +import javax.persistence.Embeddable; +import javax.persistence.Column; +import java.io.Serializable; + +/** + * @author Adam Warski (ad...@as...) + */ +@Embeddable +public class IdEntity implements Serializable { + private String name; + private String author; + private String resourceId; + + @Column(length = 32) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Column(length = 32) + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getResourceId() { + return resourceId; + } + + public void setResourceId(String resourceId) { + this.resourceId = resourceId; + } +} Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -15,15 +15,11 @@ @DiscriminatorValue("shotoku") public class ShotokuTagEntity extends TagEntity { public ShotokuTagEntity() { - - } - public ShotokuTagEntity(Tag t) { - super(t); } @Transient public AbstractTag getTag() { - return new ShotokuTag(this); + return new ShotokuTag(getName(), getAuthor(), getResourceId(), getData(), getDateCreated()); } } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -1,8 +1,6 @@ package org.jboss.shotoku.tags.dal; -import org.jboss.shotoku.tags.Tag; import org.jboss.shotoku.tags.AbstractTag; -import org.jboss.shotoku.tags.ShotokuTag; import javax.persistence.*; import java.util.Date; @@ -14,11 +12,9 @@ @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING, length = 255) -@Table(name = "ShotokuTags", - uniqueConstraints = {@UniqueConstraint(columnNames={"name", "author", "resourceId"})}) +@Table(name = "ShotokuTags") +@IdClass(IdEntity.class) public abstract class TagEntity implements Serializable { - private Integer id; - private String name; private String author; private String resourceId; @@ -30,30 +26,11 @@ } - public TagEntity(Tag t) { - this.id = t.getId(); - this.name = t.getName(); - this.author = t.getAuthor(); - this.resourceId = t.getResourceId(); - this.data = t.getData(); - this.dateCreated = t.getDateCreated(); - } - /* * Fields. */ @Id - @GeneratedValue(strategy = GenerationType.AUTO) - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - @Column(length = 32) public String getName() { return name; } @@ -62,7 +39,7 @@ this.name = name; } - @Column(length = 32) + @Id public String getAuthor() { return author; } @@ -71,6 +48,7 @@ this.author = author; } + @Id public String getResourceId() { return resourceId; } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -15,15 +15,11 @@ @DiscriminatorValue("website") public class WebsiteTagEntity extends TagEntity { public WebsiteTagEntity() { - - } - public WebsiteTagEntity(Tag t) { - super(t); } @Transient public AbstractTag getTag() { - return new WebsiteTag(this); + return new WebsiteTag(getName(), getAuthor(), getResourceId(), getData(), getDateCreated()); } } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -43,6 +43,8 @@ import org.jboss.shotoku.tags.exceptions.TagAddException; import org.jboss.shotoku.tags.exceptions.TagDeleteException; import org.jboss.shotoku.tags.dal.TagEntity; +import org.jboss.shotoku.tags.dal.ShotokuTagEntity; +import org.jboss.shotoku.tags.dal.WebsiteTagEntity; /** * @author Adam Warski (ad...@as...) @@ -143,15 +145,28 @@ @PersistenceContext private EntityManager manager; + private TagEntity getTagEntity(Tag t) { + TagEntity te = null; + if (TagTools.SHOTOKU_TAG.equals(t.getType())) { + te = new ShotokuTagEntity(); + } else if (TagTools.WEBSITE_TAG.equals(t.getType())) { + te = new WebsiteTagEntity(); + } + + if (te != null) { + te.setAuthor(t.getAuthor()); + te.setData(t.getData()); + te.setDateCreated(t.getDateCreated()); + te.setName(t.getName()); + te.setResourceId(t.getResourceId()); + } + + return te; + } + public void addTag(Tag t) throws TagAddException { try { - TagEntity te = t.getTagEntity(); - if (te.getId() == null) { - // TODO remove this beautiful hack when ejb3 is updated - te.setId((int) Calendar.getInstance().getTimeInMillis()); - } - - manager.persist(te); + manager.persist(getTagEntity(t)); } catch (Throwable e) { throw new TagAddException(e); } @@ -159,7 +174,7 @@ public void deleteTag(Tag t) throws TagDeleteException { try { - manager.remove(t.getTagEntity()); + manager.remove(getTagEntity(t)); } catch (Throwable e) { throw new TagDeleteException(e); } |
|
From: <jbo...@li...> - 2006-06-08 21:03:29
|
Author: szimano
Date: 2006-06-08 17:03:18 -0400 (Thu, 08 Jun 2006)
New Revision: 4684
Removed:
labs/jbosslabs/trunk/portal-extensions/forge-freezone/src/web/WEB-INF/jsp/
Modified:
labs/jbosslabs/trunk/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java
labs/jbosslabs/trunk/portal-extensions/forge-tagme/project.xml
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java
labs/jbosslabs/trunk/portal-extensions/forge-theme/project.xml
Log:
tags compatible with new tagserv code, tagme.jsp for freezone in cms
Modified: labs/jbosslabs/trunk/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2006-06-08 21:02:32 UTC (rev 4683)
+++ labs/jbosslabs/trunk/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2006-06-08 21:03:18 UTC (rev 4684)
@@ -57,6 +57,8 @@
private final static String ERROR_404_MSG = "404 - Not found.";
+ private final static String TAGME_JSP = "freezone/tagme.jsp";
+
private void sendResponseNotFound(JBossRenderResponse response)
throws IOException {
response.setContentType(Constants.PAGES_MIME_TYPE);
@@ -114,7 +116,7 @@
// (possibly) create a new page.ru
if (isAllowedToEdit(portalName, request, response)) {
response.setContentType(Constants.PAGES_MIME_TYPE);
- writeTagmeButton(request, response, requestedPath);
+ writeTagmeButton(portalName, request, response, requestedPath);
writeEditLink(portalName, requestedPath, request, response);
response.getWriter().println(ERROR_404_MSG);
} else {
@@ -125,7 +127,7 @@
}
response.setContentType(Constants.PAGES_MIME_TYPE);
- writeTagmeButton(request, response, requestedPath);
+ writeTagmeButton(portalName, request, response, requestedPath);
if (isAllowedToEdit(portalName, request, response)) {
writeEditLink(portalName, requestedPath, request, response);
Tools.transfer(requestedNode.getContentInputStream(), response
@@ -136,15 +138,17 @@
}
}
- private void writeTagmeButton(JBossRenderRequest request,
- JBossRenderResponse response, String requestedPath)
- throws PortletException, IOException {
+ private void writeTagmeButton(String portalName,
+ JBossRenderRequest request, JBossRenderResponse response,
+ String requestedPath) throws PortletException, IOException {
if (request.getUser() != null) {
request.setAttribute("TAGME_PATH", requestedPath);
request.setAttribute("TAGME_USER", request.getUser().getUserName());
-
+
PortletRequestDispatcher rd = getPortletContext()
- .getRequestDispatcher("/WEB-INF/jsp/normal.jsp");
+ .getRequestDispatcher(
+ ForgeHelper.createRepoAccessPath(portalName,
+ TAGME_JSP));
rd.include(request, response);
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/project.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/project.xml 2006-06-08 21:02:32 UTC (rev 4683)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/project.xml 2006-06-08 21:03:18 UTC (rev 4684)
@@ -42,5 +42,26 @@
<version>1.0</version>
<jar>shotoku-tags.jar</jar>
</dependency>
+
+ <dependency>
+ <groupId>jboss</groupId>
+ <artifactId>ejb3-persistence</artifactId>
+ <jar>ejb3-persistence.jar</jar>
+ </dependency>
+ <dependency>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-ejb3x</artifactId>
+ <jar>jboss-ejb3x.jar</jar>
+ </dependency>
+ <dependency>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-j2ee</artifactId>
+ <jar>jboss-j2ee.jar</jar>
+ </dependency>
+ <dependency>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-annotations-ejb3</artifactId>
+ <jar>jboss-annotations-ejb3.jar</jar>
+ </dependency>
</dependencies>
</project>
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java 2006-06-08 21:02:32 UTC (rev 4683)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java 2006-06-08 21:03:18 UTC (rev 4684)
@@ -26,6 +26,7 @@
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.RootPanel;
public class TagMe implements EntryPoint {
@@ -109,9 +110,14 @@
}
}
- private Button getButton(String path, String user, String clas) {
+ private Image getButton(String path, String user, String clas) {
- return new Button("TagMe", new TagMeShowPopupListener(path, user, clas));
+ Image image = new Image("/file-access/default/theme/images/but_tagme.gif");
+ image.setStyleName("tagme_btn");
+ image.addClickListener(new TagMeShowPopupListener(path, user, clas));
+
+ return image;
+ //return new Button("TagMe", new TagMeShowPopupListener(path, user, clas));
}
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java 2006-06-08 21:02:32 UTC (rev 4683)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java 2006-06-08 21:03:18 UTC (rev 4684)
@@ -21,7 +21,9 @@
*/
package org.jboss.labs.tagme.services;
+import java.util.Date;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.Vector;
@@ -32,6 +34,14 @@
import org.jboss.shotoku.exceptions.RepositoryException;
import org.jboss.shotoku.exceptions.ResourceDoesNotExist;
import org.jboss.shotoku.exceptions.SaveException;
+import org.jboss.shotoku.tags.ShotokuTag;
+import org.jboss.shotoku.tags.Tag;
+import org.jboss.shotoku.tags.TagList;
+import org.jboss.shotoku.tags.TagService;
+import org.jboss.shotoku.tags.TagTools;
+import org.jboss.shotoku.tags.exceptions.TagAddException;
+import org.jboss.shotoku.tags.exceptions.TagDeleteException;
+import org.jboss.shotoku.tags.exceptions.TagGetException;
public class ShotokuTaggingService implements TagMeTagger {
@@ -40,108 +50,117 @@
private static final Logger log = Logger
.getLogger(ShotokuTaggingService.class);
+ private TagService service = TagTools.getService();
+
public Vector getTags(String path) {
log.info("Getting tags for: " + path);
- ContentManager manager = ContentManager.getContentManager();
Vector<String> tags = new Vector<String>();
- Node node;
try {
- node = manager.getNode(path);
+ TagList tagList = service.getTags(path);
- Map<String, String> map = node.getProperties();
+ if (tagList != null) {
+ List<Tag> allTags = tagList.getList();
- for (String key : map.keySet()) {
- log.info(key);
- if (key.startsWith(SHOTOKU_TAG)) {
- String tag = (String) map.get(key);
- String user = (String) key.substring(key.indexOf(':') + 1,
- key.lastIndexOf(':'));
- tags.add(tag + TagMeClickListener.TAG_SEP + user
- + TagMeClickListener.TAG_SEP + user);
+ for (Tag tag : allTags) {
+ tags.add(tag.getName() + TagMeClickListener.TAG_SEP
+ + tag.getAuthor() + TagMeClickListener.TAG_SEP
+ + tag.getAuthor());
}
}
- } catch (RepositoryException e) {
+ } catch (TagGetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
- } catch (ResourceDoesNotExist e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
}
+ /*
+ * ContentManager manager = ContentManager.getContentManager();
+ *
+ * Node node; try { node = manager.getNode(path);
+ *
+ * Map<String, String> map = node.getProperties();
+ *
+ * for (String key : map.keySet()) { log.info(key); if
+ * (key.startsWith(SHOTOKU_TAG)) { String tag = (String) map.get(key);
+ * String user = (String) key.substring(key.indexOf(':') + 1,
+ * key.lastIndexOf(':')); tags.add(tag + TagMeClickListener.TAG_SEP +
+ * user + TagMeClickListener.TAG_SEP + user); } } } catch
+ * (RepositoryException e) { // TODO Auto-generated catch block
+ * e.printStackTrace(); } catch (ResourceDoesNotExist e) { // TODO
+ * Auto-generated catch block e.printStackTrace(); }
+ */
return tags;
}
public void addTag(String user, String path, String tag) {
log.info("Adding tag: " + tag + " for node: " + path);
- ContentManager manager = ContentManager.getContentManager();
-
- Node node;
-
try {
- node = manager.getNode(path);
-
- if (!getTags(path).contains(tag)) {
- int i = 0;
- while (node.getProperty(SHOTOKU_TAG + ":" + user + ":" + i) != null) {
- i++;
- }
-
- node.setProperty(SHOTOKU_TAG + ":" + user + ":" + i, tag);
-
- try {
- node.save("Saving tag: " + tag + " by: " + user);
- } catch (SaveException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- } catch (RepositoryException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ResourceDoesNotExist e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ service.addTag(new ShotokuTag(tag, user, path, null, new Date()));
+ } catch (TagAddException e) {
+ throw new RuntimeException(e);
}
+ /*
+ * ContentManager manager = ContentManager.getContentManager();
+ *
+ * Node node;
+ *
+ * try { node = manager.getNode(path);
+ *
+ * if (!getTags(path).contains(tag)) { int i = 0; while
+ * (node.getProperty(SHOTOKU_TAG + ":" + user + ":" + i) != null) { i++; }
+ *
+ * node.setProperty(SHOTOKU_TAG + ":" + user + ":" + i, tag);
+ *
+ * try { node.save("Saving tag: " + tag + " by: " + user); } catch
+ * (SaveException e) { // TODO Auto-generated catch block
+ * e.printStackTrace(); } } } catch (RepositoryException e) { // TODO
+ * Auto-generated catch block e.printStackTrace(); } catch
+ * (ResourceDoesNotExist e) { // TODO Auto-generated catch block
+ * e.printStackTrace(); }
+ */
}
public void deleteTag(String user, String path, String tag) {
+ log.info("Deleting tag " + tag + " " + path + "...");
+
try {
- log.info("Deleting tag " + tag + " " + path + "...");
+ List<Tag> tags = service.getTags(path).getList();
- Node node = ContentManager.getContentManager().getNode(path);
-
- Iterator it = node.getProperties().keySet().iterator();
- boolean found = false;
- String key = null;
-
- while (!found && it.hasNext()) {
- key = (String) it.next();
- if (node.getProperties().get(key).equals(tag)) {
- found = true;
+ for (Tag tagObj : tags) {
+ if (tagObj.getName().equals(tag)
+ && tagObj.getAuthor().equals(user)) {
+ service.deleteTag(tagObj);
}
}
+ } catch (TagGetException e) {
+ throw new RuntimeException(e);
+ } catch (TagDeleteException e) {
+ throw new RuntimeException(e);
+ }
- if (found) {
- node.deleteProperty(key);
- try {
- node.save("Removing tag: " + tag + " by user: " + user);
-
- log.info("tag deleted ! (key: " + key + " )");
- } catch (SaveException e) {
- e.printStackTrace();
- }
- }
-
- } catch (RepositoryException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ResourceDoesNotExist e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
+ /*
+ * try {
+ *
+ *
+ * Node node = ContentManager.getContentManager().getNode(path);
+ *
+ * Iterator it = node.getProperties().keySet().iterator(); boolean found =
+ * false; String key = null;
+ *
+ * while (!found && it.hasNext()) { key = (String) it.next(); if
+ * (node.getProperties().get(key).equals(tag)) { found = true; } }
+ *
+ * if (found) { node.deleteProperty(key); try { node.save("Removing tag: " +
+ * tag + " by user: " + user);
+ *
+ * log.info("tag deleted ! (key: " + key + " )"); } catch (SaveException
+ * e) { e.printStackTrace(); } } } catch (RepositoryException e) { //
+ * TODO Auto-generated catch block e.printStackTrace(); } catch
+ * (ResourceDoesNotExist e) { // TODO Auto-generated catch block
+ * e.printStackTrace(); }
+ */
}
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-theme/project.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-theme/project.xml 2006-06-08 21:02:32 UTC (rev 4683)
+++ labs/jbosslabs/trunk/portal-extensions/forge-theme/project.xml 2006-06-08 21:03:18 UTC (rev 4684)
@@ -45,5 +45,6 @@
<version>1.0</version>
<jar>javax.servlet.jar</jar>
</dependency>
+
</dependencies>
</project>
|
|
From: <jbo...@li...> - 2006-06-08 21:02:35
|
Author: jfr...@jb...
Date: 2006-06-08 17:02:32 -0400 (Thu, 08 Jun 2006)
New Revision: 4683
Modified:
labs/jbossweb/trunk/src/share/native/build/buildphp.sh
Log:
Remove the possible previous build.
Modified: labs/jbossweb/trunk/src/share/native/build/buildphp.sh
===================================================================
--- labs/jbossweb/trunk/src/share/native/build/buildphp.sh 2006-06-08 20:58:53 UTC (rev 4682)
+++ labs/jbossweb/trunk/src/share/native/build/buildphp.sh 2006-06-08 21:02:32 UTC (rev 4683)
@@ -656,6 +656,9 @@
exit 1
fi
+#
+# Clean up the possible previous build
+rm -rf $TOOLS/PHP
(cd php-${PHPVER}
make clean
)
|
|
From: <jbo...@li...> - 2006-06-08 20:58:55
|
Author: jfr...@jb...
Date: 2006-06-08 16:58:53 -0400 (Thu, 08 Jun 2006)
New Revision: 4682
Modified:
labs/jbossweb/trunk/src/share/native/build/buildphp.sh
Log:
Remove crypto... means removing a little more.
Modified: labs/jbossweb/trunk/src/share/native/build/buildphp.sh
===================================================================
--- labs/jbossweb/trunk/src/share/native/build/buildphp.sh 2006-06-08 20:36:13 UTC (rev 4681)
+++ labs/jbossweb/trunk/src/share/native/build/buildphp.sh 2006-06-08 20:58:53 UTC (rev 4682)
@@ -72,6 +72,8 @@
ADDCONF=""
LGDCONF=""
+ALLOWCRYPTO=false
+
#
# Fonctions
# Extract
@@ -212,7 +214,7 @@
BUILDMSQL=true
;;
CRYPT)
- ALLOWCRYPTO=true
+ ALLOWCRYPTO=true
;;
*)
echo "$i: not (yet) supported"
@@ -351,7 +353,7 @@
esac
#
-# build iconv if required.
+# build freetype2 if required.
if ${BUILDFTT2}
then
Extract freetype ${FTT2URL} ${FTT2VER}
@@ -495,7 +497,7 @@
)
ADDCONF="$ADDCONF --with-openssl=$TOOLS/SSL --with-openssl-dir=$TOOLS/SSL"
else
- if ${ALLOWCRYTP}
+ if ${ALLOWCRYPTO}
then
ADDCONF="$ADDCONF --with-openssl"
else
@@ -577,6 +579,10 @@
fi
# configure php
+if ! ${ALLOWCRYPTO}
+then
+ ADDCONF="$ADDCONF --without-iconv --without-kerberos --without-ldap-sasl --without-curl --without-bz2"
+fi
if [ ${CC} = "cc" ]
then
# Sun Studio
|
|
From: <jbo...@li...> - 2006-06-08 20:36:19
|
Author: KrisVerlaenen
Date: 2006-06-08 16:36:13 -0400 (Thu, 08 Jun 2006)
New Revision: 4681
Modified:
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/outline/ExpanderTreeNode.java
Log:
JBRULES-283 DSL icon in outline view not showing
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/outline/ExpanderTreeNode.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/outline/ExpanderTreeNode.java 2006-06-08 20:17:04 UTC (rev 4680)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/outline/ExpanderTreeNode.java 2006-06-08 20:36:13 UTC (rev 4681)
@@ -22,7 +22,7 @@
}
public ImageDescriptor getImageDescriptor(Object object) {
- return DroolsIDEPlugin.getImageDescriptor( "icons/dsl.gif" );
+ return DroolsIDEPlugin.getImageDescriptor( "icons/dsl.GIF" );
}
public String getLabel(Object o) {
|
|
From: <jbo...@li...> - 2006-06-08 20:17:07
|
Author: KrisVerlaenen
Date: 2006-06-08 16:17:04 -0400 (Thu, 08 Jun 2006)
New Revision: 4680
Modified:
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/util/DroolsClasspathContainer.java
Log:
JBRULES-298 The Drools library in the packaged plugin also contains the ide.jar
- Fixed classpath container so it only adds jar files in the lib dir
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/util/DroolsClasspathContainer.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/util/DroolsClasspathContainer.java 2006-06-08 19:39:52 UTC (rev 4679)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/util/DroolsClasspathContainer.java 2006-06-08 20:17:04 UTC (rev 4680)
@@ -66,15 +66,17 @@
}
private void addJarNames(File file, List list) {
- if (file.isDirectory()) {
- File afile[] = file.listFiles();
- for (int i = 0; i < afile.length; i++)
- addJarNames(afile[i], list);
-
+ File[] files = file.listFiles();
+ for (int i = 0; i < files.length; i++) {
+ if (files[i].isDirectory() && files[i].getName().equals("lib")) {
+ File[] jarFiles = files[i].listFiles();
+ for (int j = 0; j < jarFiles.length; j++) {
+ if (jarFiles[j].getPath().endsWith(".jar")) {
+ list.add(jarFiles[j].getAbsolutePath());
+ }
+ }
+ }
}
- if (file.getPath().endsWith(".jar")) {
- list.add(file.getAbsolutePath());
- }
}
private String getDroolsLocation() {
|
Author: KrisVerlaenen
Date: 2006-06-08 15:39:52 -0400 (Thu, 08 Jun 2006)
New Revision: 4679
Modified:
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsLineBreakpoint.java
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLAnnotationModel.java
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLDocumentProvider.java
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor.java
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DroolsLineBreakpointAdapter.java
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/DefaultCompletionProcessor.java
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/LocationDeterminator.java
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/RuleCompletionProcessor.java
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/RuleCompletionProposal.java
labs/jbossrules/trunk/drools-ide/src/test/java/org/drools/ide/editors/completion/ContextScanningTest.java
labs/jbossrules/trunk/drools-ide/src/test/java/org/drools/ide/editors/completion/LocationDeterminatorTest.java
Log:
JBRULES-284 LHS object type content assistance to include classes that are imported implicitly
- LHS object type content assistance also includes all classes in package of rule and all classes imported using .*
JBRULES-296 Code completion should suggest operators and arguments inside column constraints
- added more advanced location determination and code completion for this
- added unit tests
JBRULES-297 Code completion in RHS (and possibly LHS) of a rule should include already defined variables
- both LHS and RHS code completion suggests all known LHS variables at that point
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsLineBreakpoint.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsLineBreakpoint.java 2006-06-08 18:47:25 UTC (rev 4678)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/debug/core/DroolsLineBreakpoint.java 2006-06-08 19:39:52 UTC (rev 4679)
@@ -3,7 +3,6 @@
import java.util.HashMap;
import java.util.Map;
-import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.internal.debug.core.breakpoints.JavaLineBreakpoint;
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLAnnotationModel.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLAnnotationModel.java 2006-06-08 18:47:25 UTC (rev 4678)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLAnnotationModel.java 2006-06-08 19:39:52 UTC (rev 4679)
@@ -1,7 +1,5 @@
package org.drools.ide.editors;
-import java.util.Map;
-
import org.drools.ide.DroolsIDEPlugin;
import org.drools.ide.debug.core.IDroolsDebugConstants;
import org.eclipse.core.resources.IMarker;
@@ -23,7 +21,6 @@
return super.createPositionFromMarker(marker);
}
int line = marker.getAttribute(IDroolsDebugConstants.DRL_LINE_NUMBER, -1);
- Map attributes = marker.getAttributes();
try {
return new Position(fDocument.getLineOffset(line - 1));
} catch (BadLocationException exc) {
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLDocumentProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLDocumentProvider.java 2006-06-08 18:47:25 UTC (rev 4678)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLDocumentProvider.java 2006-06-08 19:39:52 UTC (rev 4679)
@@ -2,12 +2,10 @@
import org.drools.ide.editors.scanners.DRLPartionScanner;
import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.jface.text.rules.FastPartitioner;
import org.eclipse.jface.text.source.IAnnotationModel;
-import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.editors.text.TextFileDocumentProvider;
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor.java 2006-06-08 18:47:25 UTC (rev 4678)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor.java 2006-06-08 19:39:52 UTC (rev 4679)
@@ -1,16 +1,28 @@
package org.drools.ide.editors;
+import java.io.Reader;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
+import org.drools.compiler.DrlParser;
+import org.drools.compiler.DroolsParserException;
import org.drools.ide.DroolsIDEPlugin;
+import org.drools.ide.builder.DroolsBuilder;
import org.drools.ide.debug.core.IDroolsDebugConstants;
import org.drools.ide.editors.outline.RuleContentOutlinePage;
import org.drools.ide.editors.scanners.RuleEditorMessages;
+import org.drools.lang.descr.FunctionDescr;
+import org.drools.lang.descr.PackageDescr;
import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.debug.ui.actions.IToggleBreakpointsTarget;
+import org.eclipse.jdt.core.CompletionRequestor;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
@@ -22,7 +34,10 @@
import org.eclipse.jface.text.source.projection.ProjectionSupport;
import org.eclipse.jface.text.source.projection.ProjectionViewer;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.editors.text.TextEditor;
+import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
import org.eclipse.ui.texteditor.TextOperationAction;
import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
@@ -38,6 +53,8 @@
private DSLAdapter dslAdapter;
private List imports;
private List functions;
+ private String packageName;
+ private List classesInPackage;
private RuleContentOutlinePage ruleContentOutline = null;
private Annotation[] oldAnnotations;
@@ -111,22 +128,99 @@
dslAdapter = adapter;
}
- public void setImports(List imports) {
- this.imports = imports;
- }
-
public List getImports() {
+ if (imports == null) {
+ loadImportsAndFunctions();
+ }
return imports;
}
-
- public void setFunctions(List functions) {
- this.functions = functions;
+
+ private void loadImportsAndFunctions() {
+ try {
+ String content = getSourceViewer().getDocument().get();
+ Reader dslReader = DSLAdapter.getDSLContent(content, ((FileEditorInput) getEditorInput()).getFile());
+ DrlParser parser = new DrlParser();
+ PackageDescr descr = DroolsBuilder.parsePackage(content, parser, dslReader);
+ // package
+ this.packageName = descr.getName();
+ // imports
+ List allImports = descr.getImports();
+ this.imports = new ArrayList();
+ Iterator iterator = allImports.iterator();
+ while (iterator.hasNext()) {
+ String importName = (String) iterator.next();
+ if (importName.endsWith(".*")) {
+ String packageName = importName.substring(0, importName.length() - 2);
+ imports.addAll(getAllClassesInPackage(packageName));
+ } else {
+ imports.add(importName);
+ }
+ }
+ // functions
+ List functionDescrs = descr.getFunctions();
+ List functions = new ArrayList(functionDescrs.size());
+ iterator = functionDescrs.iterator();
+ while (iterator.hasNext()) {
+ functions.add(((FunctionDescr) iterator.next()).getName());
+ }
+ this.functions = functions;
+ } catch (CoreException exc) {
+ DroolsIDEPlugin.log(exc);
+ } catch (DroolsParserException exc) {
+ // do nothing
+ }
}
public List getFunctions() {
+ if (functions == null) {
+ loadImportsAndFunctions();
+ }
return functions;
}
+
+ public String getPackage() {
+ if (packageName == null) {
+ loadImportsAndFunctions();
+ }
+ return packageName;
+ }
+
+ public List getClassesInPackage() {
+ if (classesInPackage == null) {
+ classesInPackage = getAllClassesInPackage(getPackage());
+ }
+ return classesInPackage;
+ }
+
+ private List getAllClassesInPackage(String packageName) {
+ final List list = new ArrayList();
+ if (packageName != null) {
+ IEditorInput input = getEditorInput();
+ if (input instanceof IFileEditorInput) {
+ IProject project = ((IFileEditorInput) input).getFile().getProject();
+ IJavaProject javaProject = JavaCore.create(project);
+
+ CompletionRequestor requestor = new CompletionRequestor() {
+ public void accept(org.eclipse.jdt.core.CompletionProposal proposal) {
+ String className = new String(proposal.getCompletion());
+ if (proposal.getKind() == org.eclipse.jdt.core.CompletionProposal.TYPE_REF) {
+ list.add(className);
+ }
+ // ignore all other proposals
+ }
+ };
+
+ try {
+ javaProject.newEvaluationContext().codeComplete(packageName + ".", packageName.length() + 1, requestor);
+ } catch (Throwable t) {
+ DroolsIDEPlugin.log(t);
+ }
+ }
+ }
+ return list;
+ }
+
public Object getAdapter(Class adapter) {
if (adapter.equals(IContentOutlinePage.class)) {
return getContentOutline();
@@ -156,6 +250,8 @@
dslAdapter = null;
imports = null;
functions = null;
+ packageName = null;
+ classesInPackage = null;
}
public void gotoMarker(IMarker marker) {
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DroolsLineBreakpointAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DroolsLineBreakpointAdapter.java 2006-06-08 18:47:25 UTC (rev 4678)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DroolsLineBreakpointAdapter.java 2006-06-08 19:39:52 UTC (rev 4679)
@@ -6,7 +6,6 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.debug.core.model.ILineBreakpoint;
import org.eclipse.debug.ui.actions.IToggleBreakpointsTarget;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.viewers.ISelection;
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/DefaultCompletionProcessor.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/DefaultCompletionProcessor.java 2006-06-08 18:47:25 UTC (rev 4678)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/DefaultCompletionProcessor.java 2006-06-08 19:39:52 UTC (rev 4679)
@@ -137,7 +137,7 @@
char[] c = prefix.toCharArray();
int start = 0;
for (int i = c.length - 1; i >=0; i-- ) {
- if (Character.isWhitespace(c[i]) || c[i] == '(') {
+ if (Character.isWhitespace(c[i]) || c[i] == '(' || c[i] == ':' || c[i] == '=' || c[i] == '<' || c[i] == '>') {
start = i + 1;
break;
}
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/LocationDeterminator.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/LocationDeterminator.java 2006-06-08 18:47:25 UTC (rev 4678)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/LocationDeterminator.java 2006-06-08 19:39:52 UTC (rev 4679)
@@ -3,6 +3,8 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.drools.compiler.DrlParser;
import org.drools.compiler.DroolsParserException;
@@ -15,14 +17,24 @@
public class LocationDeterminator {
+ static final Pattern COLUMN_PATTERN_START = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*[^\\s<>!=:]*", Pattern.DOTALL);
+ static final Pattern COLUMN_PATTERN_OPERATOR = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:]+)\\s+", Pattern.DOTALL);
+ static final Pattern COLUMN_PATTERN_CONTAINS_ARGUMENT = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:]+)\\s+contains\\s+", Pattern.DOTALL);
+ static final Pattern COLUMN_PATTERN_MATCHES_ARGUMENT = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:]+)\\s+matches\\s+", Pattern.DOTALL);
+ static final Pattern COLUMN_PATTERN_EXCLUDES_ARGUMENT = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:]+)\\s+excludes\\s+", Pattern.DOTALL);
+ static final Pattern COLUMN_PATTERN_COMPARATOR_ARGUMENT = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:]+)\\s*([<>=!]+)\\s*[^\\s<>!=:]*", Pattern.DOTALL);
+
static final int LOCATION_UNKNOWN = 0;
static final int LOCATION_BEGIN_OF_CONDITION = 1;
static final int LOCATION_INSIDE_CONDITION_START = 100;
+ static final int LOCATION_INSIDE_CONDITION_OPERATOR = 101;
+ static final int LOCATION_INSIDE_CONDITION_ARGUMENT = 102;
static final String LOCATION_PROPERTY_CLASS_NAME = "ClassName";
+ static final String LOCATION_PROPERTY_PROPERTY_NAME = "PropertyName";
- private LocationDeterminator() {
+ private LocationDeterminator() {
}
public static class Location {
@@ -52,7 +64,7 @@
PackageDescr packageDescr = parser.parse(backText);
List rules = packageDescr.getRules();
if (rules != null && rules.size() == 1) {
- return determineLocationForDescr((RuleDescr) rules.get(0));
+ return determineLocationForDescr((RuleDescr) rules.get(0), backText);
}
} catch (DroolsParserException exc) {
// do nothing
@@ -60,7 +72,7 @@
return new Location(LOCATION_UNKNOWN);
}
- public static Location determineLocationForDescr(PatternDescr descr) {
+ public static Location determineLocationForDescr(PatternDescr descr, String backText) {
if (descr instanceof RuleDescr) {
RuleDescr ruleDescr = (RuleDescr) descr;
List subDescrs = ruleDescr.getLhs().getDescrs();
@@ -74,10 +86,61 @@
if (subDescr.getEndLine() != 0 || subDescr.getEndColumn() != 0) {
return new Location(LOCATION_BEGIN_OF_CONDITION);
}
- return determineLocationForDescr(subDescr);
+ return determineLocationForDescr(subDescr, backText);
} else if (descr instanceof ColumnDescr) {
+ ColumnDescr columnDescr = (ColumnDescr) descr;
+ // TODO: this is not completely safe, there are rare occasions where this could fail
+ Pattern pattern = Pattern.compile(".*(" + columnDescr.getObjectType() + ")\\s*\\((.*)");
+ Matcher matcher = pattern.matcher(backText);
+ String columnContents = null;
+ while (matcher.find()) {
+ columnContents = "(" + matcher.group(2);
+ }
+ if (columnContents == null) {
+ return new Location(LOCATION_BEGIN_OF_CONDITION);
+ }
+ matcher = COLUMN_PATTERN_OPERATOR.matcher(columnContents);
+ if (matcher.matches()) {
+ Location location = new Location(LOCATION_INSIDE_CONDITION_OPERATOR);
+ location.setProperty(LOCATION_PROPERTY_CLASS_NAME, columnDescr.getObjectType());
+ return location;
+ }
+ matcher = COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher(columnContents);
+ if (matcher.matches()) {
+ Location location = new Location(LOCATION_INSIDE_CONDITION_ARGUMENT);
+ location.setProperty(LOCATION_PROPERTY_CLASS_NAME, columnDescr.getObjectType());
+ location.setProperty(LOCATION_PROPERTY_PROPERTY_NAME, matcher.group(3));
+ return location;
+ }
+ matcher = COLUMN_PATTERN_CONTAINS_ARGUMENT.matcher(columnContents);
+ if (matcher.matches()) {
+ Location location = new Location(LOCATION_INSIDE_CONDITION_ARGUMENT);
+ location.setProperty(LOCATION_PROPERTY_CLASS_NAME, columnDescr.getObjectType());
+ location.setProperty(LOCATION_PROPERTY_PROPERTY_NAME, matcher.group(3));
+ return location;
+ }
+ matcher = COLUMN_PATTERN_EXCLUDES_ARGUMENT.matcher(columnContents);
+ if (matcher.matches()) {
+ Location location = new Location(LOCATION_INSIDE_CONDITION_ARGUMENT);
+ location.setProperty(LOCATION_PROPERTY_CLASS_NAME, columnDescr.getObjectType());
+ location.setProperty(LOCATION_PROPERTY_PROPERTY_NAME, matcher.group(3));
+ return location;
+ }
+ matcher = COLUMN_PATTERN_MATCHES_ARGUMENT.matcher(columnContents);
+ if (matcher.matches()) {
+ Location location = new Location(LOCATION_INSIDE_CONDITION_ARGUMENT);
+ location.setProperty(LOCATION_PROPERTY_CLASS_NAME, columnDescr.getObjectType());
+ location.setProperty(LOCATION_PROPERTY_PROPERTY_NAME, matcher.group(3));
+ return location;
+ }
+ matcher = COLUMN_PATTERN_START.matcher(columnContents);
+ if (matcher.matches()) {
+ Location location = new Location(LOCATION_INSIDE_CONDITION_START);
+ location.setProperty(LOCATION_PROPERTY_CLASS_NAME, columnDescr.getObjectType());
+ return location;
+ }
Location location = new Location(LOCATION_INSIDE_CONDITION_START);
- location.setProperty(LOCATION_PROPERTY_CLASS_NAME, ((ColumnDescr) descr).getObjectType());
+ location.setProperty(LOCATION_PROPERTY_CLASS_NAME, columnDescr.getObjectType());
return location;
} else if (descr instanceof ExistsDescr) {
List subDescrs = ((ExistsDescr) descr).getDescrs();
@@ -92,9 +155,9 @@
if (subDescr.getEndLine() != 0 || subDescr.getEndColumn() != 0) {
return new Location(LOCATION_BEGIN_OF_CONDITION);
}
- return determineLocationForDescr(subDescr);
+ return determineLocationForDescr(subDescr, backText);
}
- return determineLocationForDescr(descr);
+ return determineLocationForDescr(descr, backText);
} else if (descr instanceof NotDescr) {
List subDescrs = ((NotDescr) descr).getDescrs();
if (subDescrs.size() == 0) {
@@ -108,9 +171,9 @@
if (subDescr.getEndLine() != 0 || subDescr.getEndColumn() != 0) {
return new Location(LOCATION_BEGIN_OF_CONDITION);
}
- return determineLocationForDescr(subDescr);
+ return determineLocationForDescr(subDescr, backText);
}
- return determineLocationForDescr(descr);
+ return determineLocationForDescr(descr, backText);
}
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/RuleCompletionProcessor.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/RuleCompletionProcessor.java 2006-06-08 18:47:25 UTC (rev 4678)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/RuleCompletionProcessor.java 2006-06-08 19:39:52 UTC (rev 4679)
@@ -1,7 +1,6 @@
package org.drools.ide.editors.completion;
import java.io.IOException;
-import java.io.Reader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -14,13 +13,11 @@
import org.drools.compiler.DroolsParserException;
import org.drools.ide.DroolsIDEPlugin;
import org.drools.ide.DroolsPluginImages;
-import org.drools.ide.builder.DroolsBuilder;
import org.drools.ide.editors.DRLRuleEditor;
import org.drools.ide.editors.DSLAdapter;
import org.drools.ide.util.ProjectClassLoader;
import org.drools.lang.descr.ColumnDescr;
import org.drools.lang.descr.FieldBindingDescr;
-import org.drools.lang.descr.FunctionDescr;
import org.drools.lang.descr.PackageDescr;
import org.drools.lang.descr.PatternDescr;
import org.drools.lang.descr.RuleDescr;
@@ -98,7 +95,7 @@
list,
prefix );
-// addRHSJavaCompletionProposals(list, backText, prefix);
+ addRHSJavaCompletionProposals(list, backText, prefix);
}
} else if (condition(backText)) {
List dslConditions = adapter.listConditionItems();
@@ -135,23 +132,36 @@
list.add( new RuleCompletionProposal(prefix.length(), "not", "not ", droolsIcon));
list.add( new RuleCompletionProposal(prefix.length(), "and", "and ", droolsIcon));
list.add( new RuleCompletionProposal(prefix.length(), "or", "or ", droolsIcon));
- RuleCompletionProposal prop = new RuleCompletionProposal(prefix.length(), "eval", "eval()", 5 );
+ RuleCompletionProposal prop = new RuleCompletionProposal(prefix.length(), "eval", "eval( )", 6 );
prop.setImage(droolsIcon);
list.add(prop);
// and add imported classes
- List imports = getImports(viewer);
+ List imports = getDRLEditor().getImports();
iterator = imports.iterator();
while (iterator.hasNext()) {
String name = (String) iterator.next();
int index = name.lastIndexOf(".");
if (index != -1) {
String className = name.substring(index + 1);
- RuleCompletionProposal p = new RuleCompletionProposal(prefix.length(), className, className + "()", className.length() + 1);
+ RuleCompletionProposal p = new RuleCompletionProposal(prefix.length(), className, className + "( )", className.length() + 2);
p.setPriority(-1);
p.setImage(classIcon);
list.add(p);
}
}
+ List classesInPackage = getDRLEditor().getClassesInPackage();
+ iterator = classesInPackage.iterator();
+ while (iterator.hasNext()) {
+ String name = (String) iterator.next();
+ int index = name.lastIndexOf(".");
+ if (index != -1) {
+ String className = name.substring(index + 1);
+ RuleCompletionProposal p = new RuleCompletionProposal(prefix.length(), className, className + "( )", className.length() + 2);
+ p.setPriority(-1);
+ p.setImage(classIcon);
+ list.add(p);
+ }
+ }
prop = new RuleCompletionProposal(prefix.length(), "then", "then" + System.getProperty("line.separator") + "\t");
prop.setImage(droolsIcon);
list.add(prop);
@@ -159,14 +169,14 @@
case LocationDeterminator.LOCATION_INSIDE_CONDITION_START :
String className = (String) location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME);
if (className != null) {
- ClassTypeResolver resolver = new ClassTypeResolver(getImports(viewer), ProjectClassLoader.getProjectClassLoader(getEditor()));
+ ClassTypeResolver resolver = new ClassTypeResolver(getDRLEditor().getImports(), ProjectClassLoader.getProjectClassLoader(getEditor()));
try {
Class clazz = resolver.resolveType(className);
if (clazz != null) {
Iterator iterator2 = new ClassFieldInspector(clazz).getFieldNames().keySet().iterator();
while (iterator2.hasNext()) {
String name = (String) iterator2.next();
- RuleCompletionProposal p = new RuleCompletionProposal(prefix.length(), name);
+ RuleCompletionProposal p = new RuleCompletionProposal(prefix.length(), name, name + " ");
p.setImage(methodIcon);
list.add(p);
}
@@ -178,6 +188,73 @@
}
}
break;
+ case LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR :
+ list.add( new RuleCompletionProposal(prefix.length(), "<", "< ", droolsIcon));
+ list.add( new RuleCompletionProposal(prefix.length(), "<=", "<= ", droolsIcon));
+ list.add( new RuleCompletionProposal(prefix.length(), ">", "> ", droolsIcon));
+ list.add( new RuleCompletionProposal(prefix.length(), ">=", ">= ", droolsIcon));
+ list.add( new RuleCompletionProposal(prefix.length(), "==", "== ", droolsIcon));
+ list.add( new RuleCompletionProposal(prefix.length(), "!=", "!= ", droolsIcon));
+ list.add( new RuleCompletionProposal(prefix.length(), "matches", "matches ", droolsIcon));
+ list.add( new RuleCompletionProposal(prefix.length(), "contains", "contains ", droolsIcon));
+ list.add( new RuleCompletionProposal(prefix.length(), "excludes", "excludes ", droolsIcon));
+ list.add( new RuleCompletionProposal(prefix.length(), ":", ": ", droolsIcon));
+ list.add( new RuleCompletionProposal(prefix.length(), "->", "-> ( )", 5, droolsIcon));
+ break;
+ case LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT :
+ // determine type
+ className = (String) location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME);
+ String property = (String) location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME);
+ String type = null;
+ if (className != null) {
+ ClassTypeResolver resolver = new ClassTypeResolver(getDRLEditor().getImports(), ProjectClassLoader.getProjectClassLoader(getEditor()));
+ try {
+ Class clazz = resolver.resolveType(className);
+ if (clazz != null) {
+ Class clazzz = (Class) new ClassFieldInspector(clazz).getFieldTypes().get(property);
+ if (clazzz != null) {
+ type = clazzz.getName();
+ }
+ }
+ } catch (IOException exc) {
+ // Do nothing
+ } catch (ClassNotFoundException exc) {
+ // Do nothing
+ }
+ }
+
+ list.add( new RuleCompletionProposal(prefix.length(), "null", "null", droolsIcon));
+ if (type == null || "boolean".equals(type)) {
+ list.add( new RuleCompletionProposal(prefix.length(), "true", "true", droolsIcon));
+ list.add( new RuleCompletionProposal(prefix.length(), "false", "false", droolsIcon));
+ }
+ if (type == null || "java.lang.String".equals(type)) {
+ list.add( new RuleCompletionProposal(prefix.length(), "\"\"", "\"\"", 1, droolsIcon));
+ }
+ if (type == null || "java.util.Date".equals(type)) {
+ list.add( new RuleCompletionProposal(prefix.length(), "\"dd-mmm-yyyy\"", "\"dd-mmm-yyyy\"", 1, droolsIcon));
+ }
+ list.add( new RuleCompletionProposal(prefix.length(), "()", "( )", 2, droolsIcon));
+ DrlParser parser = new DrlParser();
+ try {
+ PackageDescr descr = parser.parse(backText);
+ List rules = descr.getRules();
+ if (rules != null && rules.size() == 1) {
+ Map result = new HashMap();
+ getRuleParameters(result, ((RuleDescr) rules.get(0)).getLhs().getDescrs());
+ Iterator iterator2 = result.keySet().iterator();
+ while (iterator2.hasNext()) {
+ String name = (String) iterator2.next();
+ RuleCompletionProposal proposal = new RuleCompletionProposal(prefix.length(), name);
+ proposal.setPriority(-1);
+ proposal.setImage(methodIcon);
+ list.add(proposal);
+ }
+ }
+ } catch (DroolsParserException exc) {
+ // do nothing
+ }
+ break;
}
}
}
@@ -213,7 +290,7 @@
DroolsParserException {
Iterator iterator;
RuleCompletionProposal prop;
- List functions = getFunctions(viewer);
+ List functions = getDRLEditor().getFunctions();
iterator = functions.iterator();
while (iterator.hasNext()) {
String name = (String) iterator.next() + "()";
@@ -262,8 +339,8 @@
} catch (DroolsParserException exc) {
// do nothing
}
- String consequence = backText.substring(thenPosition + 4);
- list.addAll(getRHSJavaCompletionProposals(consequence, prefix));
+ // String consequence = backText.substring(thenPosition + 4);
+ // list.addAll(getRHSJavaCompletionProposals(consequence, prefix));
}
private void getRuleParameters(Map result, List descrs) {
@@ -361,39 +438,4 @@
return adapter;
}
- private List getImports(ITextViewer viewer) throws CoreException, DroolsParserException {
- List imports = getDRLEditor().getImports();
- if (imports == null) {
- loadImportsAndFunctions(viewer);
- imports = getDRLEditor().getImports();
- }
- return imports;
- }
-
- private void loadImportsAndFunctions(ITextViewer viewer) throws CoreException, DroolsParserException {
- String content = viewer.getDocument().get();
- Reader dslReader = DSLAdapter.getDSLContent(content, ((FileEditorInput) getEditor().getEditorInput()).getFile());
- DrlParser parser = new DrlParser();
- PackageDescr descr = DroolsBuilder.parsePackage(content, parser, dslReader);
- // imports
- getDRLEditor().setImports(descr.getImports());
- // functions
- List functionDescrs = descr.getFunctions();
- List functions = new ArrayList(functionDescrs.size());
- Iterator iterator = functionDescrs.iterator();
- while (iterator.hasNext()) {
- functions.add(((FunctionDescr) iterator.next()).getName());
- }
- getDRLEditor().setFunctions(functions);
- }
-
- private List getFunctions(ITextViewer viewer) throws CoreException, DroolsParserException {
- List functions = getDRLEditor().getFunctions();
- if (functions == null) {
- loadImportsAndFunctions(viewer);
- functions = getDRLEditor().getFunctions();
- }
- return functions;
- }
-
}
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/RuleCompletionProposal.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/RuleCompletionProposal.java 2006-06-08 18:47:25 UTC (rev 4678)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/RuleCompletionProposal.java 2006-06-08 19:39:52 UTC (rev 4679)
@@ -30,18 +30,21 @@
}
/** Also allows an icon to be used */
- public RuleCompletionProposal(int replacementLength, String display, String content, Image icon) {
- this(replacementLength, display, content, content.length());
- this.image = icon;
-
+ public RuleCompletionProposal(int replacementLength, String display, String content, Image image) {
+ this(replacementLength, display, content, content.length(), image);
}
+ public RuleCompletionProposal(int replacementLength, String display, String content, int cursorPosition) {
+ this(replacementLength, display, content, cursorPosition, null);
+ }
+
/** This is used when a different display value is shown to what is put in when selected. */
- public RuleCompletionProposal(int replacementLength, String display, String content, int cursorPosition) {
+ public RuleCompletionProposal(int replacementLength, String display, String content, int cursorPosition, Image image) {
this.replacementLength = replacementLength;
this.content = content;
this.display = display;
this.cursorPosition = cursorPosition;
+ this.image = image;
}
public String getContent() {
Modified: labs/jbossrules/trunk/drools-ide/src/test/java/org/drools/ide/editors/completion/ContextScanningTest.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/test/java/org/drools/ide/editors/completion/ContextScanningTest.java 2006-06-08 18:47:25 UTC (rev 4678)
+++ labs/jbossrules/trunk/drools-ide/src/test/java/org/drools/ide/editors/completion/ContextScanningTest.java 2006-06-08 19:39:52 UTC (rev 4679)
@@ -1,11 +1,8 @@
package org.drools.ide.editors.completion;
-import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.drools.ide.editors.DRLRuleEditor;
-
import junit.framework.TestCase;
public class ContextScanningTest extends TestCase {
Modified: labs/jbossrules/trunk/drools-ide/src/test/java/org/drools/ide/editors/completion/LocationDeterminatorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/test/java/org/drools/ide/editors/completion/LocationDeterminatorTest.java 2006-06-08 18:47:25 UTC (rev 4678)
+++ labs/jbossrules/trunk/drools-ide/src/test/java/org/drools/ide/editors/completion/LocationDeterminatorTest.java 2006-06-08 19:39:52 UTC (rev 4679)
@@ -17,6 +17,50 @@
*/
public class LocationDeterminatorTest extends TestCase {
+ public void testColumnOperatorPattern() {
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( name : property ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("(name:property ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( name:property ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( name:property ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( name : property ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property1 == \"value\", property2 ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property1 == \"value\", name : property2 ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property1 == \"value\", name:property2 ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property1 == \"value\", name : property2 ").matches());
+ assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( prop").matches());
+ assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("(prop").matches());
+ assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( prop").matches());
+ assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( name:prop").matches());
+ assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("(name:prop").matches());
+ assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( name : prop").matches());
+ assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( name : prop").matches());
+ assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property <= ").matches());
+ assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( name : property == ").matches());
+ assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("(property==").matches());
+ assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property contains ").matches());
+ assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property1 == \"value\", property2 >= ").matches());
+ }
+
+ public void testColumnArgumentPattern() {
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( property == ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( property >= ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("(property== ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( property == ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( name : property == ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("(name:property== ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( name : property == ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( property1 == \"value\", property2 == ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( property1 == \"value\",property2== ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( property1 == \"value\", property2 == ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( property == otherProp").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("(property==otherProp").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_CONTAINS_ARGUMENT.matcher("( property contains ").matches());
+ assertTrue(LocationDeterminator.COLUMN_PATTERN_EXCLUDES_ARGUMENT.matcher("( property excludes ").matches());
+ }
+
public void testCheckLocationDetermination() {
String input =
"rule MyRule \n" +
@@ -44,7 +88,6 @@
input =
"rule MyRule \n" +
" when \n" +
- " Class( condition == true ) \n" +
" Cl";
location = LocationDeterminator.getLocationInCondition(input);
assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
@@ -52,6 +95,7 @@
input =
"rule MyRule \n" +
" when \n" +
+ " Class( condition == true ) \n" +
" Cl";
location = LocationDeterminator.getLocationInCondition(input);
assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
@@ -59,6 +103,21 @@
input =
"rule MyRule \n" +
" when \n" +
+ " class: Cl";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " class:Cl";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
+
+ /** Inside of condition: start */
+ input =
+ "rule MyRule \n" +
+ " when \n" +
" Class (";
location = LocationDeterminator.getLocationInCondition(input);
assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
@@ -67,6 +126,14 @@
input =
"rule MyRule \n" +
" when \n" +
+ " Class ( na";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
" Class ( condition == true, ";
location = LocationDeterminator.getLocationInCondition(input);
assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
@@ -75,6 +142,14 @@
input =
"rule MyRule \n" +
" when \n" +
+ " Class ( condition == true, na";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
" Class ( \n" +
" ";
location = LocationDeterminator.getLocationInCondition(input);
@@ -90,6 +165,177 @@
assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( name : ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( name: ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( name:";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+ /** Inside of condition: Operator */
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( property ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class(property ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( name : property ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class (name:property ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class (name:property ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( name1 : property1, name : property ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( name1 : property1 == \"value\", name : property ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( name1 : property1 == \"value\",property ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( name1 : property1, \n" +
+ " name : property ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+ /** Inside of condition: argument */
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( property == ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+ assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( property== ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+ assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( name : property == ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+ assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( name:property == ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+ assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( name1 : property1, property2 == ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+ assertEquals("property2", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class (name:property== ";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+ assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( property == otherPropertyN";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+ assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+
+ input =
+ "rule MyRule \n" +
+ " when \n" +
+ " Class ( property == \"someth";
+ location = LocationDeterminator.getLocationInCondition(input);
+ assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+ assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+ assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+
/** EXISTS */
input =
"rule MyRule \n" +
|
|
From: <jbo...@li...> - 2006-06-08 18:47:30
|
Author: adamw Date: 2006-06-08 14:47:25 -0400 (Thu, 08 Jun 2006) New Revision: 4678 Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-86 Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-08 18:28:54 UTC (rev 4677) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-08 18:47:25 UTC (rev 4678) @@ -183,7 +183,19 @@ } public Tag getTag(String tagName) throws TagGetException { - return null; + try { + //noinspection unchecked + TagEntity result = (TagEntity) manager.createQuery("from TagEntity where name = :name"). + setParameter("name", tagName).getSingleResult(); + + if (result == null) { + return null; + } + + return result.getTag(); + } catch (Throwable e) { + throw new TagGetException(e); + } } public TagList getTags(List<String> tagNames) throws TagGetException { |
|
From: <jbo...@li...> - 2006-06-08 18:29:07
|
Author: szimano Date: 2006-06-08 14:28:54 -0400 (Thu, 08 Jun 2006) New Revision: 4677 Added: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/DeleteTagClickListener.java labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/web/images/ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/web/images/delete.gif Log: delete + images JBLAB-674 Added: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/DeleteTagClickListener.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/DeleteTagClickListener.java 2006-06-08 18:25:16 UTC (rev 4676) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/DeleteTagClickListener.java 2006-06-08 18:28:54 UTC (rev 4677) @@ -0,0 +1,79 @@ +/* + * 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.labs.tagme.gwt.client; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.rpc.ServiceDefTarget; +import com.google.gwt.user.client.ui.ClickListener; +import com.google.gwt.user.client.ui.Widget; + +public class DeleteTagClickListener implements ClickListener { + + private String user; + + private String tag; + + private String path; + + private TagMeShowPopupListener parent; + + private String clas; + + public DeleteTagClickListener(String currentUser, String tag, String path, + TagMeShowPopupListener parent, String clas) { + this.path = path; + this.tag = tag; + this.user = currentUser; + this.parent = parent; + this.clas = clas; + } + + public void onClick(Widget sender) { + if (Window.confirm("Are you sure to delete tag '" + tag + "' ?")) { + TaggingServiceAsync tagging = (TaggingServiceAsync) GWT + .create(TaggingService.class); + + ServiceDefTarget endpoint = (ServiceDefTarget) tagging; + endpoint.setServiceEntryPoint("/tagme-servlet/tag/"); + + AsyncCallback callback = new AsyncCallback() { + + public void onSuccess(Object result) { + parent.refreshTags(); + parent.stopProgressAnim("Tag deleted"); + } + + public void onFailure(Throwable caught) { + Window.alert("Error: " + caught.getMessage()); + parent.stopProgressAnim("Error while deleting tag"); + } + + }; + + tagging.deleteTag(user, path, clas, tag, callback); + parent.startProgressAnim("Deleting tag"); + } + } + +} Added: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/web/images/delete.gif =================================================================== (Binary files differ) Property changes on: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/web/images/delete.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream |
|
From: <jbo...@li...> - 2006-06-08 18:25:34
|
Author: szimano
Date: 2006-06-08 14:25:16 -0400 (Thu, 08 Jun 2006)
New Revision: 4676
Modified:
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java
labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java
labs/jbosslabs/trunk/portal-extensions/forge-theme/src/java/org/jboss/portal/core/theme/render/impl/JBFRegionRenderer.java
Log:
tag delete (JBLAB-674)
broken div in regions
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java 2006-06-08 18:18:55 UTC (rev 4675)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java 2006-06-08 18:25:16 UTC (rev 4676)
@@ -86,4 +86,27 @@
}
}
+ public boolean deleteTag(String user, String path, String clas, String tag) {
+
+ try {
+ TagMeTagger tagger = (TagMeTagger)Class.forName(clas).newInstance();
+
+ tagger.deleteTag(user, path, tag);
+
+ return true;
+ } catch (InstantiationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (ClassNotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return false;
+
+ }
+
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java 2006-06-08 18:18:55 UTC (rev 4675)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java 2006-06-08 18:25:16 UTC (rev 4676)
@@ -35,28 +35,25 @@
import com.google.gwt.user.client.ui.Widget;
public class TagMeClickListener implements ClickListener {
-
+
public static final String TAG_SEP = ";&&tagMeSeparator&&;";
-
- private static final String ADDING_TXT = "Adding tags";
private String path;
private String user;
private Vector textBoxes;
-
+
private String clas;
-
+
private Label info;
-
+
private Button button;
-
- private Timer timer;
-
+
private TagMeShowPopupListener parent;
- public TagMeClickListener(String path, String user, String clas, Vector textBoxes, Label info, TagMeShowPopupListener parent) {
+ public TagMeClickListener(String path, String user, String clas,
+ Vector textBoxes, Label info, TagMeShowPopupListener parent) {
this.path = path;
this.user = user;
this.textBoxes = textBoxes;
@@ -66,56 +63,46 @@
}
public void onClick(Widget sender) {
+
TaggingServiceAsync tagging = (TaggingServiceAsync) GWT
.create(TaggingService.class);
- this.button = (Button)sender;
-
+ this.button = (Button) sender;
+
ServiceDefTarget endpoint = (ServiceDefTarget) tagging;
endpoint.setServiceEntryPoint("/tagme-servlet/tag/");
- info.setText(ADDING_TXT);
-
- timer = new Timer() {
-
- public void run() {
- info.setText(info.getText() + ".");
- }
-
- };
-
- timer.scheduleRepeating(1000);
-
+ parent.startProgressAnim("Adding tags");
+
AsyncCallback callback = new AsyncCallback() {
public void onSuccess(Object result) {
- timer.cancel();
- button.setEnabled(true);
+ parent.stopProgressAnim("Tags added");
parent.refreshTags();
- info.setText("Tags added");
}
public void onFailure(Throwable caught) {
Window.alert("Error ! " + caught.getMessage());
+ parent.stopProgressAnim("Error while adding tags");
}
};
button.setEnabled(false);
-
+
String tags = "";
-
+
for (int i = 0; i < textBoxes.size(); i++) {
- String tag = ((TextBox)textBoxes.get(i)).getText();
+ String tag = ((TextBox) textBoxes.get(i)).getText();
if (tag != null && tag.length() > 0) {
if (tags.length() == 0) {
tags = tag;
- }
- else {
+ } else {
tags += TAG_SEP + tag;
}
}
}
- tagging.addTag(user, path, clas, tags, callback);
+ tagging.addTag(user, path, clas, tags, callback);
+
}
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java 2006-06-08 18:18:55 UTC (rev 4675)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java 2006-06-08 18:25:16 UTC (rev 4676)
@@ -25,6 +25,7 @@
import java.util.Vector;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
@@ -33,6 +34,7 @@
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
@@ -42,6 +44,8 @@
private static final String TAGME_STYLE = "tagmePanel";
+ private Timer timer;
+
private String path;
private String currentUser;
@@ -52,12 +56,18 @@
private FlexTable table;
+ private Button saveBtn;
+
public TagMeShowPopupListener(String path, String user, String clas) {
this.path = path;
this.currentUser = user;
this.clas = clas;
}
+ public TagMeShowPopupListener getMyself() {
+ return this;
+ }
+
public void refreshTags() {
while (table.getRowCount() > 0) {
@@ -79,37 +89,44 @@
int rowsNum = 0;
for (int i = 0; i < vect.size(); i++) {
-
- String[] to = ((String) vect.get(i)).split(TagMeClickListener.TAG_SEP);
-
+
+ String[] to = ((String) vect.get(i))
+ .split(TagMeClickListener.TAG_SEP);
+
String tag = to[0];
String user = to[1];
String fullName = to[2];
if (!rows.keySet().contains(user)) {
rows.put(user, new Integer(rowsNum));
- table.setHTML(rowsNum++, 0, "<b>"+fullName+"</b>");
+ table.setHTML(rowsNum++, 0, "<b>" + fullName + "</b>");
}
int curRow = ((Integer) rows.get(user)).intValue();
-
+
if (table.getText(curRow, 0).equals(currentUser)) {
// current user - add delete button
- VerticalPanel vpanel = new VerticalPanel();
- vpanel.add(new Label(tag));
- vpanel.add(new Button());
-
- table.setWidget(curRow, table.getCellCount(curRow), vpanel);
- }
- else {
- //just show tag
+ Image im = new Image("/tagme-servlet/images/delete.gif");
+
+ HorizontalPanel hpanel = new HorizontalPanel();
+ hpanel.add(new Label(tag));
+ hpanel.add(im);
+
+ im.addClickListener(new DeleteTagClickListener(
+ currentUser, tag, path, getMyself(), clas));
+
+ table.setWidget(curRow, table.getCellCount(curRow),
+ hpanel);
+ } else {
+ // just show tag
table.setText(curRow, table.getCellCount(curRow), tag);
}
}
}
public void onFailure(Throwable caught) {
- Window.alert("Error ! " + caught.getMessage() + " Throwable: " + caught);
+ Window.alert("Error ! " + caught.getMessage() + " Throwable: "
+ + caught);
}
};
@@ -141,8 +158,9 @@
final DialogBox dialog = new DialogBox();
HorizontalPanel btnPanel = new HorizontalPanel();
- btnPanel.add(new Button("Save", new TagMeClickListener(path, currentUser,
- clas, textBoxes, info, this)));
+ this.saveBtn = new Button("Save", new TagMeClickListener(path,
+ currentUser, clas, textBoxes, info, this));
+ btnPanel.add(saveBtn);
btnPanel.add(new Button("Close", new ClickListener() {
public void onClick(Widget sender) {
@@ -177,4 +195,24 @@
}
+ public void startProgressAnim(String text) {
+ info.setText(text);
+
+ timer = new Timer() {
+
+ public void run() {
+ info.setText(info.getText() + ".");
+ }
+
+ };
+
+ timer.scheduleRepeating(1000);
+ }
+
+ public void stopProgressAnim(String text) {
+ timer.cancel();
+ saveBtn.setEnabled(true);
+ info.setText(text);
+ }
+
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java 2006-06-08 18:18:55 UTC (rev 4675)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java 2006-06-08 18:25:16 UTC (rev 4676)
@@ -42,4 +42,6 @@
public Vector getTags(String path, String clas);
public boolean addTag(String user, String path, String clas, String tags);
+
+ public boolean deleteTag(String user, String path, String clas, String tag);
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java 2006-06-08 18:18:55 UTC (rev 4675)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java 2006-06-08 18:25:16 UTC (rev 4676)
@@ -35,4 +35,7 @@
public void addTag(String user, String path, String clas, String tags,
AsyncCallback callback);
+
+ public void deleteTag(String user, String path, String clas, String tag,
+ AsyncCallback callback);
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java 2006-06-08 18:18:55 UTC (rev 4675)
+++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java 2006-06-08 18:25:16 UTC (rev 4676)
@@ -56,8 +56,8 @@
log.info(key);
if (key.startsWith(SHOTOKU_TAG)) {
String tag = (String) map.get(key);
- String user = (String) key.substring(key.indexOf(':') + 1, key
- .lastIndexOf(':'));
+ String user = (String) key.substring(key.indexOf(':') + 1,
+ key.lastIndexOf(':'));
tags.add(tag + TagMeClickListener.TAG_SEP + user
+ TagMeClickListener.TAG_SEP + user);
}
@@ -109,28 +109,32 @@
public void deleteTag(String user, String path, String tag) {
try {
+ log.info("Deleting tag " + tag + " " + path + "...");
+
Node node = ContentManager.getContentManager().getNode(path);
-
+
Iterator it = node.getProperties().keySet().iterator();
boolean found = false;
String key = null;
-
- while(!found && it.hasNext()) {
- key = (String)it.next();
+
+ while (!found && it.hasNext()) {
+ key = (String) it.next();
if (node.getProperties().get(key).equals(tag)) {
found = true;
}
}
-
+
if (found) {
- node.getProperties().remove(key);
+ node.deleteProperty(key);
try {
- node.save("Removing tag: "+tag+" by user: "+user);
+ node.save("Removing tag: " + tag + " by user: " + user);
+
+ log.info("tag deleted ! (key: " + key + " )");
} catch (SaveException e) {
e.printStackTrace();
}
}
-
+
} catch (RepositoryException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Modified: labs/jbosslabs/trunk/portal-extensions/forge-theme/src/java/org/jboss/portal/core/theme/render/impl/JBFRegionRenderer.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-theme/src/java/org/jboss/portal/core/theme/render/impl/JBFRegionRenderer.java 2006-06-08 18:18:55 UTC (rev 4675)
+++ labs/jbosslabs/trunk/portal-extensions/forge-theme/src/java/org/jboss/portal/core/theme/render/impl/JBFRegionRenderer.java 2006-06-08 18:25:16 UTC (rev 4676)
@@ -42,6 +42,9 @@
if (renderContext.getRegionID() != null){
markup.append(" id='").append(renderContext.getRegionID()).append("'>");
}
+ else {
+ markup.append(">");
+ }
}
for (Iterator i = region.getWindows().iterator(); i.hasNext();)
|
Author: adamw Date: 2006-06-08 14:18:55 -0400 (Thu, 08 Jun 2006) New Revision: 4675 Added: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java labs/shotoku/trunk/shotoku-tags/src/etc/META-INF/persistence.xml labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-86 Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -36,11 +36,9 @@ import com.sun.syndication.io.SyndFeedInput; import com.sun.syndication.io.SyndFeedOutput; import com.sun.syndication.io.XmlReader; -import org.jboss.shotoku.feeds.data.Feed; public abstract class RomeBasedFeed extends FileBasedFeed { - public RomeBasedFeed(String name, String displayName, String type, File file) - throws IOException { + public RomeBasedFeed(String name, String displayName, String type, File file){ super(name, displayName, type, file); } Modified: labs/shotoku/trunk/shotoku-tags/src/etc/META-INF/persistence.xml =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/etc/META-INF/persistence.xml 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/etc/META-INF/persistence.xml 2006-06-08 18:18:55 UTC (rev 4675) @@ -1,6 +1,6 @@ <entity-manager> <name>tags</name> - <jta-data-source>java:/JBossDS</jta-data-source> + <jta-data-source>java:/LabsDS</jta-data-source> <properties> <property name="hibernate.connection.datasource" value="JBossDS" /> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -23,7 +23,6 @@ } public TagEntity getTagEntity() { - //return new ShotokuTagEntity(this); - return new TagEntity(this); + return new ShotokuTagEntity(this); } } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -1,6 +1,9 @@ package org.jboss.shotoku.tags; import org.jboss.shotoku.service.AdministratedService; +import org.jboss.shotoku.tags.exceptions.TagAddException; +import org.jboss.shotoku.tags.exceptions.TagDeleteException; +import org.jboss.shotoku.tags.exceptions.TagGetException; import java.util.List; @@ -8,11 +11,13 @@ * @author Adam Warski (ad...@as...) */ public interface TagService extends AdministratedService { - public void addTag(Tag t); - public void deleteTag(Tag t); + public void addTag(Tag t) throws TagAddException; + public void deleteTag(Tag t) throws TagDeleteException; - public TagList getTags(List<String> tagNames); - public TagList getTags(String resourceId); - public TagList getTagsByAuthor(String author); - public TagList getRelatedTags(List<Tag> relateTo); + public Tag getTag(String tagName) throws TagGetException; + + public TagList getTags(List<String> tagNames) throws TagGetException; + public TagList getTags(String resourceId) throws TagGetException; + public TagList getTagsByAuthor(String author) throws TagGetException; + public TagList getRelatedTags(List<Tag> relateTo) throws TagGetException; } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -4,19 +4,25 @@ import org.jboss.shotoku.tags.ShotokuTag; import org.jboss.shotoku.tags.Tag; +import javax.persistence.*; + /** * @author Adam Warski (ad...@as...) */ -/*@Entity +@Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING) -@DiscriminatorValue("shotoku") */ +@DiscriminatorValue("shotoku") public class ShotokuTagEntity extends TagEntity { + public ShotokuTagEntity() { + + } + public ShotokuTagEntity(Tag t) { super(t); } - //@Transient + @Transient public AbstractTag getTag() { return new ShotokuTag(this); } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -12,10 +12,11 @@ * @author Adam Warski (ad...@as...) */ @Entity -//@Inheritance(strategy = InheritanceType.SINGLE_TABLE) -//@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING) -@Table(name = "ShotokuTags") -public /*abstract*/ class TagEntity implements Serializable { +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING, length = 255) +@Table(name = "ShotokuTags", + uniqueConstraints = {@UniqueConstraint(columnNames={"name", "author", "resourceId"})}) +public abstract class TagEntity implements Serializable { private Integer id; private String name; @@ -30,7 +31,7 @@ } public TagEntity(Tag t) { - //this.id = t.getId(); + this.id = t.getId(); this.name = t.getName(); this.author = t.getAuthor(); this.resourceId = t.getResourceId(); @@ -43,6 +44,7 @@ */ @Id + @GeneratedValue(strategy = GenerationType.AUTO) public Integer getId() { return id; } @@ -51,6 +53,7 @@ this.id = id; } + @Column(length = 32) public String getName() { return name; } @@ -59,6 +62,7 @@ this.name = name; } + @Column(length = 32) public String getAuthor() { return author; } @@ -95,6 +99,6 @@ * Other methods. */ - //@Transient - //public abstract AbstractTag getTag(); + @Transient + public abstract AbstractTag getTag(); } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -4,19 +4,25 @@ import org.jboss.shotoku.tags.WebsiteTag; import org.jboss.shotoku.tags.Tag; +import javax.persistence.*; + /** * @author Adam Warski (ad...@as...) */ -/*@Entity +@Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING) -@DiscriminatorValue("website")*/ +@DiscriminatorValue("website") public class WebsiteTagEntity extends TagEntity { + public WebsiteTagEntity() { + + } + public WebsiteTagEntity(Tag t) { super(t); } - //@Transient + @Transient public AbstractTag getTag() { return new WebsiteTag(this); } Added: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -0,0 +1,10 @@ +package org.jboss.shotoku.tags.exceptions; + +/** + * @author Adam Warski (ad...@as...) + */ +public class TagAddException extends Exception { + public TagAddException(Throwable e) { super(e); } + public TagAddException(String message, Throwable e) { super(message, e); } + public TagAddException(String message) { super(message); } +} Added: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -0,0 +1,10 @@ +package org.jboss.shotoku.tags.exceptions; + +/** + * @author Adam Warski (ad...@as...) + */ +public class TagDeleteException extends Exception { + public TagDeleteException(Throwable e) { super(e); } + public TagDeleteException(String message, Throwable e) { super(message, e); } + public TagDeleteException(String message) { super(message); } +} Added: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -0,0 +1,10 @@ +package org.jboss.shotoku.tags.exceptions; + +/** + * @author Adam Warski (ad...@as...) + */ +public class TagGetException extends Exception { + public TagGetException(Throwable e) { super(e); } + public TagGetException(String message, Throwable e) { super(message, e); } + public TagGetException(String message) { super(message); } +} Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -39,6 +39,9 @@ import org.jboss.shotoku.service.AdministratedServiceGetter; import org.jboss.shotoku.service.AdministratedService; import org.jboss.shotoku.tags.*; +import org.jboss.shotoku.tags.exceptions.TagGetException; +import org.jboss.shotoku.tags.exceptions.TagAddException; +import org.jboss.shotoku.tags.exceptions.TagDeleteException; import org.jboss.shotoku.tags.dal.TagEntity; /** @@ -140,35 +143,58 @@ @PersistenceContext private EntityManager manager; - public void addTag(Tag t) { - manager.persist(t.getTagEntity()); + public void addTag(Tag t) throws TagAddException { + try { + TagEntity te = t.getTagEntity(); + if (te.getId() == null) { + // TODO remove this beautiful hack when ejb3 is updated + te.setId((int) Calendar.getInstance().getTimeInMillis()); + } + + manager.persist(te); + } catch (Throwable e) { + throw new TagAddException(e); + } } - public void deleteTag(Tag t) { + public void deleteTag(Tag t) throws TagDeleteException { + try { + manager.remove(t.getTagEntity()); + } catch (Throwable e) { + throw new TagDeleteException(e); + } } - public TagList getTags(String resourceId) { - /*List<TagEntity> result = manager.createQuery("from TagEntity where resourceId = :resourceId"). - setParameter("resourceId", resourceId).getResultList(); + public TagList getTags(String resourceId) throws TagGetException { + try { + //noinspection unchecked + List<TagEntity> result = manager.createQuery("from TagEntity where resourceId = :resourceId"). + setParameter("resourceId", resourceId).getResultList(); - List<Tag> t = new ArrayList<Tag>(); - for (TagEntity te : result) { - t.add(te.) + List<Tag> ret = new ArrayList<Tag>(); + for (TagEntity te : result) { + ret.add(te.getTag()); + } + + return new TagListImpl(ret, ""); + } catch (Throwable e) { + throw new TagGetException(e); } + } - return new TagListImpl(ret, ""); */ + public Tag getTag(String tagName) throws TagGetException { return null; } - public TagList getTags(List<String> tagNames) { + public TagList getTags(List<String> tagNames) throws TagGetException { return null; } - public TagList getRelatedTags(List<Tag> relateTo) { + public TagList getRelatedTags(List<Tag> relateTo) throws TagGetException { return null; } - public TagList getTagsByAuthor(String author) { + public TagList getTagsByAuthor(String author) throws TagGetException { return null; } } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -3,6 +3,8 @@ import org.jboss.shotoku.tags.TagTools; import org.jboss.shotoku.tags.ShotokuTag; import org.jboss.shotoku.tags.Tag; +import org.jboss.shotoku.tags.exceptions.TagAddException; +import org.jboss.shotoku.tags.exceptions.TagGetException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; @@ -16,15 +18,25 @@ */ public class TagsTestServlet extends HttpServlet { + static int i = 2; + protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException { httpServletResponse.setContentType("text/html"); httpServletResponse.getWriter().println(TagTools.getService().getServiceName()); - TagTools.getService().addTag(new ShotokuTag("n1", "a1", "r1", "d1", - Calendar.getInstance().getTime())); + try { + TagTools.getService().addTag(new ShotokuTag("n1", "a1", "r" + i++, "d1", + Calendar.getInstance().getTime())); + } catch (TagAddException e) { + e.printStackTrace(); + } - /*for (Tag t : TagTools.getService().getTags("r1").getList()) { - httpServletResponse.getWriter().println(t.getName() + " - " + t.getData()); - } */ + try { + for (Tag t : TagTools.getService().getTags("r4").getList()) { + httpServletResponse.getWriter().println(t.getName() + " - " + t.getData()); + } + } catch (TagGetException e) { + e.printStackTrace(); + } } } |
|
From: <jbo...@li...> - 2006-06-08 15:44:24
|
Author: adamw
Date: 2006-06-08 11:44:16 -0400 (Thu, 08 Jun 2006)
New Revision: 4674
Modified:
labs/jbosslabs/trunk/portal-extensions/configuration/maven.xml
labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/
Log:
LabsDS copying
Modified: labs/jbosslabs/trunk/portal-extensions/configuration/maven.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/configuration/maven.xml 2006-06-08 15:11:47 UTC (rev 4673)
+++ labs/jbosslabs/trunk/portal-extensions/configuration/maven.xml 2006-06-08 15:44:16 UTC (rev 4674)
@@ -18,7 +18,9 @@
<goal name="deploy">
<ant:copy todir="${local.deploy.dir}" overwrite="true">
- <ant:fileset dir="to-copy" />
+ <ant:fileset dir="to-copy">
+ <exclude name="**/*.sample"/>
+ </ant:fileset>
</ant:copy>
<ant:delete file="${local.deploy.dir}/jboss-portal.sar/conf/data/default-object.xml" />
<ant:delete dir="${local.deploy.dir}/jboss-portal.sar/portal-samples.war" />
Property changes on: labs/jbosslabs/trunk/portal-extensions/configuration/to-copy
___________________________________________________________________
Name: svn:ignore
+ JBLabs-ds.xml
|