{"id":230,"date":"2008-08-07T10:13:56","date_gmt":"2008-08-07T09:13:56","guid":{"rendered":"http:\/\/blog.sahits.ch\/?p=230"},"modified":"2008-11-11T09:51:16","modified_gmt":"2008-11-11T08:51:16","slug":"define-access-restriction-on-plugin","status":"publish","type":"post","link":"http:\/\/sahits.ch\/blog\/blog\/2008\/08\/07\/define-access-restriction-on-plugin\/","title":{"rendered":"Define access restriction on plugin"},"content":{"rendered":"<p>In Eclipse it seems to be common practice to define interfaces and hide a concrete implementation in a package under *.internal.*. The actual hiding though is not result of the word &#8222;internal&#8220; in the package name but must be specified in the MANIFEST.MF with the exported packages.<br \/>\nThere are also further possibilities that can be engaged. For example you can define a package a friend to another package(es) so that only these can access the classes within.<br \/>\n<code><br \/>\nManifest.MF<br \/>\nBundle-SymbolicName: example<br \/>\nExport-Package:<br \/>\n com.example.public, \/\/ Anyone can access com.example.public if imported<br \/>\n com.example.test;x-internal:=true, \/\/ This is marked as internal, but can be used<br \/>\n com.example.impl;x-friends:=com.example.other, \/\/ Only com.example.other should access it<br \/>\n<\/code><br \/>\nThis is not part of the OSGi Standard but the Equinox reference implementation.<br \/>\nFor further reference see the <a href=\"http:\/\/www.eclipsezone.com\/eclipse\/forums\/t97259.rhtml\">Article<\/a> at EclipseZone.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Eclipse it seems to be common practice to define interfaces and hide a concrete implementation in a package under *.internal.*. The actual hiding though is not result of the word &#8222;internal&#8220; in the package name but must be specified in the MANIFEST.MF with the exported packages. There are also further possibilities that can be &hellip; <a href=\"http:\/\/sahits.ch\/blog\/blog\/2008\/08\/07\/define-access-restriction-on-plugin\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eDefine access restriction on plugin\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,7,6],"tags":[304,12,300],"class_list":["post-230","post","type-post","status-publish","format-standard","hentry","category-eclipse","category-java","category-programmieren","tag-eclipse","tag-plugin","tag-programmieren"],"_links":{"self":[{"href":"http:\/\/sahits.ch\/blog\/wp-json\/wp\/v2\/posts\/230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/sahits.ch\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/sahits.ch\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/sahits.ch\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/sahits.ch\/blog\/wp-json\/wp\/v2\/comments?post=230"}],"version-history":[{"count":2,"href":"http:\/\/sahits.ch\/blog\/wp-json\/wp\/v2\/posts\/230\/revisions"}],"predecessor-version":[{"id":275,"href":"http:\/\/sahits.ch\/blog\/wp-json\/wp\/v2\/posts\/230\/revisions\/275"}],"wp:attachment":[{"href":"http:\/\/sahits.ch\/blog\/wp-json\/wp\/v2\/media?parent=230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/sahits.ch\/blog\/wp-json\/wp\/v2\/categories?post=230"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/sahits.ch\/blog\/wp-json\/wp\/v2\/tags?post=230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}