Enquanto os aspectos de "agrupamento" de um plug-in possam ser interessantes para o plug-in de tempo de execução e as ferramentas de tempo de execução, é muito mais comum que um plug-in se ocupe dos pontos de extensão que foram definidos por plug-ins e das extensões que foram contributos de plug-ins. Estas informações são prestadas pelo registo de extensões da plataforma, IExtensionRegistry.
Por que razão interessa a um plug-in saber as extensões presentes? Um exemplo concreto ajudará a mostrar a necessidade destas informações e o protocolo para as obter.
Lembremo-nos do diálogo Mostrar Vista da área de trabalho que mostra todas vistas disponíveis que foram instaladas na plataforma.
Sabemos que os nomes de categorias e os nomes de vistas de todas as vistas contributos estão especificados no ficheiro plugin.xml de qualquer plug-in que contribua com uma extensão para org.eclipse.ui.views. Mas como sabe a área de trabalho estas informações? Pelo registo de extensões da plataforma. O código seguinte é uma porção simplificada baseada na implementação da área de trabalho do diálogo Mostrar Vista:
... IExtensionRegistry registry = Platform.getExtensionRegistry(); IExtensionPoint point = registry.getExtensionPoint("org.eclipse.ui.views"); if (point == null) return; IExtension[] extensions = point.getExtensions(); for (int i = 0; i < extensions.length; i++) readExtension(extensions[i]); //obter as informações sobre cada extensão ...
Vemos em cima que o registo pode ser obtido com a classe Platform. O protocolo em IExtensionRegistry é utilizado para localizar o ponto de extensão denominado org.eclipse.ui.views. As informações no registo acerca de determinados ponto de extensão ou extensões podem ser encontradas com o protocolo definido em IExtensionRegistry, IExtensionPoint e IExtension. O javadoc para estas classes presta informações detalhadas sobre o protocolo de registo.
Uma vez detectada a definição de extensão que interessa, pode ser utilizado o protocolo em IConfigurationElement para examinar os atributos individuais de uma extensão.