private void RegisterAspectEngine() { AspectEngineBuilder builder = null; // see if we have an xml config foreach(IConfiguration child in FacilityConfig.Children) { if("configuration".Equals(child.Name)) { string config = ConfigurationToXml(child); builder = new XmlEngineBuilder(config); } } // else we try to use the language engine if(builder == null) { builder = new AspectLanguageEngineBuilder(FacilityConfig.Value); } ComponentModel model = new ComponentModel("aspectsharp.engine", typeof(AspectEngine), typeof(AspectEngine)); model.ExtendedProperties.Add("builder", builder); model.CustomComponentActivator = typeof(AspectEngineActivator); Kernel.AddCustomComponent( model ); }
public void BuildUsingXmlWithLanguageInCData() { String xmlContents = "<configuration>" + " <![CDATA[" + " import AspectSharp.Tests.Classes in AspectSharp.Tests " + " interceptors [" + " \"key\" : DummyInterceptor " + " ]" + " mixins [" + " \"key\" : DummyMixin " + " ]" + " " + " aspect McBrother for DummyCustomer " + " include \"key\"" + " " + " pointcut method(*)" + " advice(\"key\")" + " end" + " " + " end " + " ]]>" + "</configuration>"; XmlEngineBuilder builder = new XmlEngineBuilder(xmlContents); AspectEngine engine = builder.Build(); AssertEngineConfiguration(engine); }
public void XmlWithMoreComplexMethodSignature() { String xmlContents = "<configuration>" + "<import namespace=\"AspectSharp.Tests.Classes\" assembly=\"AspectSharp.Tests\" />" + "<mixins>" + "<mixin key=\"key\" type=\"DummyMixin\" refTypeEnum=\"Type\" />" + "</mixins><interceptors>" + "<interceptor key=\"key\" type=\"DummyInterceptor\" refTypeEnum=\"Type\" />" + "</interceptors>" + "<aspect name=\"McBrother\"><for>" + "<singletype type=\"DummyCustomer\" refTypeEnum=\"Type\" />" + "</for>" + "<mixin type=\"key\" refTypeEnum=\"Link\" />" + "<pointcut symbol=\"Method\"><signature>(void Name(*))</signature>" + "<interceptor type=\"key\" refTypeEnum=\"Link\" />" + "</pointcut>" + "</aspect>" + "</configuration>"; XmlEngineBuilder builder = new XmlEngineBuilder(xmlContents); AspectEngine engine = builder.Build(); Assert.IsNotNull(engine); Assert.IsNotNull(engine.Configuration); AspectDefinition aspect = engine.Configuration.Aspects[0]; Assert.AreEqual(1, aspect.Mixins.Count); PointCutDefinition pointcut = aspect.PointCuts[0]; Assert.IsTrue( pointcut.Method.AllArguments ); Assert.AreEqual( "void", pointcut.Method.RetType ); Assert.AreEqual("Name", pointcut.Method.MethodName ); Assert.AreEqual(1, pointcut.Advices.Count); InterceptorDefinition advice = pointcut.Advices[0]; Assert.AreEqual( typeof(DummyInterceptor), advice.TypeReference.ResolvedType ); }
public void BuildUsingXml() { String xmlContents = "<configuration>" + "<import namespace=\"AspectSharp.Tests.Classes\" assembly=\"AspectSharp.Tests\" />" + "<mixins>" + "<mixin key=\"key\" type=\"DummyMixin\" refTypeEnum=\"Type\" />" + "</mixins><interceptors>" + "<interceptor key=\"key\" type=\"DummyInterceptor\" refTypeEnum=\"Type\" />" + "</interceptors>" + "<aspect name=\"McBrother\"><for>" + "<singletype type=\"DummyCustomer\" refTypeEnum=\"Type\" />" + "</for>" + "<mixin type=\"key\" refTypeEnum=\"Link\" />" + "<pointcut symbol=\"Method\"><signature>(*)</signature>" + "<interceptor type=\"key\" refTypeEnum=\"Link\" />" + "</pointcut>" + "</aspect>" + "</configuration>"; XmlEngineBuilder builder = new XmlEngineBuilder(xmlContents); AspectEngine engine = builder.Build(); AssertEngineConfiguration(engine); }