if (providerName == null) {
throw new ConfigurationException(XOUnitParameter.PROVIDER.getKey(), "Property missing");
}
Class<? extends XODatastoreProvider> provider = ClassHelper.getType(providerName);
XOUnitBuilder builder;
try {
builder = XOUnitBuilder.create(url, provider, types.toArray(new Class[]{}));
} catch (URISyntaxException e) {
throw new ConfigurationException(XOUnitParameter.URL.getKey(), "Could not convert '" + url + "' to url", e);
}
// optional: name
String name = (String) properties.get(XOUnitParameter.NAME.getKey());
builder.name(name);
// optional: description
String description = (String) properties.get(XOUnitParameter.DESCRIPTION.getKey());
builder.description(description);
// optional: listeners
Collection<String> listenerNames = (Collection<String>) properties.get(XOUnitParameter.INSTANCE_LISTENERS.getKey());
if (listenerNames != null) {
Collection<Class<?>> instanceListeners = ClassHelper.getTypes(listenerNames);
builder.instanceListenerTypes(instanceListeners.toArray(new Class[]{}));
}
// optional: concurrency
String concurrencyMode = (String) properties.get(XOUnitParameter.CONCURRENCY_MODE.getKey());
builder.concurrencyMode(concurrencyMode);
// optional: validation
String validationMode = (String) properties.get(XOUnitParameter.VALIDATION_MODE.getKey());
builder.validationMode(validationMode);
// optional: transaction
String transactionMode = (String) properties.get(XOUnitParameter.TRANSACTION_ATTRIBUTE.getKey());
builder.transactionAttribute(transactionMode);
return builder.create();
}