Warning Discouraged Access Saat Membuat Kode Program Eclipse Plugin


Pada zaman dahulu kala, malam Natal adalah malam yang spesial dimana kami sekeluarga bersama mengadakan acara santap malam bersama.  Ramai dan penuh canda tawa.   Di saat malam yang sepi tiba, saya akan menjalankan player DOS untuk melantunkan nada MIDI jingle bells lewat speaker internal komputer (saat itu MP3 dan speaker multimedia belum populer).  Waktu terus berlalu, ada yang datang dan ada yang pergi, hingga akhirnya malam Natal bukan lagi hari yang spesial.  Well, setidaknya saya masih coding di akhir tahun.

Kali ini saya mencoba menambahkan content assist untuk memunculkan id dan css class pada saat berada di selector jQuery, seperti yang terlihat pada gambar berikut ini:

Content Assist Untuk jQuery Selector

Content Assist Untuk jQuery Selector

Pada saat membuat kode program, untuk pertama kalinya saya menemukan banyak pesan warning.  Salah satu contoh pesan warning tersebut adalah:

Discouraged access: The method getIDs(index) from the type CSSIndexQueryHelper is not accessible due to restriction on required project com.aptana.editor.css

Kenapa bisa demikian?

Karena saya merasa bahwa content assist di jQuery selector memiliki kemiripan dengan content assist di CSS, maka saya akan memakai class-class yang ada di plugin com.aptana.editor.css.   Btw, setiap plugin adalah sebuah komponen yang terpisah, misalnya plugin A boleh di-update tanpa perlu meng-update plugin B (bila masalah kompatibilitas diabaikan!).   Dengan demikian, plugin com.aptana.editor.js (karena jQuery adalah JavaScript) akan membutuhkan plugin com.aptana.editor.css.

Saya perlu menambahkan dependency di plugin com.aptana.editor.js seperti yang terlihat pada gambar berikut ini:

Menambah Required Plugin

Menambah Required Plugin

Lalu, bukankah setelah saya menambah dependency, maka saya bisa memakai seluruh class yang ada di com.aptana.editor.css secara bebas?  Kenapa saya masih malah pesan warning?

Jawabannya adalah tidak semua class yang ada di plugin com.aptana.editor.css dapat saya pakai. Hal ini karena sebuah plugin memiliki sebuah mekanisme untuk menentukan mana class yang boleh di-export dan mana yang tidak boleh dipakai oleh orang lain.

Hal ini dapat terlihat bila saya membuka file plugin.xml pada plugin com.aptana.editor.css, di tab MANIFEST.MF, saya akan menemukan baris yang kira-kira seperti berikut ini:

Export-Package: com.aptana.editor.css,
 com.aptana.editor.css.contentassist; x-friends:="com.aptana.editor.html,com.aptana.editor.erb,com.aptana.editor.svg",
 com.aptana.editor.css.contentassist.index,
 com.aptana.editor.css.internal.build;x-friends:="com.aptana.editor.html",
 com.aptana.editor.css.internal.text;x-friends:="com.aptana.editor.html",
 com.aptana.editor.css.outline,
 com.aptana.editor.css.parsing,
 com.aptana.editor.css.parsing.ast,
 com.aptana.editor.css.text

Hanya class yang berada dalam list Export-Package tersebut saja yang dapat diakses oleh publik.   Tapi ada pengeculian untuk beberapa package, terdapat definisi x-friends.  Ini berarti hanya plugin tertentu saja yang boleh mengakses class-class yang ada di dalam package tersebut.

Karena saya memakai class dalam package yang mengandung x-friends, plugin com.aptana.editor.js sama sekali belum terdaftar, maka pesan warning discouraged access-pun muncul.

Untuk menghilangkan pesan warning ini, saya akan mengubah definisi MANIFEST.MF di atas menjadi seperti berikut ini:

Export-Package: com.aptana.editor.css,
 com.aptana.editor.css.contentassist; x-friends:="com.aptana.editor.html,com.aptana.editor.erb,com.aptana.editor.svg,
   com.aptana.editor.js",
 com.aptana.editor.css.contentassist.index,
 com.aptana.editor.css.internal.build;x-friends:="com.aptana.editor.html",
 com.aptana.editor.css.internal.text;x-friends:="com.aptana.editor.html, com.aptana.editor.js",
 com.aptana.editor.css.outline,
 com.aptana.editor.css.parsing,
 com.aptana.editor.css.parsing.ast,
 com.aptana.editor.css.text

Setelah ini, saya tidak akan menemukan pesan warning discouraged access lagi.

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: