Added container accessor to Castle.Core
[castle.git] / AspectSharp / AspectSharp.Example / RequestPipeline.cs
blob5bc19dfcf295bcf3e90dd66ba1476db85382b463
1 // Copyright 2004-2007 Castle Project - http://www.castleproject.org/
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
15 namespace AspectSharp.Example
17 using System;
18 using System.IO;
19 using System.Collections;
21 /// <summary>
22 /// Very naive implementation of a request pipeline
23 /// </summary>
24 public class RequestPipeline
26 private Context context;
27 private IList contentProviders;
28 private IView view;
30 public RequestPipeline()
32 context = new Context();
33 contentProviders = new ArrayList();
36 public virtual Context Context
38 get { return context; }
39 set { context = value; }
42 public virtual IView View
44 get { return view; }
45 set { view = value; }
48 public virtual void AddContentProvider(IContentProvider provider)
50 contentProviders.Add( provider );
53 public virtual void ProcessRequest( TextWriter writer )
55 ArrayList fragments = new ArrayList();
57 foreach(IContentProvider provider in contentProviders)
59 fragments.Add( provider.RetrieveContent( Context ) );
62 IContentFragment[] contents = fragments.ToArray( typeof(IContentFragment) )
63 as IContentFragment[];
65 View.Show( contents, writer );