@Override public MetadataChange apply(MetadataMutation mutation) { return new MetadataChange(mutation.getEntity(), Metadata.EMPTY, Metadata.EMPTY); }
@Override public String toString() { return "Drop{" + "entity=" + getEntity() + '}'; } }
public SearchRequest build() { return new SearchRequest(query, scope, namespaces, types, showHidden, offset, limit, cursor, cursorRequested, sorting); } }
@Test public void testCrossNamespaceCustomSearch() throws Exception { MetadataStorage mds = getMetadataStorage(); String appName = "app"; MetadataEntity ns1App = new NamespaceId("ns1").app(appName).toMetadataEntity(); MetadataEntity ns2App = new NamespaceId("ns2").app(appName).toMetadataEntity(); Metadata meta = new Metadata(SYSTEM, props(ENTITY_NAME_KEY, appName)); MetadataRecord app1Record = new MetadataRecord(ns1App, meta); MetadataRecord app2Record = new MetadataRecord(ns2App, meta); mds.apply(new Update(ns1App, meta)); mds.apply(new Update(ns2App, meta)); assertInOrder(mds, SearchRequest.of("*").setSorting(new Sorting(ENTITY_NAME_KEY, Sorting.Order.ASC)).build(), app1Record, app2Record); // clean up mds.batch(ImmutableList.of(new Drop(ns1App), new Drop(ns2App))); }
@Test public void testCrossNamespaceDefaultSearch() throws IOException { MetadataStorage mds = getMetadataStorage(); NamespaceId ns1 = new NamespaceId("ns1"); NamespaceId ns2 = new NamespaceId("ns2"); MetadataEntity ns1app = ns1.app("a").toMetadataEntity(); MetadataEntity ns2app = ns2.app("a").toMetadataEntity(); MetadataRecord app1Record = new MetadataRecord(ns1app, new Metadata(USER, props("k1", "v1", "k2", "v2"))); MetadataRecord app2Record = new MetadataRecord(ns2app, new Metadata(USER, props("k1", "v1"))); mds.apply(new Update(ns1app, app1Record.getMetadata())); mds.apply(new Update(ns2app, app2Record.getMetadata())); assertResults(mds, SearchRequest.of("v1").build(), app1Record, app2Record); assertResults(mds, SearchRequest.of("v2").build(), app1Record); assertResults(mds, SearchRequest.of("*").build(), app1Record, app2Record); // clean up mds.batch(ImmutableList.of(new Drop(ns1app), new Drop(ns2app))); }
private Metadata filterBy(Metadata metadata, ImmutableSet<ScopedNameOfKind> selection) { //noinspection ConstantConditions return new Metadata( Sets.filter(metadata.getTags(), tag -> selection.contains(new ScopedNameOfKind(MetadataKind.TAG, tag.getScope(), tag.getName()))), Maps.filterKeys(metadata.getProperties(), key -> selection.contains(new ScopedNameOfKind(PROPERTY, key.getScope(), key.getName())))); }
@Override public MetadataRecord getMetadata(MetadataScope scope, MetadataEntity metadataEntity) { Metadata metadata = performRead(new Read(metadataEntity, scope)); return new MetadataRecord(metadataEntity, scope, metadata.getProperties(scope), metadata.getTags(scope)); }
@After public void ensureCleanUp() throws IOException { assertEmpty(getMetadataStorage(), SearchRequest.of("*").build()); }
private void verifyMetadata(MetadataStorage mds, MetadataEntity entity, Metadata metadata) throws IOException { // verify entire metadata Assert.assertEquals(metadata, mds.read(new Read(entity))); // filter by scope verifyFilteredMetadata(mds, entity, metadata, SYSTEM, null); verifyFilteredMetadata(mds, entity, metadata, USER, null); // filter by kind verifyFilteredMetadata(mds, entity, metadata, null, PROPERTY); verifyFilteredMetadata(mds, entity, metadata, null, MetadataKind.TAG); // filter by kind and scope verifyFilteredMetadata(mds, entity, metadata, SYSTEM, PROPERTY); verifyFilteredMetadata(mds, entity, metadata, SYSTEM, MetadataKind.TAG); verifyFilteredMetadata(mds, entity, metadata, USER, PROPERTY); verifyFilteredMetadata(mds, entity, metadata, USER, MetadataKind.TAG); }
@Override public void addProperties(MetadataScope scope, MetadataEntity entity, Map<String, String> properties) { applyMutation(new MetadataMutation.Update(entity, new Metadata(scope, properties))); }
@Override public Map<String, String> getProperties(MetadataScope scope, MetadataEntity entity) { Metadata metadata = performRead(new Read(entity, scope, MetadataKind.PROPERTY)); return metadata.getProperties(scope); }
protected static SearchResponse assertInOrder(MetadataStorage mds, SearchRequest request, MetadataRecord... expectedResults) throws IOException { SearchResponse response = mds.search(request); Assert.assertEquals(ImmutableList.copyOf(expectedResults), response.getResults()); return response; }
@Override public String toString() { return "Create{" + "entity=" + getEntity() + ", metadata=" + getMetadata() + ", directives=" + getDirectives() + '}'; } }
@Override public String toString() { return "Update{" + "entity=" + getEntity() + ", updates=" + getUpdates() + '}'; } }
public static Builder of(String query) { return new Builder(query); }
@Override public void addTags(MetadataScope scope, MetadataEntity entity, Set<String> tagsToAdd) { applyMutation(new MetadataMutation.Update(entity, new Metadata(scope, tagsToAdd))); }