You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(2) |
Aug
|
Sep
(5) |
Oct
(59) |
Nov
(22) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(11) |
Feb
(3) |
Mar
(9) |
Apr
(6) |
May
(5) |
Jun
(4) |
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2007 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(3) |
Oct
|
Nov
|
Dec
|
From: Owen C. <oco...@ac...> - 2005-03-16 16:47:11
|
Here is my AspectJ HelloWorld thing, I need the equivalent stripped to = the barebones example in Aspect#, shouldn=92t be as difficult as a PHD dissertation, one would hope this represents less than an hour=92s work = (much less actually), although it took me several days to come up with it for AspectJ, I bought a book, but also got it instrumenting already built = jars, working within ant etc: The steps: C:\owen\HelloWorld>ajc com\howdy\*.java com\tracing\HelloAspect.aj C:\owen\HelloWorld>java com.howdy.HelloWorld 2005-03-15 10:54:58,084 [main] INFO trace - Entering [com.howdy.HelloWorld.main] 2005-03-15 10:54:58,124 [main] INFO trace - Entering [com.howdy.Object1.<init>] The classes that were instrumented: Obect1.java: package com.howdy; public class Object1 { public Object1() { int i; } } HelloWorld.java: package com.howdy; public class HelloWorld { public static void main(String[] args) { Object1 fred =3D new Object1(); } } The aspect HelloAspect.aj:=20 package com.tracing; import org.apache.log4j.*; import org.aspectj.lang.*; public aspect HelloAspect=20 { Logger logger =3D Logger.getLogger("trace"); =09 HelloAspect() { logger.setLevel(Level.ALL); } =09 pointcut traceMethods():(execution(* *.*(..)) || execution(*.new(..)))=20 && !within(HelloAspect); =09 before():traceMethods() { if (logger.isEnabledFor(Level.INFO)) { Signature sig =3D thisJoinPointStaticPart.getSignature(); logger.log(Level.INFO, "Entering [" + sig.getDeclaringType().getName() + "."=20 + sig.getName() + "]"); } }=09 } Log4j.properties: log4j.rootLogger=3DDEBUG, A1 log4j.appender.A1=3Dorg.apache.log4j.ConsoleAppender log4j.appender.A1.layout=3Dorg.apache.log4j.PatternLayout # Print the date in ISO 8601 format log4j.appender.A1.layout.ConversionPattern=3D%d [%t] %-5p %c - %m%n # Print only messages of level WARN or above in the package com.foo. log4j.logger.trace=3DINFO =20 Here is the C# equivalent I am starting with and want to add logging to = in similar fashion: File Hello.cs: using System; namespace HelloWorld { class Hello { static void Main(string[] args) { Object1 obj =3D new Object1(); System.Console.WriteLine("Hello"); } } } File Object1.cs: using System; namespace HelloWorld { public class Object1 { public Object1() { int i; } } } C:\owen\HelloWorld.net\HelloWorld>csc Hello.cs Object1.cs Microsoft (R) Visual C# .NET Compiler version 7.10.6001.4 for Microsoft (R) .NET Framework version 1.1.4322 Copyright (C) Microsoft Corporation 2001-2002. All rights reserved. Object1.cs(9,8): warning CS0168: The variable 'i' is declared but never = used C:\owen\HelloWorld.net\HelloWorld>hello Hello C:\owen\HelloWorld.net\HelloWorld> Thanks, =20 Owen Corpening Acorn Systems -----Original Message----- From: asp...@li... [mailto:asp...@li...] On Behalf Of = Henry Concei=E7=E3o Sent: Monday, March 14, 2005 8:27 PM To: asp...@li... Subject: Re: Fw: [Aspectsharp-users] examples, docs I'll create a simple example, but it won't be avaliable soon... sorry. The final beta release should came in the next 3 or 4 weeks. The http://aspectsharp.sourceforge.net/tutorial.html and the src/AspectSharpTests/InterceptorTests/InterceptorTestCase.cs has a overview of the example that should help you understand the AspectSharp. The testcases are very simple and should take only a few minutes to read it. On Mon, 14 Mar 2005 12:14:29 -0300, hammett <ha...@uo...> wrote: > Would somebody please answer this request? I need to put a web project > online today. >=20 > -- > Cheers, > hammett > http://www.castleproject.org/~hammett >=20 > ----- Original Message ----- > From: "Owen Corpening" <oco...@ac...> >=20 > > That is a relatively mammoth example to get started with - you can > > probably > > imagine that I have a day job and can't initially invest heavily in = an > > unkown quantity - is there more of a helloworld - type thing you = could > > cobble together for me? > > > > If Aspect# is truly simple and easy to use this request should take almost > > no time at all. Might want to add such an example to the src too. > > > > Even the tutorial is actually too much for evaluation purposes. > > > > Thanks, > > > > Owen Corpening > > Acorn Systems >=20 >=20 --=20 Cheers, Henry Concei=E7=E3o ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_ide95&alloc_id=14396&op=3Dick _______________________________________________ Aspectsharp-users mailing list Asp...@li... https://lists.sourceforge.net/lists/listinfo/aspectsharp-users |
From: <hen...@gm...> - 2005-03-15 02:27:20
|
I'll create a simple example, but it won't be avaliable soon... sorry. The final beta release should came in the next 3 or 4 weeks. The http://aspectsharp.sourceforge.net/tutorial.html and the src/AspectSharpTests/InterceptorTests/InterceptorTestCase.cs has a overview of the example that should help you understand the AspectSharp. The testcases are very simple and should take only a few minutes to read it. On Mon, 14 Mar 2005 12:14:29 -0300, hammett <ha...@uo...> wrote: > Would somebody please answer this request? I need to put a web project > online today. >=20 > -- > Cheers, > hammett > http://www.castleproject.org/~hammett >=20 > ----- Original Message ----- > From: "Owen Corpening" <oco...@ac...> >=20 > > That is a relatively mammoth example to get started with - you can > > probably > > imagine that I have a day job and can't initially invest heavily in an > > unkown quantity - is there more of a helloworld - type thing you could > > cobble together for me? > > > > If Aspect# is truly simple and easy to use this request should take alm= ost > > no time at all. Might want to add such an example to the src too. > > > > Even the tutorial is actually too much for evaluation purposes. > > > > Thanks, > > > > Owen Corpening > > Acorn Systems >=20 >=20 --=20 Cheers, Henry Concei=E7=E3o |
From: hammett <ha...@uo...> - 2005-03-14 15:14:52
|
Would somebody please answer this request? I need to put a web project online today. -- Cheers, hammett http://www.castleproject.org/~hammett ----- Original Message ----- From: "Owen Corpening" <oco...@ac...> > That is a relatively mammoth example to get started with - you can > probably > imagine that I have a day job and can't initially invest heavily in an > unkown quantity - is there more of a helloworld - type thing you could > cobble together for me? > > If Aspect# is truly simple and easy to use this request should take almost > no time at all. Might want to add such an example to the src too. > > Even the tutorial is actually too much for evaluation purposes. > > Thanks, > > Owen Corpening > Acorn Systems |
From: hammett <ha...@uo...> - 2005-03-14 14:56:40
|
Hello Owen, The src distribution has an example project. The docs folder used to have a kind of MSDN-format docs, but they weren't much useful. You can find most of the documents on our site: http://aspectsharp.sourceforge.net/ -- Cheers, hammett http://www.castleproject.org/~hammett ----- Original Message ----- From: Owen Corpening To: asp...@li... Sent: Monday, March 14, 2005 11:48 AM Subject: [Aspectsharp-users] examples, docs The distribution I downloaded had a docs directory, but no docs. Also I could use examples, particularly how to add logging to an existing helloworld without modifying the code. Something very simple like that. Thanks, Owen Corpening Acorn Systems |
From: Owen C. <oco...@ac...> - 2005-03-14 14:50:11
|
The distribution I downloaded had a docs directory, but no docs. Also I could use examples, particularly how to add logging to an existing helloworld without modifying the code. Something very simple like that. Thanks, Owen Corpening Acorn Systems |
From: hammett <ha...@uo...> - 2005-02-04 14:50:24
|
Hello Ruurd, Maybe we can make DynamicProxy ignore methods from MarshalByRef, that would be the best approach. Handling ref and ret arguments is a nightmare Good lucky with your project! -- Cheers, hammett http://www.digitalcraftsmen.com.br/~hammett ----- Original Message ----- From: "Ruurd Boeke" <SZ...@sz...> > Hi all, > > let me quickly introduce myself, since I'm new to this list. I'm Ruurd > Boeke, freelance architect/developer in the Netherlands. At this moment > I'm working on a (very) large project for the government. |
From: <hen...@gm...> - 2005-02-04 13:52:21
|
Hi Ruurd, The problem is a method, with a a ByRef argument, in the proxied class. DynamicProxy invokes the System.Reflection.Emit.ModuleBuilder.GetTypeToken method when his attempts to build the proxy. This method throws an ArgumentException when the type is a ByRef . We'll try to find a solution or a work around for this problem. On Fri, 04 Feb 2005 13:25:13 +0100, Ruurd Boeke <SZ...@sz...> wr= ote: > Hi all, >=20 > let me quickly introduce myself, since I'm new to this list. I'm Ruurd > Boeke, freelance architect/developer in the Netherlands. At this moment > I'm working on a (very) large project for the government. > I've stumbled on Aspect# because of a request from my teamlead and > reading about aspect oriented programming as used in nhibernate and > blogs. >=20 > Please excuse me, if the following question is not supposed to be asked > on this mailing list. Your wiki is down ;-( >=20 > We are already in the finishing stages of our project and will start > deliviring within months. We have a server-client setup using remoting. > I was challenged to build the following simple functionality: without > changing the calls to the remote objects, implement a wait cursor while > the client is waiting for the return value. >=20 > (Keep in mind that I've just started using aspect# a few hours ago, so > if my approach is very silly, please correct me without holding back!) >=20 > I must say that I'm _very_ pleased with the ease that I could implement > aspect# on this. I've taken the following steps: > * In our framework where the remote object was activated with : object > requestedInterface =3D Activator.GetObject(interfaceType, url.ToString())= ; > I changed the call to: object requestedInterface =3D > engine.WrapInterface(interfaceType, Activator.GetObject(interfaceType, > url.ToString())); >=20 > * The code to build the engine: > String contents =3D " import Socrates.Client.Framework.Interceptors " + > " " + > " aspect sample for [Socrates.Interfaces] " + > " " + > " pointcut method(* *(*))" + > " advice(CursorInterceptor)" + > " end" + > " " + > " end "; >=20 > * The 'CursorInterceptor' > [CLSCompliant(false)] > public object Invoke(IMethodInvocation invocation) > { > Cursor oudeCursor =3D Cursor.Current; > Cursor.Current =3D Cursors.WaitCursor; > object returnvalue =3D invocation.Proceed(); > Cursor.Current =3D oudeCursor; >=20 > return returnvalue; > } >=20 > This actually works. I'm amazed. Wow. Because I'm forced to use the > WrapInterface method, I even get the added benefit of not having to make > my implemented methods virtual. This is _exacltly_ what I want! >=20 > However, I've stumbled upon a real problem: 'System.ArgumentException: > Cannot get TypeToken for a byref type.' > Investigation learns that this happens when wrapping an object target > (using WrapInterface) that inherits from a class which is indeed > marshalbyref. However, before encountering this problem I can happily > wrap a few other objects implementing exactly the same baseclass. >=20 > I'm not given the time to fully investigate this problem. Can someone > tell me if my approach should work and might work in time with newer > releases of aspect#?? (or should I jump out of the window, as was > suggested in your tutorial ;-)) >=20 > Kind Regards, > Ruurd Boeke >=20 > ps. the exception: > 1) Exception Information > ********************************************* > Exception Type: System.ArgumentException > Message: Cannot get TypeToken for a byref type. > ParamName: NULL > TargetSite: System.Reflection.Emit.TypeToken GetTypeToken(System.Type) > HelpLink: NULL > Source: mscorlib >=20 > StackTrace Information > ********************************************* > at System.Reflection.Emit.ModuleBuilder.GetTypeToken(Type type) > at System.Reflection.Emit.ILGenerator.Emit(OpCode opcode, Type cls) > at > Castle.DynamicProxy.Builder.CodeBuilder.SimpleAST.ConvertExpression.Emit(= IEasyMember > member, ILGenerator gen) > at > Castle.DynamicProxy.Builder.CodeBuilder.SimpleAST.MethodInvocationExpress= ion.Emit(IEasyMember > member, ILGenerator gen) > at > Castle.DynamicProxy.Builder.CodeBuilder.SimpleAST.ConvertExpression.Emit(= IEasyMember > member, ILGenerator gen) > at > Castle.DynamicProxy.Builder.CodeBuilder.SimpleAST.ReturnStatement.Emit(IE= asyMember > member, ILGenerator gen) > at > Castle.DynamicProxy.Builder.CodeBuilder.AbstractCodeBuilder.Generate(IEas= yMember > member, ILGenerator il) > at Castle.DynamicProxy.Builder.CodeBuilder.EasyMethod.Generate() > at > Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.EnsureBuildersAr= eInAValidState() > at > Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.BuildType() > at > Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.BuildType() > at > Castle.DynamicProxy.Builder.CodeGenerators.BaseCodeGenerator.CreateType() > at > Castle.DynamicProxy.Builder.CodeGenerators.InterfaceProxyGenerator.Genera= teCode(Type[] > interfaces) > at > Castle.DynamicProxy.Builder.DefaultProxyBuilder.CreateCustomInterfaceProx= y(Type[] > interfaces, GeneratorContext context) > at Castle.DynamicProxy.ProxyGenerator.CreateCustomProxy(Type[] > interfaces, IInterceptor interceptor, Object target, GeneratorContext > context) > at Castle.DynamicProxy.ProxyGenerator.CreateCustomProxy(Type > theInterface, IInterceptor interceptor, Object target, GeneratorContext > context) > at AspectSharp.Core.CustomProxyGenerator.CreateProxy(Type inter, > Object target, Object[] mixins, IInterceptor interceptor) in > C:\Documents and Settings\szboekr\My Documents\Visual Studio > Projects\AspectSharp.src.2.1.0.0\src\AspectSharp\Core\DynamicProxy\Custom= ProxyGenerator.cs:line > 51 > at > AspectSharp.Core.Proxy.DefaultProxyFactory.ObtainInterfaceProxyInstance(A= spectDefinition > aspect, Object target, Type inter, Object[] mixins, > IInvocationDispatcher dispatcher) in C:\Documents and > Settings\szboekr\My Documents\Visual Studio > Projects\AspectSharp.src.2.1.0.0\src\AspectSharp\Core\Proxy\DefaultProxyF= actory.cs:line > 133 > at > AspectSharp.Core.Proxy.DefaultProxyFactory.CreateAndInstantiateInterfaceP= roxy(Type > inter, Object target, AspectDefinition aspect, IInvocationDispatcher > dispatcher) in C:\Documents and Settings\szboekr\My Documents\Visual > Studio > Projects\AspectSharp.src.2.1.0.0\src\AspectSharp\Core\Proxy\DefaultProxyF= actory.cs:line > 104 > at > AspectSharp.Core.Proxy.DefaultProxyFactory.CreateInterfaceProxy(Type > inter, Object target, AspectDefinition aspect) in C:\Documents and > Settings\szboekr\My Documents\Visual Studio > Projects\AspectSharp.src.2.1.0.0\src\AspectSharp\Core\Proxy\DefaultProxyF= actory.cs:line > 83 > at AspectSharp.AspectEngine.WrapInterface(Type inter, Object target) > in C:\Documents and Settings\szboekr\My Documents\Visual Studio > Projects\AspectSharp.src.2.1.0.0\src\AspectSharp\AspectEngine.cs:line > 134 > at Socrates.Client.Framework.ServerInterfaces.Get(Type > interfaceType) in > c:\socrates\code\socrates\client.framework\client.framework\communicatie\= serverinterfaces.cs:line > 134 >=20 > -- > De disclaimer van toepassing op e-mail van de Gemeente > Den Haag vindt u op Http://www.denhaag.nl/disclaimer >=20 > ------------------------------------------------------- > This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting > Tool for open source databases. Create drag-&-drop reports. Save time > by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. > Download a FREE copy at http://www.intelliview.com/go/osdn_nl > _______________________________________________ > Aspectsharp-users mailing list > Asp...@li... > https://lists.sourceforge.net/lists/listinfo/aspectsharp-users >=20 --=20 Cheers, Henry Concei=E7=E3o |
From: Ruurd B. <SZ...@sz...> - 2005-02-04 12:26:52
|
Hi all, let me quickly introduce myself, since I'm new to this list. I'm Ruurd Boeke, freelance architect/developer in the Netherlands. At this moment I'm working on a (very) large project for the government. I've stumbled on Aspect# because of a request from my teamlead and reading about aspect oriented programming as used in nhibernate and blogs. Please excuse me, if the following question is not supposed to be asked on this mailing list. Your wiki is down ;-( We are already in the finishing stages of our project and will start deliviring within months. We have a server-client setup using remoting. I was challenged to build the following simple functionality: without changing the calls to the remote objects, implement a wait cursor while the client is waiting for the return value. (Keep in mind that I've just started using aspect# a few hours ago, so if my approach is very silly, please correct me without holding back!) I must say that I'm _very_ pleased with the ease that I could implement aspect# on this. I've taken the following steps: * In our framework where the remote object was activated with : object requestedInterface = Activator.GetObject(interfaceType, url.ToString()); I changed the call to: object requestedInterface = engine.WrapInterface(interfaceType, Activator.GetObject(interfaceType, url.ToString())); * The code to build the engine: String contents = " import Socrates.Client.Framework.Interceptors " + " " + " aspect sample for [Socrates.Interfaces] " + " " + " pointcut method(* *(*))" + " advice(CursorInterceptor)" + " end" + " " + " end "; * The 'CursorInterceptor' [CLSCompliant(false)] public object Invoke(IMethodInvocation invocation) { Cursor oudeCursor = Cursor.Current; Cursor.Current = Cursors.WaitCursor; object returnvalue = invocation.Proceed(); Cursor.Current = oudeCursor; return returnvalue; } This actually works. I'm amazed. Wow. Because I'm forced to use the WrapInterface method, I even get the added benefit of not having to make my implemented methods virtual. This is _exacltly_ what I want! However, I've stumbled upon a real problem: 'System.ArgumentException: Cannot get TypeToken for a byref type.' Investigation learns that this happens when wrapping an object target (using WrapInterface) that inherits from a class which is indeed marshalbyref. However, before encountering this problem I can happily wrap a few other objects implementing exactly the same baseclass. I'm not given the time to fully investigate this problem. Can someone tell me if my approach should work and might work in time with newer releases of aspect#?? (or should I jump out of the window, as was suggested in your tutorial ;-)) Kind Regards, Ruurd Boeke ps. the exception: 1) Exception Information ********************************************* Exception Type: System.ArgumentException Message: Cannot get TypeToken for a byref type. ParamName: NULL TargetSite: System.Reflection.Emit.TypeToken GetTypeToken(System.Type) HelpLink: NULL Source: mscorlib StackTrace Information ********************************************* at System.Reflection.Emit.ModuleBuilder.GetTypeToken(Type type) at System.Reflection.Emit.ILGenerator.Emit(OpCode opcode, Type cls) at Castle.DynamicProxy.Builder.CodeBuilder.SimpleAST.ConvertExpression.Emit(IEasyMember member, ILGenerator gen) at Castle.DynamicProxy.Builder.CodeBuilder.SimpleAST.MethodInvocationExpression.Emit(IEasyMember member, ILGenerator gen) at Castle.DynamicProxy.Builder.CodeBuilder.SimpleAST.ConvertExpression.Emit(IEasyMember member, ILGenerator gen) at Castle.DynamicProxy.Builder.CodeBuilder.SimpleAST.ReturnStatement.Emit(IEasyMember member, ILGenerator gen) at Castle.DynamicProxy.Builder.CodeBuilder.AbstractCodeBuilder.Generate(IEasyMember member, ILGenerator il) at Castle.DynamicProxy.Builder.CodeBuilder.EasyMethod.Generate() at Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.EnsureBuildersAreInAValidState() at Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.BuildType() at Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.BuildType() at Castle.DynamicProxy.Builder.CodeGenerators.BaseCodeGenerator.CreateType() at Castle.DynamicProxy.Builder.CodeGenerators.InterfaceProxyGenerator.GenerateCode(Type[] interfaces) at Castle.DynamicProxy.Builder.DefaultProxyBuilder.CreateCustomInterfaceProxy(Type[] interfaces, GeneratorContext context) at Castle.DynamicProxy.ProxyGenerator.CreateCustomProxy(Type[] interfaces, IInterceptor interceptor, Object target, GeneratorContext context) at Castle.DynamicProxy.ProxyGenerator.CreateCustomProxy(Type theInterface, IInterceptor interceptor, Object target, GeneratorContext context) at AspectSharp.Core.CustomProxyGenerator.CreateProxy(Type inter, Object target, Object[] mixins, IInterceptor interceptor) in C:\Documents and Settings\szboekr\My Documents\Visual Studio Projects\AspectSharp.src.2.1.0.0\src\AspectSharp\Core\DynamicProxy\CustomProxyGenerator.cs:line 51 at AspectSharp.Core.Proxy.DefaultProxyFactory.ObtainInterfaceProxyInstance(AspectDefinition aspect, Object target, Type inter, Object[] mixins, IInvocationDispatcher dispatcher) in C:\Documents and Settings\szboekr\My Documents\Visual Studio Projects\AspectSharp.src.2.1.0.0\src\AspectSharp\Core\Proxy\DefaultProxyFactory.cs:line 133 at AspectSharp.Core.Proxy.DefaultProxyFactory.CreateAndInstantiateInterfaceProxy(Type inter, Object target, AspectDefinition aspect, IInvocationDispatcher dispatcher) in C:\Documents and Settings\szboekr\My Documents\Visual Studio Projects\AspectSharp.src.2.1.0.0\src\AspectSharp\Core\Proxy\DefaultProxyFactory.cs:line 104 at AspectSharp.Core.Proxy.DefaultProxyFactory.CreateInterfaceProxy(Type inter, Object target, AspectDefinition aspect) in C:\Documents and Settings\szboekr\My Documents\Visual Studio Projects\AspectSharp.src.2.1.0.0\src\AspectSharp\Core\Proxy\DefaultProxyFactory.cs:line 83 at AspectSharp.AspectEngine.WrapInterface(Type inter, Object target) in C:\Documents and Settings\szboekr\My Documents\Visual Studio Projects\AspectSharp.src.2.1.0.0\src\AspectSharp\AspectEngine.cs:line 134 at Socrates.Client.Framework.ServerInterfaces.Get(Type interfaceType) in c:\socrates\code\socrates\client.framework\client.framework\communicatie\serverinterfaces.cs:line 134 -- De disclaimer van toepassing op e-mail van de Gemeente Den Haag vindt u op Http://www.denhaag.nl/disclaimer |
From: <hen...@gm...> - 2005-01-21 17:50:26
|
Hi, We are releasing today another Aspect# beta version, codenamed John Hartigan. This release reflects the AopAlliance interfaces changes. You can dowload the files at http://sourceforge.net/project/showfiles.php?group_id=106883 . -- Cheers, Aspect# Team |
From: Rodrigo B. de O. <rod...@gm...> - 2005-01-21 00:42:37
|
I suggest adding the antlr sources to the project that depends on it as it makes things so much easier. boo used to carry antlr.runtime.dll everywhere but now life is good. On Thu, 20 Jan 2005 18:00:07 -0200, Henry Concei=E7=E3o <hen...@gm...> wrote: > There is a distro of antlr with the .net assemblie? >=20 > I asking this because the ANTLR isn't strong. >=20 > -- > Cheers, > Henry Concei=E7=E3o >=20 > ------------------------------------------------------- > This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting > Tool for open source databases. Create drag-&-drop reports. Save time > by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. > Download a FREE copy at http://www.intelliview.com/go/osdn_nl > _______________________________________________ > Aspectsharp-users mailing list > Asp...@li... > https://lists.sourceforge.net/lists/listinfo/aspectsharp-users >=20 --=20 bamboo http://blogs.codehaus.org/people/bamboo/ http://www.digitalcraftsmen.com.br/ |
From: <hen...@gm...> - 2005-01-20 20:10:12
|
Sorry for the 'typos'... On Thu, 20 Jan 2005 18:00:07 -0200, Henry Concei=E7=E3o <hen...@gm...> wrote: > There is a distro of antlr with the .net assemblie? >=20 > I asking this because the ANTLR isn't strong. >=20 > -- > Cheers, > Henry Concei=E7=E3o >=20 --=20 Cheers, Henry Concei=E7=E3o |
From: <hen...@gm...> - 2005-01-20 20:00:15
|
There is a distro of antlr with the .net assemblie?=20 I asking this because the ANTLR isn't strong. --=20 Cheers, Henry Concei=E7=E3o |
From: hammett <ha...@uo...> - 2005-01-03 18:56:47
|
----- Original Message -----=20 From: "Henry Concei=E7=E3o" <hen...@gm...> > Because in that way the Aspect# Team will have the full control of > the interfaces. With the full control of the interfaces we can had a > better management of changes(protecting the users from unexpected > changes and compatibilities breaks) and can add some performance > optimizations. Just to clarify some more... The whole idea of AopAlliance is cool, meani= ng=20 that we have an "independent" entity to control the interfaces and=20 specifications that implementors might choose to adhere. While this is=20 stands true for the Java community, it lacks committment for the .Net=20 community. If you - reading this - as an user thinks that the Aspect# should continu= e=20 to adhere to AopAlliance, please manifest now. We're very inclined to bra= ke=20 the aggreement in favor and protection of our user community. -- Cheers, hammett http://www.digitalcraftsmen.com.br/~hammett |
From: <hen...@gm...> - 2005-01-03 18:49:42
|
Hi, I was looking at the Spring.Net's cvs for the latest AopAlliance Interfaces/Assembly and what I discovered? They've changed the interfaces to became a more ".Net Friendly" (my words). They replaced all " Get* " with Properties. Since the AopAlliance doesn't have an 'oficial distribution', the Spring.Net's was considered the 'oficial'. I've updated the Aspect# to support the latest interfaces, but chating with Hammett, we are looking for replace the AopAlliance interfaces which or own interfaces. Why? Because in that way the Aspect# Team will have the full control of the interfaces. With the full control of the interfaces we can had a better management of changes(protecting the users from unexpected changes and compatibilities breaks) and can add some performance optimizations. The source is already commited at the cvs and I also add a project called AopAlliance, with the interface's source. Problems with the migration? Post the problem in this list. --=20 Cheers, Henry Concei=E7=E3o |
From: hammett <ha...@uo...> - 2005-01-03 17:28:41
|
I don't think its a good idea to keep the key in the CVS, but that's ok, = til=20 someone come up with a better idea. It's there, AspectSharp2\AspectSharp.key -- Cheers, hammett http://www.digitalcraftsmen.com.br/~hammett ----- Original Message -----=20 From: "Henry Concei=E7=E3o" <hen...@gm...> To: "hammett" <ha...@uo...> Cc: <asp...@li...> Sent: Monday, January 03, 2005 9:23 AM Subject: Re: [Aspectsharp-users] AopAlliance assembly Where is the key? I looked at cvs and found nothing. |
From: <hen...@gm...> - 2005-01-03 17:23:14
|
Where is the key? I looked at cvs and found nothing. On Sun, 2 Jan 2005 22:10:28 -0800, hammett <ha...@uo...> wrote: > Hello! > Who created this assembly? Is there any way to compile it with a strong > name? >=20 > Thanks > -- > Cheers, > hammett > http://www.digitalcraftsmen.com.br/~hammett >=20 > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Aspectsharp-users mailing list > Asp...@li... > https://lists.sourceforge.net/lists/listinfo/aspectsharp-users >=20 --=20 Cheers, Henry Concei=E7=E3o |
From: <hen...@gm...> - 2005-01-03 12:48:40
|
I got this assembly at the spring.net's cvs. The files are there too. On Sun, 2 Jan 2005 22:10:28 -0800, hammett <ha...@uo...> wrote: > Hello! > Who created this assembly? Is there any way to compile it with a strong > name? >=20 > Thanks > -- > Cheers, > hammett > http://www.digitalcraftsmen.com.br/~hammett >=20 > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Aspectsharp-users mailing list > Asp...@li... > https://lists.sourceforge.net/lists/listinfo/aspectsharp-users >=20 --=20 Cheers, Henry Concei=E7=E3o |
From: hammett <ha...@uo...> - 2005-01-03 00:38:22
|
Hello! If you don't know Aspect#, please visit http://aspectsharp.sourceforge.net/ I though this one would be incredible complicated, as it involved the replacement of IProxyFactory implementation but it was not that difficult. Please note that Castle has an interceptor framework [http://www.castleproject.org/containerdocs/interceptors], so I had to mix the aspect# interceptor chain with the Castle interceptor chain. The approach was simple: the Aspect# chain is one step in the castle interceptor chain. I hope people can understand the design, I re-read the paragraph, and its not much clear at all :-\ With this integration one can use the configuration related to the Aspect# facility to act on the components on the container. For example, follows the configuration: <configuration> <facilities> <facility id="aspectsharp"> <![CDATA[ import Castle.Facilities.AspectSharp.Tests.Components in Castle.Facilities.AspectSharp.Tests import Castle.Facilities.AspectSharp.Tests.Interceptors in Castle.Facilities.AspectSharp.Tests interceptors [ "key" : LoggerTraceInterceptor ] mixins [ "key" : SecurityMixin ] aspect ProtocolHandlerLogger for [ assignableFrom(IProtocolHandler) ] include "key" pointcut method(*) advice("key") end end // You can define as many aspect as you want here... ]]> </facility> </facilities> </configuration> So in this case, each component on the container that is assignable from IProtocolHandler will use the LoggerTraceInterceptor. They also have a mixin (SecurityMixin). One fake implementation of IProtocolHandler: public class MessengerProtocolHandler : IProtocolHandler { public MessengerProtocolHandler() { } public void Handle(String contents) { } } --> Note that the Handle method is not virtual! :-) This is a snippet from one of the test cases, by the way, so here is the code: XmlConfigurationStore store = new XmlConfigurationStore("../aop_castle_config.xml"); WindsorContainer container = new WindsorContainer( store ); container.AddFacility( "aspectsharp", new AspectSharpFacility() ); // Logger implementation container.AddComponent( "logger", typeof(ILogger), typeof(MemoryLogger) ); // AopAlliance interceptors container.AddComponent( "log4netinterceptor", typeof(LoggerTraceInterceptor) ); // Protocol handlers container.AddComponent( "protocolhandler.miranda", typeof(IProtocolHandler), typeof(MirandaProtocolHandler) ); container.AddComponent( "protocolhandler.messenger", typeof(IProtocolHandler), typeof(MessengerProtocolHandler) ); // using... ILogger logger = (ILogger) container[ typeof(ILogger) ]; Assert.AreEqual( 0, logger.Contents.Length ); IProtocolHandler handler = (IProtocolHandler) container[ "protocolhandler.miranda" ]; handler.Handle( "contents" ); handler = (IProtocolHandler) container[ "protocolhandler.messenger" ]; handler.Handle( "contents" ); Assert.AreEqual( "Entering Handle Leaving Handle Entering Handle Leaving Handle ", logger.Contents ); The code can be found here http://svn.digitalcraftsmen.com.br/svn/castle/trunk/Facilities/AspectSharp/Castle.Facilities.AspectSharp/ Its only 5 small classes, the test cases took more time to write... :-\ TDD my arse! :-( More at http://svn.digitalcraftsmen.com.br/svn/castle/trunk/Facilities/AspectSharp/ I'm looking forward to working on - ActiveRecord facility - MyXAML facility (http://www.myxaml.com/) -- Cheers, hammett http://www.digitalcraftsmen.com.br/~hammett |
From: hammett <ha...@uo...> - 2005-01-03 00:10:50
|
Hello! Who created this assembly? Is there any way to compile it with a strong name? Thanks -- Cheers, hammett http://www.digitalcraftsmen.com.br/~hammett |
From: hammett <ha...@uo...> - 2004-12-30 02:52:32
|
more info on licenseHello Michael! From the FAQ: http://aspectsharp.sourceforge.net/faq.html#g5 Aspect# and its dependent assemblies are under which licenses? ASL or compatible. Aspect# and Avalon.DynamicProxy are under Apache Software Foundation license which basically means you can do anything you want with the code. Antlr is under Terence Parr's license which, from our understanding, is compatible with ASL. You can have more information about the ASL at http://www.apache.org/licenses/ -- Cheers, hammett http://www.digitalcraftsmen.com.br/~hammett ----- Original Message ----- From: Michael J. Hunter To: asp...@li... Sent: Wednesday, December 29, 2004 6:27 PM Subject: [Aspectsharp-users] more info on license Where can I find more info the licenses for Aspect#? My company's legal department wants to review the actual text of all relevant licenses before allowing me to use this great product. Thanks, Michael |
From: Michael J. H. <no...@hu...> - 2004-12-30 02:27:35
|
Where can I find more info the licenses for Aspect#? My company's legal department wants to review the actual text of all relevant licenses before allowing me to use this great product. Thanks, Michael |
From: hammett <ha...@uo...> - 2004-12-03 01:37:28
|
Somebody did some great integration: http://www.narchitecture.net/Article/ArticleDetails.aspx?id=diehmt I wish I could understand what are they talking about though :-) -- Cheers, hammett http://www.digitalcraftsmen.com.br/~hammett |
From: hammett <ha...@uo...> - 2004-11-19 01:27:59
|
Hello! I'd like to move all DynamicProxy discussions to Castle project mailing list. Please visit http://www.castleproject.org/ > For applications that require every bit of performance they can get, it > should be possible to > avoid this overhead if you are only worried about proxying interfaces (and > if you are > willing to do a bit of extra work). In this case, you can replace > InterfaceProxyGenerator with > a version that does not inherit from BaseCodeGenerator, and that does not > use the Interceptor/Invocation machinery. I'm not sure if I have understood exactly your proposal. We're willing to do anything that boost the performance, as long as somebody convice us :-) -- Cheers, hammett http://www.digitalcraftsmen.com.br/~hammett |
From: <mt...@op...> - 2004-11-18 22:45:42
|
First of all, I wanted to say how impressed I am with the DynamicProxy code - great job! Having said that, I couldn't help but notice that even the non-reflection (delegate) based proxy adds a lot of overhead to each method invocation, and that some of this is overhead is inherent in the design (for example, the requirement that value types be boxed/unboxed on each call). For applications that require every bit of performance they can get, it should be possible to avoid this overhead if you are only worried about proxying interfaces (and if you are willing to do a bit of extra work). In this case, you can replace InterfaceProxyGenerator with a version that does not inherit from BaseCodeGenerator, and that does not use the Interceptor/Invocation machinery. This involves making direct use of the CodeBuilder classes. I was wondering if anybody else has tried this, and if so, what their experience has been. Is this something that DynamicProxy team is willing to support? |
From: hammett <ha...@uo...> - 2004-11-12 18:56:52
|
Hi Deyan, > About the mixins - I looked at the new mixin testcases you've included and > I > am afraid I don't understand how they can solve my problem .. If I create > a > MaterializeMixin with Materialize(int id) method, then I mix that one with > the Country class, and in the interceptor call > ((IMaterializable)invocation.Proxy).Materialize(_id); Yep.. > then how does this Materialize method fill the properties of the Country > class (I am not good with aspect terminology, but I assume that "mixin" > means that the methods of the classes are merged together, right?)? I > can't > write in the MaterializeMixin something like: The mixins interfaces are exposed by the proxy class, but the invocations on these methods (provided that the interceptor calls Proceed) delegates the invocation the the mixin instance. In your case it will be something like: class CountryProxy : Country, IMaterialize { private IMaterialize materialize; public CountryProxy( object[] mixins ) { this.materialize = (IMaterialize) mixins[0]; } } (This is a simplification, but depicts the essential pieces) > because it doesn't compile.. You have to define a protocol to allow the mixin to receive the proxy interface if they want. I decided to not put it there as it will overlap Aspect#'s protocol. Btw, you can see how Aspect# solves the same problem: http://cvs.sourceforge.net/viewcvs.py/aspectsharp/AspectSharp2/src/AspectSharpTests/MixinTests/MixinTestCase.cs?rev=1.5&view=auto See the MixinProxyAware test case. How this was implemented... Well, Aspect# adds a layer between itself and the DynamicProxy, so it can initialize the mixins: http://cvs.sourceforge.net/viewcvs.py/aspectsharp/AspectSharp2/src/AspectSharp/Core/Proxy/DefaultProxyFactory.cs?rev=1.6&view=auto See the InitializeMixins methods. Its very simple, really.. But if you dont want to use mixin, you implementation of IInterceptor could have an IMaterialize instance and could populate the proxy as well. > Please correct me if I am wrong, but in fact the proxy (by definition) > shouldn't populate itself, it should just materialize a inner (Country) > object, and then delegate all method invocations to the inner object, > without using reflection of course ... A simple delegation costs nothing > that's why the DynamicProxyAvalonTest should deliver comparable results if > the counter of the inner loop is increased ... Well, it doesn't have to be this way. I think my suggestion will have a better performance and its better than having two objects.. Believe, you can run into serious trouble with delegation if one of the methods is not virtual, like: class Country { public virtual String Name ... public virtual String Code .. public void SomeBusinessMethod(). } As this last method is not intercepted, the invocation would took place in a different instance with unpredictable results (Wow! I always wanted to say that one piece of my code could generate unpredictable results :-) ) Thats why I've changed so the IInvocationHandler to IInterceptor and added the Proceed.. The rationale is: you can delegate your calls to some other object, but we hope that you know the implications. The usual use won't do something like that. We can work on this one more time, if you send me again the code. -- Cheers, hammett http://www.digitalcraftsmen.com.br/~hammett |