protected String getIdAttributePath(MetaPropertyPath propertyPath, String storeName) { String idAttribute = metadataTools.getCrossDataStoreReferenceIdProperty(storeName, propertyPath.getMetaProperty()); if (idAttribute != null) { List<String> parts = Stream.of(propertyPath.getMetaProperties()) .map(MetaProperty::getName) .collect(Collectors.toList()); parts.set(parts.size() - 1, idAttribute); return String.join(".", parts); } return null; }
protected boolean isPropertyAllowed(MetaClass metaClass, MetaProperty property) { return security.isEntityAttrPermitted(metaClass, property.getName(), EntityAttrAccess.VIEW) && !metadataTools.isSystemLevel(property) // exclude system level attributes && (metadataTools.isPersistent(property) // exclude transient properties || (metadataTools.getCrossDataStoreReferenceIdProperty(storeName, property) != null)) && !defaultExcludedProps.contains(property.getName()) && !(byte[].class.equals(property.getJavaType())) && !property.getRange().getCardinality().isMany(); // exclude ToMany }
if (propertyPath != null) { MetaProperty metaProperty = propertyPath.getMetaProperty(); String refIdProperty = metadataTools.getCrossDataStoreReferenceIdProperty(thisStore, propertyPath.getMetaProperty()); if (refIdProperty != null) { useCrossDataStoreRefId = true;
&& (metadataTools.getCrossDataStoreReferenceIdProperty(storeName, metaProperty) == null)) { MetaClass childMetaClass = metaProperty.getRange().asClass(); for (MetaProperty property : childMetaClass.getProperties()) {