code: private Comparable resolve(final GraphObject obj, final String path) {
  
  		final ConfigurationProvider config = StructrApp.getConfiguration();
  		final String[] parts               = path.split("[\\.]+");
  		GraphObject current                = obj;
  		int pos                            = 0;
  
  		for (final String part : parts) {
  
  			final Class type      = current.getEntityType();
  			final PropertyKey key = config.getPropertyKeyForJSONName(type, part, false);
  
  			if (key == null) {
  
  				logger.warn("Unknown key {} while resolving path {} for sorting.", part, path);
  				return null;
  			}
  
  			final Object value = current.getProperty(key);
  			if (value != null) {
  
  				// last part of path?
  				if (++pos == parts.length) {
  
  					if (value instanceof Comparable) {
  
  						return (Comparable)value;
  					}
  
  					logger.warn("Path evaluation result of component {} of type {} in {} cannot be used for sorting.", part, value.getClass().getSimpleName(), path);
  					return null;
  				}
  
  				if (value instanceof GraphObject) {
  
  					current = (GraphObject)value;
  
  				} else {
  
  					logger.warn("Path component {} of type {} in {} cannot be evaluated further.", part, value.getClass().getSimpleName(), path);
  					return null;
  				}
  			}
  		}
  
  		return null;
  	}
docs: ----- private methods -----