<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 30 Sep 2010, at 22:48, Israel Lacerra wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><br><div class="gmail_quote">On Wed, Sep 29, 2010 at 4:06 PM, Manik Surtani <span dir="ltr">&lt;<a href="mailto:manik@jboss.org" target="_blank">manik@jboss.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">




So this is an extension to the discussion around a GenericCommand that has been going around. &nbsp;IMO a GenericCommand is a big -1 from me for various reasons - the whole purpose of the command pattern is so we have strongly typed and unit testable commands. &nbsp;This will help the ongoing work by Mircea, Sanne and Israel on various modules that need to define custom commands.<br>





<br>
I proposed the following solution to Mircea earlier today, I'll repeat here for you guys to discuss. &nbsp;Note that this is a *half baked* solution and needs more thought! &nbsp;:-)<br>
<br>
* If a module needs to define custom commands, it should define its own ReplicableCommand implementations in its' own module.<br>
* It should define a sub-interface to Visitor (MyModuleVisitor) with additional methods to handle the new commands<br>
* Interceptors defined in this module should extend CommandInterceptor AND implement MyModuleVisitor<br>
* These new commands can be created directly, or via a new CommandFactory specially for these commands.<br>
<br></blockquote><div>Just to make clear what is my problem... The ReplicableCommand does not need to be necessarily a VisitableCommand, right? In my case it's a CacheRpcCommand and I have to initialize this on CommandsFactoryImpl.initializeReplicableCommand(ReplicableCommand, boolean):<br></div></div></blockquote>good point; actually that's why VisitableCommand is an&nbsp;ReplicableCommand: not all replicable commands need the go through the interceptor store.<br><blockquote type="cite"><div class="gmail_quote"><div>

<br>case ClusteredQueryFacade.COMMAND_ID:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ClusteredQueryFacade csc = (ClusteredQueryFacade) c;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csc.initialize(cache);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br><br>The problem is each ReplicableCommand may have a different way to initialize. Maybe we can create a big initialize method, that receives a lot of arguments, and the command uses just some of them. </div></div></blockquote>or pass in the ComponentRegistry which contains pretty much all.<br><blockquote type="cite"><div class="gmail_quote"><div>Or this problem will de solved with the solution that you proposed?<br>

<br>Or maybe there is a better way to initialize the CacheRpcCommand... and I choose the wrong way.<br><br><br>cheers<br>Israel <br>
</div></div><br>
_______________________________________________<br>infinispan-dev mailing list<br><a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>https://lists.jboss.org/mailman/listinfo/infinispan-dev</blockquote></div><br></body></html>