Hi Carsten, While I don't have any advice on how to proceed, I can tell you that I'd be getting cold feet at about this point too. ;)
Jeff. > -----Original Message----- > From: Carsten Ziegeler [mailto:cziege...@apache.org] > Sent: 13 August 2012 10:48 > To: dev@sling.apache.org > Subject: Re: Empty string property values > > While looking into SLING-2534, it seems that (as Alex noted) our docs > say something different than the implementation. > So I tried to fix the implementation (whic is fairly easy), but then I > ran into failing junit tests - I think these tests have wrong > assumptions. > So after fixing these I run into failing integration tests, e.g. > SlingDefaultValuesTest#testDefaultBehaviour posts a new property with > an empty value and checks if the property does not exists afterwards. > Now, these tests can be fixed as well, but I'm wondering if that's a > good thing - it would be correct, but existing applications might rely > on the wrong behaviour? > On the other hand for rendering a missing value and an empty value > usually doesn't make a difference...while it might make a difference > for other apps > > Carsten > > > 2012/7/19 Alexander Klimetschek <aklim...@adobe.com>: > > On 16.07.2012, at 17:07, Jeremy Booth wrote: > >> For our app we do need to > >> differentiate between provided empty and not provided. > > > > I can imagine that this makes sense sometimes (albeit I haven't come across > this yet). > > > >> On 16 July 2012 15:42, Carsten Ziegeler <cziege...@apache.org> wrote: > >>> the handling of the empty value happens in the Sling Post servlet - > >>> afaik this was a decision in the early days of the post servlet to > >>> treat an empty value like no value. > > > > Yes, that was always in the code (I remember refactoring that once for the > @Patch feature). It's clearly commented, albeit the initial reasoning seems > lost: > > > > // if no value is present or a single empty string is given, > > // just remove the existing property (if any) > > removeProperty(parent, prop); > > > > However, the sling post servlet docs say something different: > > > > http://sling.apache.org/site/manipulating-content-the-slingpostservlet- > servletspost.html#ManipulatingContent-TheSlingPostServlet%28servlets.post%29- > %7B%7B@IgnoreBlanks%7D%7D > > > > The 2nd example in that section: > > > > <form method="POST" action="/content/page/first" enctype="multipart/form- > data"> > > <input type="hidden" name="stringProperty@TypeHint" value="String"/> > > <input type="text" name="stringProperty" value=""/> > > </form> > > > > This will _not_ result in an empty property, but in no property at all (just > tested it). > > > > Without knowing the original reasoning for "" == null, I would say the sling > post servlet documentation is king and this is a bug :-) > > > > But one needs to be careful here, as there are so many options involved: > single- vs. multi-value properties, @IgnoreBlanks, @DefaultValue = :null, > @DefaultValue = :ignore ... (see also RequestPropertyTest). > > > > Cheers, > > Alex > > > > > > -- > Carsten Ziegeler > cziege...@apache.org