public Set < String > getAttributeNamesSkipId ( ) { if ( attributeNamesNoId == null ) { //no one cares about unfortunate multi-threading timing with 2 instances created //if someone does, use DCL with volatile Set < String > attributesNames = new CaseInsensitiveSet ( getAttributeNames ( ) ) ; attributesNames . remove ( getIdName ( ) ) ; attributeNamesNoId = attributesNames ; } return attributeNamesNoId ; }
Finds all attribute names except for id .