|
|||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||
java.lang.Objectorg.xml.sax.helpers.DefaultHandler
org.apache.commons.jocl.JOCLContentHandler
Java Object Configuration Language のための ContentHandler です。
JOCL は任意の Java Object インスタンスを生成するためのXMLの文法を提供します。
これは全てのXMLドキュメントタイプを定義するのではなく(ルートエレメントがありません)、XMLフラグメントの記述を
各 Object の生成に適用します。
JOCLフラグメント内でオブジェクトを定義する場合には object エレメントを使用します。 以下に簡単な例を示します:
<object class="java.util.Date"/>この記述は引数なしのコンストラクタで java.util.Date のインスタンスを生成します。
ルートとなる <object> が処理された後(これはXMLReader から呼ばれる
endElement(java.lang.String,java.lang.String,java.lang.String)
に該当します)、この生成されたオブジェクトは
JOCLContentHandler 内の Object のリストに追加されます。
(size()、
clear()、
getType(int)、
getValue(int)、
getTypeArray()、
getValueArray() を参照ください。)
複数の object エレメントをフラグメント内に列挙することができます。 例えば以下の JOCL フラグメントを処理し、:
<object class="java.util.Date"/> <object class="java.util.Date"/>その後に
getTypeArray() メソッドを呼んだ場合、2つの java.util.Date インスタンスが返されます。
配列内の Object の順番は JOCL フラグメント内の
<object> エレメントの記述の順番と一致します。
上記のように子エレメントを使用しない場合、 <object> タグは指定されたクラスの引数のないコンストラクタを呼びますが、ネストした <object> タグを使用すればコンストラクタに引数を指定することができます。 例えば、:
<object class="mypackage.Foo"> <object class="mypackage.Bar"/> </object>このフラグメントは new mypackage.Foo(new mypackage.Bar()) で生成された mypackage.Foo インスタンスをオブジェクトリストに追加します。
プリミティブ型と String の引数を生成する場合には上記とは別の文法を使用します。
以下にいくつかの例をあげます:
<byte value="3"/> <boolean value="false"/> <char value="c"/> <double value="3.14159"/> <float value="3.14"/> <int value="17"/> <long value="1700000"/> <short value="1"/> <string value="The quick brown fox..."/>
ルートレベル(親に <object> を持たない位置)に上記プリミティブ型のフラグメントが合った場合には、
各プリミティブ型に該当するラッパークラスが生成され、Object のリストに追加されます。
しかし、これらのオブジェクトに対する type は適切なプリミティブ型を返します。
<object> を親に持つ状態で記述された場合には指定された Object
のコンストラクタのプリミティブ型の引数として扱われます。例えば、:
<int value="5"/> <int value="26"/> <int value="100"/>
の処理は3つの Integer インスタンスを値のリストに追加し、
Integer.TYPE を型のリストに追加します。
従って、 mypackage.Foo(java.lang.Integer,java.lang.Integer,java.lang.Integer)
というコンストラクタを呼ぶ場合は以下のようになります:
<object class="mypackage.Foo"/> <object class="java.lang.Integer"><int value="5"/></object> <object class="java.lang.Integer"><int value="26"/></object> <object class="java.lang.Integer"><int value="100"/></object> </object>
また、 mypackage.Foo(int,int,int) というコンストラクタを呼ぶ場合は以下のようになります:
<object class="mypackage.Foo"/> <int value="5"/> <int value="26"/> <int value="100"/> </object>
null オブジェクトを生成したい場合には以下のようになります:
<object class="mypackage.Bar" null="true"/>
以下に単純ですが、全てのパターンを網羅した例を示します:
<?xml version="1.0"?>
<arbitrary-root xmlns="http://apache.org/xml/xmlns/jakarta/commons/jocl">
<string value="Hello World!"/>
<string/>
<boolean/>
<boolean value="true"/>
<byte value="1"/>
<short value="1"/>
<int value="1"/>
<long value="1"/>
<float value="1.0"/>
<double value="1.0"/>
<object class="java.util.Date"/>
<object class="java.util.Date">
<int value="1"/>
<int value="1"/>
<int value="1"/>
</object>
</arbitrary-root>
正式な JOCL の文法を表す DTD は以下のようになります:
<!ELEMENT object (object|byte|boolean|char|double|float|int|long|short|string)*> <!ATTLIST object class CDATA #REQUIRED null (true|false) "false"> <!ELEMENT byte EMPTY> <!ATTLIST byte value CDATA #REQUIRED> <!ELEMENT boolean EMPTY> <!ATTLIST boolean value (true|false) #REQUIRED> <!ELEMENT char EMPTY> <!ATTLIST char value CDATA #REQUIRED> <!ELEMENT double EMPTY> <!ATTLIST double value CDATA #REQUIRED> <!ELEMENT float EMPTY> <!ATTLIST float value CDATA #REQUIRED> <!ELEMENT int EMPTY> <!ATTLIST int value CDATA #REQUIRED> <!ELEMENT long EMPTY> <!ATTLIST long value CDATA #REQUIRED> <!ELEMENT short EMPTY> <!ATTLIST short value CDATA #REQUIRED> <!ELEMENT string EMPTY> <!ATTLIST string value CDATA #REQUIRED>
また、このクラスは文法の一部として JOCL を使用する ContentHandler
の基底クラスとして使用することができます。
単純にこのクラスを継承し、新たなタグを処理するために startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)、 DefaultHandler.characters(char[], int, int)
endElement(java.lang.String, java.lang.String, java.lang.String) をオーバーライドし、JOCL で定義されたエレメントとデータを処理するために親クラスのメソッド
(例. super.XXX) をコールして下さい。
簡単に InputStream、 Reader、 InputSource からオブジェクトのリストを読み込むことのできる複数の
static メソッドが利用可能です。
このクラスは synchronized ではない事に注意してください。
| フィールドの概要 | |
protected boolean |
_acceptEmptyNamespaceForAttributes
true の場合、ネームスペースURIを持たない属性を JOCL ネームスペースの一部として扱います。 |
protected boolean |
_acceptEmptyNamespaceForElements
true の場合、ネームスペースURIを持たないエレメントを JOCL ネームスペースの一部として扱います。 |
protected boolean |
_acceptJoclPrefixForAttributes
true の場合、 JOCL_PREFIX を持つがネームスペースURIを持たない属性を
JOCL ネームスペースにマッピングします。
|
protected boolean |
_acceptJoclPrefixForElements
true の場合、 JOCL_PREFIX を持つがネームスペースURIを持たないエレメントを
JOCL ネームスペースにマッピングします。
|
protected org.apache.commons.jocl.JOCLContentHandler.ConstructorDetails |
_cur
現在処理中のオブジェクト。 |
protected Locator |
_locator
内部で使用する Locator。 |
protected ArrayList |
_typeList
パース処理にて生成された型( Class )のリスト。
|
protected ArrayList |
_valueList
パース処理にて生成された値( Object )のリスト。
|
protected static String |
ATT_CLASS
"object" エレメントの "class" 属性名。 |
protected static String |
ATT_ISNULL
"object" エレメントの "isnull" 属性名。 |
protected static String |
ATT_VALUE
"value" 属性名。 |
protected static String |
ELT_BOOLEAN
"boolean" エレメント名。 |
protected static String |
ELT_BYTE
"byte" エレメント名。 |
protected static String |
ELT_CHAR
"char" エレメント名。 |
protected static String |
ELT_DOUBLE
"double" エレメント名。 |
protected static String |
ELT_FLOAT
"float" エレメント名。 |
protected static String |
ELT_INT
"int" エレメント名。 |
protected static String |
ELT_LONG
"long" エレメント名。 |
protected static String |
ELT_OBJECT
"object" エレメント名。 |
protected static String |
ELT_SHORT
"short" エレメント名。 |
protected static String |
ELT_STRING
"string" エレメント名。 |
static String |
JOCL_NAMESPACE_URI
JOCL ネームスペース URI、 http://apache.org/xml/xmlns/jakarta/commons/jocl。 |
static String |
JOCL_PREFIX
デフォルト JOCL プレフィックス、 jocl:。 |
| コンストラクタの概要 | |
JOCLContentHandler()
JOCLContentHandler(true,true,true,true) と同等です。
|
|
JOCLContentHandler(boolean emptyEltNS,
boolean joclEltPrefix,
boolean emptyAttrNS,
boolean joclAttrPrefix)
JOCLContentHandler を生成します。 |
|
| メソッドの概要 | |
protected void |
addObject(Class type,
Object val)
指定されたオブジェクトを型/値のリストか、現在生成中ののオブジェクトのコンストラクタの引数のいずれかに追加します。 |
void |
clear()
リスト内の全ての値と型の数を削除します。 |
void |
clear(int i)
指定されたインデックスの値/型のペアを削除します。 |
void |
endElement(String uri,
String localName,
String qname)
|
protected String |
getAttributeValue(String localname,
Attributes attr)
getAttributeValue(localname,attr,null) と同等です。
|
protected String |
getAttributeValue(String localname,
Attributes attr,
String implied)
JOCL ネームスペース内の指定された localname に該当する属性の値を指定された Attributes の中から返します。
|
Class |
getType(int i)
指定されたインデックスのオブジェクトの型を返します。 |
Object[] |
getTypeArray()
型のリストのシャローコピーを返します。 |
Object |
getValue(int i)
指定されたインデックスのオブジェクトの値を返します。 |
Object[] |
getValueArray()
値のリストのシャローコピーを返します。 |
protected boolean |
isJoclNamespace(String uri,
String localname,
String qname)
指定されたエレメントを定義する属性が(現在の設定で) JOCL ネームスペースに含まれる場合、 true を返します。 |
static void |
main(String[] args)
単純なテストメソッドです。 |
static JOCLContentHandler |
parse(File f)
org.xml.sax.driver プロパティで指定された XMLReader
を使用して指定されたファイルから JOCL ドキュメントを読み込み、パースします。
|
static JOCLContentHandler |
parse(File f,
XMLReader reader)
指定された XMLReader を使用して指定された ファイル
から JOCL ドキュメントを読み込み、パースします。
|
static JOCLContentHandler |
parse(InputSource in)
org.xml.sax.driver プロパティで指定された XMLReader
を使用して指定された InputSource から JOCL ドキュメントを読み込み、パースします。
|
static JOCLContentHandler |
parse(InputSource in,
XMLReader reader)
指定された XMLReader を使用して指定された InputSource
から JOCL ドキュメントを読み込み、パースします。
|
static JOCLContentHandler |
parse(InputStream in)
org.xml.sax.driver プロパティで指定された XMLReader
を使用して指定された InputStream から JOCL ドキュメントを読み込み、パースします。
|
static JOCLContentHandler |
parse(InputStream in,
XMLReader reader)
指定された XMLReader を使用して指定された InputStream
から JOCL ドキュメントを読み込み、パースします。
|
static JOCLContentHandler |
parse(Reader in)
org.xml.sax.driver プロパティで指定された XMLReader
を使用して指定された Reader から JOCL ドキュメントを読み込み、パースします。
|
static JOCLContentHandler |
parse(Reader in,
XMLReader reader)
指定された XMLReader を使用して指定された Reader
から JOCL ドキュメントを読み込み、パースします。
|
void |
setDocumentLocator(Locator locator)
|
int |
size()
リスト内の値と型の数を返します。 |
void |
startElement(String uri,
String localName,
String qname,
Attributes attr)
|
| クラス org.xml.sax.helpers.DefaultHandler から継承したメソッド |
characters, endDocument, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, skippedEntity, startDocument, startPrefixMapping, unparsedEntityDecl, warning |
| クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| インタフェース org.xml.sax.ContentHandler から継承したメソッド |
characters, endDocument, endPrefixMapping, ignorableWhitespace, processingInstruction, skippedEntity, startDocument, startPrefixMapping |
| フィールドの詳細 |
protected boolean _acceptEmptyNamespaceForAttributes
JOCL_NAMESPACE_URIprotected boolean _acceptEmptyNamespaceForElements
JOCL_NAMESPACE_URIprotected boolean _acceptJoclPrefixForAttributes
JOCL_PREFIX を持つがネームスペースURIを持たない属性を
JOCL ネームスペースにマッピングします。
JOCL_PREFIX,
JOCL_NAMESPACE_URIprotected boolean _acceptJoclPrefixForElements
JOCL_PREFIX を持つがネームスペースURIを持たないエレメントを
JOCL ネームスペースにマッピングします。
JOCL_PREFIX,
JOCL_NAMESPACE_URIprotected org.apache.commons.jocl.JOCLContentHandler.ConstructorDetails _cur
protected Locator _locator
Locator。
protected ArrayList _typeList
Class )のリスト。
protected ArrayList _valueList
Object )のリスト。
protected static final String ATT_CLASS
protected static final String ATT_ISNULL
protected static final String ATT_VALUE
protected static final String ELT_BOOLEAN
protected static final String ELT_BYTE
protected static final String ELT_CHAR
protected static final String ELT_DOUBLE
protected static final String ELT_FLOAT
protected static final String ELT_INT
protected static final String ELT_LONG
protected static final String ELT_OBJECT
protected static final String ELT_SHORT
protected static final String ELT_STRING
public static final String JOCL_NAMESPACE_URI
public static final String JOCL_PREFIX
| コンストラクタの詳細 |
public JOCLContentHandler()
JOCLContentHandler(true,true,true,true) と同等です。
public JOCLContentHandler(boolean emptyEltNS,
boolean joclEltPrefix,
boolean emptyAttrNS,
boolean joclAttrPrefix)
emptyEltNS - true の場合、ネームスペースのない全てのエレメントを JOCL ネームスペースに含まれるとみなします
joclEltPrefix - true の場合、jocl: のプレフィックスを持ち、ネームスペースのないエレメントを JOCL ネームスペースに含まれるとみなします
emptyAttrNS - true の場合、ネームスペースのない全ての属性を JOCL ネームスペースに含まれるとみなします
joclAttrPrefix - true の場合、jocl: のプレフィックスを持ち、ネームスペースのない属性を JOCL ネームスペースに含まれるとみなします
| メソッドの詳細 |
protected void addObject(Class type,
Object val)
public void clear()
public void clear(int i)
public void endElement(String uri,
String localName,
String qname)
throws SAXException
ContentHandler 内の endElementSAXException
protected String getAttributeValue(String localname,
Attributes attr)
getAttributeValue(localname,attr,null) と同等です。
protected String getAttributeValue(String localname,
Attributes attr,
String implied)
Attributes の中から返します。
該当する属性が見つからない場合、implied を返します。
localname - 前置修飾子を含まない検索対象となる属性名
attr - 値を探す対象となる属性一覧
implied - 属性のデフォルトの値
Attributes の中の
JOCL ネームスペース内の指定された localname
に該当する属性の値、
該当する属性が見つからない場合、implied
public Class getType(int i)
public Object[] getTypeArray()
public Object getValue(int i)
public Object[] getValueArray()
protected boolean isJoclNamespace(String uri,
String localname,
String qname)
_acceptEmptyNamespaceForElements,
_acceptJoclPrefixForElements
public static void main(String[] args)
throws Exception
XMLReader を指定するためには org.xml.sax.driver システムプロパティを使用してください。)
Exception
public static JOCLContentHandler parse(File f)
throws SAXException,
FileNotFoundException,
IOException
XMLReader
を使用して指定されたファイルから JOCL ドキュメントを読み込み、パースします。
返される JOCLContentHandler はファイルに記述されたオブジェクトのリストを内部に持ちます。
f - JOCL ドキュメントを含む File
JOCLContentHandler
SAXException
FileNotFoundException
IOException
public static JOCLContentHandler parse(File f,
XMLReader reader)
throws SAXException,
FileNotFoundException,
IOException
XMLReader を使用して指定された ファイル
から JOCL ドキュメントを読み込み、パースします。
返される JOCLContentHandler はファイルに記述されたオブジェクトのリストを内部に持ちます。
f - JOCL ドキュメントを含む File
reader - ファイルをパーすする際に使用される XMLReader
JOCLContentHandler
SAXException
FileNotFoundException
IOException
public static JOCLContentHandler parse(InputSource in)
throws SAXException,
IOException
XMLReader
を使用して指定された InputSource から JOCL ドキュメントを読み込み、パースします。
返される JOCLContentHandler はファイルに記述されたオブジェクトのリストを内部に持ちます。
in - JOCL ドキュメントを含む InputSource
JOCLContentHandler
SAXException
IOException
public static JOCLContentHandler parse(InputSource in,
XMLReader reader)
throws SAXException,
IOException
XMLReader を使用して指定された InputSource
から JOCL ドキュメントを読み込み、パースします。
返される JOCLContentHandler はファイルに記述されたオブジェクトのリストを内部に持ちます。
in - JOCL ドキュメントを含む InputSource
reader - ファイルをパーすする際に使用される XMLReader
JOCLContentHandler
SAXException
IOException
public static JOCLContentHandler parse(InputStream in)
throws SAXException,
IOException
XMLReader
を使用して指定された InputStream から JOCL ドキュメントを読み込み、パースします。
返される JOCLContentHandler はファイルに記述されたオブジェクトのリストを内部に持ちます。
in - JOCL ドキュメントを含む InputStream
JOCLContentHandler
SAXException
IOException
public static JOCLContentHandler parse(InputStream in,
XMLReader reader)
throws SAXException,
IOException
XMLReader を使用して指定された InputStream
から JOCL ドキュメントを読み込み、パースします。
返される JOCLContentHandler はファイルに記述されたオブジェクトのリストを内部に持ちます。
in - JOCL ドキュメントを含む InputStream
reader - ファイルをパーすする際に使用される XMLReader
JOCLContentHandler
SAXException
IOException
public static JOCLContentHandler parse(Reader in)
throws SAXException,
IOException
XMLReader
を使用して指定された Reader から JOCL ドキュメントを読み込み、パースします。
返される JOCLContentHandler はファイルに記述されたオブジェクトのリストを内部に持ちます。
in - JOCL ドキュメントを含む Reader
JOCLContentHandler
SAXException
IOException
public static JOCLContentHandler parse(Reader in,
XMLReader reader)
throws SAXException,
IOException
XMLReader を使用して指定された Reader
から JOCL ドキュメントを読み込み、パースします。
返される JOCLContentHandler はファイルに記述されたオブジェクトのリストを内部に持ちます。
in - JOCL ドキュメントを含む Reader
reader - ファイルをパーすする際に使用される XMLReader
JOCLContentHandler
SAXException
IOExceptionpublic void setDocumentLocator(Locator locator)
ContentHandler 内の setDocumentLocatorpublic int size()
public void startElement(String uri,
String localName,
String qname,
Attributes attr)
throws SAXException
ContentHandler 内の startElementSAXException
|
|||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||