class DefaultAtlasPropertyStrategy implements AtlasPropertyStrategy {

    @Override
    public void readProperty(AtlasSession session, PropertyField propertyField)
            throws AtlasUnsupportedException, AtlasConversionException {
        if (propertyField == null || propertyField.getName() == null || propertyField.getName().trim().length() == 0) {
            if (LOG.isDebugEnabled()) {
                LOG.debug(String.format("Null or empty PropertyField specified popertyField=%s",
                        AtlasModelFactory.toString(propertyField)));
            }
            return;
        }

        for (AtlasPropertyType propType : getPropertyOrder()) {
            switch (propType) {
            case RUNTIME_PROPERTIES:
                if (session != null && processRuntimeProperties(propertyField, session.getSourceProperties())) {
                    return;
                }
                break;
            case JAVA_SYSTEM_PROPERTIES:
                if (processJavaSystemProperty(propertyField)) {
                    return;
                }
                break;
            case ENVIRONMENT_VARIABLES:
                if (processEnvironmentVariable(propertyField)) {
                    return;
                }
                break;
            case MAPPING_DEFINED_PROPERTIES:
                if (session != null && processMappingDefinedProperties(propertyField, session.getMapping())) {
                    return;
                }
                break;
            default:
                throw new AtlasUnsupportedException(
                        String.format("Unsupported PropertyType detected type=%s for field=%s", propType,
                                AtlasModelFactory.toString(propertyField)));
            }
        }
    }

}