/*************************************************************************** * * {@inheritDoc} * **************************************************************************/ @Override public <Item> int storeItem (@Nonnull final MetadataItemHolder<Item> holder, @Nonnull final StoreOption ... options) throws NoSuchMetadataTypeException { logger.info("storeItem(%s, %s)", holder, Arrays.toString(options)); if (holder == null) { throw new IllegalArgumentException("holder is mandatory"); } MetadataSpiUtils.validateOptions(options); final Class<Item> itemClass = (Class<Item>)holder.get().getClass(); final MetadataItemProvider<Item> metadataProvider = (MetadataItemProvider<Item>)providerMapByClass.get(itemClass); if (metadataProvider == null) { throw new NoSuchMetadataTypeException(itemClass); } return metadataProvider.storeItem(getDataObject(), holder, options); }
@Test public void testInitialization() { logger.info("******** testInitialization()"); assertEquals(2, MetadataImpl.providerMapByClass.size()); assertEquals(3, MetadataImpl.interceptors.size()); assertTrue(MetadataImpl.providerMapByClass.get(MockItem1.class) instanceof MetadataItemProviderMock1); assertTrue(MetadataImpl.providerMapByClass.get(MockItem2.class) instanceof MetadataItemProviderMock2); assertTrue(MetadataImpl.interceptors.get(0) instanceof MetadataItemInterceptorMock1a); assertTrue(MetadataImpl.interceptors.get(1) instanceof MetadataItemInterceptorMock1b); assertTrue(MetadataImpl.interceptors.get(2) instanceof MetadataItemInterceptorMock2a); }