private PropertyNameMap<T> convertToMap(List<IPropertyInfo> features) { PropertyNameMap<T> ret = new PropertyNameMap(); for (IPropertyInfo feature : features) { ret.put(convertCharSequenceToCorrectSensitivity(feature.getName()), feature); } ret.freeze(); return ret; }
protected void mergeProperty(PropertyNameMap<T> props, IPropertyInfo propertyInfo, boolean replace) { boolean prependPrefix = _superPropertyPrefix != null && ! propertyInfo.getOwnersType().equals( _typeInfo.getOwnersType() ); T cs = convertCharSequenceToCorrectSensitivity( prependPrefix ? ( _superPropertyPrefix + propertyInfo.getName() ) : propertyInfo.getName() ); if (replace || !props.containsKey(cs)) { if ( prependPrefix ) { props.put( cs, new PropertyInfoDelegate( propertyInfo.getContainer(), propertyInfo, cs.toString() ) ); } else { props.put(cs, propertyInfo); } } }
public List<IPropertyInfo> getProperties( IRelativeTypeInfo.Accessibility accessibility ) { maybeInitProperties(); PropertyNameMap<T>[] arr = _properties.get( TypeSystem.getCurrentModule() ); if( arr == null ) { return Collections.emptyList(); } PropertyNameMap<T> props = arr[accessibility.ordinal()]; return (List<IPropertyInfo>) (props == null ? Collections.emptyList() : props.values()); }
PropertyNameMap<T>[] properties = new PropertyNameMap[IRelativeTypeInfo.Accessibility_Size]; PropertyNameMap privateProps = new PropertyNameMap(); for (IType type : _typeInfo.getOwnersType().getInterfaces()) { mergeProperties(privateProps, convertType(type), false); privateProps.freeze(); properties[IRelativeTypeInfo.Accessibility.PROTECTED.ordinal()] = convertToMap(filterFeatures(privateProps.values(), IRelativeTypeInfo.Accessibility.PROTECTED)); if (properties[IRelativeTypeInfo.Accessibility.PROTECTED.ordinal()].size() == privateProps.size()) { properties[IRelativeTypeInfo.Accessibility.PROTECTED.ordinal()] = privateProps; properties[IRelativeTypeInfo.Accessibility.INTERNAL.ordinal()] = convertToMap(filterFeatures(privateProps.values(), IRelativeTypeInfo.Accessibility.INTERNAL)); if (properties[IRelativeTypeInfo.Accessibility.INTERNAL.ordinal()].size() == properties[IRelativeTypeInfo.Accessibility.PROTECTED.ordinal()].size()) { properties[IRelativeTypeInfo.Accessibility.INTERNAL.ordinal()] = properties[IRelativeTypeInfo.Accessibility.PROTECTED.ordinal()]; properties[IRelativeTypeInfo.Accessibility.PUBLIC.ordinal()] = convertToMap(filterFeatures(privateProps.values(), IRelativeTypeInfo.Accessibility.PUBLIC)); if (properties[IRelativeTypeInfo.Accessibility.PUBLIC.ordinal()].size() == properties[IRelativeTypeInfo.Accessibility.INTERNAL.ordinal()].size()) { properties[IRelativeTypeInfo.Accessibility.PUBLIC.ordinal()] = properties[IRelativeTypeInfo.Accessibility.INTERNAL.ordinal()]; properties[IRelativeTypeInfo.Accessibility.NONE.ordinal()] = new PropertyNameMap();
public IPropertyInfo getProperty( IRelativeTypeInfo.Accessibility accessibility, CharSequence propName ) { maybeInitProperties(); PropertyNameMap<T>[] arr = _properties.get( TypeSystem.getCurrentModule() ); if( arr == null ) { return null; } PropertyNameMap<T> accessMap = arr[accessibility.ordinal()]; return accessMap == null ? null : accessMap.get(convertCharSequenceToCorrectSensitivity(propName)); }
protected void mergeProperty(PropertyNameMap<T> props, IPropertyInfo propertyInfo, boolean replace) { boolean prependPrefix = _superPropertyPrefix != null && ! propertyInfo.getOwnersType().equals( _typeInfo.getOwnersType() ); T cs = convertCharSequenceToCorrectSensitivity( prependPrefix ? ( _superPropertyPrefix + propertyInfo.getName() ) : propertyInfo.getName() ); if ( replace || shouldReplace( props, cs, propertyInfo ) ) { if ( prependPrefix ) { props.put( cs, new PropertyInfoDelegate( propertyInfo.getContainer(), propertyInfo, cs.toString() ) ); } else { props.put(cs, propertyInfo); } } }
PropertyNameMap<T>[] properties = new PropertyNameMap[IRelativeTypeInfo.Accessibility_Size]; PropertyNameMap privateProps = new PropertyNameMap(); for (IType type : _typeInfo.getOwnersType().getInterfaces()) { mergeProperties(privateProps, convertType(type), false); privateProps.freeze(); properties[IRelativeTypeInfo.Accessibility.PROTECTED.ordinal()] = convertToMap(filterFeatures(privateProps.values(), IRelativeTypeInfo.Accessibility.PROTECTED)); if (properties[IRelativeTypeInfo.Accessibility.PROTECTED.ordinal()].size() == privateProps.size()) { properties[IRelativeTypeInfo.Accessibility.PROTECTED.ordinal()] = privateProps; properties[IRelativeTypeInfo.Accessibility.INTERNAL.ordinal()] = convertToMap(filterFeatures(privateProps.values(), IRelativeTypeInfo.Accessibility.INTERNAL)); if (properties[IRelativeTypeInfo.Accessibility.INTERNAL.ordinal()].size() == properties[IRelativeTypeInfo.Accessibility.PROTECTED.ordinal()].size()) { properties[IRelativeTypeInfo.Accessibility.INTERNAL.ordinal()] = properties[IRelativeTypeInfo.Accessibility.PROTECTED.ordinal()]; properties[IRelativeTypeInfo.Accessibility.PUBLIC.ordinal()] = convertToMap(filterFeatures(privateProps.values(), IRelativeTypeInfo.Accessibility.PUBLIC)); if (properties[IRelativeTypeInfo.Accessibility.PUBLIC.ordinal()].size() == properties[IRelativeTypeInfo.Accessibility.INTERNAL.ordinal()].size()) { properties[IRelativeTypeInfo.Accessibility.PUBLIC.ordinal()] = properties[IRelativeTypeInfo.Accessibility.INTERNAL.ordinal()]; properties[IRelativeTypeInfo.Accessibility.NONE.ordinal()] = new PropertyNameMap();
public IPropertyInfo getProperty( IRelativeTypeInfo.Accessibility accessibility, CharSequence propName ) { maybeInitProperties(); PropertyNameMap<T>[] arr = _properties.get( TypeSystem.getCurrentModule() ); if( arr == null ) { return null; } PropertyNameMap<T> accessMap = arr[accessibility.ordinal()]; return accessMap == null ? null : accessMap.get(convertCharSequenceToCorrectSensitivity(propName)); }
private PropertyNameMap<T> convertToMap(List<IPropertyInfo> features) { PropertyNameMap<T> ret = new PropertyNameMap(); for (IPropertyInfo feature : features) { ret.put(convertCharSequenceToCorrectSensitivity(feature.getName()), feature); } ret.freeze(); return ret; }
private boolean shouldReplace( PropertyNameMap<T> props, T cs, IPropertyInfo propertyInfo ) { IPropertyInfo pi = props.get( cs ); if( pi == null ) { return true; } if( propertyInfo.isReadable() && propertyInfo.isWritable( _typeInfo.getOwnersType() ) ) { return !pi.isReadable() || !pi.isWritable(); } return false; }
public List<IPropertyInfo> getProperties( IRelativeTypeInfo.Accessibility accessibility ) { maybeInitProperties(); PropertyNameMap<T>[] arr = _properties.get( TypeSystem.getCurrentModule() ); if( arr == null ) { return Collections.emptyList(); } PropertyNameMap<T> props = arr[accessibility.ordinal()]; return (List<IPropertyInfo>) (props == null ? Collections.emptyList() : props.values()); }