Java组件:创建的所有对象的测试服务能力 : Java组件 « 开发相关类 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 开发相关类 » Java组件屏幕截图 
Java组件:创建的所有对象的测试服务能力
Java组件:创建的所有对象的测试服务能力
 
/*
 * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * -Redistribution of source code must retain the above copyright notice, this
 *  list of conditions and the following disclaimer.
 *
 * -Redistribution in binary form must reproduce the above copyright notice,
 *  this list of conditions and the following disclaimer in the documentation
 *  and/or other materials provided with the distribution.
 *
 * Neither the name of Sun Microsystems, Inc. or the names of contributors may
 * be used to endorse or promote products derived from this software without
 * specific prior written permission.
 *
 * This software is provided "AS IS," without a warranty of any kind. ALL
 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
 * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
 * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN")
 * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
 * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
 * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
 * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 *
 * You acknowledge that this software is not designed, licensed or intended
 * for use in the design, construction, operation or maintenance of any
 * nuclear facility.
 */

import java.beans.beancontext.BeanContextChildSupport;
import java.beans.beancontext.BeanContextServiceAvailableEvent;
import java.beans.beancontext.BeanContextServiceProvider;
import java.beans.beancontext.BeanContextServiceRevokedEvent;
import java.beans.beancontext.BeanContextServices;
import java.beans.beancontext.BeanContextServicesSupport;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.Iterator;
import java.util.StringTokenizer;

/**
 * A test program that creates all of the objects, a tests the service
 * capabilities. Run this program from the command line using java
 * DocumentTester
 */
public class DocumentTester {

  public static void main(String[] args) {
    BeanContextServicesSupport context = new BeanContextServicesSupport()// a
    // bean
    // context
    DocumentBean doc1 = new DocumentBean("Test.txt");
    context.add(doc1);
    context.addBeanContextServicesListener(doc1)// listen for new services
    WordCountServiceProvider provider = new WordCountServiceProvider();
    context.addService(WordCount.class, provider)// add the service to the
    // context
  }
}

/**
 * A JavaBean that encapsulates a text file. When added to a bean context, this
 * bean listens for a WordCount service to become available. When the service
 * does become available, the DocumentBean requests an instance of the service.
 * The service then counts the number of words in the file, and prints a report
 * to standard output.
 */

final class DocumentBean extends BeanContextChildSupport {

  private File document;

  private BeanContextServices context;

  /**
   * Creates a new DocumentBean given the name of the file to read from.
   
   @param fileName
   *            the name of the file to read from
   */
  public DocumentBean(String fileName) {
    document = new File(fileName);
  }

