Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Pobieranie pojedynczych zasobów 

    Code Block
    java
    java
    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 

    Code Block
    java
    java
    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).

 

Lokalne repozytorium

Tip

PluginStore dostępny jest od wersji 1.0.5 mechanizmu wtyczek - PlusWorkflow 3.1.7

PluginStore pozwala na zapisywanie zasobów (np. plików) w lokalnym repozytorium wtyczki. Pliki zapisane w takim repozytorium są stałe tzn. nie są usuwane podczas zatrzymywania wtyczki. Stanowi to alternatywę dla baz danych.

Info

Domyślna implementacja PluginStore przechowuje pliki w systemie plików w katalogu: <plugin-framework-home>/data/<plugin-key>.

Nie należy bazować na tej informacji podczas tworzenia wtyczek.

 

  • Pobieranie instancji store'a 

    Code Block
    languagejava
    // z instancji wtyczki
    PluginStore store = plugin.getPluginStore();
     
    // poprzez @Autowired
    @Autowired
    private PluginStore store;


    Komponent PluginStore może być pobrany zarówno z instancji wtyczki jak i z kontekstu tej wtyczki.

  • Zapis zasobów 

    Code Block
    java
    java
    PluginStore store = ...
     
    // zapis InputStream
    PluginStoreResource resource = store.store("some/path/file.xml", inputStream);
    resource.getPath(); // some/path/file.xml
    resource.getInputStream();
    Tip

    Domyślne metody nie pozwalają na nadpisywanie plików. Aby nadpisywać pliki musimy wykorzystać inny wariant metody.

  • Odczyt zasobów 

    Code Block
    java
    java
    PluginStore store = ...
     
    // pobranie zasobu
    PluginStoreResource resource = store.read("some/path/file.xml")
    if(resource == null){
    	// zasób nie istnieje
    	return;
    }
     
    // odczyt i poprawne zamknięcie
    InputStream input = resource.getInputStream();
    try{
    	// odczyt/kopiowanie etc.
    }
    finally{
    	input.close();
    }
  • Usuwanie zasobów 

    Code Block
    java
    java
    PluginStore store = ...
     
    // usunięcie pojedynczego zasobu
    store.delete("some/path/file.xml");
     
    // wyczyszczenie całego store'a
    store.clear();