Yes, please file a bug for that.

If you can contribute the patch to gwt-code-reviews.appspot.com it'd be 
even better (see 
https://developers.google.com/web-toolkit/makinggwtbetter#contributingcode)
As far as the patch goes, your processing loses the "most-to-least-derived 
type" ordering of the domainToClientType values that 
Deobfuscator#getClientProxies mandates.
See 
http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/web/bindery/requestfactory/apt/TypeComparator.java
 for 
the ordering, to be ported to Class<?> 
(see 
http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/place/rebind/MostToLeastDerivedPlaceTypeComparator.java
 
for an almost-equivalent)

On Wednesday, May 9, 2012 4:24:22 PM UTC+2, Alexandre Ardhuin wrote:
>
> Hi All,
>
> I have an application with 2 gwt modules. Each module uses its own 
> RequestFactory and its own Proxy for the same domain object (ie. 2 
> RequestFactory with 2 differents Proxy on the same domain class).
> The first RF call succeeds and following RF of the same type too but when 
> the other RF is used an exception occurs : 
> "The domain type Xxx cannot be sent to the client"
>
> After some tests, the problem occurs only for 2 RF. Having only one RF 
> with 2 Proxy on the same domain object works well.
>
> The problem seems to be in 
> com.google.web.bindery.requestfactory.vm.impl.Deobfuscator.Builder.merge(Deobfuscator).
>  
> Doing the following modification resolves it.
>
>     public Builder merge(Deobfuscator existing) {
> +      Set<String> domains = new HashSet<String>();
> +      domains.addAll(d.domainToClientType.keySet());
> +      domains.addAll(existing.domainToClientType.keySet());
> +      for (String domain : domains) {
> +        Set<String> clientTypes = new HashSet<String>();
> +        clientTypes.addAll(d.domainToClientType.get(domain));
> +        clientTypes.addAll(existing.domainToClientType.get(domain));
> +        d.domainToClientType.put(domain, Collections.unmodifiableList(new 
> ArrayList<String>(clientTypes)));
> +      }
> -      d.domainToClientType.putAll(existing.domainToClientType);
>       d.operationData.putAll(existing.operationData);
>       // referencedTypes recomputed in build()
>       d.typeTokens.putAll(existing.typeTokens);
>       return this;
>     }
>
> Can someone confirms this is a bug ? (I haven't found any issue on that)
>
> Alexandre
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-web-toolkit/-/64utrsjDpFgJ.
To post to this group, send email to google-web-toolkit@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