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

Reply via email to