annotate Agendas/trunk/src/Agendas.Web/Global.asax.cs @ 128:1e47bf408073

Asignacion de los publicadores configurados en web.config al factory de agenda (mediante CompositePublicador)
author jorge.rowies
date Mon, 04 Jul 2011 20:00:51 -0300
parents db4b1e2cae49
children
rev   line source
128
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
1 using System;
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
2 using System.Collections.Generic;
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
3 using System.Configuration;
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
4 using System.Web.Mvc;
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
5 using System.Web.Routing;
128
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
6 using Agendas.Blog;
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
7 using Agendas.Blog.Impl;
50
3ebe89c88caa Agregando propiedad al Evento sobre el Usuario que lo crea o que realizó la
nelopauselli
parents: 34
diff changeset
8 using AltNetHispano.Agendas.Domain;
34
475be11edf56 Ajuste en los nombre de los assemblies y namespaces
nelo@MTEySS.neluz.int
parents: 19
diff changeset
9 using AltNetHispano.Agendas.Factories;
83
7e9ffde4022d Implementando DataAnnotation desde recursos y por convención
nelopauselli
parents: 67
diff changeset
10 using AltNetHispano.Agendas.Resources.Properties;
128
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
11 using AltNetHispano.Agendas.Twitter;
84
ee4e699e4551 refactoring menor
nelopauselli
parents: 83
diff changeset
12 using AltNetHispano.Agendas.Web.CustomModelMetadataProvider;
128
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
13 using Castle.MicroKernel.Registration;
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
14 using Castle.Windsor;
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
15
34
475be11edf56 Ajuste en los nombre de los assemblies y namespaces
nelo@MTEySS.neluz.int
parents: 19
diff changeset
16 namespace AltNetHispano.Agendas.Web
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
17 {
128
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
18 // Note: For instructions on enabling IIS6 or IIS7 classic mode,
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
19 // visit http://go.microsoft.com/?LinkId=9394801
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
20
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
21 public class MvcApplication : System.Web.HttpApplication
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
22 {
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
23 private static void RegisterGlobalFilters(GlobalFilterCollection filters)
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
24 {
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
25 filters.Add(new HandleErrorAttribute());
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
26 filters.Add(AttributeFactory.GetNHibernateSessionPerAction());
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
27 }
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
28
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
29 private static void RegisterRoutes(RouteCollection routes)
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
30 {
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
31 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
32
128
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
33 routes.MapRoute(
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
34 "Default", // Route name
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
35 "{controller}/{action}/{id}", // URL with parameters
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
36 new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
37 );
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
38
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
39 }
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
40
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
41 private static readonly IWindsorContainer _container = new WindsorContainer();
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
42
128
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
43 protected void Application_Start()
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
44 {
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
45 InitContainer();
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
46
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
47 ModelMetadataProviders.Current =
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
48 new DataAnnotationAndConventionModelMetadataProvider(
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
49 new ResolverThroughResource<DataAnnotationResources>());
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
50
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
51 AreaRegistration.RegisterAllAreas();
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
52
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
53 RegisterGlobalFilters(GlobalFilters.Filters);
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
54 RegisterRoutes(RouteTable.Routes);
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
55
128
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
56 IdentityContext.Init(new HttpContextIdentityProvider(), AgendaFactory.GetPersonaRepository());
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
57
128
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
58 ConfigurarPublicadores();
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
59 }
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
60
128
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
61 private static void InitContainer()
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
62 {
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
63 _container.Register(
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
64 Component.For<IPublicador>().ImplementedBy<BlogPublicador>().Named("publicadores.blog").LifeStyle.Transient,
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
65 Component.For<IPublicador>().ImplementedBy<TwitterPublicador>().Named("publicadores.twitter").LifeStyle.Transient,
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
66 Component.For<IPostWriterFactory>().ImplementedBy<PostWriterFactory>().LifeStyle.Transient,
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
67 Component.For<IPostWriterWebService>().ImplementedBy<PostWriterWebServiceAdapter>().LifeStyle.Transient,
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
68 Component.For<BlogPublicadorConfig>().Instance(
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
69 new BlogPublicadorConfig(ConfigurationManager.AppSettings["PublicadorBlog.PostWriterServiceUrl"],
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
70 ConfigurationManager.AppSettings["PublicadorBlog.BlogName"],
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
71 ConfigurationManager.AppSettings["PublicadorBlog.BlogWriterMasterKey"])
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
72 ).LifeStyle.Transient,
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
73 Component.For<ITwitterAdapter>().ImplementedBy<TwitterAdapter>().LifeStyle.Transient
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
74 );
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
75 }
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
76
128
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
77 private static void ConfigurarPublicadores()
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
78 {
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
79 var cfg = (PublicadorConfigurationSection)ConfigurationManager.GetSection("publicadoresSection");
19
74eb4577d447 HttpContext identity provider
nelo@MTEySS.neluz.int
parents: 10
diff changeset
80
128
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
81 var publicadores = new List<IPublicador>();
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
82 foreach (PublicadorConfigurationElement pubCfg in cfg.Publicadores)
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
83 {
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
84 if (pubCfg.Enabled)
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
85 {
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
86 var publicador = _container.Resolve<IPublicador>(pubCfg.ComponentKey);
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
87 publicadores.Add(publicador);
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
88 }
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
89 }
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
90
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
91 AgendaFactory.Publicador = new CompositePublicador(publicadores);
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
92 }
1e47bf408073 Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents: 94
diff changeset
93 }
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
94 }