| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 from fnmatch import fnmatch | 5 from fnmatch import fnmatch |
| 6 import logging | 6 import logging |
| 7 from urlparse import urlparse | 7 from urlparse import urlparse |
| 8 | 8 |
| 9 from appengine_url_fetcher import AppEngineUrlFetcher | 9 from appengine_url_fetcher import AppEngineUrlFetcher |
| 10 from caching_file_system import CachingFileSystem | 10 from caching_file_system import CachingFileSystem |
| 11 from caching_rietveld_patcher import CachingRietveldPatcher | 11 from caching_rietveld_patcher import CachingRietveldPatcher |
| 12 from chained_compiled_file_system import ChainedCompiledFileSystem | 12 from chained_compiled_file_system import ChainedCompiledFileSystem |
| 13 from compiled_file_system import CompiledFileSystem | 13 from compiled_file_system import CompiledFileSystem |
| 14 from environment import IsDevServer | 14 from environment import IsDevServer |
| 15 from extensions_paths import CONTENT_PROVIDERS |
| 15 from host_file_system_provider import HostFileSystemProvider | 16 from host_file_system_provider import HostFileSystemProvider |
| 16 from instance_servlet import InstanceServlet | 17 from instance_servlet import InstanceServlet |
| 17 from render_servlet import RenderServlet | 18 from render_servlet import RenderServlet |
| 18 from rietveld_patcher import RietveldPatcher, RietveldPatcherError | 19 from rietveld_patcher import RietveldPatcher, RietveldPatcherError |
| 19 from object_store_creator import ObjectStoreCreator | 20 from object_store_creator import ObjectStoreCreator |
| 20 from patched_file_system import PatchedFileSystem | 21 from patched_file_system import PatchedFileSystem |
| 21 from server_instance import ServerInstance | 22 from server_instance import ServerInstance |
| 22 from servlet import Request, Response, Servlet | 23 from servlet import Request, Response, Servlet |
| 23 import svn_constants | |
| 24 import url_constants | 24 import url_constants |
| 25 | 25 |
| 26 |
| 26 class _PatchServletDelegate(RenderServlet.Delegate): | 27 class _PatchServletDelegate(RenderServlet.Delegate): |
| 27 def __init__(self, issue, delegate): | 28 def __init__(self, issue, delegate): |
| 28 self._issue = issue | 29 self._issue = issue |
| 29 self._delegate = delegate | 30 self._delegate = delegate |
| 30 | 31 |
| 31 def CreateServerInstance(self): | 32 def CreateServerInstance(self): |
| 32 # start_empty=False because a patch can rely on files that are already in | 33 # start_empty=False because a patch can rely on files that are already in |
| 33 # SVN repository but not yet pulled into data store by cron jobs (a typical | 34 # SVN repository but not yet pulled into data store by cron jobs (a typical |
| 34 # example is to add documentation for an existing API). | 35 # example is to add documentation for an existing API). |
| 35 object_store_creator = ObjectStoreCreator(start_empty=False) | 36 object_store_creator = ObjectStoreCreator(start_empty=False) |
| 36 | 37 |
| 37 unpatched_file_system = self._delegate.CreateHostFileSystemProvider( | 38 unpatched_file_system = self._delegate.CreateHostFileSystemProvider( |
| 38 object_store_creator).GetTrunk() | 39 object_store_creator).GetTrunk() |
| 39 | 40 |
| 40 rietveld_patcher = CachingRietveldPatcher( | 41 rietveld_patcher = CachingRietveldPatcher( |
| 41 RietveldPatcher(svn_constants.EXTENSIONS_PATH, | 42 RietveldPatcher(self._issue, |
| 42 self._issue, | |
| 43 AppEngineUrlFetcher(url_constants.CODEREVIEW_SERVER)), | 43 AppEngineUrlFetcher(url_constants.CODEREVIEW_SERVER)), |
| 44 object_store_creator) | 44 object_store_creator) |
| 45 | 45 |
| 46 patched_file_system = PatchedFileSystem(unpatched_file_system, | 46 patched_file_system = PatchedFileSystem(unpatched_file_system, |
| 47 rietveld_patcher) | 47 rietveld_patcher) |
| 48 | 48 |
| 49 patched_host_file_system_provider = ( | 49 patched_host_file_system_provider = ( |
| 50 self._delegate.CreateHostFileSystemProvider( | 50 self._delegate.CreateHostFileSystemProvider( |
| 51 object_store_creator, | 51 object_store_creator, |
| 52 # The patched file system needs to be online otherwise it'd be | 52 # The patched file system needs to be online otherwise it'd be |
| (...skipping 11 matching lines...) Expand all Loading... |
| 64 object_store_creator, | 64 object_store_creator, |
| 65 combined_compiled_fs_factory, | 65 combined_compiled_fs_factory, |
| 66 branch_utility, | 66 branch_utility, |
| 67 patched_host_file_system_provider, | 67 patched_host_file_system_provider, |
| 68 self._delegate.CreateGithubFileSystemProvider(object_store_creator), | 68 self._delegate.CreateGithubFileSystemProvider(object_store_creator), |
| 69 base_path='/_patch/%s/' % self._issue) | 69 base_path='/_patch/%s/' % self._issue) |
| 70 | 70 |
| 71 # HACK: if content_providers.json changes in this patch then the cron needs | 71 # HACK: if content_providers.json changes in this patch then the cron needs |
| 72 # to be re-run to pull in the new configuration. | 72 # to be re-run to pull in the new configuration. |
| 73 _, _, modified = rietveld_patcher.GetPatchedFiles() | 73 _, _, modified = rietveld_patcher.GetPatchedFiles() |
| 74 if svn_constants.CONTENT_PROVIDERS_PATH in modified: | 74 if CONTENT_PROVIDERS in modified: |
| 75 server_instance.content_providers.Cron().Get() | 75 server_instance.content_providers.Cron().Get() |
| 76 | 76 |
| 77 return server_instance | 77 return server_instance |
| 78 | 78 |
| 79 class PatchServlet(Servlet): | 79 class PatchServlet(Servlet): |
| 80 '''Servlet which renders patched docs. | 80 '''Servlet which renders patched docs. |
| 81 ''' | 81 ''' |
| 82 def __init__(self, request, delegate=None): | 82 def __init__(self, request, delegate=None): |
| 83 self._request = request | 83 self._request = request |
| 84 self._delegate = delegate or InstanceServlet.Delegate() | 84 self._delegate = delegate or InstanceServlet.Delegate() |
| (...skipping 25 matching lines...) Expand all Loading... |
| 110 # Disable cache for patched content. | 110 # Disable cache for patched content. |
| 111 response.headers.pop('cache-control', None) | 111 response.headers.pop('cache-control', None) |
| 112 except RietveldPatcherError as e: | 112 except RietveldPatcherError as e: |
| 113 response = Response.NotFound(e.message, {'Content-Type': 'text/plain'}) | 113 response = Response.NotFound(e.message, {'Content-Type': 'text/plain'}) |
| 114 | 114 |
| 115 redirect_url, permanent = response.GetRedirect() | 115 redirect_url, permanent = response.GetRedirect() |
| 116 if redirect_url is not None: | 116 if redirect_url is not None: |
| 117 response = Response.Redirect('/_patch/%s%s' % (issue, redirect_url), | 117 response = Response.Redirect('/_patch/%s%s' % (issue, redirect_url), |
| 118 permanent) | 118 permanent) |
| 119 return response | 119 return response |
| OLD | NEW |