/** * Get nested features from a feature chaining attribute mapping * * @param root Root feature being evaluated * @param nestedMapping Attribute mapping for nested features * @param fMapping The root feature type mapping * @return list of nested features * @throws IOException */ private List<Feature> getNestedFeatures( Feature root, NestedAttributeMapping nestedMapping, FeatureTypeMapping fMapping) throws IOException { Object fTypeName = nestedMapping.getNestedFeatureType(root); if (fTypeName == null || !(fTypeName instanceof Name)) { return null; } boolean hasSimpleFeatures = AppSchemaDataAccessRegistry.hasName((Name) fTypeName); // get foreign key Object val = getValue(nestedMapping.getSourceExpression(), root); if (val == null) { return null; } if (hasSimpleFeatures) { // normal app-schema mapping return nestedMapping.getInputFeatures(val, fMapping); } else { // app-schema with a complex feature source return nestedMapping.getFeatures(val, null, root); } }
@Override protected void setUpTestData(SystemTestData testData) throws Exception { AppSchemaDataAccessRegistry.getAppSchemaProperties().setProperty("app-schema.joining", "false"); super.setUpTestData(testData); }