protected FieldDescrBuilderImpl( T parent, String name ) { super( parent, new TypeFieldDescr( name ) ); }
public FieldDescrBuilder type( String type ) { descr.setPattern( new PatternDescr( type ) ); return this; }
public FieldDescrBuilder processAnnotations() { if ( descr.getAnnotations().containsKey( TypeDeclaration.ATTR_FIELD_POSITION ) ) { int pos = Integer.valueOf(descr.getAnnotation( TypeDeclaration.ATTR_FIELD_POSITION ).getSingleValue()); descr.setIndex(pos); } return this; }
public void addField( TypeFieldDescr field ) { if ( this.fields == null ) { this.fields = new LinkedHashMap<String, TypeFieldDescr>(); } field.setResource(getResource()); this.fields.put( field.getFieldName(), field ); }
fieldMap.put( inheritedFlDescr.getFieldName(), inheritedFlDescr ); TypeFieldDescr inheritedFlDescr = new TypeFieldDescr( name, new PatternDescr( inspector.getFieldTypes().get( name ).getName() ) ); inheritedFlDescr.setInherited( !Modifier.isAbstract( inspector.getGetterMethods().get( name ).getModifiers() ) ); if (!fieldMap.containsKey( inheritedFlDescr.getFieldName() )) fieldMap.put( inheritedFlDescr.getFieldName(), inheritedFlDescr ); String type1 = fieldMap.get( fieldName ).getPattern().getObjectType(); String type2 = typeDescr.getFields().get( fieldName ).getPattern().getObjectType(); if (type2.lastIndexOf( "." ) < 0) { try { fieldMap.get( fieldName ).getPattern().setObjectType( type1 ); typeDescr.getFields().get( fieldName ).getPattern().setObjectType( type2 ); } catch ( ClassNotFoundException cnfe ) { return false; } else { String initVal = fieldMap.get( fieldName ).getInitExpr(); if (typeDescr.getFields().get( fieldName ).getInitExpr() == null) { typeDescr.getFields().get( fieldName ).setInitExpr( initVal ); typeDescr.getFields().get( fieldName ).setInherited( fieldMap.get( fieldName ).isInherited() );
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; }
int pos = field.getIndex(); if ( pos >= 0 ) { occupiedPositions.set( pos ); String typeName = field.getPattern().getObjectType(); String fullFieldType = generatedTypes.contains(typeName) ? typeName : pkgRegistry.getTypeResolver().resolveType(typeName).getName(); FieldDefinition fieldDef = new FieldDefinition( field.getFieldName(), fullFieldType ); boolean isKey = field.getAnnotation( TypeDeclaration.ATTR_KEY ) != null; fieldDef.setKey( isKey ); fieldDef.setDeclIndex( field.getIndex() ); if ( field.getIndex() < 0 ) { int freePos = occupiedPositions.nextClearBit( 0 ); if ( freePos < maxDeclaredPos ) { fieldDef.setPriority( field.getIndex() * 256 + curr++ ); fieldDef.setInherited( field.isInherited() ); fieldDef.setInitExpr( field.getInitExpr() ); for (String annotationName : field.getAnnotationNames()) { Class annotation = resolveAnnotation( annotationName, pkgRegistry.getTypeResolver() ); try { AnnotationDefinition annotationDefinition = AnnotationDefinition.build( annotation,
private TypeDeclarationDescr makePseudoTypeDeclarationDescrFromSuperClassType(String className, List< ? > jars) { Class< ? > clazz = loadClass( className, jars ); if ( clazz != null ) { Method[] methods = clazz.getMethods(); Map<String, MethodSignature> methodSignatures = getMethodSignatures( className, methods ); TypeDeclarationDescr td = new TypeDeclarationDescr(); td.setTypeName( className ); for ( Map.Entry<String, MethodSignature> e : methodSignatures.entrySet() ) { if ( e.getValue().accessorAndMutator == FieldAccessorsAndMutators.BOTH ) { String fieldShortName = getShortNameOfClass( e.getKey() ); TypeFieldDescr fieldDescr = new TypeFieldDescr( fieldShortName ); PatternDescr patternDescr = new PatternDescr( e.getValue().returnType.getName() ); fieldDescr.setPattern( patternDescr ); td.addField( fieldDescr ); } } return td; } return null; }
private void fillFieldTypes( AbstractClassTypeDeclarationDescr typeDescr, PackageDescr packageDescr ) { for (TypeFieldDescr field : typeDescr.getFields().values()) { String declaredType = field.getPattern().getObjectType(); if (declaredType != null) { int separator = declaredType.lastIndexOf( "." ); boolean qualified = separator > 0; // check if a simple name corresponds to a f.q.n. if (!qualified) { declaredType = resolveType( declaredType, packageDescr, this.pkgRegistryMap.get( typeDescr.getNamespace() ) ); field.getPattern().setObjectType( declaredType ); } } } }
public String toString() { return "TypeField[ " + this.getFieldName() + " : " + this.pattern + " = " + this.initExpr + " ]"; }
public AnnotationDescrBuilder<FieldDescrBuilder<T>> newAnnotation( String name ) { AnnotationDescrBuilder<FieldDescrBuilder<T>> annotation = new AnnotationDescrBuilderImpl<FieldDescrBuilder<T>>( this, name ); descr.addAnnotation( annotation.getDescr() ); return annotation; }
private TypeDeclarationDescr makePseudoTypeDeclarationDescrFromSuperClassType(String className, List< ? > jars) { Class< ? > clazz = loadClass( className, jars ); if ( clazz != null ) { Method[] methods = clazz.getMethods(); Map<String, MethodSignature> methodSignatures = getMethodSignatures( className, methods ); TypeDeclarationDescr td = new TypeDeclarationDescr(); td.setTypeName( className ); for ( Map.Entry<String, MethodSignature> e : methodSignatures.entrySet() ) { if ( e.getValue().accessorAndMutator == FieldAccessorsAndMutators.BOTH ) { String fieldShortName = getShortNameOfClass( e.getKey() ); TypeFieldDescr fieldDescr = new TypeFieldDescr( fieldShortName ); PatternDescr patternDescr = new PatternDescr( e.getValue().returnType.getName() ); fieldDescr.setPattern( patternDescr ); td.addField( fieldDescr ); } } return td; } return null; }
public int compareTo(TypeDeclarationDescr descr) { if ( ! this.getSuperTypes().isEmpty() && ! descr.getSuperTypes().isEmpty() ) { for ( QualifiedName q : descr.getSuperTypes() ) { if ( this.getSuperTypes().contains( q ) ) { return -1; } } for ( QualifiedName q : this.getSuperTypes() ) { if ( descr.getSuperTypes().contains( q ) ) { return +1; } } } for ( TypeFieldDescr field : this.getFields().values() ) { if ( descr.getTypeName().equals( field.getPattern().getObjectType() ) ) { return -1; } } for ( TypeFieldDescr field : descr.getFields().values() ) { if ( this.getTypeName().equals( field.getPattern().getObjectType() ) ) { return +1; } } return 0; } }
QualifiedName typeName = new QualifiedName( field.getPattern().getObjectType() ); if ( ! hasCircularDependency( name, typeName, taxonomy ) ) { supers.add( typeName );
accessorsAndMutators.put( factField, FieldAccessorsAndMutators.BOTH ); String fieldClass = f.getValue().getPattern().getObjectType();
accessorsAndMutators.put( factField, FieldAccessorsAndMutators.BOTH ); String fieldClass = f.getValue().getPattern().getObjectType();
this.results.add(new TypeDeclarationError(typeDescr, "New declaration of "+typeDescr.getType().getFullName() + " redeclared field " + existingFieldName + " : \n" + "existing : " + fldType + " vs declared : " + declaredField.getPattern().getObjectType() ) ); } else { fieldCount++;