WEB开发网
开发学院软件开发Java 精通 Grails: 创建自定义插件 阅读

精通 Grails: 创建自定义插件

 2009-10-26 00:00:00 来源:WEB开发网   
核心提示: 注意集成测试中的 def transactional = false 这一行,如果省略这一行,精通 Grails: 创建自定义插件(5),您将收到令人讨厌的错误消息,如清单 5 所示,这个实现将提供更多信息以便做出相应反应,在 src/groovy/org/grails/shortenurl 中

注意集成测试中的 def transactional = false 这一行。如果省略这一行,您将收到令人讨厌的错误消息,如清单 5 所示。


清单 5. 测试没有设置 def transactional = false 时收到的错误消息
Error running integration tests: java.lang.RuntimeException: 
There is no test TransactionManager defined 
and integration test ${test.name} does not set transactional = false 

Grails 试图在数据库事务中包含所有测试。在普通的 Grails 应用程序中,这不成问题。但是您在一个插件中而不是在应用程序中,因此您不能假定存在这样一个数据库。您可以安装 Hibernate 插件,或者按照错误消息的指示在集成测试中设置 def transactional = false。

输入 grails test-app 并验证您的测试是否通过。

我还要实现一个 URL 缩短服务,以便这个插件的用户可以选择其中一个服务。

创建 IsGd 类

这个 Is.Gd(读作 is good)服务号称能够提供比 TinyUrl.com 更短的域名和编码 URL。访问 http://is.gd 试验这个 Web 界面。

为了再次表示我这种长短反差的偏好,我将借此机会向您展示我在 TinyUrl.groovy 中使用过的那个两行方法(参见 清单 3)的更长实现。如果服务失败,这个实现将提供更多信息以便做出相应反应。在 src/groovy/org/grails/shortenurl 中创建 IsGd.groovy,如清单 6 所示。


清单 6. IsGd 实用程序类
package org.grails.shortenurl 
 
class IsGd{ 
 static String shorten(String longUrl){ 
  def addr = "http://is.gd/api.php?longurl=${longUrl}" 
  def url = addr.toURL() 
  def urlConnection = url.openConnection() 
  if(urlConnection.responseCode == 200){ 
   return urlConnection.content.text 
  }else{ 
   return "An error occurred: ${addr}\n" + 
   "${urlConnection.responseCode} : ${urlConnection.responseMessage}" 
  } 
 } 
} 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:精通 Grails 创建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接