  /**
   * Called when this bean detects that a new service has been registered with
   * its context.
   
   @param bcsae
   *            the BeanContextServiceAvailableEvent
   */
  public void serviceAvailable(BeanContextServiceAvailableEvent bcsae) {
    System.out.println("[Detected a service being added to the context]");

    // Get a reference to the context
    BeanContextServices context = bcsae.getSourceAsBeanContextServices();
    System.out.println("Is the context offering a WordCount service? "
        + context.hasService(WordCount.class));

    // Use the service, if it's available
    if (context.hasService(WordCount.class)) {
      System.out.println("Attempting to use the service...");
      try {
        WordCount service = (WordCountcontext.getService(this, this,
            WordCount.class, document, this);
        System.out.println("Got the service!");
        service.countWords();
      catch (Exception e) {
      }
    }
  }

  /**
   * Called when this bean detects that a service has been revoked from the
   * context.
   
   @param bcsre
   *            the BeanContextServiceRevokedEvent
   */
  public void serviceRevoked(BeanContextServiceRevokedEvent bcsre) {
    System.out
        .println("[Detected a service being revoked from the context]");
  }
}

/**
 * The WordCount service. Implementations of the countWords() method are
 * provided by the WordCountServiceProvider class.
 */

interface WordCount {

  /**
   * Counts the number of words in the file.
   */
  public abstract void countWords();

}

/**
 * This class is the factory that delivers a word counting service. The 3
 * methods defined in this class are the concrete implementations of the
 * BeanContextServiceProvider interface. For this demonstration, the primary
 * method of interest is getService(). The getService() methods returns a new
 * WordCount instance. It is called by the bean context when a nested JavaBean
 * requests the service.
 */

final class WordCountServiceProvider implements BeanContextServiceProvider {

  public Object getService(BeanContextServices bcs, Object requestor,
      Class serviceClass, Object serviceSelector) {

    // For this demo, we know that the cast from serviceSelector
    // to File will always work.
    final File document = (FileserviceSelector;

    /*
     * Return an instance of the service. The service itself is the
     * WordCount interface, which is implemented here using an anonymous
     * inner class.
     */
    return new WordCount() {
      public void countWords() {
        try {
          // Create a Reader to the DocumentBean's File
          BufferedReader br = new BufferedReader(new FileReader(
              document));
          String line = null;
          int wordCount = 0;
          while ((line = br.readLine()) != null) {
            StringTokenizer st = new StringTokenizer(line);
            while (st.hasMoreTokens()) {
              System.out.println("Word " (++wordCount)
                  " is: " + st.nextToken());
            }
          }
          System.out
              .println("Total number of words in the document: "
                  + wordCount);
          System.out
              .println("[WordCount service brought to you by WordCountServiceProvider]");
          br.close();
        catch (Exception e) {
        }
      }
    };
  }

  public void releaseService(BeanContextServices bcs, Object requestor,
      Object service) {
    // do nothing
  }

  public Iterator getCurrentServiceSelectors(BeanContextServices bcs,
      Class serviceClass) {
    return null// do nothing
  }
}

//file: Test.txt
/*
This   text will  be analyzed  
 
 by the WordCount 

service.


*/


           
         
  
Related examples in the same category
1. Java组件: BeanContextSupportJava组件: BeanContextSupport
2. Java组件:测试程序,增加了100组件到背景Java组件:测试程序,增加了100组件到背景
3. Java组件:如何使用instantiateChild ( )方便的方法创建一个组件Java组件:如何使用instantiateChild ( )方便的方法创建一个组件
4. Java组件:说明交付BeanContextMembershipEventJava组件:说明交付BeanContextMembershipEvent
5. 组件集装箱组件集装箱
6. 属性表属性表
7. 性能测试
8. 反思一个组件反思一个组件
9. 在JFileChooser对话框倾听改变到所选文件
10. 获取选定的文件清单
11. 在JFileChooser对话框倾听改变到当前目录
12. 在标题JFileChooser对话框显示当前目录中
13. 在标题JFileChooser对话框中设置配件组件
14. 转换组件为XML
15. 聆听组件属性变更事件
16. 列表组件的属性名称
17. 防止组件的属性列化到XML
18. 创建一个实例组件
19. 转换XML持久到组件
20. 确定组件的属性类型
21. 聆听了限制属性变化
22. 组件属性
23. 实现一个有界属性
24. Implementing a Constrained Property: fires a PropertyChangeEvent whenever its value is about to be changed.
25. 一个组件实例
26. 列出自建的属性名称
27. 获得和设置一个组件的属性
28. Get and set the value of a property in a bean using Expression and Statement
29. 获取和设置的对象类型属性
30. 获得和设置一个原始类型属性
31. 获得和建立了一个数组类型的属性
32. Serializing a Bean to XML: XMLEncoder only persists the value of public properties.
33. 防止XML序列化一个组件
34. 防止一个组件属性被序列化到XML
35. 序列化不可改变组件属性为XML
36. Listening for a Property Change Event: A property change event is fired when a bound property is changed.
37. Listening for a Vetoable Property Change Event
38. 读取组件的属性值
39. CAD系统的储存和恢复状态CAD系统的储存和恢复状态
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.