Scarab commit: svn commit: r10284 - trunk: . src/java/org/tigris/scarab/actions src/java/org/tigris/scarab/feeds src/java/org/tigris/scarab/notification src/java/org/tigris/scarab/om src/java/org/tigris/scarab/screens src/java/org/tigris/scarab/util src/test/org/tigris/scarab/feeds src/webapp/WEB-INF/templates/screens www/repository/rome/jars

[email protected]
Newsgroups gmane.comp.java.scarab.cvs
Message-ID <[email protected]>
Author: jorgeuriarte
Date: 2006-09-08 08:30:06-0700
New Revision: 10284

Removed:
   trunk/www/repository/rome/jars/rome-0.7-dev20050416.jar
Modified:
   trunk/   (props changed)
   trunk/project.xml
   trunk/src/java/org/tigris/scarab/actions/Search.java
   trunk/src/java/org/tigris/scarab/feeds/QueryFeed.java
   trunk/src/java/org/tigris/scarab/notification/ScarabNewNotificationManager.java
   trunk/src/java/org/tigris/scarab/om/NotificationStatusPeer.java
   trunk/src/java/org/tigris/scarab/screens/RSSDataExport.java
   trunk/src/java/org/tigris/scarab/util/ScarabUtil.java
   trunk/src/test/org/tigris/scarab/feeds/QueryFeedTest.java
   trunk/src/webapp/WEB-INF/templates/screens/IssueList.vm

Log:
Merged revisions 10280-10283 via svnmerge from 
http://scarab.tigris.org/svn/scarab/branches/release/b21

........
  r10280 | dabbous | 2006-09-06 23:41:04 +0200 (Wed, 06 Sep 2006) | 1 line
  
  expected to solve SCB1877
........
  r10281 | jorgeuriarte | 2006-09-08 01:47:01 +0200 (Fri, 08 Sep 2006) | 7 lines
  
  Fixes in the RSS export of queries. Closes SCB1265 & SCB1398:
  - The RSS feed of searches is now driven by the Search action-class.
  - RSSDataExport will now only dump issue data (no more query data). Previous implementation was broken, because
  of a failed duplication of search-code.
  - The RSS output is filtered to avoid illegal XML characters.
........
  r10282 | jorgeuriarte | 2006-09-08 14:49:12 +0200 (Fri, 08 Sep 2006) | 1 line
  
  Followup to r10281 (tests adapted to changes)
........
  r10283 | jorgeuriarte | 2006-09-08 16:09:47 +0200 (Fri, 08 Sep 2006) | 1 line
  
  Updated version of ROME library
........



Blocked revisions 10271 via svnmerge

........
  r10271 | jorgeuriarte | 2006-08-30 00:41:44 +0200 (Wed, 30 Aug 2006) | 1 line
  
  Blocked non-mergeable commits from trunk.
........


Modified: trunk/project.xml
Url: http://scarab.tigris.org/source/browse/scarab/trunk/project.xml?view=diff&rev=10284&p1=trunk/project.xml&p2=trunk/project.xml&r1=10283&r2=10284
==============================================================================
--- trunk/project.xml	(original)
+++ trunk/project.xml	2006-09-08 08:30:06-0700
@@ -144,7 +144,7 @@
     <dependency>
       <groupId>rome</groupId>
       <artifactId>rome</artifactId>
-      <version>0.7-dev20050416</version>
+      <version>0.8</version>
       <type>jar</type>
       <properties>
         <war.bundle>true</war.bundle>

Modified: trunk/src/java/org/tigris/scarab/actions/Search.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/actions/Search.java?view=diff&rev=10284&p1=trunk/src/java/org/tigris/scarab/actions/Search.java&p2=trunk/src/java/org/tigris/scarab/actions/Search.java&r1=10283&r2=10284
==============================================================================
--- trunk/src/java/org/tigris/scarab/actions/Search.java	(original)
+++ trunk/src/java/org/tigris/scarab/actions/Search.java	2006-09-08 08:30:06-0700
@@ -73,7 +73,6 @@
 import org.tigris.scarab.om.IssueType;
 import org.tigris.scarab.om.IssueTypeManager;
 import org.tigris.scarab.om.MITList;
