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()
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()
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
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()