private <T>SortedSet<T> decodeProperty(ManagedObjectPath<?,?> path,PropertyDefinition<T> propertyDef,List<String> attributeValues,Entry newConfigEntry){
  PropertyException exception=null;
  SortedSet<T> pvalues=new TreeSet<>(propertyDef);
  if (attributeValues.size() > 0) {
    for (    String value : attributeValues) {
      try {
        pvalues.add(ValueDecoder.decode(propertyDef,value));
      }
 catch (      PropertyException e) {
        exception=e;
      }
    }
  }
 else {
    try {
      pvalues.addAll(getDefaultValues(path,propertyDef,newConfigEntry));
    }
 catch (    PropertyException e) {
      exception=e;
    }
  }
  if (pvalues.size() > 1 && !propertyDef.hasOption(PropertyOption.MULTI_VALUED)) {
    exception=PropertyException.propertyIsSingleValuedException(propertyDef);
    T value=pvalues.first();
    pvalues.clear();
    pvalues.add(value);
  }
  if (pvalues.isEmpty() && propertyDef.hasOption(PropertyOption.MANDATORY) && exception == null) {
    exception=PropertyException.propertyIsMandatoryException(propertyDef);
  }
  if (exception != null) {
    throw exception;
  }
  return pvalues;
}

private < T > SortedSet < T > decodeProperty ( ManagedObjectPath < ? , ? > path , PropertyDefinition < T > propertyDef , List < String > attributeValues , Entry newConfigEntry ) { PropertyException exception = null ; SortedSet < T > pvalues = new TreeSet < > ( propertyDef ) ; if ( attributeValues . size ( ) > 0 ) { for ( String value : attributeValues ) { try { pvalues . add ( ValueDecoder . decode ( propertyDef , value ) ) ; } catch ( PropertyException e ) { exception = e ; } } } else { try { pvalues . addAll ( getDefaultValues ( path , propertyDef , newConfigEntry ) ) ; } catch ( PropertyException e ) { exception = e ; } } if ( pvalues . size ( ) > 1 && ! propertyDef . hasOption ( PropertyOption . MULTI_VALUED ) ) { exception = PropertyException . propertyIsSingleValuedException ( propertyDef ) ; T value = pvalues . first ( ) ; pvalues . clear ( ) ; pvalues . add ( value ) ; } if ( pvalues . isEmpty ( ) && propertyDef . hasOption ( PropertyOption . MANDATORY ) && exception == null ) { exception = PropertyException . propertyIsMandatoryException ( propertyDef ) ; } if ( exception != null ) { throw exception ; } return pvalues ; }
decode a property using the provided attribute values .
