在哪里使用@SuppressWarnings("requestfactory")

Where to use @SuppressWarnings("requestfactory")

我正在尝试使用 GWT 和 RequestFactory 构建一个简单的(只读)网络应用程序,但我不知道如何消除以下警告:

warning: The domain type DDisplay is not default-instantiable. Calling RequestContext.create(DDisplayProxy.class) will cause a server error.

  Add @SuppressWarnings("requestfactory") to dismiss.

问题是,我已将@SuppressWarnings("requestfactory") 粘贴到每个可能相关的 class、接口和方法上方,但我仍然收到此消息。

由于我的 requestfactory 是只读的,我不会调用 RequestContext.create,所以这不是问题。去掉警告就好了(不创建 DDisplay 定位器 class)。

在服务器端,我有一个域对象 DDisplay 和一个 DAO,DDisplayService。

public class DDisplay {

    public String getTitle () {
        return "title";
    }
}

public class DDisplayService {

    public DDisplay getDisplayByUUID (String uuid) {
        return new DDisplay ();
    }
}

我有以下 RequestFactory:

@ProxyForName("com.foobar.server.display.DDisplay")
public interface DDisplayProxy extends EntityProxy {

    String getTitle ();
}

public interface DisplayRequestFactory extends RequestFactory {

    @ServiceName(
            value="com.foobar.server.display.DDisplayService"
        ,locator="com.foobar.server.display.SpringServiceLocator"
    )
    public interface DisplayRequestContext extends RequestContext {
        Request <DDisplayProxy> getDisplayByUUID (String id);
    }

    DisplayRequestContext display ();
}

谁能告诉我将@SuppressWarnings("requestfactory") 放在哪里以消除此错误?还是有另一种方法 - 我只需要添加一个从未使用过的定位器 class?

谢谢,

吉姆

通过阅读错误消息的来源,您似乎可以将其添加到您的 EntityProxy,DDisplayProxy。像这样:

@SuppressWarnings("requestfactory")
@ProxyForName("com.foobar.server.display.DDisplay")
public interface DDisplayProxy extends EntityProxy {

    String getTitle();
}

这来自阅读 com.google.web.bindery.requestfactory.apt.DomainChecker#visitType 的源代码,如果 currentTypeIsProxy 为真且没有定位器,并且类型不是不可初始化的,则会发出警告。从 state.warn(...) 内部(给定代理类型元素),它检查该类型上是否存在 @SuppressWarnings 注释。