private void validateTypeCast() { for (MetaClass castType : typeCasts) { if (!metaClass.isAssignableFrom(castType)) { throw new QueryParseException(QueryErrCodeEnum.TYPE_CAST_NOT_SUBMETA, MessageFormat.format( "Type cast {0} not sub-metaclass of {1}!", castType.getName(), metaClass.getName())); } } }
@Override public List<MetaClass> getMetaClasses(MetadataContext context) { List<MetaClass> allMetas = delegate.getMetaClasses(context); Map<String, MetaClass> metaMap = new HashMap<String, MetaClass>(); for (MetaClass mc : allMetas) { metaMap.put(mc.getName(), mc); } metaMap.putAll(nameCache); return new ArrayList<MetaClass>(metaMap.values()); }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("QueryNode[metaclass=").append(metaClass.getName()); if (metaReference != null) { sb.append(", metareference=").append(metaReference.getName()); } sb.append("]"); return sb.toString(); }
public BsonEntity(MetaClass metaClass){ super(metaClass); bsonObject = new BasicDBObject(); bsonObject.put(InternalFieldEnum.TYPE.getDbName(), metaClass.getName()); }
public NewBsonEntity(MetaClass metaClass) { super(metaClass); bsonObject = new BasicDBObject(); bsonObject.put(InternalFieldEnum.TYPE.getDbName(), metaClass.getName()); }
private MetaField findMetaField(MetaClass metadata, String fieldName) { MetaField metaField = metadata.getFieldByName(fieldName); if (metaField == null) { throw new QueryParseException(QueryErrCodeEnum.METAFIELD_NOT_FOUND, "Can't find field {" + fieldName + "} in metadata " + metadata.getName()); } return metaField; }
private void checkMetaClassVersion(MetaClass metaClass) { MetaClass existingMeta = getMetaClass(metaClass.getName()); if (existingMeta == null) { throw new MetaClassNotExistsException(metaClass.getRepository(), metaClass.getName()); } if (metaClass.getVersion() > 0 && metaClass.getVersion() != existingMeta.getVersion()) { throw new MetaDataException(MetaErrCodeEnum.VERSION_CONFLICTED, "MetaClass version conflict: " + metaClass.getName()); } metaClass.setVersion(existingMeta.getVersion()); }
public void validate(MetaClass meta) { checkMetaClassName(meta.getName()); checkNotInheritedFromEmbededClass(meta, Collections.<String, MetaClass> emptyMap()); validateFields(meta, Collections.<String, MetaClass> emptyMap(), true); validateIndex(meta, Collections.<String, MetaClass> emptyMap(), meta.getGraph()); for (MetaRelationship rel : meta.getFromReference()) { rel.validate(true, rel.getSourceMetaClass(), Collections.<String, MetaClass> emptyMap()); } }
private static void checkIndexesLoaded(IMetadataService metaService, MetaClass metaClass) { if (metaClass.getName().equals(HistoryMetaClass.NAME) || metaClass.getName().equals(BranchMetaClass.TYPE_NAME)) { return; } Map<String, DBObject> indexObjects = getCollectionIndexMap(metaService, metaClass); for (IndexInfo ii : metaClass.getIndexes()) { Assert.assertTrue(" index " + ii.getIndexName() + " not found! ", indexObjects.containsKey(ii.getIndexName())); } }
private void addToRelNode(ObjectNode relNode, MetaClass meta) { if (relNode != null) { JsonNode node = relNode.get("refDataType"); if (!(node instanceof ObjectNode)) { node = JsonNodeFactory.instance.objectNode(); relNode.put("refDataType", node); } ((ObjectNode) node).put(meta.getName(), currentNode); } }
private static void checkIndexesLoaded(IMetadataService metaService, MetaClass metaClass) { if (metaClass.getName().equals(HistoryMetaClass.NAME) || metaClass.getName().equals(BranchMetaClass.TYPE_NAME)) { return; } Map<String, DBObject> indexObjects = getCollectionIndexMap(metaService, metaClass); for (IndexInfo ii : metaClass.getIndexes()) { Assert.assertTrue(indexObjects.containsKey(ii.getIndexName())); } }
public void checkNoInnerInMeta(MetaClass meta) { for (MetaRelationship ref : meta.getToReference()) { if (ref.getRelationType() == RelationTypeEnum.Inner) { throw new CmsEntMgrException(EntMgrErrCodeEnum.META_CONTAINS_INNER_RELATIONSHIP, MessageFormat.format( "Meta Class {0} contains inner relationship {1}", meta.getName(), ref.getName())); } else if (ref.getRelationType() == RelationTypeEnum.Embedded) { checkNoInnerInMeta(ref.getRefMetaClass()); } } }
@Test public void testMetaClassCreation() { MetaClass metaClass = createMetaClass(); IMetadataService ms = repositoryService.getRepository(repoName).getMetadataService(); MetaClass nm = ms.getMetaClass(metaClass.getName()); Assert.assertNull(nm); ms.createMetaClass(metaClass, new MetadataContext()); nm = ms.getMetaClass(metaClass.getName()); Assert.assertEquals(metaClass.getName(), nm.getName()); }
private QueryResult populateQueryResult() { QueryResult queryResult = new QueryResult(); plan.setQueryResult(queryResult); Map<String, ParseQueryNode> nodesMap = plan.getNodesMap(); AbstractAction rootAction = plan.getAggAction() != null ? plan.getAggAction() : plan.getRootAction(); for (ActionResult actionResult : rootAction.getActionResults()) { SearchResult searchResult = actionResult.searchResult; ParseQueryNode node = nodesMap.get(searchResult.getMetaClass().getName()); visitSearchResult(searchResult, node, queryResult); } return queryResult; }
@Test public void testCostAnalysis01() throws Exception { QueryOptimizer optimizer = new QueryOptimizer(raptorContext); String query = "Environment.applications[@label = \"srp-app\"].services[@name = \"srp-app:Raptor-00001\"].runsOn"; QueryExecPlan plan = parseAndPlan(query); optimizer.optimize(plan); SearchAction action = (SearchAction) plan.getRootAction(); action.getSearchQuery().getMetadata().getName().equals("ServiceInstance"); }
@Test public void testCostAnalysis03() throws Exception { QueryOptimizer optimizer = new QueryOptimizer(raptorContext); String query = "Environment.applications[@label = \"srp-app\"].services[@name = \"srp-app:Raptor-00001\" or @activeManifestDiff = true].runsOn"; QueryExecPlan plan = parseAndPlan(query); optimizer.optimize(plan); SearchAction action = (SearchAction) plan.getRootAction();; action.getSearchQuery().getMetadata().getName().equals("ApplicationService"); }
@Test public void testCostAnalysis04() throws Exception { QueryOptimizer optimizer = new QueryOptimizer(raptorContext); String query = "Environment.applications[@label != \"srp-app\"].services[@name != \"srp-app:Raptor-00001\"].runsOn"; QueryExecPlan plan = parseAndPlan(query); optimizer.optimize(plan); SearchAction action = (SearchAction) plan.getRootAction();; action.getSearchQuery().getMetadata().getName().equals("ApplicationService"); }
@Test public void testCostAnalysis05() throws Exception { QueryOptimizer optimizer = new QueryOptimizer(raptorContext); String query = "Environment.applications[@label != \"srp-app\"].services[@name in (\"srp-app:Raptor-00001\")].runsOn"; QueryExecPlan plan = parseAndPlan(query); optimizer.optimize(plan); SearchAction action = (SearchAction) plan.getRootAction();; action.getSearchQuery().getMetadata().getName().equals("ServiceInstance"); }
@Test public void testCostAnalysis02() throws Exception { QueryOptimizer optimizer = new QueryOptimizer(raptorContext); String query = "Environment.applications[@label = \"srp-app\"].services[@name = \"srp-app:Raptor-00001\" and @activeManifestDiff = true].runsOn"; QueryExecPlan plan = parseAndPlan(query); optimizer.optimize(plan); SearchAction action = (SearchAction) plan.getRootAction(); action.getSearchQuery().getMetadata().getName().equals("ServiceInstance"); }
private void validate(MetaClass meta, Map<String, MetaClass> metas, MetaClassGraph tempGraph) { String name = meta.getName(); checkMetaClassName(name); checkNotInheritedFromEmbededClass(meta, metas); CheckConditions.checkCondition(!(meta.isEmbed() && meta.isInner()), new IllegalMetaClassException("meta class " + name + " cannot be embed and inner")); CheckConditions.checkCondition(meta.getId() == null, new IllegalMetaClassException("id should not be set for creation and update")); CheckConditions.checkCondition(meta.getAncestors() == null, new IllegalMetaClassException("ancestors should not be set for creation and update")); validateFields(meta, metas, false); validateIndex(meta, metas, tempGraph); }