2014-11-04 16 views
6

मैं couchbase-java-client प्रोजेक्ट देख रहा हूं और सोच रहा हूं कि dropwizard प्रोजेक्ट के अंदर इसका उपयोग करना संभव है या नहीं।ड्रॉपडाइज़र प्रोजेक्ट में कोचबेस जावा क्लाइंट का उपयोग कैसे करें?

ऐसा लगता है कि यह एक प्राकृतिक फिट होगा, क्योंकि कॉचबेस मूल रूप से एक JSON डेटाबेस है, लेकिन जावा क्लाइंट जैक्सन के साथ संगत प्रतीत नहीं होता है। जहां तक ​​मैं कह सकता हूं, सोफेबेस क्लाइंट लाइब्रेरी में its own internal implementation of a JSON library शामिल है जो वहां मौजूद सभी अन्य जावा JSON libs के साथ असंगत है, जो वास्तव में अजीब है।

मुझे JacksonTransformers कक्षा मिली जो पहले वादा करता था। लेकिन करीब निरीक्षण के बाद, पुस्तकालय जैक्सन के एक छायांकित संस्करण का उपयोग कर रहा है (com.couchbase.client.deps.com.fasterxml.jackson.core के एक पुनर्लेखित पैकेज के साथ)।

किसी भी तरह, चूंकि ड्रॉपविज़ार्ड जेएसओएन दस्तावेजों को आरएसटी एपीआई के माध्यम से जेएसओएन दस्तावेजों के लिए मार्शल करने के लिए उपयोग करता है, तो सोफेबेस-जावा-क्लाइंट लाइब्रेरी का उपयोग करने का कम से कम घर्षण तरीका क्या है? क्या इस मामले में भी संभव है?

उत्तर

3

यह निश्चित रूप से है Dropwizard के साथ Couchbase का उपयोग करने के लिए संभव है। क्लाइंट एसडीके डेवलपर की सुविधा के लिए जेएसओएन मैनिपुलेशन ऑब्जेक्ट प्रदान करता है लेकिन यह जेएसओएन प्रोसेसिंग को जैक्सन या जीएसओएन जैसी लाइब्रेरी में प्रस्तुत करने की अनुमति देता है। RawJsonDocument कक्षा here पर एक नज़र डालें। मूल रूप से, आप उन वस्तुओं में से एक बनाने के लिए एक Stringified JSON (किसी भी ढांचे से बाहर आ रहा है) का उपयोग कर सकते हैं और ग्राहक एसडीके किसी भी आपरेशन यानी के लिए एक JSON दस्तावेज़ के रूप में यह समझ जाएगा:

String content = "{\"hello\": \"couchbase\", \"active\": true}"; 
bucket.upsert(RawJsonDocument.create("rawJsonDoc", content)); 
0

यह काम करना संभव होना चाहिए।

  1. संसाधन व्यक्ति के लिए सर्वर सर्वर के लिए क्लाइंट अनुरोध।
  2. डीडब्ल्यू सर्वर क्यूबेबेस के लिए अनुरोध करता है, व्यक्ति को प्रतिनिधित्व करने वाले व्यक्ति या जेएसओएन का प्रतिनिधित्व करने वाला पोजो वापस मिलता है।
  3. यदि यह JSON है, DW में जैक्सन एनोटेशन के साथ एक POJO बना सकते हैं और वापस जाने कि ग्राहक
  4. को यदि यह एक विशेष couchebase POJO है, नक्शा एक जैक्सन POJO है कि और ग्राहक के लिए करने के लिए वापस
0

एक समाधान @CamiloCrespo के आधार पर का जवाब:

public static Document<String> toDocument(String id, Object value, 
     ObjectMapper mapper) throws JsonProcessingException { 
    return RawJsonDocument.create(id, mapper.writeValueAsString(value)); 
} 

ध्यान रखें, कि आप Dropwizard के साथ एक बस maper उपयोग नहीं कर सकते, ObjectMapper mapper = new ObjectMapper() की तरह,।

आप इसे से Application#run() विधि में प्राप्त कर सकते हैं, या परीक्षण के लिए Jackson.newObjectMapper() का उपयोग कर सकते हैं।

का उपयोग करने का एक उदाहरण:

ObjectMapper mapper = Jackson.newObjectMapper(); 
User user = User.createByLoginAndName("login", "name"); 
bucket.insert(toDocument("123", user, mapper)); 
संबंधित मुद्दे