예제 #1
0
 private void RegisterRequestAndResponseTypes()
 {
     foreach (var assembly in requestsAndResponseAssemblies)
     {
         KnownTypeProvider.RegisterDerivedTypesOf <Request>(assembly);
         KnownTypeProvider.RegisterDerivedTypesOf <Response>(assembly);
     }
 }
예제 #2
0
        /// <summary>
        /// Configures the agatha.
        /// </summary>
        /// <param name="appContainer">The app container.</param>
        protected virtual void ConfigureAgatha(IContainer appContainer)
        {
            var structureMapContainer = new Agatha.StructureMap.Container(appContainer);

            IoC.Container = structureMapContainer;

            var assemblyLocator          = appContainer.GetInstance <IAssemblyLocator> ();
            var infrastructureAssemblies = assemblyLocator.LocateInfrastructureAssemblies();

            var genericsToApply = new Dictionary <Type, Type> ();

            foreach (var infrastructureAssembly in infrastructureAssemblies)
            {
                var genericsToApplyInAssebmly = KnownTypeHelper.GetGenerics(infrastructureAssembly);

                foreach (KeyValuePair <Type, Type> keyValuePair in genericsToApplyInAssebmly)
                {
                    genericsToApply.Add(keyValuePair.Key, keyValuePair.Value);
                }
            }

            var serviceLayerConfiguration = new ServiceLayerConfiguration(structureMapContainer);

            var serviceAssemblies = assemblyLocator.LocateWebServiceAssemblies();

            foreach (var assembly in serviceAssemblies)
            {
                var assemblyRef = assembly;
                Logger.Debug("Registering Requests, Responses, Handlers, and Dtos for Assembly: {0}", assemblyRef);

                KnownTypeHelper.RegisterNonGenericRequestsAndResponses(assembly);
                serviceLayerConfiguration.AddRequestHandlerAssembly(assembly);

                KnownTypeProvider.RegisterDerivedTypesOf <AbstractDataTransferObject> (assembly.GetTypes().Where(t => !t.IsGenericType));

                KnownTypeHelper.RegisterGenerics(genericsToApply, assembly);
            }

            KnownTypeProvider.Register <TerminologyConcept> ();
            KnownTypeProvider.Register <TerminologyProperty> ();
            KnownTypeProvider.Register <TerminologyPropertyType> ();
            KnownTypeProvider.Register <TerminologyVocabulary> ();

            // register the agatha interceptors
            serviceLayerConfiguration.RegisterRequestHandlerInterceptor <SecurityInterceptor>();
            serviceLayerConfiguration.RegisterRequestHandlerInterceptor <RuleViolationEventInterceptor> ();

            serviceLayerConfiguration.RequestProcessorImplementation = typeof(Service.PerformanceLoggingRequestProcessor);
            serviceLayerConfiguration.Initialize();

            RegisterIRequestHandlerOfGetRequestDtoByKey(appContainer);
            CallKnownTypeProviders(appContainer);
        }
예제 #3
0
        public static void RegisterWCFAgathaTypes(Assembly assembly)
        {
            // Taken from - http://www.xavierdecoster.com/post/2010/05/07/Automate-WCF-KnownTypes-in-a-3-Tier-Silverlight-application.aspx

            // get all public types
            var publicTypes = assembly.GetExportedTypes();

            // get all data contracts
            var dataContracts = publicTypes.Where(type => type.GetCustomAttributes(typeof(DataContractAttribute), true).Length > 0);

            // register all data contracts to WCF (using Agatha)
            // notice that we have to provide a base type to Agatha's KnownTypeProvider (it does not support interfaces...), so what the heck, let's use object :-)
            KnownTypeProvider.RegisterDerivedTypesOf <object>(dataContracts);
        }
예제 #4
0
        private void RegisterServices()
        {
            var genericsToApply = KnownTypeHelper.GetGenerics(typeof(Const).Assembly);

            KnownTypeHelper.RegisterNonGenericRequestsAndResponses(typeof(PatientModule).Assembly);
            KnownTypeHelper.RegisterGenerics(genericsToApply, typeof(PatientModule).Assembly);
            KnownTypeHelper.RegisterKnownTypesFromIKnownTypeProviders(typeof(PatientModule).Assembly);

            KnownTypeProvider.RegisterDerivedTypesOf <AbstractDataTransferObject>(typeof(PatientModule).Assembly.GetTypes().Where(t => !t.IsGenericType));

            _container.RegisterType <ITerminologyProxy, TerminologyProxy> ();
            _container.RegisterType <ICdsAlertService, CdsAlertService> ();
            _container.RegisterType <IPatientAccessService, PatientAccessService> ();
            _accessControlManager.RegisterPermissionDescriptor(
                new ClientPermissionDescriptor());
            _metadataService.LoadMetadataForModule(this);
        }
예제 #5
0
        /// <summary>
        /// Configures agatha.
        /// </summary>
        /// <param name="appContainer">The app container.</param>
        protected virtual void ConfigureAgatha(IContainer appContainer)
        {
            var structureMapContainer = new Agatha.StructureMap.Container(appContainer);

            Agatha.Common.InversionOfControl.IoC.Container = structureMapContainer;

            var assemblyLocator          = appContainer.GetInstance <IAssemblyLocator> ();
            var infrastructureAssemblies = assemblyLocator.LocateInfrastructureAssemblies();

            var genericsToApply = new Dictionary <Type, Type> ();

            foreach (var infrastructureAssembly in infrastructureAssemblies)
            {
                var genericsToApplyInAssebmly = KnownTypeHelper.GetGenerics(infrastructureAssembly);

                foreach (var keyValuePair in genericsToApplyInAssebmly)
                {
                    genericsToApply.Add(keyValuePair.Key, keyValuePair.Value);
                }
            }

            var serviceAssemblies = assemblyLocator.LocateWebServiceAssemblies();

            foreach (var assembly in serviceAssemblies)
            {
                KnownTypeHelper.RegisterNonGenericRequestsAndResponses(assembly);

                KnownTypeProvider.RegisterDerivedTypesOf <AbstractDataTransferObject> (assembly.GetTypes().Where(t => !t.IsGenericType));

                KnownTypeHelper.RegisterGenerics(genericsToApply, assembly);
            }

            var clientConfiguration = new ClientConfiguration(structureMapContainer)
            {
                AsyncRequestDispatcherImplementation = typeof(AsyncRequestDispatcher)
            };

            clientConfiguration.AddRequestAndResponseAssembly(typeof(GetLookupValuesRequest).Assembly);

            clientConfiguration.RequestProcessorImplementation = typeof(CustomSyncRequestProcessorProxy);

            clientConfiguration.Initialize();
        }
 static PhoneAutomationService()
 {
     KnownTypeProvider.RegisterDerivedTypesOf <CommandBase>(typeof(CommandBase).Assembly);
     KnownTypeProvider.RegisterDerivedTypesOf <ResultBase>(typeof(ResultBase).Assembly);
 }