1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from api_data_source import APIDataSource
from api_list_data_source import APIListDataSource
from appengine_wrappers import IsDevServer
from availability_finder import AvailabilityFinder
from compiled_file_system import CompiledFileSystem
from empty_dir_file_system import EmptyDirFileSystem
from example_zipper import ExampleZipper
from features_bundle import FeaturesBundle
from host_file_system_creator import HostFileSystemCreator
from host_file_system_iterator import HostFileSystemIterator
from intro_data_source import IntroDataSource
from object_store_creator import ObjectStoreCreator
from path_canonicalizer import PathCanonicalizer
from permissions_data_source import PermissionsDataSource
from redirector import Redirector
from reference_resolver import ReferenceResolver
from samples_data_source import SamplesDataSource
import svn_constants
from template_data_source import TemplateDataSource
from test_branch_utility import TestBranchUtility
from test_object_store import TestObjectStore
class ServerInstance(object):
def __init__(self,
object_store_creator,
host_file_system,
app_samples_file_system,
base_path,
compiled_fs_factory,
branch_utility,
host_file_system_creator):
self.object_store_creator = object_store_creator
self.host_file_system = host_file_system
self.app_samples_file_system = app_samples_file_system
self.compiled_host_fs_factory = compiled_fs_factory
self.host_file_system_creator = host_file_system_creator
self.host_file_system_iterator = HostFileSystemIterator(
host_file_system_creator,
host_file_system,
branch_utility)
self.features_bundle = FeaturesBundle(
self.host_file_system,
self.compiled_host_fs_factory,
self.object_store_creator)
self.availability_finder = AvailabilityFinder(
self.host_file_system_iterator,
object_store_creator,
branch_utility,
host_file_system)
self.api_list_data_source_factory = APIListDataSource.Factory(
self.compiled_host_fs_factory,
self.host_file_system,
svn_constants.PUBLIC_TEMPLATE_PATH,
self.features_bundle,
self.object_store_creator)
self.api_data_source_factory = APIDataSource.Factory(
self.compiled_host_fs_factory,
svn_constants.API_PATH,
self.availability_finder,
branch_utility)
self.ref_resolver_factory = ReferenceResolver.Factory(
self.api_data_source_factory,
self.api_list_data_source_factory,
object_store_creator)
self.api_data_source_factory.SetReferenceResolverFactory(
self.ref_resolver_factory)
# Note: samples are super slow in the dev server because it doesn't support
# async fetch, so disable them.
if IsDevServer():
extension_samples_fs = EmptyDirFileSystem()
else:
extension_samples_fs = self.host_file_system
self.samples_data_source_factory = SamplesDataSource.Factory(
extension_samples_fs,
CompiledFileSystem.Factory(extension_samples_fs, object_store_creator),
self.app_samples_file_system,
CompiledFileSystem.Factory(self.app_samples_file_system,
object_store_creator),
self.ref_resolver_factory,
svn_constants.EXAMPLES_PATH,
base_path)
self.api_data_source_factory.SetSamplesDataSourceFactory(
self.samples_data_source_factory)
self.intro_data_source_factory = IntroDataSource.Factory(
self.compiled_host_fs_factory,
self.ref_resolver_factory,
[svn_constants.INTRO_PATH, svn_constants.ARTICLE_PATH])
self.permissions_data_source = PermissionsDataSource(self)
self.example_zipper = ExampleZipper(
self.compiled_host_fs_factory,
self.host_file_system,
svn_constants.DOCS_PATH)
self.path_canonicalizer = PathCanonicalizer(self.compiled_host_fs_factory)
self.redirector = Redirector(
self.compiled_host_fs_factory,
self.host_file_system,
svn_constants.PUBLIC_TEMPLATE_PATH)
self.strings_json_path = svn_constants.STRINGS_JSON_PATH
self.sidenav_json_base_path = svn_constants.JSON_PATH
self.manifest_json_path = svn_constants.MANIFEST_JSON_PATH
self.manifest_features_path = svn_constants.MANIFEST_FEATURES_PATH
self.template_data_source_factory = TemplateDataSource.Factory(
self.api_data_source_factory,
self.api_list_data_source_factory,
self.intro_data_source_factory,
self.samples_data_source_factory,
self.compiled_host_fs_factory,
self.ref_resolver_factory,
self.permissions_data_source,
svn_constants.PUBLIC_TEMPLATE_PATH,
svn_constants.PRIVATE_TEMPLATE_PATH,
base_path)
self.api_data_source_factory.SetTemplateDataSource(
self.template_data_source_factory)
self.permissions_data_source.SetTemplateDataSource(
self.template_data_source_factory)
@staticmethod
def ForTest(file_system):
object_store_creator = ObjectStoreCreator.ForTest()
return ServerInstance(object_store_creator,
file_system,
EmptyDirFileSystem(),
'',
CompiledFileSystem.Factory(file_system,
object_store_creator),
TestBranchUtility.CreateWithCannedData(),
HostFileSystemCreator.ForTest(file_system,
object_store_creator))
@staticmethod
def ForLocal():
object_store_creator = ObjectStoreCreator(start_empty=False,
store_type=TestObjectStore)
host_file_system_creator = HostFileSystemCreator.ForLocal(
object_store_creator)
trunk_file_system = host_file_system_creator.Create()
return ServerInstance(
object_store_creator,
trunk_file_system,
EmptyDirFileSystem(),
'',
CompiledFileSystem.Factory(trunk_file_system, object_store_creator),
TestBranchUtility.CreateWithCannedData(),
host_file_system_creator)
|