private Dimensions computeDef(final String propName) {
		final String property = definition.getProperty(propName);
		final Matcher multiMethodCallMatcher = CALLS.matcher(property);
		if (multiMethodCallMatcher.matches()) {
			final String[] methodsLiterals = property.split(CALL_REG);
			final String dependancyName = multiMethodCallMatcher.group(1);
			Dimensions result = null;
			if (definition.containsKey(PREFIX_DEF + dependancyName)) {
				result = computeDef(PREFIX_DEF + dependancyName);
			} else {
				result = computeVal(PREFIX_VAL + dependancyName);
			}
			for (int i = 1; i < methodsLiterals.length; i++) {
				try {
					final Matcher methodCallMatcher = METHOD.matcher(methodsLiterals[i]);
					methodCallMatcher.matches();
					final Method method = Dimensions.class.getMethod(methodCallMatcher.group(1), int.class);
					final int arg = Integer.parseInt(methodCallMatcher.group(2));
					result = (Dimensions) method.invoke(result, arg);
				} catch (final Exception e) {
					throw new IllegalArgumentException(property, e);
				}
			}
			return result;
		}
		throw new IllegalArgumentException(property);
	}
private Dimensions computeDef ( final String propName ) { final String property = definition . getProperty ( propName ) ; final Matcher multiMethodCallMatcher = CALLS . matcher ( property ) ; if ( multiMethodCallMatcher . matches ( ) ) { final String [ ] methodsLiterals = property . split ( CALL_REG ) ; final String dependancyName = multiMethodCallMatcher . group ( 1 ) ; Dimensions result = null ; if ( definition . containsKey ( PREFIX_DEF + dependancyName ) ) { result = computeDef ( PREFIX_DEF + dependancyName ) ; } else { result = computeVal ( PREFIX_VAL + dependancyName ) ; } for ( int i = 1 ; i < methodsLiterals . length ; i ++ ) { try { final Matcher methodCallMatcher = METHOD . matcher ( methodsLiterals [ i ] ) ; methodCallMatcher . matches ( ) ; final Method method = Dimensions . class . getMethod ( methodCallMatcher . group ( 1 ) , int . class ) ; final int arg = Integer . parseInt ( methodCallMatcher . group ( 2 ) ) ; result = ( Dimensions ) method . invoke ( result , arg ) ; } catch ( final Exception e ) { throw new IllegalArgumentException ( property , e ) ; } } return result ; } throw new IllegalArgumentException ( property ) ; }
Computes a def from a property name. The string contained in the property
must have this format : valName[.methodOnDefinitions(int)]+

@param propName
the property containg the def to compute
@return a {@link Dimensions} created by applying the method calls on the
val