Thanks again guys for the response.

I was thinking what Paul's solution to take and I like 1st one with:
public abstract class Property<T> implements Serializable {
        T value;
}

However, I don't see what way GWT serializer may know in this service
method:
HashMap<String, Property<?>> getFoo();

what type of Property can be received - is it not the same problem as
in HashMap<String, Object> getFooWithObject();

??

Krisw

On 12 Mar, 11:04, Paul Robinson <ukcue...@gmail.com> wrote:
> You can create a class that wraps everything you might want to transport
> and use that class in the interface instead.
>
> One way is like this:
>
>     public abstract class Property<T> implements Serializable {
>         T value;
>     }
>
>     public class LongProperty extends Property<Long> {
>     }
>
>     public class DoubleProperty extends Property<Double> {
>     }
>
>     public interface Service {
>         HashMap<String, Property<?>> getFoo();
>     }
>
> another way:
>
>     public enum PropertyType { INTEGER, LONG, DOUBLE, ... }
>
>     public class Property implements Serializable {
>         PropertyType type;
>
>         Long longValue;
>         Date dateValue;
>         Integer intValue;
>     }
>
>     public interface Service {
>         HashMap<String, Property> getFoo();
>     }
>
> However you do it, do be aware that you may well increase the required
> size of data sent over the network using techniques like this - and the
> time taken to serialize/deserialize it.
>
> @gwt.typeArgs was needed before GWT 1.5 when GWT first supported
> generics. You don't need it now (I'm not sure if you still can use it)
> and it wouldn't help here anyway because generics let you specify the
> same information.
>
> Paul
>
> kriswpl wrote:
> > Thank you Paul for your reply.
>
> > FYI - I use Map not to use DTO - I put all properties (Long, Date) to
> > this Map.
>
> > So I have another question --- is it any way to define what kind of
> > objects (Date, Long, Double, etc.) can show in Map. I found
> > information @gwt.typeArgs <something>.
> > I mean - is it possible to add to the remote interface information
> > about all serializaed types which can be in Map? - to solve this
> > problem
>
> > Thanks,
> > Krisw
>
> > On 11 Mar, 17:55, Paul Robinson <ukcue...@gmail.com> wrote:
>
> >> kriswpl wrote:
>
> >>> Interface method is:
> >>> public Map<String, Object> test();
>
> >>> and in implementation I put into returned map, object java.util.Long
> >>> (which is serializable:) ):
> >>> map.put("long", new Long(1));
>
> >>> Where do I do it wrong?
>
> >> GWT does a great job of putting as little into the javascript as
> >> possible. In the above case, there's nothing to tell it that you're
> >> going to send a Long, so it doesn't generate theRPCcode into the
> >> javascript that knows how to deserialize a Long. Add another method that
> >> references Long, and then your first method might work because the Long
> >> code is now going to be included.
>
> >> On a related note, using Map in the API is not a good idea because it
> >> means GWT must look through all your code for every implementation of
> >> Map to see whether it's used. At the very least, it will make compiles
> >> take longer. At worst, it will generate longer code. It goes against the
> >> grain for java programming, but you need to make GWTRPCAPIs as
> >> specific as possible. That means declaring that you're returning a
> >> HashMap, not a Map, in the interface.
>
> >> This also means you can't declare Object as a type in anRPCinterface.
>
> >> Paul
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to google-web-tool...@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to