...
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 language java // 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();