WEB开发网
开发学院软件开发Java 实战 Groovy: SwingBuilder 和 Twitter API,第 1... 阅读

实战 Groovy: SwingBuilder 和 Twitter API,第 1 部分:构建基于 Swing 的 GUI 从未如此简便

 2009-11-18 00:00:00 来源:WEB开发网   
核心提示: 例如,可以编写清单 4 所示的 Tweet.groovy: 清单 4. Tweet.groovyclassTweet{StringcontentStringpublishedStringauthorStringtoString(){return"${author}:${content}

例如,可以编写清单 4 所示的 Tweet.groovy:


清单 4. Tweet.groovy
class Tweet{ 
 String content 
 String published 
 String author 
  
 String toString(){ 
  return "${author}: ${content}" 
 } 
} 

这是一个 Plain Old Groovy Object (POGO),是非常复杂的 Plain Old Java Object (POJO) 的替代品。

现在,把 清单 2 中的搜索脚本转换为 Search.groovy,见清单 5:


清单 5. Search.groovy
class Search{ 
 static final String addr = "http://search.twitter.com/search.atom?q=" 
  
 static Object[] byKeyword(String query){ 
  def results = [] 
  def feed = new XmlSlurper().parse(addr + query) 
  feed.entry.each{entry-> 
   def tweet = new Tweet() 
   tweet.author = entry.author.name 
   tweet.published = entry.published 
   tweet.content = entry.title 
   results << tweet 
  } 
  return results as Object[]   
 } 
} 

通常情况下,我会让结果保持 java.util.ArrayList 的形式。但是,本文后面使用的 javax.swing.JList 需要一个 Object[],所以这里提前做一些准备。

注意,我在 Search.groovy 中去掉了 main() 方法。现在如何与这个类交互呢?当然可以通过单元测试!创建 SearchTest.groovy,见清单 6:


清单 6. SearchTest.groovy
class SearchTest extends GroovyTestCase{ 
 void testSearchByKeyword(){ 
  def results = Search.byKeyword("thirstyhead") 
  results.each{ 
   assertTrue it.content.toLowerCase().contains("thirstyhead") || 
         it.author.toLowerCase().contains("thirstyhead") 
  }   
 } 
} 

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

Tags:实战 Groovy SwingBuilder

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