在哪里使用@SuppressWarnings(“requestfactory”)

时间:2017-10-13 21:44:05

标签: java gwt requestfactory

我正在尝试使用GWT和RequestFactory构建一个简单的(只读)Web应用程序,我无法弄清楚如何摆脱以下警告:

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”)粘贴到每个可能相关的类,接口和方法之上,但我仍然收到此消息。

由于我的requestfactory是只读的,我不打算调用RequestContext.create,所以这不是一个问题。摆脱警告(没有创建DDisplay定位器类)会很好。

在服务器端,我有一个域对象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”)来摆脱这个错误吗?或者还有另一种方法 - 我只需要添加一个从未使用过的Locator类吗?

感谢,

吉姆

1 个答案:

答案 0 :(得分:2)

通过阅读错误消息来源,您可以将其添加到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注释。