private void setupParentVersion(MetaClass metaClass) { // update the parentVersion if existing. String parent = metaClass.getParent(); if (parent != null) { MetaClass parentMeta = metaClass.getParentMetaClass(); if (parentMeta != null) { metaClass.setParentVersion(parentMeta.getVersion()); } else { metaClass.setParentVersion(0); } } }
public void setupAncestors(MetaClass meta, IMetadataService metadataService, Map<String, MetaClass> metas) { if (meta.getParent() == null) { return; } ArrayList<String> ancestorList = new ArrayList<String>(); String p = meta.getParent(); while(!StringUtils.isNullOrEmpty(p)) { ancestorList.add(p); MetaClass m = metadataService.getMetaClass(p); if (m == null) { m = metas.get(p); } CheckConditions.checkCondition(m != null, new IllegalMetaClassException("can not get metaclass: " + p + " while setup ancestors for " + meta.getName())); p = m.getParent(); CheckConditions.checkCondition(p == null || !p.equals(meta.getName()), new IllegalMetaClassException("circle found for metaclass inherent")); } meta.setAncestors(ancestorList); // this.ancestors = ancestorList; }
private void checkNotInheritedFromEmbededClass(MetaClass meta, Map<String, MetaClass> metas) { String parentClassName = meta.getParent(); if (!org.apache.commons.lang.StringUtils.isEmpty(parentClassName)) { MetaClass parentClass = metas.get(parentClassName); if (parentClass == null) { parentClass = meta.getMetadataService().getMetaClass(parentClassName); } if (parentClass != null && parentClass.isEmbed()) { throw new IllegalMetaClassException(String.format("meta class %s should not be inherited from an embeded class %s", meta.getName(), parentClass.getName())); } } }
pName = ancestor.getParent();
public boolean isAssignableFrom(MetaClass meta, MetaClass c) { if (c == null) { return false; } String cName = c.getName(); if (cName == null) { return false; } if (meta.equals(c)) { return true; } if (meta.getRepository() == null || !meta.getRepository().equals(c.getRepository())) { return false; } String cParent = c.getParent(); if (!StringUtils.isNullOrEmpty(cParent)) { List<String> cAncestors = c.getAncestors(); CheckConditions.checkNotNull(cAncestors, new MetaDataException(MetaErrCodeEnum.SHOULD_SETUP_ANCESTORS, "need to setup ancestors before use this method isAssignableFrom")); return cAncestors.contains(meta.getName()); } else { return false; } }
for (int i = 0; i < descendants.size(); i++) { MetaClass desc = descendants.get(i); String name = desc.getParent(); Integer newVersion = metaVersionMap.get(name); if (newVersion != null) {
public void validateForCreation(MetaClass meta, Map<String, MetaClass> metas, MetaClassGraph tempGraph) { String name = meta.getName(); String pluralName = meta.getpluralName(); String parent = meta.getParent(); IMetadataService metadataService = meta.getMetadataService(); MetaOption options = meta.getOptions();
String parent = meta.getParent(); IMetadataService metadataService = meta.getMetadataService(); MetaOption options = meta.getOptions(); if (org.apache.commons.lang.StringUtils.isEmpty(existingMetadata.getParent()) && !StringUtils.isNullOrEmpty(parent)) { Collection<String> difference = new HashSet<String>(); difference.addAll(fieldNames);
String parent = metaClass.getParent(); if (!StringUtils.isNullOrEmpty(parent)) { MetaClass parentMeta = getMetaClass(parent);
@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 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 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()); }