Example #1
0
 def build(self, registry: Registry,
           service_locator: ServiceLocator) -> Router:
     filter_chain_factory = FilterChainFactory(
         self.filtering_rules, service_locator,
         RouteHandlerFactory(service_locator, Deserializer(registry),
                             self.routing_rules,
                             CorsRequestHandlerFactory(self.cors_rules)))
     return Router(service_locator, RequestFactory(), filter_chain_factory)
class DtoSerializationHandler(object):
    def __init__(self, registry: Registry):
        self.deserializer = Deserializer(registry)
        self.serializer = Serializer()

    def deserialize(self, object, type):
        return self.deserializer.deserialize(object, type)

    def serialize(self, obj):
        return self.serializer.serialize(obj)
    def setUp(self):
        self.routing_table = TreeRoutingTable()
        self.routing_table.register_route(GET, PATH, RESOURCE_CLASS,
                                          ROUTE_METHOD)
        self.route_handler_factory = RouteHandlerFactory(
            ServiceLocator(), Deserializer(Registry()),
            [RoutingRule("/", self.routing_table)],
            CorsRequestHandlerFactory([CorsRule("/", {})]))

        self.request_builder = RequestBuilder().method("GET").path(PATH)
 def setUp(self):
     self.serviceLocator = ServiceLocator()
     self.serviceLocator.bind(ResourceClass, ResourceClass)
     registry = Registry()
     self.routingTable = ReflectiveRoutingTable(
         registry, [Registration(ResourceClass, arguments={"value": PATH})])
     self.deserializer = Deserializer(registry)
     self.resource_invocator = TestIntegratedResourceInvoker(
         self.serviceLocator, self.routingTable, self.deserializer)
     self.request = Request('GET', PATH, {}, "", "")
     ResourceClass.has_been_called = False
    def test_givenPrefixedRule_whenCreatingRouteHandlers_thenCreateResourceInvokerWithTruncatedPathForEveryRoute(
            self):
        request = self.request_builder.path("/prefix" + PATH).build()
        rule = RoutingRule("/prefix", self.routing_table)
        self.route_handler_factory = RouteHandlerFactory(
            ServiceLocator(), Deserializer(Registry()), [rule],
            CorsHandler([CorsRule("/", {})]))

        handlers: List[PathRewritingRouteHandlerDecorator] = [
            x
            for x in self.route_handler_factory.create_route_handlers(request)
        ]

        self.assertEqual(1, len(handlers))
        self.assertEqual(PATH, handlers[0].new_path)
Example #6
0
class ObjectMapper(object):

    def __init__(self):
        self.deserializer = Deserializer(ObjectMapper.__RegistryStub())
        self.serializer = Serializer()

    def deserialize(self, json_str: str, clazz: Type[T]) -> T:
        dictionary = json.loads(json_str)
        return self.deserializer.deserialize(dictionary, clazz)

    def serialize(self, serializable: object) -> str:
        dictionary = self.serializer.serialize(serializable)
        return json.dumps(dictionary)

    class __RegistryStub(Registry):

        @Override
        def is_annotated(self, object: object, annotation: "Annotation"):
            return annotation == Serializable and object not in BUILTIN_TYPES + (dict,)
Example #7
0
 def __init__(self, allow_unregistered_types: bool = False):
     self.deserializer = Deserializer(
         ObjectMapper.__RegistryStub() if allow_unregistered_types else Registry.INSTANCE)
     self.serializer = Serializer()
 def __init__(self, registry: Registry):
     self.deserializer = Deserializer(registry)
     self.serializer = Serializer()
Example #9
0
    def configure_service_locator(self):
        # Automatic binding of user-defined components
        AnnotatedClassBinder(self.root_package_name, self.registry,
                             Component).bind(self.serviceLocator)
        AnnotatedClassBinder(self.root_package_name, self.registry,
                             Resource).bind(self.serviceLocator)
        AnnotatedClassBinder(self.root_package_name, self.registry,
                             BackgroundWorker).bind(self.serviceLocator)
        AnnotatedClassBinder(self.root_package_name, self.registry,
                             Scheduled).bind(self.serviceLocator)
        AnnotatedClassBinder(self.root_package_name, self.registry,
                             Init).bind(self.serviceLocator)
        AnnotatedClassBinder(self.root_package_name, self.registry,
                             PreInit).bind(self.serviceLocator)
        AnnotatedClassBinder(self.root_package_name, self.registry,
                             PostInit).bind(self.serviceLocator)
        AnnotatedClassBinder(self.root_package_name, self.registry,
                             EventHandlerClass).bind(self.serviceLocator)
        AnnotatedClassBinder(self.root_package_name, self.registry,
                             RequestFilter).bind(self.serviceLocator)
        RunnableEventHandlerBinder(self.root_package_name,
                                   self.registry).bind(self.serviceLocator)
        ExceptionMapperBinder().bind(self.serviceLocator)
        ProviderBinder(self.root_package_name,
                       self.registry).bind(self.serviceLocator)

        # Component scope management
        for scope in [Singleton, BackgroundWorker]:
            scoped_classes = Stream(self.registry.get_annotated_in_package(scope, self.root_package_name)) \
                .map(lambda registration: registration.registered) \
                .toList()
            cache = SingletonScopeCache(str(scope), scoped_classes)
            self.serviceLocator.register_scope(cache)

        request_scope_cache = RequestScopeCache(
            Stream(
                self.registry.get_annotated_in_package(
                    RequestScoped, self.root_package_name)).map(
                        lambda registration: registration.registered).toList())
        self.serviceLocator.register_scope(request_scope_cache)

        # Jivago dependencies
        Stream(JIVAGO_DEFAULT_FILTERS).forEach(
            lambda f: self.serviceLocator.bind(f, f))
        self.serviceLocator.bind(Registry, Registry.INSTANCE)
        self.serviceLocator.bind(TaskScheduler,
                                 TaskScheduler(self.serviceLocator))
        self.serviceLocator.bind(Deserializer, Deserializer(Registry.INSTANCE))
        self.serviceLocator.bind(Serializer, Serializer())
        self.serviceLocator.bind(
            ViewTemplateRepository,
            ViewTemplateRepository(self.get_views_folder_path()))
        self.serviceLocator.bind(CorsHeadersInjectionFilter,
                                 CorsHeadersInjectionFilter)
        self.serviceLocator.bind(BodySerializationFilter,
                                 BodySerializationFilter)
        self.serviceLocator.bind(PartialContentHandler, PartialContentHandler)
        self.serviceLocator.bind(HttpStatusCodeResolver,
                                 HttpStatusCodeResolver)
        self.serviceLocator.bind(ObjectMapper, ObjectMapper)
        self.serviceLocator.bind(EventBus, self.create_event_bus())
        self.serviceLocator.bind(SynchronousEventBus,
                                 self.serviceLocator.get(EventBus))
        self.serviceLocator.bind(
            AsyncEventBus, AsyncEventBus(self.serviceLocator.get(EventBus)))
        self.serviceLocator.bind(RequestScopeCache, request_scope_cache)

        if not self.banner:
            self.serviceLocator.bind(BannerFilter, DummyBannerFilter)
Example #10
0
 def __init__(self):
     self.deserializer = Deserializer(ObjectMapper.__RegistryStub())
     self.serializer = Serializer()