String getClassForParameter(String object, String field, boolean type) {
		for (KVP def : comps.entries) {
			if (object.equals(def.getKey())) {
				String clname = def.getValue().toString();
				clname = getComponentClassName(clname);
				Class c;
				try {
					c = getClassLoader().loadClass(clname);
				} catch (ClassNotFoundException ex) {
					throw new ComponentException("Class not found: '" + clname
							+ "'");
				}
				try {
					if (type) {
						String canName = c.getField(field).getType()
								.getCanonicalName();
						if (canName == null) {
							throw new ComponentException(
									"No canonical type name for : " + field);
						}
						return canName;
					} else {
						Role r = c.getField(field).getAnnotation(Role.class);
						if (r != null) {
							return r.value();
						}
						return Role.VARIABLE;
					}
				} catch (NoSuchFieldException ex) {
					throw new ComponentException("No such field: " + field);
				} catch (SecurityException ex) {
					throw new ComponentException("Cannot access : " + field);
				}
			}
		}
		throw new ComponentException("Cannot find component '" + object
				+ "'. in '" + object + "." + field + "'");
	}