ok, when does one find such information, i mean, clearly these kind of things, even SkipInterfaceValidation do not appear on the developer guide, is there a secret cabal of gwt-isters, gathering somewhere in the ether?
On Tue, Dec 13, 2011 at 11:39 AM, Thomas Broyer <[email protected]> wrote: > A DeobfuscatorBuilder must be named the same as your RequestFactory > (including same package) suffixed with "DeobfuscatorBuilder", and > extend com.google.web.bindery.requestfactory.vm.impl.Deobfuscator.Builder. > > The ones generated by the ValidationTool/annotation processor initialize > themselves in the instance > initializer<http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.6>. > but you could do the same in the constructor. Initialization is made in > three parts: > > - withOperation: registers service methods > - withRawTypeToken: registers each proxy with their type token > - withClientToDomainMappings: registers the mappings between domain > classes and proxies, i.e. domain-to-client (sic!) > > Ex: > withOperation(new OperationKey("<token>"), > new OperationData.Builder() > .withClientMethodDescriptor("(<JNI descriptor for method > arguments>)<JNI descriptor for return type; Request or InstanceRequest>") > .withDomainMethodDescriptor("<similar, but for the corresponding > domain method>") > .withMethodName("…") > .withRequestContext("…") > .build()); > The OperationKey can be built either with the token directly or the > RequestContext binary name, method name and client method descriptor (the > exact same arguments you'll pass to withRequestContext, withMethodName and > withClientMethodDescriptor). For instance, I compute the token (using the > 3-args ctor and then a call to get(): new OperationKey(contextBinaryName, > methodName, methodDescriptor).get()) at the time I generate the > DeobfuscatorBuilder. > > withRawTypeToken("<token>", "<proxy binary name>"; > The token is computed using OperationKey.hash("<proxy binary name>"). > > withClientToDomainMapping("<domain class binary name>", > Arrays.asList("<proxy binary name>", "<another proxy binary name if > needed>")); > > Note that, in the DeobfuscatorBuilder generated by the > ValidationTool/annotation processor, the BaseProxy, ValueProxy and > EntityProxy do have their withRawTypeToken, and the latter two are listed > as client types for java.lang.Object in withClienttoDomainMapping. So > you'll have at a minimum: > withRawTypeToken("FXHD5YU0TiUl3uBaepdkYaowx9k=", > "com.google.web.bindery.requestfactory.shared.BaseProxy"); > withRawTypeToken("w1Qg$YHpDaNcHrR5HZ$23y518nA=", > "com.google.web.bindery.requestfactory.shared.EntityProxy"); > withRawTypeToken("8KVVbwaaAtl6KgQNlOTsLCp9TIU=", > "com.google.web.bindery.requestfactory.shared.ValueProxy"); > withClientToDomainMappings("java.lang.Object", > Arrays.asList("com.google.web.bindery.requestfactory.shared.EntityProxy","com.google.web.bindery.requestfactory.shared.ValueProxy")); > > An "echo" method could be: > withOperation(new OperationKey("com.example.shared.EchoContext", "echo", > "(Ljava/lang/String;)Lcom/google/web/bindery/requestfactory/shared/Request;"), > new OperationData.Builder() > > .withClientMethodDescriptor("(Ljava/lang/String;)Lcom/google/web/bindery/requestfactory/shared/Request;") > .withDomainMethodDescriptor("(Ljava/lang/String;)Ljava/lang/String;") > .withMethodName("echo") > .withRequestContext("com.example.shared.EchoContext") > .build()); > > But as I said, in your case, annotating the property with > @SkipInterfaceValidation should be enough, and the > ValidationTool/annotation processor will then generate the > DeobfuscatorBuilder (because it won't check the domain class for that > property). And it should work at runtime because properties are resolved by > name, they're not obfuscated. > > -- > 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/-/_GgAs2lW8gYJ. > > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-web-toolkit?hl=en. > -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
