final MetadataItemHolder<? extends Item> holder = metadata.findOrCreateItem(itemClass, sourceType); logger.fine(">>>> holder: %s", holder); pane.bind(holder);
public Metadata findOrCreateMetadata (final DataObject dataObject) { final Metadata metadata = Mockito.mock(Metadata.class); Mockito.stub(metadata.getDataObject()).toReturn(dataObject); creationCount++; return metadata; } }
final MetadataItemHolder<Basic> holder = metadata.findOrCreateItem(Basic.class, Metadata.StorageType.INTERNAL);
@Test public void testLookup() { final Metadata metadata = lookup.lookup(Metadata.class); assertNotNull(metadata); assertSame(dataObject, metadata.getDataObject()); assertSame(metadata, lookup.metadataRef.get()); assertTrue(MetadataCachedLookup.referenceKeeper.contains(metadata)); final Metadata metadata1 = lookup.lookup(Metadata.class); assertSame(metadata, metadata1); }
@Before public void setupFixture() throws IOException, NoSuchMetadataTypeException { panelProvider = new MetadataPanelProviderMock(); FileUtil.setMIMEType("test", "image/test"); final FileSystem fileSystem = FileUtil.createMemoryFileSystem(); final FileObject root = fileSystem.getRoot(); dataObjectWithNoMetadata = DataObject.find(root.createData("nometadata.test")); assertTrue(dataObjectWithNoMetadata instanceof DataObjectMock); assertNull(dataObjectWithNoMetadata.getLookup().lookup(Metadata.class)); dataObjectWithItem = DataObject.find(root.createData("item.test")); assertTrue(dataObjectWithItem instanceof DataObjectMock); Metadata metadata = dataObjectWithItem.getLookup().lookup(Metadata.class); assertNotNull(metadata); MetadataItemHolder<MetadataItemMock> holder = metadata.findOrCreateItem(MetadataItemMock.class, INTERNAL); assertNotNull(holder); assertTrue(holder.isAvailable()); dataObjectWithNoItem = DataObject.find(root.createData("noitem.test")); assertTrue(dataObjectWithNoItem instanceof DataObjectMock); metadata = dataObjectWithNoItem.getLookup().lookup(Metadata.class); assertNotNull(metadata); holder = metadata.findOrCreateItem(MetadataItemMock.class, INTERNAL); assertNotNull(holder); assertFalse(holder.isAvailable()); }
@Test public void testWeakReference2() { Metadata m1 = lookup.lookup(Metadata.class); // Flush m1 out of the reference keeper final List<Metadata> list = new ArrayList<Metadata>(); createInstances(NNNN, list); assertFalse(MetadataCachedLookup.referenceKeeper.contains(m1)); m1 = null; // only weak reference from now metadataFactory.creationCount = 0; final Metadata m2 = lookup.lookup(Metadata.class); assertNotNull(m2); assertSame(dataObject, m2.getDataObject()); assertEquals(0, metadataFactory.creationCount); // not a new instance, the weak ref still keeps the old one alive }
@Test public void testLookupWithTemplate() { final Result<Metadata> result = lookup.lookup(new Lookup.Template<Metadata>(Metadata.class)); assertNotNull(result); final Collection<? extends Metadata> allInstances = result.allInstances(); assertNotNull(allInstances); assertEquals(1, allInstances.size()); final Metadata metadata = allInstances.iterator().next(); assertNotNull(metadata); assertSame(dataObject, metadata.getDataObject()); assertSame(metadata, lookup.metadataRef.get()); assertTrue(MetadataCachedLookup.referenceKeeper.contains(metadata)); final Metadata metadata1 = lookup.lookup(Metadata.class); assertSame(metadata, metadata1); }
@Test public void testGC() { Metadata m1 = lookup.lookup(Metadata.class); // Flush m1 out of the reference keeper final List<Metadata> list = new ArrayList<Metadata>(); createInstances(NNNN, list); assertFalse(MetadataCachedLookup.referenceKeeper.contains(m1)); m1 = null; // only weak reference from now consumeAllAvailableMemory(); metadataFactory.creationCount = 0; final Metadata m2 = lookup.lookup(Metadata.class); assertNotNull(m2); assertSame(dataObject, m2.getDataObject()); assertEquals(1, metadataFactory.creationCount); // a new instance has been created }