public CommonDeployment deploy(ServiceContainer serviceContainer) throws DeployException {
      try {
        if (serviceContainer == null) {
          throw new DeployException(ConnectorLogger.ROOT_LOGGER.nullVar("ServiceContainer"));
        }

        HashMap<String, org.jboss.jca.common.api.metadata.ds.Driver> drivers =
            new HashMap<String, org.jboss.jca.common.api.metadata.ds.Driver>(1);

        DataSources dataSources = null;
        if (dataSourceConfig != null) {
          String driverName = dataSourceConfig.getDriver();
          InstalledDriver installedDriver =
              driverRegistry.getValue().getInstalledDriver(driverName, profile);
          if (installedDriver != null) {
            String moduleName =
                installedDriver.getModuleName() != null
                    ? installedDriver.getModuleName().getName()
                    : null;
            org.jboss.jca.common.api.metadata.ds.Driver driver =
                new DriverImpl(
                    installedDriver.getDriverName(),
                    installedDriver.getMajorVersion(),
                    installedDriver.getMinorVersion(),
                    moduleName,
                    installedDriver.getDriverClassName(),
                    installedDriver.getDataSourceClassName(),
                    installedDriver.getXaDataSourceClassName());
            drivers.put(driverName, driver);
          }
          dataSources = new DatasourcesImpl(Arrays.asList(dataSourceConfig), null, drivers);
        } else if (xaDataSourceConfig != null) {
          String driverName = xaDataSourceConfig.getDriver();
          InstalledDriver installedDriver =
              driverRegistry.getValue().getInstalledDriver(driverName, profile);
          if (installedDriver != null) {
            String moduleName =
                installedDriver.getModuleName() != null
                    ? installedDriver.getModuleName().getName()
                    : null;
            org.jboss.jca.common.api.metadata.ds.Driver driver =
                new DriverImpl(
                    installedDriver.getDriverName(),
                    installedDriver.getMajorVersion(),
                    installedDriver.getMinorVersion(),
                    moduleName,
                    installedDriver.getDriverClassName(),
                    installedDriver.getDataSourceClassName(),
                    installedDriver.getXaDataSourceClassName());
            drivers.put(driverName, driver);
          }
          dataSources = new DatasourcesImpl(null, Arrays.asList(xaDataSourceConfig), drivers);
        }

        CommonDeployment c =
            createObjectsAndInjectValue(
                new URL("file://DataSourceDeployment"),
                dsName,
                "uniqueJdbcLocalId",
                "uniqueJdbcXAId",
                dataSources,
                AbstractDataSourceService.class.getClassLoader());
        return c;
      } catch (MalformedURLException e) {
        throw ConnectorLogger.ROOT_LOGGER.cannotDeploy(e);
      } catch (ValidateException e) {
        throw ConnectorLogger.ROOT_LOGGER.cannotDeployAndValidate(e);
      }
    }