<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to bugs</title><link>https://sourceforge.net/p/spring-json/bugs/</link><description>Recent changes to bugs</description><atom:link href="https://sourceforge.net/p/spring-json/bugs/feed.rss" rel="self"/><language>en</language><lastBuildDate>Thu, 16 Jun 2011 09:05:45 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/spring-json/bugs/feed.rss" rel="self" type="application/rss+xml"/><item><title>Hard-coded dependency to SOJO</title><link>https://sourceforge.net/p/spring-json/bugs/23/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The current implementation has a hard dependency to SOJO, that makes using the library with only JSON-LIB unachievable.&lt;br /&gt;
The offending class is the JsonView (DOH!), that creates an instance of the SojoJsonStringWriter, that depends on the net.sf.sojo.common.WalkerInterceptor, which is not even part of the sojo-optional, but the sojo core.&lt;/p&gt;
&lt;p&gt;SOJO is not found in any maven repository, and it would be nice to be able to use it with JSON-Lib alone.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">The light in the dark</dc:creator><pubDate>Thu, 16 Jun 2011 09:05:45 -0000</pubDate><guid>https://sourceforge.net7829221b71b2c3cca6cca280b6662f94ea59e822</guid></item><item><title>SimplePropertyFilter removes converters of ConvertUtilsBean</title><link>https://sourceforge.net/p/spring-json/bugs/22/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;SimplePropertyFilter removes converters of ConvertUtilsBean&lt;/p&gt;
&lt;p&gt;Summary: Removing the converters of ConvertUtilsBean is not wrong; however it's wrong to remove the converters of the instance that will be used by the static methods of BeanUtils, since this methods are used all around web applications and expect the default behavior provided by all the converters, included the ones that SimplePropertyFilter removes.&lt;/p&gt;
&lt;p&gt;SimplePropertyFilter does a number of funny things that are OK or not depending on the environment. In my environment the funny things that SimplePropertyFilter do end up being very wrong. Let's go into the details: Since there's a number of ways to filter properties, very conveniently JsonView can be configured with any kind of custom property filter; however, because of the way&lt;br /&gt;
1) SimplePropertyFilter behaves during initialization and then 2) because of the way JsonView is initialized when its class is loaded by the JVM, setting a custom property filter is not enough to stop SimplePropertyFilter polluting the static configuration of BeanUtils.&lt;/p&gt;
&lt;p&gt;As described, any kind of JsonViewFilter (any class implementing JsonViewFilter) can be used to configure JsonView; however even after specifying a custom JsonViewFilter for JsonView&lt;/p&gt;
&lt;p&gt;&amp;lt;bean id="jsonView"&lt;br /&gt;
class="com.wellsfargo.online.banking.controller.transfers.JsonView"&amp;gt;&lt;br /&gt;
&amp;lt;property name="contentType" value="text/json"/&amp;gt;&lt;br /&gt;
&amp;lt;property name="jsonViewFilter" ref="jsonViewFilter"/&amp;gt;&lt;br /&gt;
&amp;lt;/bean&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;bean id="jsonViewFilter" class="org.localparty.JsonViewFilter"/&amp;gt;&lt;/p&gt;
&lt;p&gt;still the JVM will end up intanciating SimplePropertyFilter. How? JsonView has a 'jsonViewFilter' class attribute that is initialized with a new instance of SimplePropertyFilter. Before Spring has a chance to wire JsonView, the JVM has already instantiated SimplePropertyFilter. Why? because the first thing that the JVM does whenever it loads a class is setting its class attributes,&lt;/p&gt;
&lt;p&gt;public class JsonView extends AbstractView {&lt;br /&gt;
private static final String DEFAULT_ENCODING = "UTF-8";&lt;/p&gt;
&lt;p&gt;... &lt;br /&gt;
// Even if we set a custom jsonViewFilter with spring, &lt;br /&gt;
// the piece of code inside of the constructor of SimplePropertyFilter&lt;br /&gt;
// will be executed.&lt;br /&gt;
--&amp;gt; private JsonViewFilter jsonViewFilter = new SimplePropertyFilter();&lt;br /&gt;
...&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;which is not a big deal per se; however SimplePropertyFilter does a number of things that end up messing the configuration of my web application badly, very badly. How? I'll try to put it as simply as I can:&lt;/p&gt;
&lt;p&gt;In order to filter properties that are not to be serialized, SimplePropertyFilter sets null values into the attributes of the model that are to be filtered. The JSON serializer won't serialize attributes with null values and this is how attributes that are to be filtered are filtered. &lt;/p&gt;
&lt;p&gt;Now, ConvertUtilsBean (org.apache.commons.beanutils.ConvertUtilsBean) registers converters for all primtives during intialization; however the converters are initialized to use default values when null values are used. e.g. BooleanConverter (org.apache.commons.beanutils.converters.BooleanConverter) will use the default value 'false' whenerver it is asked to convert 'null':&lt;/p&gt;
&lt;p&gt;public final class BooleanConverter implements Converter {&lt;br /&gt;
...&lt;br /&gt;
public BooleanConverter(Object defaultValue) {&lt;br /&gt;
this.defaultValue = defaultValue;&lt;br /&gt;
----- &amp;gt; this.useDefault = true;  // will use 'false', as instructed by &lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;public class ConvertUtilsBean {&lt;br /&gt;
...&lt;br /&gt;
private Boolean defaultBoolean = Boolean.FALSE;&lt;br /&gt;
...&lt;br /&gt;
public ConvertUtilsBean() {&lt;br /&gt;
converters.setFast(false);&lt;br /&gt;
deregister();&lt;br /&gt;
converters.setFast(true);&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;public void deregister() {&lt;br /&gt;
...&lt;br /&gt;
----- &amp;gt; register(Boolean.TYPE, new BooleanConverter(defaultBoolean)); //use 'Boolean.FALSE'&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;Since SimplePropertyFilter wants to set null values to the attributes of the model that are to be filtered, it doesn't want the converters that behave like BooleanConverter, already shown, to be used. This way, SimplePropertyFilter removes the converters for Boolean, Character, Double, etc:&lt;/p&gt;
&lt;p&gt;public class SimplePropertyFilter implements JsonViewFilter{&lt;br /&gt;
...&lt;br /&gt;
public SimplePropertyFilter(){&lt;br /&gt;
setUpBeanUtils();&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;protected void setUpBeanUtils() {&lt;br /&gt;
----- &amp;gt; ConvertUtilsBean cub = BeanUtilsBean.getInstance().getConvertUtils();&lt;br /&gt;
cub.deregister(Boolean.class);&lt;br /&gt;
cub.deregister(Boolean.TYPE);&lt;br /&gt;
cub.deregister(Byte.class);&lt;br /&gt;
cub.deregister(Byte.TYPE);&lt;br /&gt;
cub.deregister(Character.class);&lt;br /&gt;
cub.deregister(Character.TYPE);&lt;br /&gt;
cub.deregister(Double.class);&lt;br /&gt;
cub.deregister(Double.TYPE);&lt;br /&gt;
cub.deregister(Float.class);&lt;br /&gt;
cub.deregister(Float.TYPE);&lt;br /&gt;
cub.deregister(Long.class);&lt;br /&gt;
cub.deregister(Long.TYPE);&lt;br /&gt;
cub.deregister(Short.class);&lt;br /&gt;
cub.deregister(Short.TYPE);&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;This is a very incorrect thing to do, since one of the application lifecycle listeners for my web application also use the singleton instance of ConvertUtilsBean to read the configuration of a number of resources. Have a look at this stack trace that shows how One of the lifecycle listeners configured for my web application, when executed by the Weblogic webapp initialization routine, use the singleton instance of BeanUtilsBean.&lt;/p&gt;
&lt;p&gt;Daemon Thread [[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] (Suspended (entry into method getInstance in BeanUtilsBean)) &lt;br /&gt;
BeanUtilsBean.getInstance() line: 80&lt;br /&gt;
PropertyUtilsBean.getInstance() line: 114 &lt;br /&gt;
PropertyUtils.getPropertyDescriptor(Object, String) line: 460 &lt;br /&gt;
BeanPropertySetterRule.end(String, String) line: 189&lt;br /&gt;
Digester.endElement(String, String, String) line: 1332  &lt;br /&gt;
SAXParserImpl$JAXPSAXParser(AbstractSAXParser).endElement(QName, Augmentations) line: not available &lt;br /&gt;
XMLDocumentScannerImpl(XMLDocumentFragmentScannerImpl).scanEndElement() line: not available &lt;br /&gt;
XMLDocumentScannerImpl$ContentDispatcher(XMLDocumentFragmentScannerImpl$FragmentContentDispatcher).dispatch(boolean) line: not available  &lt;br /&gt;
XMLDocumentScannerImpl(XMLDocumentFragmentScannerImpl).scanDocument(boolean) line: not available  &lt;br /&gt;
XIncludeAwareParserConfiguration(XML11Configuration).parse(boolean) line: not available &lt;br /&gt;
XIncludeAwareParserConfiguration(XML11Configuration).parse(XMLInputSource) line: not available&lt;br /&gt;
SAXParserImpl$JAXPSAXParser(XMLParser).parse(XMLInputSource) line: not available  &lt;br /&gt;
SAXParserImpl$JAXPSAXParser(AbstractSAXParser).parse(InputSource) line: not available &lt;br /&gt;
SAXParserImpl$JAXPSAXParser.parse(InputSource) line: not available  &lt;br /&gt;
Digester.parse(InputSource) line: 1863&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;My Web Application Lifecycle listeners&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
EventsManager$FireContextListenerAction.run() line: 376 &lt;br /&gt;
AuthenticatedSubject.doAs(AbstractSubject, PrivilegedAction) line: 321  &lt;br /&gt;
SecurityManager.runAs(AuthenticatedSubject, AuthenticatedSubject, PrivilegedAction) line: 121 &lt;br /&gt;
EventsManager.notifyContextCreatedEvent() line: 82  &lt;br /&gt;
WebAppServletContext.preloadResources() line: 1609  &lt;br /&gt;
WebAppServletContext.start() line: 2764 &lt;br /&gt;
WebAppModule.startContexts() line: 889  &lt;br /&gt;
WebAppModule.start() line: 333  &lt;br /&gt;
ModuleStateDriver$3.next(Object) line: 204  &lt;br /&gt;
StateMachineDriver.nextState(StateChange, Object[]) line: 26  &lt;br /&gt;
ModuleStateDriver.start(Module[]) line: 60&lt;br /&gt;
ScopedModuleDriver.start() line: 200&lt;br /&gt;
ModuleListenerInvoker.start() line: 117 &lt;br /&gt;
ModuleStateDriver$3.next(Object) line: 204  &lt;br /&gt;
StateMachineDriver.nextState(StateChange, Object[]) line: 26  &lt;br /&gt;
ModuleStateDriver.start(Module[]) line: 60&lt;br /&gt;
StartModulesFlow.activate() line: 26&lt;br /&gt;
BaseDeployment$2.next(Object) line: 635 &lt;br /&gt;
StateMachineDriver.nextState(StateChange, Object[]) line: 26  &lt;br /&gt;
WarDeployment(BaseDeployment).activate(DeploymentContext) line: 212 &lt;br /&gt;
DeploymentStateChecker.activate(DeploymentContext) line: 154&lt;br /&gt;
AppContainerInvoker.activate(DeploymentContext) line: 80&lt;br /&gt;
AppDeployment(BasicDeployment).activate(DeploymentContext) line: 181  &lt;br /&gt;
AppDeployment(BasicDeployment).activateFromServerLifecycle() line: 358&lt;br /&gt;
DeploymentAdapter$1.doActivate(Object) line: 52 &lt;br /&gt;
DeploymentAdapter$1(DeploymentAdapter).activate(Object) line: 186 &lt;br /&gt;
AppTransition$2.transitionApp(DeploymentAdapter, Object) line: 30 &lt;br /&gt;
ConfiguredDeployments.transitionApps(AppTransition) line: 233 &lt;br /&gt;
ConfiguredDeployments.activate() line: 169  &lt;br /&gt;
ConfiguredDeployments.deploy() line: 123&lt;br /&gt;
DeploymentServerService.resume() line: 173  &lt;br /&gt;
DeploymentServerService.start() line: 89&lt;br /&gt;
SubsystemRequest.run() line: 64 &lt;br /&gt;
ExecuteThread.execute(Runnable) line: 209 &lt;br /&gt;
ExecuteThread.run() line: 181 &lt;/p&gt;
&lt;p&gt;Recapitulating, whenver the JVM loads the class definiton of JsonView, it also intantiates SimplePropertyFilter, in order to initialize the class members of the former and once this happens, the any future use of BeanUtils will be polluted, since some of the converters that are expected to work, won't work at all, because they have been removed by the initialization routine of SimplePropertyFilter.&lt;/p&gt;
&lt;p&gt;OK good enough, let's fix this: let SimplePropertyFilter do its thing; however it should't mess up the singleton instance of ConvertUtilsBean that is going to be used all across the application but should configure it's private instance so that it doesn't end up  polluting the instance that, again, will be used by all the static methods of BeanUtilsBean.&lt;/p&gt;
&lt;p&gt;public class SimplePropertyFilter implements JsonViewFilter{&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;// we have a new instance of BeanUtilsBean to be used locally&lt;br /&gt;
private BeanUtilsBean beanUtilsBean;&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;protected void setUpBeanUtils() {&lt;br /&gt;
// DO NOT mess up with the singleton instance of ConvertUtilsBean but:&lt;br /&gt;
//ConvertUtilsBean cub = BeanUtilsBean.getInstance().getConvertUtils();&lt;/p&gt;
&lt;p&gt;// 1) create our own, configure it as we need it and&lt;br /&gt;
ConvertUtilsBean convertUtilsBean = new ConvertUtilsBean();&lt;br /&gt;
convertUtilsBean.deregister(Boolean.class);&lt;br /&gt;
convertUtilsBean.deregister(Boolean.TYPE);&lt;br /&gt;
convertUtilsBean.deregister(Byte.class);&lt;br /&gt;
convertUtilsBean.deregister(Byte.TYPE);&lt;br /&gt;
convertUtilsBean.deregister(Character.class);&lt;br /&gt;
convertUtilsBean.deregister(Character.TYPE);&lt;br /&gt;
convertUtilsBean.deregister(Double.class);&lt;br /&gt;
convertUtilsBean.deregister(Double.TYPE);&lt;br /&gt;
convertUtilsBean.deregister(Float.class);&lt;br /&gt;
convertUtilsBean.deregister(Float.TYPE);&lt;br /&gt;
convertUtilsBean.deregister(Long.class);&lt;br /&gt;
convertUtilsBean.deregister(Long.TYPE);&lt;br /&gt;
convertUtilsBean.deregister(Short.class);&lt;br /&gt;
convertUtilsBean.deregister(Short.TYPE);&lt;/p&gt;
&lt;p&gt;// 2) use it for creating a new instance of BeanUtilsBean that will be used&lt;br /&gt;
//    to filter attributes as required&lt;br /&gt;
beanUtilsBean = new BeanUtilsBean(convertUtilsBean, new PropertyUtilsBean());&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;protected void removePropertyValue(Map model, String property, String commandName) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException{&lt;br /&gt;
String p = null;&lt;br /&gt;
if(property.matches("^\\(.+\\)|^\\(.+\\)\\..+"))&lt;br /&gt;
p =  property.replaceFirst("\\(", "").replaceFirst("\\)", "");&lt;br /&gt;
else&lt;br /&gt;
p =  new StringBuilder().append(commandName).append(".").append(property).toString();&lt;/p&gt;
&lt;p&gt;try{&lt;/p&gt;
&lt;p&gt;if(log.isDebugEnabled())log.debug(p +" = " + BeanUtils.getProperty(model, p));&lt;br /&gt;
// DO NOT use the singleton instance that will use the unconfigured instance of BeanUtilsBean but,&lt;br /&gt;
// BeanUtils.setProperty(model, p, null);&lt;/p&gt;
&lt;p&gt;// use our private instance of BeanUtilsBean, that has a configured instance of ConvertUtilsBean&lt;br /&gt;
beanUtilsBean.setProperty(model, p, null);&lt;br /&gt;
if(log.isDebugEnabled())log.debug(p +" set to " + BeanUtils.getProperty(model, p));&lt;br /&gt;
if(log.isDebugEnabled())log.debug("======================================");&lt;br /&gt;
}catch(Exception e){&lt;br /&gt;
if(log.isDebugEnabled())log.debug("Error excluding property: " + p + ": " + e.toString());&lt;br /&gt;
}&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;};&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gerardo Costilla</dc:creator><pubDate>Fri, 30 Apr 2010 01:39:28 -0000</pubDate><guid>https://sourceforge.netf1bb612351051ed8c3cae49d1bbfca8353c67b95</guid></item><item><title>Versions above 1.0 won't return to callback function</title><link>https://sourceforge.net/p/spring-json/bugs/21/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;I have posted this at: &lt;a href="http://forum.springsource.org/showthread.php?t=86787" rel="nofollow"&gt;http://forum.springsource.org/showthread.php?t=86787&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Basically, I'm trying to submit a form through AJAX and the form contains several fields including a file input field.  With version 1.0, the javacript callback function is executed after the server returns a JSON data response.  But with higher versions, the JSON data is streamed back to the client and the javascript callback function is never executed at all.  It's as if I'm downloading an HTML file that contains the JSON data.  I'm not exactly sure if this is an issue on spring-json or json-lib.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djdemarco</dc:creator><pubDate>Fri, 26 Mar 2010 03:49:12 -0000</pubDate><guid>https://sourceforge.net71bbbef1344fd43c1d77c8e05be082e062f73f83</guid></item><item><title>XStreamWriter Serialize null values in Collections as null</title><link>https://sourceforge.net/p/spring-json/bugs/20/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;XStreamWriter : Serialize null values in Collections as 'null' not '{}'&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Kai Ulrich</dc:creator><pubDate>Tue, 08 Dec 2009 12:51:21 -0000</pubDate><guid>https://sourceforge.netab1ad7b4fb6dd3f97084b892ff2258dddfc148dd</guid></item><item><title>Booleans become String literals instead of JS-Booleans</title><link>https://sourceforge.net/p/spring-json/bugs/19/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;From version 1.2 on there is a bug in the serialization of Boolean (The object) values. It gets written into JSON as prop:"true" instead of prop:true which results in "false" becoming true in JS&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Christian Kalkhoff</dc:creator><pubDate>Mon, 07 Sep 2009 14:21:17 -0000</pubDate><guid>https://sourceforge.nete2559b54abc4551f3e8de66564ecd8cac15c41e7</guid></item><item><title>BindingResult getting added to outbound model</title><link>https://sourceforge.net/p/spring-json/bugs/18/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;If there is a DataBinder associated with the request, it is getting added to the outbound model and rendered into the Json.  If my command object is named "command" the BindingResult gets added with the key "org.springframework.validation.BindingResult.command" and a value of :{"messageCodesResolver":{"prefix":""},"nestedPath":""}&lt;/p&gt;
&lt;p&gt;This is with the SojoJsonStringWriter.  Setting that key as an exclude via the following code also has no effect whatsoever:&lt;/p&gt;
&lt;p&gt;JsonWriterConfiguratorTemplateRegistry registry = JsonWriterConfiguratorTemplateRegistry.load(request);           &lt;br /&gt;
registry.registerConfiguratorTemplate(&lt;br /&gt;
new SojoJsonWriterConfiguratorTemplate(){&lt;br /&gt;
@Override&lt;br /&gt;
public SojoConfig getJsonConfig() {&lt;br /&gt;
SojoConfig config= new SojoConfig();&lt;br /&gt;
String[] excludes = new String[] {&lt;br /&gt;
"org.springframework.validation.BindingResult.command"&lt;br /&gt;
};&lt;br /&gt;
config.setExcludedProperties(excludes);&lt;br /&gt;
return config;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
);      &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;If I use JsonlibJsonStringWriter instead of the sojo writer,it throws an exception because of a cycle in the object graph.  This problem has existed in the jsonlib writer for at least 8 or 9 months and the last time I investigated it, the cycle was a result of the HttpServletRequest being part of the BindingResult.  I don't remember which property of the request generated the cycle but it shuld be easy enough to track down. I actually abandoned the use of jsonlib writer because of this issue, though I was able to correct it by modifying the writer config and ignoring all objects of class BindingResult.&lt;/p&gt;
&lt;p&gt;It seems to me that putting the BindingResult directly into the output is a bug.&lt;br /&gt;
&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Sat, 05 Sep 2009 00:17:44 -0000</pubDate><guid>https://sourceforge.net67378620c90ee0010bcff2cf2506e05a0572b4f3</guid></item><item><title>booleans in sojostringwriter</title><link>https://sourceforge.net/p/spring-json/bugs/17/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;If a class that is converted to json contains booleans they won't be available in your json object when your getter is 'isVariable', but it has to be 'getVariable'.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Mon, 29 Jun 2009 09:55:50 -0000</pubDate><guid>https://sourceforge.net872202cb9c1a24d0277760b4413bc08bef1e17a0</guid></item><item><title>Project Repository Broken</title><link>https://sourceforge.net/p/spring-json/bugs/16/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The "Project Repository" listed in the downloads section of the maven generated site does not work.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Chris Widhelm</dc:creator><pubDate>Fri, 29 May 2009 17:07:08 -0000</pubDate><guid>https://sourceforge.net6b1fc17ed954619d6491d10a5cfd938a3636483f</guid></item><item><title>News without dates</title><link>https://sourceforge.net/p/spring-json/bugs/15/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;On the website there are no dates in the news section.  It is hard to tell if the "news" is new news or old news. &lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Chris Widhelm</dc:creator><pubDate>Fri, 29 May 2009 17:06:31 -0000</pubDate><guid>https://sourceforge.neta93d0320a2371ca017397943eb80f83302e38f60</guid></item><item><title>v1.2 in Maven Repo</title><link>https://sourceforge.net/p/spring-json/bugs/14/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;When will v1.2 be added to the main maven repository?&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Chris Widhelm</dc:creator><pubDate>Fri, 29 May 2009 17:05:52 -0000</pubDate><guid>https://sourceforge.net0a6f9777bc9fd441ee5a682c1e7dafefc78d07ec</guid></item></channel></rss>