2009年12月10日木曜日

SDO 1.1.1/Galileo/m2eclipse

Eclipse 3.5 Galileo で SDO を動かす Getting Started。 クラスパス上のXMLスキーマを読み込み、それに従って XML を解釈し、文字列 "Hello" と"World"を取り出して合成し、コンソールに"Hello, World!"を出力する。 ■ プロジェクトの作成
  • 新規 Maven Project を作成する
  • pom.xml に以下を追加する
    <dependencies>
       <dependency>
          <groupId>org.apache.tuscany.sdo</groupId>
          <artifactId>tuscany-sdo-impl</artifactId>
          <version>1.1.1</version>
       </dependency>
    </dependencies>
  • 新規ソースフォルダ src/main/resources を作成
■ hello world 作成
  • src/main/resources に greeting.xsd を作成する。
    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns="http://sample/sdo-test1" 
        targetNamespace="http://sample/sdo-test1">
      <xsd:element name="greeting" type="GreetingType"/>
      <xsd:complexType name="GreetingType">
        <xsd:sequence>
          <xsd:element name="word"   type="xsd:string"/>
          <xsd:element name="to"   type="xsd:string"/>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
  • App クラスを書き換える
     public static String xmlDoc = 
            "<?xml version=\"1.0\" encoding=\"ASCII\"?>\n"
          + "<greeting xmlns=\"http://sample/sdo-test1\">\n"
          + "  <word>Hello</word>\n"
          + "  <to>World</to>\n"
          + "</greeting>\n";
    
     public static void main(String[] args) throws Exception {
        HelperContext scope = SDOUtil.createHelperContext();
        XSDHelper xsdHelper = scope.getXSDHelper();
    
        URL url = App.class.getResource("/greeting.xsd");
        InputStream is = url.openStream();
        xsdHelper.define(is, url.toString());
        is.close();
    
        XMLDocument doc = scope.getXMLHelper().load(xmlDoc);
    
        DataObject greeting = doc.getRootObject();
        System.out.printf("%s, %s!%n", 
            greeting.get("word"), greeting.get("to"));
     }
■ 雑感 わりとすんなり動いた。参考にしたのは、tuscany-sdo-1.1.1 の sampleで、これは、コメンタリを出力しながら複数のサンプルが連続して動作するような、ちょっと趣向を凝らしたフレームワーク的なものだけど、ただ、コードの断片だけ参考にしたい時にはちょっと回りくどいかもしれない。

0 件のコメント:

コメントを投稿