QBiT,

Have you cleaned your project? I was seeing some weirdness in RF after
moving to 2.3, then realized I still had the GWT 2.2 jar on the classpath...

/dmc

On Thu, May 5, 2011 at 10:19 AM, QBiT <[email protected]> wrote:

> Hello,
>
> when i refactored my sources to fit the new package structure (
> com.google.web.bindery.requestfactory ) of the requestfactory i ended up
> with a mess :/
> When i try to launch my application i get the following error:
>
> SCHWERWIEGEND: de.systemagmbh.gf.dwr.ui.shared.context.ReportRequestContext
> is not a RequestContext
> 05.05.2011 16:05:51
> com.google.gwt.requestfactory.server.ServiceLayerDecorator die
> SCHWERWIEGEND: The RequestContext type
> de.systemagmbh.gf.dwr.ui.shared.context.ReportRequestContext did not pass
> validation
> 05.05.2011 16:05:51
> com.google.gwt.requestfactory.server.RequestFactoryServlet doPost
> SCHWERWIEGEND: Unexpected error
> com.google.gwt.requestfactory.server.UnexpectedException: The
> RequestContext type
> de.systemagmbh.gf.dwr.ui.shared.context.ReportRequestContext did not pass
> validation
>  at
> com.google.gwt.requestfactory.server.ServiceLayerDecorator.die(ServiceLayerDecorator.java:205)
>
> After a debugging session i found out that perhaps something went wrong
> with the move to the new package.
> This is what i have found:
>
> In the class ResolverServiceLayer the method
> validator.validateRequestContext(requestContextClass); sets the validator to
> poisened.
>
>   @Override
>   public Method resolveRequestContextMethod(String requestContextClass,
> String methodName) {
>     synchronized (validator) {
>       validator.antidote();
>       validator.validateRequestContext(requestContextClass);
>       if (validator.isPoisoned()) {
>         die(null, "The RequestContext type %s did not pass validation",
> requestContextClass);
>       }
>     }
>     Class<?> searchIn = forName(requestContextClass);
>     for (Method method : searchIn.getMethods()) {
>       if (method.getName().equals(methodName)) {
>         return method;
>       }
>     }
>     return report("Could not locate %s method %s::%s",
> RequestContext.class.getSimpleName(),
>         requestContextClass, methodName);
>   }
>
> This is because of the following in the RequestFactoryInterfaceValidator.
> The method isAssignable(logger, requestContextIntf, requestContextType) goes
> wrong.
>
>   public void validateRequestContext(String binaryName) {
>     if (fastFail(binaryName)) {
>       return;
>     }
>
>     Type requestContextType =
> Type.getObjectType(BinaryName.toInternalName(binaryName));
>     final ErrorContext logger = parentLogger.setType(requestContextType);
>
>     // Quick sanity check for calling code
>     if (!isAssignable(logger, requestContextIntf, requestContextType)) {
>       logger.poison("%s is not a %s", print(requestContextType),
>           RequestContext.class.getSimpleName());
>       return;
>     }
>
>     Type domainServiceType = getDomainType(logger, requestContextType);
>     if (domainServiceType == errorType) {
>       logger.poison(
>           "The type %s must be annotated with a @%s or @%s annotation",
>           BinaryName.toSourceName(binaryName),
> Service.class.getSimpleName(),
>           ServiceName.class.getSimpleName());
>       return;
>     }
>
>     for (RFMethod method : getMethodsInHierarchy(logger,
> requestContextType)) {
>       // Ignore methods in RequestContext itself
>       if (findCompatibleMethod(logger, requestContextIntf, method, false,
> true,
>           true) != null) {
>         continue;
>       }
>
>       // Check the client method against the domain
>       checkClientMethodInDomain(logger, method, domainServiceType,
>           !clientToLocatorMap.containsKey(requestContextType));
>       maybeCheckReferredProxies(logger, method);
>     }
>
>     checkUnresolvedKeyTypes(logger);
>   }
>
> And this finally is because my Context is not extended from the old
> RequestContext anymore.
> The isAssignable() method does the following:
>
>   private boolean isAssignable(ErrorContext logger, Type possibleSupertype,
>       Type possibleSubtype) {
>     // Fast-path for same type
>     if (possibleSupertype.equals(possibleSubtype)) {
>       return true;
>     }
>
>     // Supertype calculation is cached
>     List<Type> allSupertypes = getSupertypes(logger, possibleSubtype);
>     return allSupertypes.contains(possibleSupertype);
>   }
>
> The list allSupertypes contains OBJECT my RequestContext interface and its
> superclass wich is ...bindery..requestContext.
> The problem is that possible superType somehow* is the old RequestContext
> (old package) *which can obviously then not be
> in the possible supertypes list.
>
> What is going on here?
> What could i have done wrong?
> Is it right now not possible to move to the new Requestfactory packages
> because something was overlooked here?
> I do not want to use all these deprecated classes?
> Do we need to wait for a fix here?
>
> Hope for some help on this one
> QB!T
>
> --
> 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.
>



-- 
David Chandler
Developer Programs Engineer, Google Web Toolkit
w: http://code.google.com/
b: http://googlewebtoolkit.blogspot.com/
t: @googledevtools

-- 
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.

Reply via email to