-import org.tigris.scarab.om.MITListItem;
 import org.tigris.scarab.om.MITListManager;
 import org.tigris.scarab.om.Module;
 import org.tigris.scarab.om.ModuleManager;
@@ -111,6 +110,10 @@
     private static final String ANY = "any";
     private static final String CREATED_BY = "created_by";
 
+    private static final String OUTPUT_FORMAT = "output";
+    private static final String WEB_OUTPUT = "web";
+    private static final String FEED_OUTPUT = "feed";
+    
     ScarabLocalizationTool l10n;
     ScarabRequestTool scarabR;
     Intake intake;
@@ -267,7 +270,7 @@
             {
                 String template = data.getParameters()
                     .getString(ScarabConstants.NEXT_TEMPLATE,
-                               "IssueList.vm");
+                               getIssueListTarget());
                 setTarget(data, template);
             }
         }
@@ -572,7 +575,7 @@
                                      parser.getString("searchsp"));
         }
 
-        setTarget(data, "IssueList.vm");
+        setTarget(data, getIssueListTarget());
     }
 
 
@@ -613,7 +616,7 @@
             }
             else if (go.equals("mostRecent"))
             {
-                setTarget(data, "IssueList.vm");
+                setTarget(data, getIssueListTarget());
             }
             else if (go.equals("myIssuesThisModule"))
             {
@@ -627,7 +630,7 @@
                     .append("&user_attr_").append(userId).append("=any")
                     .toString();
                 user.setMostRecentQuery(query);
-                setTarget(data, "IssueList.vm");
+                setTarget(data, getIssueListTarget());
             }
             else if (go.equals("myIssuesAllModules"))
             {
@@ -639,7 +642,7 @@
                     .append("&user_attr_").append(userId).append("=any")
                     .toString();
                 user.setMostRecentQuery(query);
-                setTarget(data, "IssueList.vm");
+                setTarget(data, getIssueListTarget());
             }
             else if (go.equals("quickSearch"))
             {
@@ -675,7 +678,7 @@
                     }
                     quickSearch(searchString, attributeMap, user, context);
                 }
-                setTarget(data, "IssueList.vm");
+                setTarget(data, getIssueListTarget());
             }
             else if (go.equals("privateQueries")
                    ||go.equals("publicQueries"))
@@ -1324,5 +1327,23 @@
         params = data.getParameters();
         user = (ScarabUser)data.getUser();
     }
+    
+    /**
+     * 
+     * @param data
+     * @param outputFormat Possible values: WEB_OUTPUT | FEED_OUTPUT
+     */
+    private String getIssueListTarget()
+    {
+        String outputFormat = this.params.getString(OUTPUT_FORMAT, WEB_OUTPUT);
+        if (outputFormat.equals(FEED_OUTPUT))
+        {
+            return "RSSIssueList.vm";
+        }
+        else
+        {
+            return "IssueList.vm";
+        }
+    }
         
 }

Modified: trunk/src/java/org/tigris/scarab/feeds/QueryFeed.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/feeds/QueryFeed.java?view=diff&rev=10284&p1=trunk/src/java/org/tigris/scarab/feeds/QueryFeed.java&p2=trunk/src/java/org/tigris/scarab/feeds/QueryFeed.java&r1=10283&r2=10284
==============================================================================
--- trunk/src/java/org/tigris/scarab/feeds/QueryFeed.java	(original)
+++ trunk/src/java/org/tigris/scarab/feeds/QueryFeed.java	2006-09-08 08:30:06-0700
@@ -1,32 +1,20 @@
 
 package org.tigris.scarab.feeds;
 
-import java.io.IOException;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.commons.collections.map.LinkedMap;
-import org.apache.fulcrum.parser.StringValueParser;
+import org.apache.fulcrum.security.util.TurbineSecurityException;
 import org.apache.torque.TorqueException;
