public List<MetaClass> batchUpsert(CMSPriority p, String repoName, List<MetaClass> metas, MetadataContext context) { String[] metaclassNames = new String[metas.size()]; for (int i = 0; i < metas.size(); i++) { metaclassNames[i] = metas.get(i).getName(); } logger.info("cms batchUpsert: {}, {}, {}", new Object[] { repoName, metaclassNames, context.getSourceIp() }); checkServerState(p, true); context.setDbConfig(dbConfig); Repository repo = repositoryService.getRepository(repoName); List<MetaClass> metaClasses = repo.getMetadataService().batchUpsert(metas, context); // ensure index for (MetaClass clz : metaClasses) { updateMetadataIndexOnBranch(clz.getName(), context, repo); } return metaClasses; }
metaContext.setSourceIp("127.0.0.1"); metaContext.setSubject("tester"); repository.getMetadataService().batchUpsert(value, metaContext);
@Test (expected=IllegalMetaClassException.class) public void testInherit_referenceCircle() { IMetadataService ms = repositoryService.getRepository(repoName).getMetadataService(); MetaClass mp41 = createMetaClass(); mp41.setName("mp41"); mp41.setParent("mp42"); MetaClass mp42 = createMetaClass(); mp42.setName("mp42"); mp42.setParent("mp41"); ms.batchUpsert(Arrays.asList(mp42, mp42), metaContext); }
List<MetaClass> metas = new ArrayList<MetaClass>(1); metas.add(updateMeta); metaService.batchUpsert(metas, metaContext); updateMeta.setVersion(2); try { metaService.batchUpsert(metas, metaContext); Assert.fail(); } catch (MetaDataException e) { metaService.batchUpsert(metas, metaContext);
child.setParent(parent.getName()); ms.batchUpsert(Arrays.asList(parent, child), metaContext); child.addField(attr2); ms.batchUpsert(Arrays.asList(child), metaContext);
context.setSourceIp("127.0.0.1"); context.setSubject("tester"); ms.batchUpsert(Arrays.asList(b, a, da), context);
mp91.setName("mp91"); ms.batchUpsert(Arrays.asList(mp91), metaContext); ms.batchUpsert(Arrays.asList(mp91, mp92), metaContext); ms.batchUpsert(Arrays.asList(mp92), metaContext);
@Test(expected=IllegalMetaClassException.class) public void testBatchUpsert_exception1() { IMetadataService ms = repositoryService.getRepository(repoName).getMetadataService(); MetaClass be1 = createMetaClass(); be1.setName("be1"); MetaRelationship r1 = new MetaRelationship(); r1.setRelationType(RelationTypeEnum.Reference); r1.setName("r1"); r1.setRefDataType("be2"); be1.addField(r1); MetaClass be2 = createMetaClass(); be2.setName("be2"); MetaRelationship r2 = new MetaRelationship(); r2.setRelationType(RelationTypeEnum.Reference); r2.setName("r2"); r2.setRefDataType("be3"); be2.addField(r2); ms.batchUpsert(Arrays.asList(be1, be2), metaContext); }
@Test public void testInherit_updateMetaClassSetParentToNull() { IMetadataService ms = repositoryService.getRepository(repoName).getMetadataService(); MetaClass mp51 = createMetaClass(); mp51.setName("mp51"); MetaClass mp52 = createMetaClass(); mp52.setName("mp52"); mp52.setParent("mp51"); ms.batchUpsert(Arrays.asList(mp51, mp52), metaContext); mp52 = createMetaClass(); mp52.setName("mp52"); MetaAttribute a = new MetaAttribute(); a.setName("ax"); mp52.setParent(""); ms.updateMetaClass(mp52, metaContext); MetaClass getChild = ms.getMetaClass("mp52"); Assert.assertEquals("", getChild.getParent()); }
@Test (expected=MetaFieldExistsException.class) public void testInherit_appendFieldToChildConflict() { IMetadataService ms = repositoryService.getRepository(repoName).getMetadataService(); MetaClass mp21 = createMetaClass(); mp21.setName("mp21"); MetaAttribute a1 = new MetaAttribute(); a1.setName("a1"); mp21.addField(a1); MetaClass mp22 = createMetaClass(); mp22.setName("mp22"); mp22.setParent("mp21"); ms.batchUpsert(Arrays.asList(mp21, mp22), metaContext); mp22 = createMetaClass(); mp22.setName("mp22"); mp22.setParent("mp21"); MetaAttribute a11 = new MetaAttribute(); a11.setName("a1"); mp22.addField(a11); ms.updateMetaClass(mp22, metaContext); }
@Test public void testInherit_updateParent() { IMetadataService ms = repositoryService.getRepository(repoName).getMetadataService(); MetaClass mp61 = createMetaClass(); mp61.setName("mp61"); MetaClass mp62 = createMetaClass(); mp62.setName("mp62"); MetaClass mp63 = createMetaClass(); mp63.setName("mp63"); mp63.setParent("mp61"); ms.batchUpsert(Arrays.asList(mp61, mp62, mp63), metaContext); mp63 = createMetaClass(); mp63.setName("mp63"); mp63.setParent("mp62"); mp63.setDescription("new description updated"); mp63.setAllowFullTableScan(true); ms.updateMetaClass(mp63, metaContext); MetaClass getMC = ms.getMetaClass(mp63.getName()); Assert.assertEquals("mp62", getMC.getParent()); Assert.assertEquals(true, getMC.isAllowFullTableScan()); Assert.assertEquals("new description updated", getMC.getDescription()); List<String> ancestors = getMC.getAncestors(); Assert.assertTrue(ancestors.contains(mp62.getName())); Assert.assertTrue(!ancestors.contains(mp61.getName())); }
@Test (expected=MetaFieldExistsException.class) public void testInherit_appendFieldToParentConflict() { IMetadataService ms = repositoryService.getRepository(repoName).getMetadataService(); MetaClass mp31 = createMetaClass(); mp31.setName("mp31"); MetaAttribute a1 = new MetaAttribute(); a1.setName("a1"); mp31.addField(a1); MetaClass mp32 = createMetaClass(); mp32.setName("mp32"); MetaAttribute a2 = new MetaAttribute(); a2.setName("a2"); mp32.addField(a2); mp32.setParent("mp31"); ms.batchUpsert(Arrays.asList(mp31, mp32), metaContext); mp31 = createMetaClass(); mp31.setName("mp31"); MetaAttribute a11 = new MetaAttribute(); a11.setName("a2"); mp31.addField(a11); ms.updateMetaClass(mp31, metaContext); }
metaService.batchUpsert(metas, metaContext); metaService.batchUpsert(metas, metaContext); metaService.batchUpsert(metas, metaContext);
@Test public void testInherit_updateParent2() { IMetadataService ms = repositoryService.getRepository(repoName).getMetadataService(); MetaClass mp61 = createMetaClass(); mp61.setName("mp61"); MetaClass mp62 = createMetaClass(); mp62.setName("mp62"); mp62.setParent("mp61"); MetaClass mp63 = createMetaClass(); mp63.setName("mp63"); mp63.setParent("mp62"); ms.batchUpsert(Arrays.asList(mp61, mp62, mp63), metaContext); MetaClass updateMC = createMetaClass(); updateMC.setName("mp61"); updateMC.setParent("mp63"); updateMC.setDescription("new description updated"); try { ms.updateMetaClass(updateMC, metaContext); Assert.fail(); } catch (IllegalMetaClassException e) { //expected } //assert not changed MetaClass getMC = ms.getMetaClass(updateMC.getName()); Assert.assertEquals(null, getMC.getParent()); Assert.assertEquals(null, getMC.getDescription()); }
b2.addField(r2); ms.batchUpsert(Arrays.asList(b1, b2), metaContext); b3.addField(r4); ms.batchUpsert(Arrays.asList(b1, updateB2, b3), metaContext);
metas.add(updateInnerMeta); try { metaService.batchUpsert(metas, metaContext); Assert.fail(); } catch (IllegalMetaClassException e) {
mp81.setName("mp81"); ms.batchUpsert(Arrays.asList(mp81), metaContext); mp83.setParent("mp82"); ms.batchUpsert(Arrays.asList(mp82, mp83), metaContext); mp87.setParent("mp81"); ms.batchUpsert(Arrays.asList(mp84, mp85, mp86, mp87), metaContext); mp84.addField(metaAttr4); ms.batchUpsert(Arrays.asList(mp84, mp81), metaContext);