>On Preferences:
>- in the new skeleton (form Subversion), the class now extends Task,
>while the Image (taken as example by me) extends IOTask ... what is
>better ?

Since these tasks will be reading from/writing to the file system, IOTask is 
probably slightly better. However, the only thing IOTask really offers beyond 
Task is stream monitoring, which you're not likely to need to use here. So 
either one is fine.

>- as by Web Start Persistence constraint, it's not possible to
>save/load data using a real URL (unless it's derived from the Codebase
>URL form where the application has been downloaded), so what do you
>think that instead of have a parameter URL url in constructors, if we
>use there a String name ? This could help to remove and simplify some
>code (like fixUrl, static utility methods, and other tricks) ...

I have to believe that this is a common problem when writing Web Start apps. 
See if you can find some documentation on how other developers have handled 
this.

>- verify if implement other XxxxTask methods for remaining "user"
>public methods (dump, exist, delete, list), and then, if remove old
>versions of them (standard methods inside Preferences), or at least if
>keep only dump() ...

I don't think we need these methods, since you can get the same functionality 
from JSONSerializer.

>- listeners, must they be added to standard methods (get/put/remove),
>or are they already ok as in Greg stub ?

I intentionally removed the listeners, for the reasons outlined in the commit: 
there isn't a strong use case for events in this class, and it would cause 
confusion, because directly modifying nested objects won't fire events. For 
example, consider:

{a: {b:"c"}}

If I call prefs.put("a.b", "d"), we can fire an event, because the Preferences 
class is handling the put(). But if I call:

Map<String, Object> a = (Map<String, Object>)prefs.get("a");
a.put("b", "d");

we can't, since "a" has no way to notify the preferences object that its 
contents changed.

>- synchronized methods, check if/where needed ... later
>- testing: I have to write a dedicated testCase2 method for the
>LoadTask/SaveTask, etc ...

You shouldn't need to synchronize anything here - that is handled for you by 
the Task class.

>Sorry for all these questions, with this rewrite I'd like to align as
>much as possible Preferences with Pivot way ...

I've tried to make it as simple as possible.  :-)  Just plug your serialization 
code in where you see TODO in the comments. You shouldn't need to do much 
beyond that, but let me know if you have any other questions.




Reply via email to