1 // Copyright 2004-2008 Castle Project - http://www.castleproject.org/
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
7 // http://www.apache.org/licenses/LICENSE-2.0
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 Castle
.Facilities
.ManagedExtensions
.Server
21 using Castle
.MicroKernel
;
22 using Castle
.MicroKernel
.ModelBuilder
;
23 using Castle
.MicroKernel
.SubSystems
.Conversion
;
25 using Castle
.ManagementExtensions
;
26 using Castle
.ManagementExtensions
.Default
;
29 /// Summary description for ManagementExtensionModelServerInspector.
31 public class ManagementExtensionModelServerInspector
: IContributeComponentModelConstruction
35 public ManagementExtensionModelServerInspector()
39 public void ProcessModel(IKernel kernel
, ComponentModel model
)
43 if (IsManagedComponent(model
))
45 model
.ExtendedProperties
.Add(
46 ManagementConstants
.ComponentIsNaturalManageable
, true);
48 else if (HasManageableConfigAttribute(model
))
50 model
.ExtendedProperties
.Add(
51 ManagementConstants
.ComponentIsNonNaturalManageable
, true);
55 private bool IsManagedComponent(ComponentModel model
)
57 ComponentType type
= MInspector
.Inspect( model
.Implementation
);
58 return (type
!= ComponentType
.None
);
61 private bool HasManageableConfigAttribute(ComponentModel model
)
63 if (model
.Configuration
== null) return false;
65 String manageableValue
= model
.Configuration
.Attributes
["manageable"];
67 if (manageableValue
== null) return false;
69 ITypeConverter converter
= (ITypeConverter
)
70 _kernel
.GetSubSystem( SubSystemConstants
.ConversionManagerKey
);
73 converter
.PerformConversion( manageableValue
, typeof(bool) );