String serviceContents) throws AxisFault {
String dataServiceFilePath;
ConfigurationContext configCtx = this.getConfigContext();
AxisConfiguration axisConfig = configCtx.getAxisConfiguration();
AxisService axisService = axisConfig.getServiceForActivation(serviceName);
AxisServiceGroup axisServiceGroup;
boolean hotUpdateOrFaulty = false;
if (serviceHierarchy == null) {
serviceHierarchy = "";
}
if (axisService == null) {
/* new service */
String axis2RepoDirectory = axisConfig.getRepository().getPath();
String repoDirectory = (String) configCtx.getProperty(DBConstants.DB_SERVICE_REPO);
String fileExtension = this.getDataServiceFileExtension();
String dataServiceDirectory = axis2RepoDirectory + File.separator + repoDirectory
+ File.separator + serviceHierarchy;
dataServiceFilePath = dataServiceDirectory + File.separator + serviceName + "."
+ fileExtension;
/* create the directory, if it does not exist */
File directory = new File(dataServiceDirectory);
if (!directory.exists() && !directory.mkdirs()) {
throw new AxisFault("Cannot create directory: " + directory.getAbsolutePath());
}
/* check if this is a faulty service */
if (CarbonUtils.getFaultyService(serviceName, configCtx) != null) {
hotUpdateOrFaulty = true;
}
} else {
dataServiceFilePath = ((DataService) axisService.getParameter(
DBConstants.DATA_SERVICE_OBJECT).getValue()).getDsLocation();
axisServiceGroup = axisService.getAxisServiceGroup();
axisServiceGroup.addParameter(CarbonConstants.KEEP_SERVICE_HISTORY_PARAM, "true");
axisServiceGroup.addParameter(CarbonConstants.PRESERVE_SERVICE_HISTORY_PARAM, "true");
axisService.addParameter(CarbonConstants.KEEP_SERVICE_HISTORY_PARAM, "true");
axisService.addParameter(CarbonConstants.PRESERVE_SERVICE_HISTORY_PARAM, "true");
hotUpdateOrFaulty = true;
}