use of org.eclipse.che.api.project.server.type.Variable in project che by eclipse.
the class RegisteredProject method initAttributes.
/**
* Initialize project attributes.
* Note: the problem with {@link Problem#code} = 13 will be added when a value for some attribute is not initialized
*/
private void initAttributes() {
// we take only defined attributes, others ignored
for (Map.Entry<String, Attribute> entry : types.getAttributeDefs().entrySet()) {
final Attribute definition = entry.getValue();
final String name = entry.getKey();
AttributeValue value = new AttributeValue(config.getAttributes().get(name));
if (!definition.isVariable()) {
// constant, value always assumed as stated in definition
attributes.put(name, definition.getValue());
} else {
// variable
final Variable variable = (Variable) definition;
// value provided
if (variable.isValueProvided()) {
final ValueProvider valueProvider = variable.getValueProviderFactory().newInstance(folder);
if (folder != null) {
try {
if (!valueProvider.isSettable() || value.isEmpty()) {
// get provided value
value = new AttributeValue(valueProvider.getValues(name));
} else {
// set provided (not empty) value
valueProvider.setValues(name, value.getList());
}
} catch (ValueStorageException e) {
final Problem problem = new Problem(ATTRIBUTE_NAME_PROBLEM, format("Value for attribute %s is not initialized, caused by: %s", variable.getId(), e.getLocalizedMessage()));
this.problems.add(problem);
}
} else {
continue;
}
}
if (value.isEmpty() && variable.isRequired()) {
final Problem problem = new Problem(ATTRIBUTE_NAME_PROBLEM, "Value for required attribute is not initialized " + variable.getId());
this.problems.add(problem);
//throw new ProjectTypeConstraintException("Value for required attribute is not initialized " + variable.getId());
}
if (!value.isEmpty()) {
this.attributes.put(name, value);
}
}
}
}
Aggregations