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/ProtocolLet ------------------------------------------------------------------------------ + === Definition === + Member of [:../: New SMTP Block] 's [http://c2.com/cgi/wiki?ChainOfResponsibilityPattern Chain Of Reposiblity]. Processes [http://www.faqs.org/rfcs/rfc2821.html SMTP protocol commands] one at a time. Follows [http://www.picocontainer.org/Setter+Injection Setter Injection] pattern for receiving both configuration parameters and [http://loom.codehaus.org/Component+layers Phoenix Blocks] it depends on. + === Implementation Details === + - [:../: New SMTP Block] introspects implementation class for each of its subordinate ProtocolLet -s and deducts + [:../: New SMTP Block] introspects implementation class for each of its subordinate ProtocolLet -s and deducts its - * XML format to serialize/deserialize its configuration + * XML configuration serialization format - * [http://docs.jboss.org/jbossas/javadoc/3.2.7/jmx/javax/management/openmbean/OpenType.html JMX Open Type Descriptor] to serialize/deserialize its configuration + * configuration [http://docs.jboss.org/jbossas/javadoc/3.2.7/jmx/javax/management/openmbean/OpenType.html JMX Open Type Descriptor] - * list of [http://loom.codehaus.org/Component+layers Phoenix Blocks] it depends on + * list of [http://loom.codehaus.org/Component+layers Phoenix Blocks] it depends on. TODO: choose a way to distinguish setters for injecting configuration values from those for injecting dependencies. Alternative approaches are: * use some naming convention, like {{{injectFoo}}}, {{{setFooDependency}}} @@ -17, +21 @@ * use metadata files, like .xinfo * consider that every setter coupled with getter is a configuration value and every one without is a dependency + === Lifecycle === + + [:../: New SMTP Block] + * reads XML configuration from file + * instantiates ProtocolLet + + [:../: New SMTP Block] JMX facility + * exposes all of the configuration as a single [http://docs.jboss.org/jbossas/javadoc/3.2.7/jmx/javax/management/openmbean/OpenType.html Open Type] JMX attribute + * when administrator alters configuration by specifing a new value for this attribute + * creates a new instance of the same ProtocolLet + * configures it according to the new configuration + * decomissions the old instance and replaces it with the new one + * upon invocation of a special JMX method saves configuration back to file in XML format +