2011-08-04 11 views
1

私はいくつかのxmlbean ojectでカスタムバリデーションを書く必要があるアプリケーションに取り組んでいます。基本的には正しい値を持つフィールドが存在するかどうかです。これらのオブジェクトはdiffスキーマから生成されます。私は、スキーマに対してxmlbeansによって提供された検証を使用していますが、さらに処理される前にこれらのオブジェクトに対してビジネス検証を行う必要があります。 誰かがこのユースケースのデザインパターンを提案できますか?各classyouが扱っている、あなたは各Beanのバリを取得するために工場クラスを提供できるためこのユースケースでは、どのデザインパターンを使用する必要がありますか?

interface Validator <T extends XmlBean> { 
    boolean validate(T bean); 
} 

がそれを実装します。

おかげ

答えて

1

は、あなた自身のバリインターフェイスを定義します次のインターフェイスを実装して、クラスを実装します。

interface IValidatorFactory { 
    public <T extends XmlBean> Validator<T> getValidator(Class<T> clazz); 
} 

class ValidatorFactory implements IValidatorFactory { 
    private final Map<Class<? extends XmlBean>, Validator<? extends XmlBean>> map = 
     new HashMap<Class<? extends XmlBean>, Validator<? extends XmlBean>>(); 

    @SuppressWarnings("unchecked") 
    @Override 
    public <T extends XmlBean> Validator<T> getValidator(Class<T> clazz) { 
     return (Validator<T>)map.get(clazz); 
    } 

    public <T extends XmlBean> void registerValidator(Class<T> clazz, Validator<T> validator) { 
     map.put(clazz, validator); 
    } 
} 
+0

が有望に見えます。私はこれを試してみる。 – javauser2011

0

生成されたXmlBeansクラスに、独自のカスタム・プリセット・ポスト・セット・フックを追加する可能性があります。フックを追加するには、.xsdconfigファイルを作成し、呼び出すことができるいくつかのpreSet()postSet()静的メソッドを用意する必要があります。

たとえば、次を参照してください。また、

https://www.ibm.com/developerworks/xml/library/x-xmlbeanse/?ca=dgr-eclipse-1

とを:

http://svn.apache.org/viewvc/xmlbeans/trunk/test/cases/xbean/extensions/prePostFeature/readOnlyBean/po.xsdconfig?revision=HEAD&view=markup

http://svn.apache.org/viewvc/xmlbeans/trunk/test/src/xmlobject/extensions/prePostFeature/readOnlyBean/existing/FooHandler.java?revision=HEAD&view=markup

関連する問題