2011-11-18 12 views
8

हम एक जावा पुस्तकालय/system/पैकेज है जो न केवल बुनियादी सत्यापन करता है, लेकिन यह भी संबंध सत्यापन कर सकते हैं के लिए देख रहे हैं। हमें सत्यापन मानदंडों को व्यक्त करने में सक्षम होना चाहिए जो कई संबंधित इकाइयों पर आधारित है।जावा मॉडल सत्यापन

अधिकांश प्रमाणीकरण मॉडल वसंत सत्यापन, जेएसआर 303 विशेष रूप से बीन के गुणों के सत्यापन पर लक्षित हैं। लेकिन हमें ऐसा कुछ चाहिए जो बीन्स में चलेगा।

हमारी आवश्यकताओं को एक मॉडल राज्य सत्यापित करते समय जावा कोड से बाहर मान्यता तर्क externalizing की एक विधि साथ आने के लिए कर रहे हैं।

उपरोक्त परिभाषा में बीन सिर्फ एक पीओजेओ है, और एक मॉडल संबंधित बीन्स का संग्रह है। इसलिए, उदाहरण के लिए, यदि खाते में पते का संग्रह है और खाता.countryOfResidence संयुक्त राज्य अमेरिका पर सेट है, तो मैं एक सत्यापन नियम चाहता हूं जो सुनिश्चित करेगा कि सभी पते में संयुक्त राज्य अमेरिका का देश हो।

तो खाते में एक पता जोड़ने के "ऑपरेशन 'के दौरान एक सत्यापन शुरू सुनिश्चित करना है कि Address.country Account.countryOfResidence रूप में ही है जाएगा।

हम DRULES में देख रहे थे, लेकिन अगर कोई अन्य विकल्प उपलब्ध थे देखना चाहती थी।

आगे बढ़ने के तरीके पर कोई सुझाव?

+0

आपके संदर्भ में, मॉडल क्या है, "मॉडल स्थिति" क्या है, और सत्यापन क्या है? इससे लोगों को जवाब देने में मदद मिल सकती है अगर वे जानते हैं कि आप क्या चाहते हैं। – CPerkins

+1

आप सत्यापन के लिए जावा से क्यों बचना चाहते हैं? ऐसा करने के लिए जावा सबसे अभिव्यक्तिपूर्ण भाषा की तरह लगता है, इसमें कई एपीआई उपलब्ध हैं, और आसानी से जावा ऑब्जेक्ट्स तक पहुंचती हैं। –

+0

क्या आप नमूना प्रदान कर सकते हैं? – Puce

उत्तर

1

लेकर सुनिश्चित नहीं हैं सक्रिय इस परियोजना है, लेकिन मैं इसे थोड़ी देर पहले का इस्तेमाल किया और यह तुम क्या वर्णन कर रहे हैं करने के लिए क्षमताओं को प्रदान की - एक बार देख ले और देखो अगर यह उपयोगी हो सकता है:

http://i-screen.org/docs/index.html

और निश्चित रूप से वहाँ जेस: http://www.jessrules.com/jess/

यह भी हालांकि मैं इसके बारे में ज्यादा पता नहीं है इस पर एक नज़र लेने लायक हो सकता है। Vlad: http://www.sapia-oss.org/projects/vlad/

+0

जेस के लिए एक विकल्प जेबॉस परियोजना है जिसे पूर्व में ड्रोल के रूप में जाना जाता था। मुझे इनके बारे में क्या पसंद नहीं है 1) एक्सएमएल; 2) एक अलग फ़ाइल में परिभाषित सत्यापन नियम; 3) एक अलग एक्सएमएल फ़ाइल में परिभाषित सत्यापन। –

0

मुझे लगता है कि इस ScriptAssert validator या एक custom validator साथ JSR 303 में करने के लिए संभव है।

This question कई कस्टम पार क्षेत्र प्रमाणकों कि अपनी खुद की बनाने के लिए एक आधार के रूप में इस्तेमाल किया जा सकता है।

और यहां @ScriptAssert सत्यापनकर्ता का एक उदाहरण है।

@ScriptAssert(lang="javascript", script="_this.countryOfResidence.equals(_this.address.country)") 
// @ScriptAssert(lang="jexl", script="_this.countryOfResidence == _this.address.country") 
public class Account { 
    @NotNull @Valid 
    private Address adddress; 

    private String countryOfResidence; 
} 

public class Address { 
    ... 
    @NotNull 
    private String country; 
} 

यह निश्चित रूप से एक कस्टम validator की तुलना में बहुत कम कोड है।


नोट: वैधकर्ता एक्सएमएल में भी बनाया जा सकता है (यदि आप जिस तरह से रोल करते हैं)।

0

मैं इस जगह में जो उपलब्ध है उससे निराश हूं - शायद क्योंकि मैं सुविधाओं का असंभव संयोजन चाहता हूं - केक रखना और इसे खा रहा हूं। तो यह अधिक क्या मैं, कम से कम एक जवाब पर विचार की तुलना में एक लंबा टिप्पणी के माध्यम से है। मैंने इस सवाल को "पसंदीदा" के रूप में चिह्नित किया, उम्मीद है कि कोई और हमें एक मैजिक बुलेट पर इंगित करेगा। लेकिन मुझे लगता है कि घर में कोई जादूगर नहीं हैं।

एक संभावना यह OCL है, विशेष रूप से प्रासंगिक ग्रहण प्लग-इन के साथ प्रदान की सहायता के साथ।मैंने इसे देखा है और इसे खारिज कर दिया क्योंकि यह प्रयास के लायक नहीं था - लेकिन आपका लाभ भिन्न हो सकता है।

एक और संभावना (शायद !!!) BDD के लिए लिखे गए उपकरणों में से एक के टुकड़े का लाभ उठाना है। हालांकि, ये परीक्षण के लिए लिखे गए हैं, उत्पादन कोड नहीं - "दिए गए परिदृश्य एक्स, मुझे उम्मीद है कि वाई होने वाला है"। मैं चीजों का जिक्र कर रहा हूं easyb, jbehave, और cucumber के cuke4duke पोर्ट - विशेष रूप से easyb। मुझे लगता है कि जेबेहेव आपके लिए जावा-भारी है, और मैंने अभी तक ककड़ी को गंभीरता से नहीं देखा है।

यदि आपको कुछ ऐसा लगता है जो आपके लिए काम करता है, तो कृपया वापस आएं और अपना उत्तर लिखें। ध्यान दें कि इस पर आपको 7 अपवॉट और 4 पसंदीदा मिले हैं - enquiring minds want to know!

संबंधित मुद्दे