/*************************************************************************** * * {@inheritDoc} * **************************************************************************/ @Nonnull final public List<MetadataItemHolder<Item>> findOrCreateItems (@Nonnull final DataObject dataObject, @Nonnull final FindOption ... options) { logger.fine("findOrCreateItems(%s, %s)", dataObject, Arrays.toString(options)); if (dataObject == null) { throw new IllegalArgumentException("dataObject is mandatory"); } MetadataSpiUtils.validateOptions(options); final List<MetadataItemHolder<Item>> holders = findItems(itemClass, dataObject, options); // The new holder will have isAvailable() == false // FIXME: have a Map and make sure that the same instance for each DataObject is returned if (holders.isEmpty()) { holders.add(createNewItem()); } return holders; }
final List<MetadataItemHolder<Item>> result = new ArrayList<MetadataItemHolder<Item>>(); for (final MetadataItemSource<Item> source : findMetadataItemSources(itemClass))
/*************************************************************************** * * **************************************************************************/ @Nonnull private MetadataItemHolder<Item> createNewItem() { final StopWatch stopWatch = StopWatch.create(MetadataItemProviderSupport.class, "createNewItem/" + itemClass.getName()); try { final MetadataItemHolder<Item> holder = createMetadataHolder(creationStrategy.createItem(itemClass)); if (holder.getLatestModificationTime() != null) { throw new AssertionError("MetadataHolders created by createMetadataHolder() must have getLatestModificationTime() == null"); } return holder; } catch (Exception e) { throw new RuntimeException(e); } finally { stopWatch.stop(); } } }
@Test public void testFindMetadataItems() throws IOException { final DataObject dataObject = createDataObject("xxx"); final List<MetadataItemHolder<MockItem1>> holders = MetadataItemProviderSupport.findItems(MockItem1.class, dataObject, StorageType.ANY_TYPE); final Iterator<MetadataItemHolder<MockItem1>> i = holders.iterator(); final MetadataItemHolder<MockItem1> holder1 = i.next(); final MetadataItemHolder<MockItem1> holder2 = i.next(); assertNotNull(holder1); assertNotNull(holder2); final MockItem1 item1 = holder1.get(); final MockItem1 item2 = holder2.get(); assertNotNull(item1); assertNotNull(item2); assertTrue(item1 != item2); assertTrue(item1 instanceof MockItem1); assertTrue(item2 instanceof MockItem1); final Date timestamp1 = holder1.getLatestModificationTime(); assertNotNull(timestamp1); final Date timestamp2 = holder2.getLatestModificationTime(); assertNotNull(timestamp2); assertTrue(timestamp1.after(timestamp2)); } }
@Test public void testFindMetatadaItemsWithNullDataObject() { try { final MetadataItemProviderSupport mips = new MetadataItemProviderMock1(); // final MetadataItemProviderSupport mips = new MetadataItemProviderSupport<MockItem1>(MockItem1.class, ENHANCED) {}; mips.findOrCreateItems(null); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { // ok } }
int result = 0; for (final MetadataItemSink<Item> sink : findMetadataItemSinks(itemClass))
@Test public void testFindMetatadaItemsWithNullOption() throws IOException { try { final MetadataItemProviderSupport mips = new MetadataItemProviderMock1(); //new MetadataItemProviderSupport<MockItem1>(MockItem1.class, ENHANCED) {}; final DataObject dataObject = createDataObject("xxx"); mips.findOrCreateItems(dataObject, null); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { // ok } }
@Test public void testFindMetadataItemSources() { final List<MetadataItemSource<MockItem1>> sources = MetadataItemProviderSupport.findMetadataItemSources(MockItem1.class); assertNotNull(sources); assertEquals(3, sources.size()); final MetadataItemSource<MockItem1> source1 = sources.get(0); final MetadataItemSource<MockItem1> source2 = sources.get(1); final MetadataItemSource<MockItem1> source3 = sources.get(2); assertNotNull(source1); assertNotNull(source2); assertNotNull(source3); assertTrue(source1 != source2); assertTrue(source1 != source3); assertTrue(source2 != source3); assertTrue(source1 instanceof MetadataItemSourceMock1a); assertTrue(source2 instanceof MetadataItemSourceMock1b); assertTrue(source3 instanceof MetadataItemSourceMock1Internal); }