On Mon, Jul 27, 2020 at 9:15 AM Ben Weidig <b...@netzgut.net> wrote:

> Hi Thiago,
>
> thanks for the feedback!
>
> > I don't mind making JSONArray implement Collection<JSONCollection> and
> > JSONObject implement Map<String,JSONCollection> (JSONCollection is the
> > JSONObject and JSONArray superclass). Actually, I like the idea. Even if
> > it's not adopted, we could have they implementing Iterable.
>
> Do you mean Collection<Object> and Map<String, Object>?
> Using JSONCollection for the value type doesn't make much sense based on
> the underlying List<Object> / LinkedHashMap<String, Object>.
> Or I do not understand what you exactly mean.
>

I believe you're right. Of course, you've gave more thought to that than I
did. :) I'm just thinking of using the most specific type possible, but in
this case Object seems to be the only option.


> Only problems I've seen at first glance:
>
> * Signature change: JSONObject get(Object name) instead of JSONObject
> get(String name)
> * Return type / Signature change: void putAll(Map<? extends String, ?
> extends Object> newProperties) instead of JSONObject putAll(Map<String, ?>
> newProperties)
>
> The second one would be a real breaking change, but IMO an acceptable one,
> because it's easy to fix, and doesn't introduce side-effects.
>

Yeah, perfect backward-compatibility is great but not a hard requirement.
And, anyway, I guess this isn't a method used in many places anyway.


>
> Hopefully, I get some work done this week. If I run into any bigger issues,
> I'll present my findings.
>
> Ben
>
>
> On Sun, Jul 26, 2020 at 9:51 PM Thiago H. de Paula Figueiredo <
> thiag...@gmail.com> wrote:
>
> > On Sun, Jul 26, 2020 at 5:41 AM Ben Weidig <b...@netzgut.net> wrote:
> >
> > > * Stream-support
> > > * Additional instance creators
> > > * Approximate to the conceptional interfaces (Collection/Map)
> > > * Generic methods
> > > * Better/more informative exceptions
> > >
> >
> > I really love everything here, specially the idea of having better, more
> > informative exceptions.
> >
> >
> > > The general idea is making `JSONArray` more like
> `java.util.Collection`,
> > > and `JSONObject` more like `java.util.Map`, without implementing the
> > > interfaces explicitly.
> > > If we would implement them directly, it would method duplication
> > (`size()`
> > > vs. `length()`, `add()` vs `put(...)`).
> > >
> >
> > I don't mind making JSONArray implement Collection<JSONCollection> and
> > JSONObject implement Map<String,JSONCollection> (JSONCollection is the
> > JSONObject and JSONArray superclass). Actually, I like the idea. Even if
> > it's not adopted, we could have they implementing Iterable.
> >
> >
> > >
> > > Motivation
> > > ----------
> > >
> > > Tapestry's use of JSON types is deeply ingrained into its services.
> > > By using its own types, we can improve upon them to adapt to any new
> > > features.
> > > The framework and Java itself evolved, and they should be too.
> > >
> > > Java 8 was bringing a lot of new features, like lambdas, Streams, and
> > > Optionals, thereby changing the way we can deal with collection types
> in
> > a
> > > significant way.
> > >
> > > It's time to adapt tapestry-json to the new features available to us.
> > >
> >
> > I definitely agree here.
> >
> >
> > > Testing
> > > -------
> > >
> > > All added functionality should be unit tested to ensure no existing
> code
> > > will be broken by it.
> > >
> >
> > This is very, very important. Fortunately, we already have many tests in
> > tapestry-json (and in Tapestry overall) to cover backward compatibility.
> Of
> > course, new tests to cover the new functionality would be great.
> >
> > Regarding everything else, I agree. I'm looking forward to this!
> >
> >
> > >
> > >
> > >
> > >
> > >
> > >
> > > On Sat, Jul 25, 2020 at 1:12 PM Ben Weidig <b...@netzgut.net> wrote:
> > >
> > > > Hi,
> > > >
> > > > @Chris: Where it's feasible we use Jackson, too. But sometimes it's
> > > easier
> > > > to just use a more "dumb but still JSON-compatible" type without
> > needing
> > > an
> > > > ObjectMapper.
> > > > And the first-class support of in many parts of Tapestry makes it a
> > > better
> > > > choice for smaller use-cases. So more functionality in these types
> > would
> > > be
> > > > great.
> > > >
> > > > @David: I didn't want to touch much of the existing stuff, but you're
> > > > right. The "happy path" design can be such a nuisance sometimes...
> > > >
> > > > Looks like I'm going to write a small proposal of my planned changes
> > and
> > > > additions, to have something to discuss, and to better manage scope.
> > > >
> > > > Ben
> > > >
> > >
> > >
> > >
> >
> >
> > --
> > Thiago
> >
>


-- 
Thiago

Reply via email to