37.3.2. checkWidgets Operation


概述

checkWidget 是一个简单操作,它有一个参数是替换组的头成员。此操作演示了如何处理作为替换组成员的单个参数。消费者必须确保 参数是替换组的成员。该服务必须正确决定在请求中发送的替换组的成员。

消费者实施

生成的方法签名使用 Java 类,支持替换组的 head 元素类型。由于替换组的 member 元素与 head 元素或来自 head 元素的类型相同,所以生成的 Java 类是支持从 Java 类继承的替换组的成员来支持 head 元素。Java 的类型层次结构原生支持使用子类来代替父类。

由于 Apache CXF 如何为替换组和 Java 类型层次结构生成类型,客户端可以在不使用任何特殊代码的情况下调用 checkWidgets ()。在开发用于调用 checkWidgets () 的逻辑时,您可以传递生成的其中一个类对象来支持小部件替换组。

例 37.14 “consumer Invoking checkWidgets () 显示调用 checkWidgets () 的使用者。

例 37.14. consumer Invoking checkWidgets ()

System.out.println("What type of widgets do you want to order?");
System.out.println("1 - Normal");
System.out.println("2 - Wood");
System.out.println("3 - Plastic");
System.out.println("Selection [1-3]");
String selection = reader.readLine();
String trimmed = selection.trim();
char widgetType = trimmed.charAt(0);
switch (widgetType)
{
  case '1':
  {
    WidgetType widget = new WidgetType();
    ...
    break;
  }
  case '2':
  {
    WoodWidgetType widget = new WoodWidgetType();
    ...
    break;
  }
  case '3':
  {
    PlasticWidgetType widget = new PlasticWidgetType();
    ...
    break;
  }
  default :
    System.out.println("Invaid Widget Selection!!");
}

proxy.checkWidgets(widgets);

服务实施

服务实施的 checkWidgets () 获取一个小部件描述作为 WidgetType 对象,检查小部件清单,并返回库存中的小部件数量。由于用于实施替换组的所有类都继承自同一基础类,因此您无需使用任何 JAXB 特定的 API,即可实施 checkWidgets ()

所有生成的类都用于支持 widget 扩展 WidgetType 类的替换组的成员。鉴于这一事实,您可以使用 instanceof 来确定将要传递的小部件类型,只需将 widgetPart 对象转换为更严格的类型(如果合适)。在有正确的对象类型后,您可以检查正确的小部件清单。

例 37.15 “checkWidgets ()的服务实现。” 显示可能的实施。

例 37.15. checkWidgets ()的服务实现。

public int checkWidgets(WidgetType widgetPart)
{
  if (widgetPart instanceof WidgetType)
  {
    return checkWidgetInventory(widgetType);
  }
  else if (widgetPart instanceof WoodWidgetType)
  {
    WoodWidgetType widget = (WoodWidgetType)widgetPart;
    return checkWoodWidgetInventory(widget);
  }
  else if (widgetPart instanceof PlasticWidgetType)
  {
    PlasticWidgetType widget = (PlasticWidgetType)widgetPart;
    return checkPlasticWidgetInventory(widget);
  }
}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.