Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Wstęp

Strona zawiera dokumentację PluginFramework API 

Uzupełnieniem tej dokumentacji jest JavaDoc.

 

Plugin API

Plugin API wykorzystywane jest do zarządzania pojedynczą wtyczką.

Obiekt (com.suncode.plugin.framework.Plugin) reprezentuje wtyczkę i umożliwia sterowanie jej stanem oraz komunikację z mechanizmem wtyczek. Obiekt ten możemy otrzymać poprzez:

  • pobranie obiektu wtyczki z serwisu com.suncode.plugin.framework.PluginFramework wywołując metodę getPlugin(String key)  podając jej identyfikator:

    // dowolny komponent (wewnątrz wtyczki lub w systemie)
    @Component
    public class SomeComponent {
     
    	@Autowired
    	private PluginFramework framework;
     
    	public void method(){
    		Plugin plugin = framework.getPlugin("plugin-key");
    	}
    }
  • wstrzyknięcie (@Autowired) obiektu wtyczki do komponentu tej wtyczki. W taki sposób możemy pobrać obiekt aktualnej wtyczki:

    // komponent wewnątrz wtyczki
    @Component
    public class SomePluginComponent {
     
    	@Autowired
    	private Plugin plugin;
     
    	public void method(){
    		plugin.getKey(); // klucz tej wtyczki
    	}
    }

Cykl życia wtyczki

Wtyczka może być dynamicznie uruchamiana, zatrzymywana aktualizowana poprzez wywołanie odpowiednich metod na obiekcie tej wtyczki:


  • Uruchomienie wtyczki

    Plugin plugin = ...
     
    plugin.start();
    System.out.println(plugin.getState()); // wypisuje ACTIVE
  • Zatrzymanie wtyczki

    Plugin plugin = ...
    
    
    plugin.stop();
    System.out.println(plugin.getState()); // wypisuje STOPPED
  • Aktualizacja wtyczki z podanego pliku

    Plugin plugin = ...
    
    
    plugin.update(new File("ścieżka do pliku jar wtyczki"));
  • Odinstalowanie wtyczki

    Odinstalowana wtyczka nie może być już wykorzystywana. Wywołanie jakiejkolwiek metody (z wyjątkiem kilku np. getState) zakończy się błędem.

    Plugin plugin = ...
    
    
    plugin.uninstall();
    System.out.println(plugin.getState()); // wypisuje UNINSTALLED

Zasoby wtyczki

Każda wtyczka zbudowana jest z klas Java oraz statycznych zasobów. Ze względu na izolację wtyczek, odczyt zasobów może odbywać się tylko z wykorzystaniem przedstawionych metod.

  • Pobieranie pojedynczych zasobów 

    Plugin plugin = ...
     
    Resource resource = plugin.getResource("suncode-plugin.xml"); // deskryptor wtyczki
    if(resource.exists()){
    	// zasób istnieje i można go odczytać
    }
  • Wyszukiwanie zasobów 

    Plugin plugin = ...
    PluginContext context = plugin.getPluginContext();
     
    // mappings/a.xml
    // mappings/b.xml
    // mappings/c.json
    // mappings/sub/a.json
    // mappings/sub/b.xml
     
    // wszystkie pliki z katalogu mappings i podkatalogów
    Resource[] resources = context.getResources( "mappings/**/*" );
    // resources ma:
    // mappings/a.xml
    // mappings/b.xml
    // mappings/c.json
    // mappings/sub/a.json
    // mappings/sub/b.xml
     
    // wszystkie pliki xml z katalogu mappings
    Resource[] resources = context.getResources( "mappings/*.xml" );
    // resources ma:
    // mappings/a.xml
    // mappings/b.xml


    Wzorzec zasobów jest wyrażeniem Ant. Więcej info w dokumentacji Spring'a PathMatchingPatternResolver (http://docs.spring.io/autorepo/docs/spring-framework/3.2.6.RELEASE/javadoc-api/org/springframework/core/io/support/PathMatchingResourcePatternResolver.html).

 

  • No labels