felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Clement Escoffier (JIRA)" <j...@apache.org>
Subject [jira] [Closed] (FELIX-2688) iPojo "requires.filters" - Array object instead of Dictionary object
Date Mon, 04 Feb 2013 12:36:25 GMT

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

Clement Escoffier closed FELIX-2688.
------------------------------------

    
> iPojo "requires.filters" - Array object instead of Dictionary object
> --------------------------------------------------------------------
>
>                 Key: FELIX-2688
>                 URL: https://issues.apache.org/jira/browse/FELIX-2688
>             Project: Felix
>          Issue Type: Improvement
>          Components: iPOJO
>    Affects Versions: iPOJO-1.6.0
>            Reporter: Olivier Bigard
>            Assignee: Clement Escoffier
>             Fix For: iPOJO-1.8.0
>
>
> I tried to dynamically update the "filter" value of a "@Requires" annotation. 
> The problem is that I'm using ConfigAdmin service to create my instances (for persistence
need) and ConfigAdmin doesn't support Dictionary class...
> The improvement is to have an Array of key/value pairs where keys are the identity of
the dependencies and the values are the filter of each dependency. This Array could be transformed
into a Dictionary object at the begining of the "configure()" method of the "DependencyHandler"
class.
> Imagine you have a class with following dependencies:
>  	@Requires(id="myFirstDep")
>  	private A a;
>  	@Requires(id=" mySecondDep ")
>  	private B b;
>  
> Build the following property to inject in the instance:
>  	conf.put("requires.filters", new String[] {"myFirstDep", "(property1=value1)", "mySecondDep",
"(property2=value2)"});
> And the transformation from the Array to the Dictionary could be:
> 	private Dictionary getRequiresFilters(Object requiresFiltersValue) throws ConfigurationException
>    	{
>         if (requiresFiltersValue != null && requiresFiltersValue.getClass().isArray())
>         {
>            String[] filtersArray = (String[]) requiresFiltersValue;
>            if (filtersArray.length % 2 != 0)
>            {
>                throw new ConfigurationException("A requirement filter is invalid : "
+ requiresFiltersValue);
>            }
>            Dictionary requiresFilters = new Hashtable();
>            for (int i = 0; i < filtersArray.length; i += 2)
>            {
>                requiresFilters.put(filtersArray[i], filtersArray[i+1]);
>            }
>            return requiresFilters;
>         }
>         return (Dictionary) requiresFiltersValue;
> 	}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message