Dear Wiki user,

You have subscribed to a wiki page or wiki category on "James Wiki" for change 
notification.

The following page has been changed by SergeyLubinskiy:
http://wiki.apache.org/james/SummerOfCode2005/SergeyLubinskiyFastFail

------------------------------------------------------------------------------
  I beleive that this "go from getter/setters via JMX CompositeData to XML will 
let some fresh wind into the old dynamic server reconfiguration problem.
  
  Technical implementation of these features still needs to be explored. In 
essence "protocolLets" are quite similar to blocks but Phoenix machinery most 
likely can not be reused as it is. I see the following opitions to investigate 
and choose from:
-  * do so quirks and tricks and make use of existing Phoenix internals as they 
are
+  * go for some quirks and tricks and make use of existing Phoenix internals 
as they are
   * create a patched Phoenix (and push for new version being rolled out with 
these patches)
   * run.. say Fortress inside new smpt block (I'm trying to pick a container 
living iside asf)
   * DIY container plumbing pico-container style (shouldn't be too much code) 
closely along the lines of the current 
[http://james.apache.org/javadocs/org/apache/james/transport/JamesSpoolManager.html
 JamesSpoolManager] implementation
  
+ === Advantages for ASF ===
+ * A solid foundation for implementing a feature heavily demanded by current 
internet realities - smtp fast fail
+ * Possible a new insight on the issue of reconfiguring components inside IoC 
containers
+ 
+ === Deliverables ===
+ Totally revamped drop-in replacment for the existing 
[http://james.apache.org/javadocs/org/apache/james/smtpserver/SMTPServer.html 
SMTPServer]. Possibly patches or pieces of coded targeted for Avalon containers.
+ 
+ === Schedule ===
+ * start active coding around June the 22nd, the expected end of examination 
session
+ * deliver version 0.1 by July the 12th, this version should prove that 
configuraion and more importantly reconfiguraion of "protocolLets" along the 
path: "inspect class via reflection - build JMX type descriptor - configure via 
JMX - save to xml" is feasable and desirable
+ * deliver version 0.2 by July 25 - "protocolLets" actually able to see other 
blocks visible to smtp server (they get them via setter methods), the new smtp 
block actually able to accept main and feed it into the existing processor 
pipeline
+ * deliver version 0.5 by August 14 - some protocolLets actually make sense 
and do some useful spam blocking
+ 
+ After August 14 fix react to bug reports and requests for enhancements. If 
time permits look into integration with scripting languages.
+ 
+ === Appendix - Expected protocolLet interface ===
+ (Subject to change)
+ {{{
+   interface ConnectionHandler (
+     RulesResponce onConnection(Socket)
+   }
+ 
+   interface CommandsHandler {
+     RulesResponce Map getCommands()
+   }
+ 
+   interface CommandHandler {
+     RulesResponce onCommand(...)
+   }
+ 
+   interface MessageHandler {
+     RulesResponce onMessage(...)
+   }
+ 
+   RulesResponse {
+     boolean getSuccess();
+     SMTPResponseCode getSMTPResponseCode();
+     DSNResponseCode getDSNResponseCode();
+     String getMessage();
+     boolean isResponseMultiline();
+   }
+ }}}
+ 
+ Which is shamelessly compiled out of FailFast and 
[http://mail-archives.apache.org/mod_mbox/james-server-dev/200506.mbox/[EMAIL 
PROTECTED]  "07 Jun 2005 message on server-dev]
+ 
+ I hope this is going to be fun! :-)
+ 

Reply via email to