private static Map<Property, Object> readProperties(final @Nonnull Properties fileProperties) {
		final Properties filePropertiesLeft = new Properties();
		filePropertiesLeft.putAll(fileProperties);
		final Map<Property, Object> resolvedProps = new HashMap<>();
		for (final Property prop : Property.values()) {
			if (System.getProperty(prop.key) != null) {
				LOGGER.debug(prop.key + ": " + System.getProperty(prop.key));
			}
			final Object asSystemProperty = parsePropertyValue(System.getProperty(prop.key));
			if (asSystemProperty != null) {
				resolvedProps.put(prop, asSystemProperty);
				filePropertiesLeft.remove(prop.key);
			} else {
				final Object asEnvProperty = parsePropertyValue(System.getenv().get(prop.key));
				if (asEnvProperty != null) {
					resolvedProps.put(prop, asEnvProperty);
					filePropertiesLeft.remove(prop.key);
				} else {
					final Object rawValue = filePropertiesLeft.remove(prop.key);
					if (rawValue != null) {
						if (rawValue instanceof String) {
							resolvedProps.put(prop, parsePropertyValue((String) rawValue));
						} else {
							resolvedProps.put(prop, rawValue);
						}
					}
				}
			}
		}

		if (!filePropertiesLeft.isEmpty()) {
			throw new IllegalArgumentException("unknown properties provided " + filePropertiesLeft);
		}

		return resolvedProps;
	}
private static Map < Property , Object > readProperties ( final @ Nonnull Properties fileProperties ) { final Properties filePropertiesLeft = new Properties ( ) ; filePropertiesLeft . putAll ( fileProperties ) ; final Map < Property , Object > resolvedProps = new HashMap < > ( ) ; for ( final Property prop : Property . values ( ) ) { if ( System . getProperty ( prop . key ) != null ) { LOGGER . debug ( prop . key + ": " + System . getProperty ( prop . key ) ) ; } final Object asSystemProperty = parsePropertyValue ( System . getProperty ( prop . key ) ) ; if ( asSystemProperty != null ) { resolvedProps . put ( prop , asSystemProperty ) ; filePropertiesLeft . remove ( prop . key ) ; } else { final Object asEnvProperty = parsePropertyValue ( System . getenv ( ) . get ( prop . key ) ) ; if ( asEnvProperty != null ) { resolvedProps . put ( prop , asEnvProperty ) ; filePropertiesLeft . remove ( prop . key ) ; } else { final Object rawValue = filePropertiesLeft . remove ( prop . key ) ; if ( rawValue != null ) { if ( rawValue instanceof String ) { resolvedProps . put ( prop , parsePropertyValue ( ( String ) rawValue ) ) ; } else { resolvedProps . put ( prop , rawValue ) ; } } } } } if ( ! filePropertiesLeft . isEmpty ( ) ) { throw new IllegalArgumentException ( "unknown properties provided " + filePropertiesLeft ) ; } return resolvedProps ; }
@return All properties in priority of System property > File properties.