源文转自:Unit testing with JDO PersistenceManager injected via Guice
This is a follow-up to last week’s post on unit testing ActionHandlers with Guice. David Peterson pointed out on the gwt-dispatch mailing list that I could inject a PersistenceManager into my ActionHandlers in order to provide an alternate PersistenceManager for unit testing. I don’t actually need an alternate PM yet as it is handled transparently by my AppEngine test environment, but I thought it would be easier to do it sooner rather than later, so here goes.
I’ve created an interface called PMF (in order to avoid confusion with JDO’s PersistenceManagerFactory).
package com.turbomanage.gwt.server;
import javax.jdo.PersistenceManager;
public interface PMF
{
PersistenceManager getPersistenceManager();
}
My default PMF implementation works exactly the same as before:
package com.turbomanage.gwt.server;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;
public final class DefaultPMF implements com.turbomanage.gwt.server.PMF
{
private final PersistenceManagerFactory pmfInstance = JDOHelper
.getPersistenceManagerFactory("transactions-optional");
public DefaultPMF()
{
}
@Override
public PersistenceManager getPersistenceManager()
{
return pmfInstance.getPersistenceManager();
}
}
The DefaultPMF gets bound in my Guice ServerModule:
@Override
protected void configureHandlers()
{
...
bind(PMF.class).to(DefaultPMF.class).in(Singleton.class);
...
}
And finally, the PMF is injected into an ActionHandler:
public class AddUserHandler implements
ActionHandler<AddUserAction, AddUserResult>
{
@Inject
private PMF pmf;
private PersistenceManager pm;
@Override
public AddUserResult execute(AddUserAction action, ExecutionContext context)
throws ActionException
{
this.pm = pmf.getPersistenceManager();
...
}
...
}
Now, when the need arises for a test implementation of PMF, I can easily bind a different implementation in my Guice TestModule as shown in the earlier post.
Update: I did not test this thoroughly before I posted, and the need for a TestPMF arose just hours later. See my next post for the solution.
分享到:
相关推荐
9. **性能优化**:GWT的编译器会进行一系列优化,包括死代码消除、代码压缩、按需加载等,以减少网络传输的数据量并提高运行速度。 10. **社区支持和扩展**:GWT拥有活跃的开发者社区,提供了许多第三方库和扩展,...
gwt-maven-plugin 该插件旨在通过提供两种特定的打包方式: gwt-lib和gwt-app ,使使用Maven构建GWT项目更加容易。 基本用法 将插件添加到您的POM并启用扩展: < groupId>net.ltgt.gwt.maven</ groupId> ...
现在,该插件被认为是legacy GWT maven plugin (又名mojo GWT maven插件),而新插件被认为是new generation GWT maven plugin (又名tbroyer GWT maven插件)。 仍然支持旧版maven插件,但强烈建议将新插件用于新...
1. **GWT入门教程**:对于初学者,资料可能涵盖GWT的基本概念、开发环境搭建(如Eclipse插件配置)、Hello World示例、MVP(Model-View-Presenter)设计模式的介绍,以及如何创建和运行第一个GWT项目。 2. **GWT...
4. **GWT MVP模式**: Model-View-Presenter (MVP) 是GWT推荐的架构模式,它有助于分离视图逻辑、业务逻辑和数据模型,使得代码更易于维护和测试。 5. **异步通信(GWT RPC)**: GWT提供了Remote Procedure Call (RPC)...
This book is designed to give developers all the information they need to develop their own GAE+GWT applications, with a particular focus on some of the technologies useful for building scalable ...
**Cypal Studio for GWT** 是一个专为 **Eclipse IDE** 设计的插件,旨在简化基于 **Google Web Toolkit (GWT)** 的 **Ajax** 应用程序的开发流程。通过使用 GWT,Java 开发人员可以利用纯 Java 语言编写富互联网...
Eclipse是一款广泛使用的集成开发环境(IDE),而GWT for Eclipse则是Eclipse的一个插件,专门用于支持GWT应用程序的开发。这个插件针对Eclipse的3.7和3.6版本进行了优化,以提供更好的开发体验。 GWT的核心功能...
2. **GWT MVP模式**:Model-View-Presenter模式是一种常见的GWT应用架构,有助于分离视图、模型和逻辑,提升代码可维护性。 3. **GWT RAPID-UI**:GWT的Rapid-UI技术,如Cell Widgets,使开发者能快速构建动态表格...
Spring4GWT是将Spring框架与Google Web Toolkit (GWT) 结合的一种技术,它旨在帮助开发者在GWT应用中更好地实现服务层管理和依赖注入,从而提升开发效率和代码的可维护性。以下是对Spring4GWT技术的详细说明: 1. *...
GWT(Google Web Toolkit)是Google推出的一款开源的JavaScript开发框架,它允许开发者使用Java语言编写Web应用程序,并自动生成优化的JavaScript代码。RPC(Remote Procedure Call)是GWT中的一个核心特性,用于...
《GWT揭秘》试读:运行调试项目 GWT(Google Web Toolkit)是Google推出的一款用于构建高性能、跨浏览器的富互联网应用程序(Rich Internet Applications,RIA)的开发框架。它允许开发者使用Java语言来编写客户端...
GWT Maven示例项目 镜像 欢迎 这是一个gwt-sample项目。 对于需要JPA,Spring和Spring安全性的gwt项目启动很有帮助。 它是使用最佳实践构建的。 特征 一个示例gwt项目。 它包含: * JPA 2. * gin. * gwt-dispatch. ...
GWT(Google Web Toolkit)全屏演示项目是一个基于Java的Web开发框架的示例应用,它展示了如何在GWT环境中实现浏览器窗口的全屏模式。GWT是一个强大的工具,允许开发者使用Java语言来构建高性能、交互式的Web应用...
GWT(Google Web Toolkit)是一个开源的Java开发框架,由Google公司开发,主要用于简化Web应用的开发。它允许开发者使用Java编写客户端的代码,然后通过GWT提供的编译器自动转换成浏览器可以执行的JavaScript和HTML...
GWT,全称为Google Web Toolkit,是一个开源的Java框架,用于构建高性能、可维护的富互联网应用程序(RIA)。GWT允许开发者使用Java语言编写客户端代码,然后通过编译器将其转换为优化过的JavaScript,以便在各种...
gwt-websocket-exercise 用于GWT培训的简单GWT Websocket练习 依赖于realityforge的gwt-websocket实现: 在Eclipse中设置Realityforge / gwt-websockets项目 在项目中:在类路径上添加GWT SDK,启用GWT支持 删除...
**GWT(Google Web Toolkit)** 是一个由Google开发的开放源代码工具包,用于构建高性能的、基于JavaScript的Web应用程序。它允许开发者使用Java语言编写客户端代码,并自动将其编译为优化过的JavaScript,从而提高...
Google Web Toolkit (GWT) 是一个强大的开源框架,它允许开发者使用 Java 语言来构建复杂的、高性能的 web 应用程序。GWT 提供了一种高效的方法,将 Java 代码编译成 JavaScript 和 HTML,使其能在客户端浏览器中...