'Returns the URLs that should be resolved statically for this app.
The result includes a URL for every file in the war hierarchy that is
covered by one of the <include> elements for <static-files> and not covered
by any of the <exclude> elements.
Returns:
a list of two-item tuples where the first item is a URL that should be
served statically and the second item corresponds to the <include>
element that caused that URL to be included.'

def IncludedStaticUrls(self):

    includes = self.app_engine_web_xml.static_file_includes
    if (not includes):
        includes = [aewxp.StaticFileInclude('**', None, {})]
    excludes = self.app_engine_web_xml.static_file_excludes
    files = os.listdir(self.war_root)
    web_inf_name = os.path.normcase('WEB-INF')
    files = [f for f in files if (os.path.normcase(f) != web_inf_name)]
    static_urls = []
    includes_and_res = [(include, _XmlPatternToRegEx(include.pattern)) for include in includes]
    exclude_res = [_XmlPatternToRegEx(exclude) for exclude in excludes]
    self.ComputeIncludedStaticUrls(static_urls, self.war_root, '/', files, includes_and_res, exclude_res)
    return static_urls
