final String jndiName = Util.getJndiName(model);
final ServiceRegistry registry = context.getServiceRegistry(true);
if (isXa()) {
final ServiceName dataSourceConfigServiceName = XADataSourceConfigService.SERVICE_NAME_BASE
.append(jndiName);
final ServiceController<?> dataSourceConfigController = registry
.getService(dataSourceConfigServiceName);
if (dataSourceConfigController != null) {
((XaDataSource) dataSourceConfigController.getValue()).setEnabled(true);
}
} else {
final ServiceName dataSourceConfigServiceName = DataSourceConfigService.SERVICE_NAME_BASE
.append(jndiName);
final ServiceController<?> dataSourceConfigController = registry
.getService(dataSourceConfigServiceName);
if (dataSourceConfigController != null) {
((DataSource) dataSourceConfigController.getValue()).setEnabled(true);
}
}
final ServiceName dataSourceServiceName = AbstractDataSourceService.SERVICE_NAME_BASE.append(jndiName);
final ServiceController<?> dataSourceController = registry.getService(dataSourceServiceName);
if (dataSourceController != null) {
if (!ServiceController.State.UP.equals(dataSourceController.getState())) {
dataSourceController.setMode(ServiceController.Mode.ACTIVE);
} else {
throw new OperationFailedException(new ModelNode().set("Data-source service [" + jndiName + "] is already started"));
}
} else {
throw new OperationFailedException(new ModelNode().set("Data-source service [" + jndiName + "] is not available"));
}
final ServiceName referenceServiceName = DataSourceReferenceFactoryService.SERVICE_NAME_BASE.append(jndiName);
final ServiceController<?> referenceController = registry.getService(referenceServiceName);
if (referenceController != null && !ServiceController.State.UP.equals(referenceController.getState())) {
referenceController.setMode(ServiceController.Mode.ACTIVE);
}
final ServiceName binderServiceName = Util.getBinderServiceName(jndiName);
final ServiceController<?> binderController = registry.getService(binderServiceName);
if (binderController != null && !ServiceController.State.UP.equals(binderController.getState())) {
binderController.setMode(ServiceController.Mode.ACTIVE);
}
context.completeStep();