/** * Dynamically registers all {@link BackendFactory} instances with their URI scheme. */ private void registerAll() { ServiceProvider.getInstance() .load(BackendFactory.class) .map(ServiceDefinition::get) .forEach(b -> register(Bindings.schemeOf(b), b)); }
@BeforeAll static void registerFactory() { BackendFactoryRegistry.getInstance().register(SCHEME, new AbstractBackendFactory<BaseConfig<?>>("fake") {}); }
/** * Checks the registration of several {@link BackendFactory}s. */ @Test void testMultipleAdd() { REGISTRY.register(MOCK_1, factory1); REGISTRY.register(MOCK_2, factory2); assertThat(REGISTRY.getFactories()).hasSize(2); BackendFactory registeredFactory1 = REGISTRY.getFactoryFor(MOCK_1); assertThat(registeredFactory1).isNotNull().isSameAs(factory1); BackendFactory registeredFactory2 = REGISTRY.getFactoryFor(MOCK_2); assertThat(registeredFactory2).isNotNull().isSameAs(factory2); } }
/** * Checks the registration of one {@link BackendFactory}. */ @Test void testSingleAdd() { REGISTRY.register(MOCK_1, factory1); assertThat(REGISTRY.getFactories()).hasSize(1); BackendFactory registeredFactory = REGISTRY.getFactoryFor(MOCK_1); assertThat(registeredFactory).isNotNull().isSameAs(factory1); }
@Test void createResourceRegistered() { PersistentResourceFactory resourceFactory = PersistentResourceFactory.getInstance(); URI uri = mock(URI.class); when(uri.scheme()).thenReturn("mock0"); Backend backend = mock(InMemoryBackend.class); BackendFactory backendFactory = mock(BackendFactory.class); when(backendFactory.createBackend(any(URI.class), any(ImmutableConfig.class))).thenReturn(backend); BackendFactoryRegistry.getInstance().register(uri.scheme(), backendFactory); PersistentResource resource = resourceFactory.createResource(uri); assertThat(resource).isNotNull(); assertThat(resource.getURI()).isSameAs(uri); assertThat(resource.eStore()).isNotNull(); BackendFactoryRegistry.getInstance().unregister(uri.scheme()); }
/** * Creates a {@link PersistentResource} on the given {@code backend}. * * @param file the file path of the resource * @param backend the backend of the resource * * @return a new {@link PersistentResource} */ @Nonnull private static PersistentResource createMockResource(File file, Backend backend) throws IOException { BackendFactoryRegistry.getInstance().register(Bindings.schemeOf(MockBackendFactory.MockUriFactory.class), new MockBackendFactory(backend)); PersistentResource resource = PersistentResourceFactory.getInstance().createResource(new MockBackendFactory.MockUriFactory().createLocalUri(file)); resource.save(new MockBackendFactory.MockConfig()); return resource; }
/** * Creates a {@link PersistentResource} on the given {@code backend}. * * @param uri the URI of the resource * @param backend the backend of the resource * * @return a new {@link PersistentResource} */ @Nonnull private static PersistentResource createMockResource(URI uri, Backend backend) throws IOException { BackendFactoryRegistry.getInstance().register(Bindings.schemeOf(MockBackendFactory.MockUriFactory.class), new MockBackendFactory(backend)); PersistentResource resource = PersistentResourceFactory.getInstance().createResource(new MockBackendFactory.MockUriFactory().createLocalUri(uri)); resource.save(new MockBackendFactory.MockConfig()); return resource; }