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 |