writing()

in generators/ReliableStatelessService/index.js [59:249]


  writing() {
    var appPackage = this.props.projName;
    var servicePackage = this.reliableServiceName + 'Pkg';
    var serviceProjName = this.reliableServiceName;
    var serviceRunnerName = this.reliableServiceName + 'ServiceHost';
    var serviceClassName = this.reliableServiceName + 'Service';
    var serviceTypeName = this.reliableServiceName + 'Type';
    var serviceName = this.reliableServiceName;
    var appName = this.props.projName;
    var appTypeName = this.props.projName + 'Type';
   
    var appPackagePath = this.isAddNewService == false ? path.join(this.props.projName, appPackage) :  appPackage;
    var serviceSrcPath = this.isAddNewService == false ? path.join(this.props.projName, serviceProjName) : serviceProjName ;
    var serviceJarName = (this.reliableServiceName).toLowerCase();
    
    var is_Windows = (process.platform == 'win32');
    var is_Linux = (process.platform == 'linux');
    var is_mac = (process.platform == 'darwin');

    var sdkScriptExtension;
    
    if(is_Windows)
    {
      sdkScriptExtension = '.ps1';
    }
    else {
      sdkScriptExtension = '.sh';
    }

    this.fs.copyTpl(
      this.templatePath('class/Service.java'),
      this.destinationPath(path.join(serviceSrcPath, 'src', this.dir, serviceClassName + '.java')),
      {
        packageName: this.packageName,
        serviceClassName: serviceClassName
      } 
    );
    
    this.fs.copyTpl(
      this.templatePath('class/ServiceRunner.java'),
      this.destinationPath(path.join(serviceSrcPath, 'src', this.dir, serviceRunnerName + '.java')),
      {
        packageName: this.packageName,
        serviceClassName: serviceClassName,
        serviceRunnerName: serviceRunnerName,
        serviceTypeName: serviceTypeName
      } 
    );
    
    this.fs.copyTpl(
      this.templatePath('gradle/build.gradle'),
      this.destinationPath(path.join(serviceSrcPath, 'build.gradle')),
      {
        libPath: this.libPath,
        appPackage: appPackage,
        servicePackage: servicePackage,
        serviceMainClass: this.serviceFQN + 'ServiceHost',
        serviceJarName: serviceJarName
      } 
    );
    if ( this.isAddNewService == false ) {
      this.fs.copyTpl(
        this.templatePath('gradle/build2.gradle'),
        this.destinationPath(path.join(this.props.projName, 'build.gradle')),
        {
          libPath: this.libPath,
          appPackage: appPackage,
          servicePackage: servicePackage
        } 
      );
    }
    if ( this.isAddNewService == false ) {
      this.fs.copyTpl(
        this.templatePath('gradle/settings.gradle'),
        this.destinationPath(path.join(this.props.projName, 'settings.gradle')),
        {
          serviceProjName: serviceProjName
        } 
      );
    } else {
	  var nodeFs = require('fs');
      var appendToSettings = "\ninclude \'" + serviceProjName + "\'";
      nodeFs.appendFile(path.join(this.destinationRoot(), 'settings.gradle'), appendToSettings, function (err) {
         if(err) {
              return console.log(err);
          }
      });
    }
    
    if ( this.isAddNewService == false ) {
      this.fs.copyTpl(
        this.templatePath('app/appPackage/ApplicationManifest.xml'),
        this.destinationPath(path.join(appPackagePath, 'ApplicationManifest.xml')),
        {
          appTypeName: appTypeName,
          appName: this.reliableServiceName,
          servicePackage: servicePackage,
          serviceName: serviceName,
          serviceTypeName: serviceTypeName
        } 
      );
    } else {
      var fs = require('fs'); 
      var xml2js = require('xml2js');
      var parser = new xml2js.Parser();
      fs.readFile(path.join(appPackagePath, 'ApplicationManifest.xml'), function(err, data) {
      parser.parseString(data, function (err, result) {
          if (err) {
              return console.log(err);
          }
          result['ApplicationManifest']['ServiceManifestImport'][result['ApplicationManifest']['ServiceManifestImport'].length] = 
             {"ServiceManifestRef":[{"$":{"ServiceManifestName":servicePackage, "ServiceManifestVersion":"1.0.0"}}]}
          result['ApplicationManifest']['DefaultServices'][0]['Service'][result['ApplicationManifest']['DefaultServices'][0]['Service'].length] = 
             {"$":{"Name":serviceName},"StatelessService":[{"$":{"ServiceTypeName":serviceTypeName,"InstanceCount":"1"},"SingletonPartition":[""]}]};
          var builder = new xml2js.Builder();
          var xml = builder.buildObject(result);
          fs.writeFile(path.join(appPackagePath, 'ApplicationManifest.xml'), xml, function(err) {
            if(err) {
                return console.log(err);
            }
          }); 
        });
      });
    }
    this.fs.copyTpl(
      this.templatePath('app/appPackage/servicePackage/ServiceManifest.xml'),
      this.destinationPath(path.join(appPackagePath, servicePackage, 'ServiceManifest.xml')),
      {
        serviceManifestName: servicePackage,
        serviceName: serviceName,
        serviceTypeName: serviceTypeName
      } 
    );
    
    this.fs.copyTpl(
      this.templatePath('app/appPackage/servicePackage/Code/entryPoint.sh'),
      this.destinationPath(path.join(appPackagePath, servicePackage, 'Code', 'entryPoint.sh')),
      {
        serviceJarName: serviceJarName
      } 
    );
    if ( this.isAddNewService == false ) {
      this.fs.copyTpl(
        this.templatePath('deploy/install'+sdkScriptExtension),
        this.destinationPath(path.join(this.props.projName, 'install'+sdkScriptExtension)),
        {
          appPackage: appPackage,
          appName: appName,
          appTypeName: appTypeName,
          serviceName: serviceName,
          serviceTypeName: serviceTypeName
        } 
      );
    }
    if ( this.isAddNewService == false ) {
      this.fs.copyTpl(
        this.templatePath('deploy/upgrade'+sdkScriptExtension),
        this.destinationPath(path.join(this.props.projName, 'upgrade'+sdkScriptExtension)),
        {
          appPackage: appPackage,
          appName: appName
        } 
      );
    }
    if ( this.isAddNewService == false ) {
      this.fs.copyTpl(
        this.templatePath('deploy/uninstall'+sdkScriptExtension),
        this.destinationPath(path.join(this.props.projName, 'uninstall'+sdkScriptExtension)),
        {
          appPackage: appPackage,
          appName: appName,
          appTypeName: appTypeName,
          serviceName: serviceName,
          serviceTypeName: serviceTypeName
        } 
      );
    }
    
    this.fs.copyTpl(
      this.templatePath('app/appPackage/servicePackage/Code/_readme.txt')
      , this.destinationPath(path.join(appPackagePath, servicePackage, 'Code', '_readme.txt'))
    );
    this.fs.copyTpl(
      this.templatePath('app/appPackage/servicePackage/Config/_readme.txt')
      , this.destinationPath(path.join(appPackagePath, servicePackage, 'Config', '_readme.txt'))
    );
    this.fs.copyTpl(
      this.templatePath('app/appPackage/servicePackage/Data/_readme.txt')
      , this.destinationPath(path.join(appPackagePath, servicePackage, 'Data', '_readme.txt'))
    );
  }