मैं एक्सटेंशन है कि किसी विशेष एक्सटेंशन के बिंदु को लागू रहा हूँ, और निम्न स्वीकार्य विधि का उपयोग कर रहा यह करने के लिए:ग्रहण IConfigurationElement से OSGi बंडल हो रही
IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry(); यदि (एक्सटेंशन रजिस्ट्री == शून्य) { वापसी टेम्पलेट; }
आईसीओफ़िगरेशन एलिमेंट [] config = extensionRegistry.get कॉन्फ़िगरेशन एलिमेंट्स ("com.ibm.im.launchpoint.templates.template");
मैं फिर परिभाषित बंडल का संस्करण प्राप्त करना चाहता हूं। मैं निम्नलिखित एपीआई का उपयोग होगा, लेकिन PluginVersionIdentifier के लिए एपीआई अब मान्य नहीं है:
के लिए (IConfigurationElement ई: config){ BlueprintTemplate टेम्पलेट = नए BlueprintTemplate();
आईईक्स्टेंशन घोषणाकरण एक्सटेंशन = e.getDeclaringExtension(); प्लगइनवर्सनडिएंटिफायर संस्करणइडिएंटिफायर = घोषित करना एक्सटेंशन .getDeclaringPluginDescriptor()। GetVersionIdentifier();
मुझे नई एपीआई में कोई विकल्प नहीं मिला - यानी आईसीओफ़िगरेशन एलिमेंट से, मैं बंडल के संस्करण आईडी डिस्क्रिप्टर को कैसे प्राप्त करूं। जाहिर है, बंडल से मैं बंडल.getHeaders() का उपयोग कर संस्करण प्राप्त कर सकता हूं, बंडल-संस्करण मान प्राप्त कर रहा हूं - लेकिन मैं पहली जगह में बंडल कैसे प्राप्त करूं ??? Platform.getBundle (bundleId) पर्याप्त नहीं है क्योंकि मेरे पास एक ही बंडल के कई संस्करण स्थापित हो सकते हैं, और मुझे यह जानने की ज़रूरत है कि मैं कौन हूं। फिलहाल मेरे पास एक चिकन & अंडे की स्थिति है, और मेरे पास एकमात्र समाधान उपरोक्त बहिष्कृत एपीआई है।
फिर से, यह वास्तव में मेरी मदद नहीं करता है, क्योंकि उस आईडी के साथ कई बंडल हो सकते हैं, लेकिन इनमें से केवल एक ही जिसमें यह एक्सटेंशन परिभाषित किया गया है। एक और बिंदु, बंडल में getVersion विधि नहीं है। मुझे इसकी आवश्यकता यह है कि मैं एक 'दस्तावेज़ टेम्पलेट' को एक विस्तार बिंदु के रूप में पंजीकृत कर रहा हूं, और इस टेम्पलेट के विभिन्न संस्करण हो सकते हैं। तो जब एक टेम्पलेट लोड होता है, तो मैं जानना चाहता हूं कि यह कौन सा संस्करण है, नोटेशन इत्यादि के लिए .. अभी के लिए, मैंने अपने विस्तार बिंदु के लिए स्कीमा में एक अतिरिक्त विशेषता का उपयोग किया है, जो शर्म की बात है। –
मुझे लगता है कि, अतिरिक्त विशेषता बेहतर समाधान है। इस तरह एक्सटेंशन संस्करण को अपडेट किए बिना प्लग-इन को अपडेट करना और रिसीवर को नए संस्करण के लिए अपडेट करने के बिना संशोधित करना संभव है। यह दिलचस्प है कि बंडल में getVersion() विधि नहीं है। शायद यह ग्रहण 3.6 में एक नई विधि है, जिसका उपयोग मैं योगदानकर्ता की खोज करते समय कर रहा था। –