protected TypeFieldDescr buildInheritedFieldDescrFromDefinition( FactField fld, TypeDeclarationDescr typeDescr ) { PatternDescr fldType = new PatternDescr(); TypeFieldDescr inheritedFldDescr = new TypeFieldDescr(); inheritedFldDescr.setFieldName( fld.getName() ); fldType.setObjectType( ( (FieldDefinition) fld ).getFieldAccessor().getExtractToClassName() ); inheritedFldDescr.setPattern( fldType ); if ( fld.isKey() ) { inheritedFldDescr.getAnnotations().put( TypeDeclaration.ATTR_KEY, new AnnotationDescr( TypeDeclaration.ATTR_KEY ) ); } inheritedFldDescr.setIndex( ( (FieldDefinition) fld ).getDeclIndex() ); inheritedFldDescr.setInherited( true ); String initExprOverride = ( (FieldDefinition) fld ).getInitExpr(); int overrideCount = 0; // only @aliasing local fields may override defaults. for ( TypeFieldDescr localField : typeDescr.getFields().values() ) { AnnotationDescr ann = localField.getAnnotation( "Alias" ); if ( ann != null && fld.getName().equals( ann.getSingleValue().replaceAll( "\"", "" ) ) && localField.getInitExpr() != null ) { overrideCount++; initExprOverride = localField.getInitExpr(); } } if ( overrideCount > 1 ) { // however, only one is allowed initExprOverride = null; } inheritedFldDescr.setInitExpr( initExprOverride ); return inheritedFldDescr; }
return false; } else { String initVal = fieldMap.get( fieldName ).getInitExpr(); if (typeDescr.getFields().get( fieldName ).getInitExpr() == null) { typeDescr.getFields().get( fieldName ).setInitExpr( initVal );
fieldDef.setInitExpr( field.getInitExpr() );