def __init__(self, basepath, options):
        self.basepath = os.path.abspath(basepath)
        self.options = options
        if not hasattr(self.options, 'no_symlinks'):

            self.options.no_symlinks = True

        java_home, exec_suffix = java_utils.JavaHomeAndSuffix()
        self.java_command = os.path.join(java_home, 'bin',
                                         'java' + exec_suffix)
        self.javac_command = os.path.join(java_home, 'bin',
                                          'javac' + exec_suffix)

        self._ValidateXmlFiles()

        self.app_engine_web_xml = self._ReadAppEngineWebXml()
        self.app_engine_web_xml.app_root = self.basepath
        if self.options.app_id:
            self.app_engine_web_xml.app_id = self.options.app_id
        if self.options.version:
            self.app_engine_web_xml.version_id = self.options.version
        quickstart = xml_parser_utils.BooleanValue(
            self.app_engine_web_xml.beta_settings.get('java_quickstart',
                                                      'false'))
        if quickstart:
            web_xml_str, _ = java_quickstart.quickstart_generator(
                self.basepath)
            webdefault_xml_str = java_quickstart.get_webdefault_xml()
            web_xml_str = java_quickstart.remove_mappings(
                web_xml_str, webdefault_xml_str)
            self.web_xml = web_xml_parser.WebXmlParser().ProcessXml(
                web_xml_str)
        else:
            self.web_xml = self._ReadWebXml()
Example #2
0
    def __init__(self, basepath, options):
        self.basepath = os.path.abspath(basepath)
        self.options = options
        if not hasattr(self.options, 'no_symlinks'):

            self.options.no_symlinks = True

        java_home, exec_suffix = java_utils.JavaHomeAndSuffix()
        self.java_command = os.path.join(java_home, 'bin',
                                         'java' + exec_suffix)
        self.javac_command = os.path.join(java_home, 'bin',
                                          'javac' + exec_suffix)

        self._ValidateXmlFiles()

        self.app_engine_web_xml = self._ReadAppEngineWebXml()
        if self.app_engine_web_xml.env in ['flex', 'flexible']:
            raise ConfigurationError(
                'Flex environment is not supported with this tool.'
                ' Please use the Cloud SDK to perform a deployment.')
        self.app_engine_web_xml.app_root = self.basepath
        if self.options.app_id:
            self.app_engine_web_xml.app_id = self.options.app_id
        if self.options.version:
            self.app_engine_web_xml.version_id = self.options.version
        quickstart = xml_parser_utils.BooleanValue(
            self.app_engine_web_xml.beta_settings.get('java_quickstart',
                                                      'false'))
        if quickstart:
            raise ConfigurationError('Quickstart generation is not supported.')
        else:
            self.web_xml = self._ReadWebXml()
Example #3
0
def quickstart_generator(war_path, sdk_root=None):
  """Run the quickstart-web.xml generator on the given Java app.

  If the generator succeeds in creating quickstart-web.xml, this method returns
  its contents. Otherwise, it raises RuntimeError. If there was already a
  quickstart-web.xml when this method started, it is removed before generation
  is attempted.

  Args:
    war_path: a string that is the path to a Java app. It should name a
      directory that contains a WEB-INF subdirectory.
    sdk_root: a string that is the path to an App Engine SDK with Java support.

  Returns:
    a tuple (xml, path), where xml is a string that is the contents of the
    generated quickstart-web.xml and path is a string that is the path to the
    quickstart-web.xml file itself.

  Raises:
    CalledProcessError: if the quickstart generation fails.
    IOError: if the quickstart generation apparently succeeds but the
      quickstart-web.xml file is not created. (This should not happen.)
  """
  if not sdk_root:
    sdk_root = _SDK_ROOT

  quickstart_xml_path = os.path.join(war_path, 'WEB-INF', 'quickstart-web.xml')
  if os.path.exists(quickstart_xml_path):
    os.remove(quickstart_xml_path)

  java_home, exec_suffix = java_utils.JavaHomeAndSuffix()
  java_command = os.path.join(java_home, 'bin', 'java') + exec_suffix

  libpath = os.path.join(sdk_root, _JETTY_LIB_PATH)
  jars = (glob.glob(os.path.join(libpath, '*.jar')) +
          glob.glob(os.path.join(libpath, 'jsp', '*.jar')) +
          glob.glob(os.path.join(libpath, 'jndi', '*.jar')) +
          [os.path.join(sdk_root, _QUICKSTART_JAR_PATH)])
  quickstartclasspath = os.pathsep.join(jars)

  webdefaultxml = os.path.join(sdk_root, _JAVA_VMRUNTIME_PATH, 'etc',
                               'webdefault.xml')
  command = [java_command, '-cp', quickstartclasspath, _QUICKSTART_CLASS,
             war_path, webdefaultxml]
  subprocess.check_call(command)

  with open(quickstart_xml_path) as f:
    return f.read(), quickstart_xml_path
Example #4
0
  def __init__(self, basepath, options):
    self.basepath = os.path.abspath(basepath)
    self.options = options
    if not hasattr(self.options, 'no_symlinks'):

      self.options.no_symlinks = True

    java_home, exec_suffix = java_utils.JavaHomeAndSuffix()
    self.java_command = os.path.join(java_home, 'bin', 'java' + exec_suffix)
    self.javac_command = os.path.join(java_home, 'bin', 'javac' + exec_suffix)

    self._ValidateXmlFiles()

    self.app_engine_web_xml = self._ReadAppEngineWebXml()
    self.app_engine_web_xml.app_root = self.basepath
    if self.options.app_id:
      self.app_engine_web_xml.app_id = self.options.app_id
    if self.options.version:
      self.app_engine_web_xml.version_id = self.options.version
    self.web_xml = self._ReadWebXml()
def quickstart_generator(war_path, sdk_root=None):
  """Run the quickstart-web.xml generator on the given Java app.

  If the generator succeeds in creating quickstart-web.xml, this method returns
  its contents. Otherwise, it raises RuntimeError. If there was already a
  quickstart-web.xml when this method started, it is removed before generation
  is attempted.

  Args:
    war_path: a string that is the path to a Java app. It should name a
      directory that contains a WEB-INF subdirectory.
    sdk_root: a string that is the path to an App Engine SDK with Java support.

  Returns:
    a string that is the contents of the generated quickstart-web.xml.

  Raises:
    CalledProcessError: if the quickstart generation fails.
    IOError: if the quickstart generation apparently succeeds but the
      quickstart-web.xml file is not created. (This should not happen.)
  """
  if not sdk_root:
    sdk_root = os.path.dirname(os.path.dirname(
        os.path.dirname(os.path.dirname(java_utils.__file__))))

  quickstart_xml_path = os.path.join(war_path, 'WEB-INF', 'quickstart-web.xml')
  if os.path.exists(quickstart_xml_path):
    os.remove(quickstart_xml_path)

  java_home, exec_suffix = java_utils.JavaHomeAndSuffix()
  java_command = os.path.join(java_home, 'bin', 'java') + exec_suffix

  quickstartgenerator_jar = os.path.join(sdk_root, _QUICKSTART_JAR_PATH)
  command = [java_command, '-jar', quickstartgenerator_jar, war_path]
  subprocess.check_call(command)

  with open(quickstart_xml_path) as f:
    return f.read()