-import org.tigris.scarab.om.AttributeValue;
 import org.tigris.scarab.om.Issue;
 import org.tigris.scarab.om.IssueManager;
-import org.tigris.scarab.om.IssueType;
-import org.tigris.scarab.om.MITList;
-import org.tigris.scarab.om.Module;
 import org.tigris.scarab.om.Query;
 import org.tigris.scarab.om.RModuleUserAttribute;
-import org.tigris.scarab.om.ScarabUser;
-import org.tigris.scarab.tools.ScarabToolManager;
 import org.tigris.scarab.util.IteratorWithSize;
 import org.tigris.scarab.util.ScarabLink;
-import org.tigris.scarab.util.word.IssueSearch;
-import org.tigris.scarab.util.word.IssueSearchFactory;
-import org.tigris.scarab.util.word.MaxConcurrentSearchException;
+import org.tigris.scarab.util.ScarabUtil;
 import org.tigris.scarab.util.word.QueryResult;
 
 import com.sun.syndication.feed.synd.SyndContent;
@@ -35,7 +23,7 @@
 import com.sun.syndication.feed.synd.SyndEntryImpl;
 import com.sun.syndication.feed.synd.SyndFeed;
 import com.sun.syndication.feed.synd.SyndFeedImpl;
-import com.sun.syndication.io.FeedException;
+import com.workingdogs.village.DataSetException;
 
 /**
  * Converts a query to an RSS feed.  The private methods are mostly ripped off
@@ -45,62 +33,44 @@
  *  
  */
 public class QueryFeed implements Feed {
-    private static final String DATE_FORMAT = "yyyy-MM-dd";
 
     private Query query;
-    private ScarabUser user;
+    private IteratorWithSize results;
     private ScarabLink scarabLink;
-	private ScarabToolManager scarabToolManager;
+    private String format;
     
 
-    public QueryFeed(Query query, ScarabUser user,ScarabToolManager scarabToolManager, ScarabLink scarabLink) {
+    /**
+     * Constructs the query feed with the search results. 
+     * @param query The searched query
+     * @param results The iterator containing the search-results
+     * @param scarabToolManager
+     * @param scarabLink
+     * @param format 
+     */
+    public QueryFeed(Query query, IteratorWithSize results, ScarabLink scarabLink, String format) {
         this.query = query;
-        this.user = user;
+        this.results = results;
         this.scarabLink = scarabLink;
-        this.scarabToolManager = scarabToolManager;
+        this.format = format;
     }
 
-    public SyndFeed getFeed() throws IOException, FeedException, TorqueException, Exception {
-        DateFormat dateParser = new SimpleDateFormat(DATE_FORMAT);
-
+    public SyndFeed getFeed() throws Exception, TorqueException, DataSetException, TurbineSecurityException
+    {
+        boolean showModuleName = !query.getMITList().isSingleModule();
+        boolean showIssueType = !query.getMITList().isSingleIssueType();
 
         SyndFeed feed = new SyndFeedImpl();
-
-        MITList mitList = query.getMITList();
-        boolean showModuleName = !mitList.isSingleModule();
-        boolean showIssueType = !mitList.isSingleIssueType();
-        String currentQueryString = query.getValue();
-        IssueSearch search = getPopulatedSearch(currentQueryString,mitList,user);
-        
-        IteratorWithSize queryResults = null;
-
-        // Do search
-
-        if (search == null) {
-            // an alert message should have been set while attempting
-            // to populate the search.
-            queryResults = IteratorWithSize.EMPTY;
-        } else {
-            queryResults = search.getQueryResults();
-
-        }
-
         feed.setTitle(query.getName());
         String link = scarabLink.setAction("Search").addPathInfo("go",query.getQueryId()).toString();
         feed.setLink(link);
         feed.setDescription(query.getDescription());
-
         List entries = new ArrayList();
-
-        for (Iterator i = queryResults; i.hasNext();) {
-            SyndEntry entry;
-            SyndContent description;
-            //MITListItem item = (MITListItem) i.next();
-            QueryResult queryResult = (QueryResult)i.next();
-
-            
-            
-            entry = new SyndEntryImpl();            
+        while (results.hasNext())
+        {
+            SyndEntry entry = new SyndEntryImpl();
+            SyndContent description = new SyndContentImpl();
+            QueryResult queryResult = (QueryResult)results.next();
             String title = queryResult.getUniqueId();
             if(showModuleName){
                 title = title + " ("+ queryResult.getModule().getRealName() + ")";
@@ -114,7 +84,7 @@
 
             link = scarabLink.getIssueIdAbsoluteLink(issue).toString();
             entry.setLink(link);
-            
+
             Date publishedDate = null;
             if(issue.getModifiedDate()!= null){
                 publishedDate = issue.getModifiedDate();
@@ -123,149 +93,26 @@
                 publishedDate = issue.getCreatedDate();
             }
             entry.setPublishedDate(publishedDate);
-            
 
             description = new SyndContentImpl();
             description.setType("text/html");
             String desc = "";
             Iterator avIteratorCSV = queryResult.getAttributeValuesAsCSV().iterator();
-            Iterator avIterator = search.getIssueListAttributeColumns().iterator();
-            for(;avIterator.hasNext();){
+            Iterator avIterator = query.getMITList().getAllRModuleUserAttributes().iterator();
+            while (avIterator.hasNext())
+            {
                 String value = (String)avIteratorCSV.next();
                 RModuleUserAttribute av = (RModuleUserAttribute)avIterator.next();
                 desc = desc + "<b>" + av.getAttribute().getName()+":</b>" + value +"<br/>";
             }
-            description.setValue(desc);
+            description.setValue(ScarabUtil.filterNonXml(desc));
 
             entry.setDescription(description);
             entries.add(entry);
-
         }
-     
-
         feed.setEntries(entries);
-        
-        search.close();
-        IssueSearchFactory.INSTANCE.notifyDone();
-
+        feed.setFeedType(format);
         return feed;
-    }
-
-    /**
-     * Get an IssueSearch object based on a query string. Copied from
-     * ScarabRequestTool
-     * 
-     * @return a <code>Issue</code> value
-     */
-    private IssueSearch getPopulatedSearch(String query, MITList mitList, ScarabUser searcher) throws Exception {
-        IssueSearch search = getNewSearch(mitList,searcher);
-        Module module = mitList.getModule();   
-        IssueType issueType = null;
-        // this sucks, but seems required...
-        if(mitList.isSingleIssueType()){
-        	issueType = mitList.getIssueType();
-        }
-        else {
-        	issueType = mitList.getFirstItem().getIssueType();
-        }
-        List listUserAttributes = scarabToolManager.getRModuleUserAttributes(user,module,issueType);
-        search.setIssueListAttributeColumns(listUserAttributes);
-
-       //Intake intake = null;
-
-        if (query == null) {
-            throw new Exception("Query was null");
-        }
-
-        // If they have entered users to search on, add them to the search
-        StringValueParser parser = new StringValueParser();
-        parser.parse(query, '&', '=', true);
-        String[] userList = parser.getStrings("user_list");
-        if (userList != null && userList.length > 0) {
-            for (int i = 0; i < userList.length; i++) {
-                String userId = userList[i];
-                String[] attrIds = parser.getStrings("user_attr_" + userId);
-                if (attrIds != null) {
-                    for (int j = 0; j < attrIds.length; j++) {
-                        search.addUserCriteria(userId, attrIds[j]);
-                    }
-                }
-            }
-        }
-
-        // Set intake properties
-        /*
-         * boolean searchSuccess = true; Group searchGroup =
-         * intake.get("SearchIssue", search.getQueryKey());
-         * 
-         * Field minDate = searchGroup.get("MinDate"); if (minDate != null &&
-         * minDate.toString().length() > 0) { searchSuccess = checkDate(search,
-         * minDate.toString()); }
-         * 
-         * Field maxDate = searchGroup.get("MaxDate"); if (maxDate != null &&
-         * maxDate.toString().length() > 0) { searchSuccess = checkDate(search,
-         * maxDate.toString()); }
-         * 
-         * Field stateChangeFromDate = searchGroup.get("StateChangeFromDate");
-         * if (stateChangeFromDate != null &&
-         * stateChangeFromDate.toString().length() > 0) { searchSuccess =
-         * checkDate(search, stateChangeFromDate.toString()); }
-         * 
-         * Field stateChangeToDate = searchGroup.get("StateChangeToDate"); if
-         * (stateChangeToDate != null && stateChangeToDate.toString().length() >
-         * 0) { searchSuccess = checkDate(search, stateChangeToDate.toString()); }
-         * 
-         * if (!searchSuccess) { setAlertMessage(l10n.format("DateFormatPrompt",
-         * L10NKeySet.ShortDateDisplay)); return null; }
-         * 
-         * try { searchGroup.setProperties(search); } catch (Exception e) {
-         * setAlertMessage(l10n.getMessage(e)); return null; }
-         * 
-         * Integer oldOptionId = search.getStateChangeFromOptionId(); if
-         * (oldOptionId != null && oldOptionId.intValue() != 0 &&
-         * oldOptionId.equals(search.getStateChangeToOptionId())) {
-         * setAlertMessage(L10NKeySet.StateChangeOldEqualNew); return null; }
-         */
-        // Set attribute values to search on
-        LinkedMap avMap = search.getCommonAttributeValuesMap();
-        Iterator i = avMap.mapIterator();
-        while (i.hasNext()) {
-            AttributeValue aval = (AttributeValue) avMap.get(i.next());
-         //   Group group = intake.get("AttributeValue", aval.getQueryKey());
-          //  if (group != null) {
-          //      group.setProperties(aval);
-          //  }
-        }
-
-        // If user is sorting on an attribute, set sort criteria
-        // Do not use intake, since intake parsed from query is not the same
-        // As intake passed from the form
-        //    String sortColumn = data.getParameters().getString("sortColumn");
-        //      if (sortColumn != null && sortColumn.length() > 0 &&
-        // StringUtils.isNumeric(sortColumn)) {
-        //      search.setSortAttributeId(new Integer(sortColumn));
-        // }
-
-        //        String sortPolarity = data.getParameters().getString("sortPolarity");
-        //      if (sortPolarity != null && sortPolarity.length() > 0) {
-        //        search.setSortPolarity(sortPolarity);
-        //  }
-
-        return search;
-    }
-
-    /**
-     * Get a new IssueSearch object. Copied from ScarabRequestTool
-     * 
-     * @return a <code>Issue</code> value
-     */
-    private IssueSearch getNewSearch(MITList mitList, ScarabUser searcher) throws Exception,
-            MaxConcurrentSearchException {
-
-        IssueSearch issueSearch = IssueSearchFactory.INSTANCE.getInstance(mitList, searcher);
-        // issueSearch.setLocale(getLocalizationTool().getPrimaryLocale());
-
-        return issueSearch;
-    }
-
+    }    
+    
 }
\ No newline at end of file

Modified: trunk/src/java/org/tigris/scarab/notification/ScarabNewNotificationManager.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/notification/ScarabNewNotificationManager.java?view=diff&rev=10284&p1=trunk/src/java/org/tigris/scarab/notification/ScarabNewNotificationManager.java&p2=trunk/src/java/org/tigris/scarab/notification/ScarabNewNotificationManager.java&r1=10283&r2=10284
==============================================================================
--- trunk/src/java/org/tigris/scarab/notification/ScarabNewNotificationManager.java	(original)
+++ trunk/src/java/org/tigris/scarab/notification/ScarabNewNotificationManager.java	2006-09-08 08:30:06-0700
@@ -215,6 +215,11 @@
         log.debug("sendPendingNotifications(): Collect pending notifications ...");
         List pending = NotificationStatusPeer.getPendingNotifications();
 
+        if(pending == null)
+        {
+            log.warn("sendPendingNotifications(): ...Could not retrieve pending notifications from Database. Try again later.");
+            return;
+        }
         log.debug("rearrange pending notifications per issue ...");
         Map pendingIssueMap = getPendingIssueMap(pending);
 

Modified: trunk/src/java/org/tigris/scarab/om/NotificationStatusPeer.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/NotificationStatusPeer.java?view=diff&rev=10284&p1=trunk/src/java/org/tigris/scarab/om/NotificationStatusPeer.java&p2=trunk/src/java/org/tigris/scarab/om/NotificationStatusPeer.java&r1=10283&r2=10284
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/NotificationStatusPeer.java	(original)
+++ trunk/src/java/org/tigris/scarab/om/NotificationStatusPeer.java	2006-09-08 08:30:06-0700
@@ -68,12 +68,14 @@
 		List pending = null;
 		Criteria crit = new Criteria();
 		crit.add(NotificationStatusPeer.STATUS, NotificationStatus.SCHEDULED, Criteria.EQUAL);
-		try {
+		try 
+        {
 			pending = doSelect(crit);
-		} catch (TorqueException e) {
+            Collections.sort(pending);
+		} catch (TorqueException e) 
+        {
 			log.error("getPendingNotifications(): " + e);
 		}
-		Collections.sort(pending);
 		return pending;
 	}
 }

Modified: trunk/src/java/org/tigris/scarab/screens/RSSDataExport.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/screens/RSSDataExport.java?view=diff&rev=10284&p1=trunk/src/java/org/tigris/scarab/screens/RSSDataExport.java&p2=trunk/src/java/org/tigris/scarab/screens/RSSDataExport.java&r1=10283&r2=10284
==============================================================================
--- trunk/src/java/org/tigris/scarab/screens/RSSDataExport.java	(original)
+++ trunk/src/java/org/tigris/scarab/screens/RSSDataExport.java	2006-09-08 08:30:06-0700
@@ -52,19 +52,13 @@
 
 import org.apache.fulcrum.parser.ParameterParser;
 import org.apache.torque.TorqueException;
-import org.apache.torque.om.NumberKey;
 import org.apache.turbine.RunData;
 import org.apache.turbine.TemplateContext;
 import org.apache.turbine.TemplateScreen;
 import org.tigris.scarab.feeds.Feed;
 import org.tigris.scarab.feeds.IssueFeed;
-import org.tigris.scarab.feeds.QueryFeed;
 import org.tigris.scarab.om.Issue;
 import org.tigris.scarab.om.IssueManager;
-import org.tigris.scarab.om.Query;
-import org.tigris.scarab.om.QueryManager;
-import org.tigris.scarab.om.ScarabUser;
-import org.tigris.scarab.om.ScarabUserManager;
 import org.tigris.scarab.tools.ScarabLocalizationTool;
 import org.tigris.scarab.tools.ScarabRequestTool;
 import org.tigris.scarab.tools.ScarabToolManager;
@@ -84,7 +78,7 @@
  * @author <a href="mailto:[email protected]">Eric Pugh </a>
  */
 public class RSSDataExport extends TemplateScreen {
-	private static final String DEFAULT_FEED_FORMAT = "atom_0.3";
+	public static final String DEFAULT_FEED_FORMAT = "atom_0.3";
 
 	private static final String MIME_TYPE = "application/xml; charset=UTF-8";
 
@@ -125,27 +119,10 @@
             String feedFormat = parser.getString(FEED_FORMAT_KEY);
 
             ScarabLink scarabLink= getScarabLinkTool(context);
-            ScarabRequestTool scarabRequestTool= getScarabRequestTool(context);
-            
-
             
             Feed feedSource = null;
             ScarabToolManager scarabToolManager = new ScarabToolManager(getLocalizationTool(context));
-            if (feedType.equals("QueryFeed")){
-                
-                long queryId = parser.getLong(QUERY_ID_KEY);            
-                long userId = parser.getLong(USER_ID_KEY);                
-                if(queryId==0){
-                    throw new IllegalArgumentException("Query ID is missing.  Should be appended like: /queryId/xxx");
-                }
-                if(userId==0){
-                    throw new IllegalArgumentException("User ID is missing.  Should be appended like: /userId/xxx");
-                }            	
-            	Query query = QueryManager.getInstance(new Long(queryId));
-                ScarabUser user1 = ScarabUserManager.getInstance(new NumberKey(userId), false);
-            	feedSource = new QueryFeed(query,user1,scarabToolManager,scarabLink);
-            }
-            else if (feedType.equals("IssueFeed")){
+            if (feedType.equals("IssueFeed")){
                 String issueId = parser.getString(ISSUE_ID_KEY);                
                 if(issueId.equals("")){
                     throw new IllegalArgumentException("Issue ID is missing.  Should be appended like: /issueId/xxx");

Modified: trunk/src/java/org/tigris/scarab/util/ScarabUtil.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/util/ScarabUtil.java?view=diff&rev=10284&p1=trunk/src/java/org/tigris/scarab/util/ScarabUtil.java&p2=trunk/src/java/org/tigris/scarab/util/ScarabUtil.java&r1=10283&r2=10284
==============================================================================
--- trunk/src/java/org/tigris/scarab/util/ScarabUtil.java	(original)
+++ trunk/src/java/org/tigris/scarab/util/ScarabUtil.java	2006-09-08 08:30:06-0700
@@ -318,4 +318,39 @@
         safe['('] = true;
         safe[')'] = true;
     }
+    
+    public static String filterNonXml(String input)
+    {
+        char output[] = new char[input.length()];
+        for (int i=0; i<input.length(); i++)
+        {
+            char ch = input.charAt(i);
+            if (isXMLCharacter(ch))
+            {
+                output[i] = ch;
+            }
+            else
+            {
+                output[i] = ' ';
+            }
+        }
+        return new String(output);
+    }
+    
+    private static boolean isXMLCharacter(int c) {
+
+        if (c == '\n') return true;
+        if (c == '\r') return true;
+        if (c == '\t') return true;
+
+        if (c < 0x20) return false;
+        if (c <= 0xD7FF) return true;
+        if (c < 0xE000) return false;
+        if (c <= 0xFFFD) return true;
+        if (c < 0x10000) return false;
+        if (c <= 0x10FFFF) return true;
+
+        return false;
+    }
+
 }

Modified: trunk/src/test/org/tigris/scarab/feeds/QueryFeedTest.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/test/org/tigris/scarab/feeds/QueryFeedTest.java?view=diff&rev=10284&p1=trunk/src/test/org/tigris/scarab/feeds/QueryFeedTest.java&p2=trunk/src/test/org/tigris/scarab/feeds/QueryFeedTest.java&r1=10283&r2=10284
==============================================================================
--- trunk/src/test/org/tigris/scarab/feeds/QueryFeedTest.java	(original)
+++ trunk/src/test/org/tigris/scarab/feeds/QueryFeedTest.java	2006-09-08 08:30:06-0700
@@ -44,12 +44,11 @@
  * This software consists of voluntary contributions made by many
  * individuals on behalf of CollabNet.
  */ 
-import org.apache.torque.om.NumberKey;
 import org.tigris.scarab.om.Query;
 import org.tigris.scarab.om.QueryManager;
-import org.tigris.scarab.om.ScarabUser;
-import org.tigris.scarab.om.ScarabUserManager;
+import org.tigris.scarab.screens.RSSDataExport;
 import org.tigris.scarab.test.BaseScarabTestCase;
+import org.tigris.scarab.util.IteratorWithSize;
 
 import com.sun.syndication.feed.synd.SyndFeed;
 import com.sun.syndication.io.SyndFeedOutput;
@@ -63,9 +62,9 @@
     
     public void testCreatingFeed() throws Exception{
         Query query = QueryManager.getInstance(new Long(280));
-        ScarabUser user1 = ScarabUserManager.getInstance(new NumberKey(1), false);
         assertNotNull(query);
-        Feed feed = new QueryFeed(query,user1,null,null);
+        IteratorWithSize results = IteratorWithSize.EMPTY;
+        Feed feed = new QueryFeed(query,results,null, RSSDataExport.DEFAULT_FEED_FORMAT);
         SyndFeed syndFeed = feed.getFeed();
         syndFeed.setFeedType("rss_2.0");
         SyndFeedOutput out = new SyndFeedOutput();

Modified: trunk/src/webapp/WEB-INF/templates/screens/IssueList.vm
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/webapp/WEB-INF/templates/screens/IssueList.vm?view=diff&rev=10284&p1=trunk/src/webapp/WEB-INF/templates/screens/IssueList.vm&p2=trunk/src/webapp/WEB-INF/templates/screens/IssueList.vm&r1=10283&r2=10284
==============================================================================
--- trunk/src/webapp/WEB-INF/templates/screens/IssueList.vm	(original)
+++ trunk/src/webapp/WEB-INF/templates/screens/IssueList.vm	2006-09-08 08:30:06-0700
@@ -1,7 +1,7 @@
 <link rel="alternate" type="application/rss+xml" title="RSS"
-href="$link.setPage('RSSDataExport.vm')/feedType/QueryFeed/queryId/$scarabR.Query.QueryId/userId/$user.UserId/type/rss_2.0">
+href="$link.setPage('Index.vm')/action/Search/go	/$scarabR.Query.QueryId/eventSubmit_doSelectquery/foo/output/feed/feedType/rss_2.0">
 <link rel="alternate" type="application/rss+xml" title="ATOM"
-href="$link.setPage('RSSDataExport.vm')/feedType/QueryFeed/queryId/$scarabR.Query.QueryId/userId/$user.UserId/type/atom_0.3">
+href="$link.setPage('Index.vm')/action/Search/go	/$scarabR.Query.QueryId/eventSubmit_doSelectquery/foo/output/feed/feedType/atom_0.3">
 #set ($mitlist = $user.CurrentMITList)
 #set ($searchType = $data.Parameters.getString('searchType', ''))
 
@@ -43,9 +43,9 @@
 #if ($scarabR.Query.QueryId)
 <td align="right">
 	<a style="align:right;" title="$l10n.SearchRSSFeed"
-	 href="$link.setPage('RSSDataExport.vm')/feedType/QueryFeed/queryId/$scarabR.Query.QueryId/userId/$user.UserId/type/rss_2.0"><img align="middle" src="$staticLink.setPath('/images/icon_rss.gif')" border="0"/></a>
+	 href="$link.setPage('Index.vm')/action/Search/go	/$scarabR.Query.QueryId/eventSubmit_doSelectquery/foo/output/feed/feedType/rss_2.0"><img align="middle" src="$staticLink.setPath('/images/icon_rss.gif')" border="0"/></a>
 	<a style="align:right;" title="$l10n.SearchATOMFeed"
-	 href="$link.setPage('RSSDataExport.vm')/feedType/QueryFeed/queryId/$scarabR.Query.QueryId/userId/$user.UserId/type/atom_0.3"><img align="middle" src="$staticLink.setPath('/images/icon_atom.gif')" border="0" /></a>
+	 href="$link.setPage('Index.vm')/action/Search/go	/$scarabR.Query.QueryId/eventSubmit_doSelectquery/foo/output/feed/feedType/atom_0.3"><img align="middle" src="$staticLink.setPath('/images/icon_atom.gif')" border="0" /></a>
 </td>
 #end
 #end

Removed: trunk/www/repository/rome/jars/rome-0.7-dev20050416.jar
Url: http://scarab.tigris.org/source/browse/scarab/trunk/www/repository/rome/jars/rome-0.7-dev20050416.jar?view=auto&rev=10283
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.