mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christian Schwarz (Updated) (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DIRMINA-874) Typesafe AttributeKeys
Date Mon, 05 Dec 2011 14:19:41 GMT

     [ https://issues.apache.org/jira/browse/DIRMINA-874?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Christian Schwarz updated DIRMINA-874:
--------------------------------------

    Attachment: mina3.zip

I've made an initial imlementation of typesafe attributes keys. All relevant classes and test
can be found inside the ZIP-File.
                
> Typesafe AttributeKeys
> ----------------------
>
>                 Key: DIRMINA-874
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-874
>             Project: MINA
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 3.0.0-M1
>            Reporter: Christian Schwarz
>         Attachments: mina3.zip
>
>
> In Mina 2 we can add attributes to a session and get them as well. Because IoSession#getAttribute(Object
key)  returns Object we always have to remember what attribute type is associated with the
key and cast the result to the expected type.
> Mina 2 example:
> final static Object KEY = new AttributeKey(SourceClass.class,"myKey");
> ...
> session.set(KEY,"myAttribute");
> String attributeValue= (String)session.get(KEY);
> Instead of using plain Object-keys, the key type should contain information about its
attributes. The aim is to get type-safe access to attributes.
> Assume we have the following new AttributeKey-Class:
> /**
> * @parmeter T Type of the referenced Attribute
> */
> class AttributeKey<T> {
>   public TypesafeAttributeKey(Class<T> attributeType, String attributeKey){
>    ...
>   }
> }
> The IoSession should have Attribute related accessors like these:
>  
>  void setAttribute(AttributeKey<T> key, T value);
>  T getAttribute(AttributeKey<T> key);
> So in Mina 3 the example could look like this:
> final static AttributeKey<String> KEY = new AttributeKey<String>(String.class,"myKey");
> ...
> session.set(KEY,"myAttribute");
> String attributeValue=session.get(KEY);
> These 2 cases won't compile:
> session.set(KEY,new Date());
> Integer attributeValue=session.get(KEY);
> This pattern would simplify the use of Attributes, because the programmer don't have
to care about the types and can concentrate on more improtant things. In my humble opinion
the Objekt keys should be removed at all, i don't see the purpose for such unspecific keys.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message