getSummaryListXML()を実装する
MessageService.java
/** * 投稿された全てのメッセージの概要リストをXMLにしたものを取得します。 */ public String getSummaryListXML() throws Exception { String result = null; try { System.out.println("getSummaryList INVOKED"); DataContext context = Configuration.getSharedConfiguration().getDomain().createDataContext(); //親メッセージだけを全てフェッチする SelectQuery query = new SelectQuery("Message"); query.setLoggingLevel(Level.INFO); Expression expression = ExpressionFactory.matchExp("parentId", null); query.setQualifier(expression); query.addOrdering("modificationDate", false); //修正日時でソート List allDatas = context.performQuery(query); StringWriter writer = new StringWriter(); BeanWriter bw = new BeanWriter(writer); bw.enablePrettyPrint();//XMLを読みやすいように整形する BindingConfiguration binding = new BindingConfiguration(); binding.setMapIDs(false);//内部循環を持つ場合、一意のIDを自動的にふる bw.setBindingConfiguration(binding); bw.getXMLIntrospector().getConfiguration().setWrapCollectionsInElement(true); bw.writeXmlDeclaration("<?xml version=?"1.0?" encoding=?"Shift_JIS?"?>"); bw.write(allDatas); bw.flush(); bw.close(); result = writer.toString(); } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); throw e; } System.out.println(result); return result; }
今回はとりあえずメッセージを全てフェッチします。そのListをbetwixtにシリアライズさせます。
次に.betwixtファイルです。
このファイルはMessage.javaと同じ階層に入れておきます。
Message.betwixit
<?xml version="1.0" encoding="utf-8"?> <info> <element name="Message" property="message"> <attribute name="data" property="pk"/> <attribute name="label" property="shortSubject"/> <attribute name="toolTip" property="toolTip"/> <attribute name="child" property="child"/> <element name="Message" property="children"> </element> </element> </info>