Hi all,
There are few points that are needed to be clarified in this email.
First of all having
@Element(description = "Listener configurations") private
List<ListenerConfiguration> listenerConfigurations = Arrays.asList(new
HttpListenerConfiguration(), new HttpsListenerConfiguration());
Will produce the below configuration
listenerConfiguration:
-{}
-{}
assuming that *ListenerConfiguration* class has the *@Configuration*
annotation present. So the intended behaviour stated in "[Architecture]
Carbon C5 - Server Configuration Model" architecture mail thread is not
working as intended and needs to be fixed.
So the actual point that needs to be clarified is whether to consider the
reference type or the instance type when preparing the configuration file.
As mentioned by Danesh and Imesh and as per offline discussion with
Kishanthan we will be looking at the reference type when preparing the
configuration.
Thanks,
Vidura Nanayakkara
On Tue, Feb 21, 2017 at 9:08 PM, Imesh Gunaratne <[email protected]> wrote:
>
>
> On Tue, Feb 21, 2017 at 6:33 PM, Vidura Nanayakkara <[email protected]>
> wrote:
>
>>
>> In order to create the above configuration, I may write any of the
>> below-mentioned code segments.
>>
>> 1)
>>
>> @Element(description = "Listener configurations")
>> private List<Configuration> listenerConfigurations =
>> Arrays.asList(new HttpListenerConfiguration(), new
>> HttpsListenerConfiguration());
>>
>>
>> Since the plugin only looks at the argument type I will not be able to
>> have the above-mentioned configuration (Plugin will check for annotations
>> inside the "Configuration" class and therefore only the elements in the
>> "Configuration" class will be written to the configuration file)
>>
>> Shouldn't that be the intended behaviour?
>
> In the above sample, if *listenerConfigurations* is a repeatable element
> in a configuration file, it might need to have the same set of properties
> in all the rows. Which means when* @Element *annotation is added to a
> private variable the mapping between the configuration file and the domain
> model might need to use the data type of the above variable instead of the
> data type of the assigned value(s). WDYT?
>
> Thanks
>
>
>> 2)
>>
>> @Element(description = "Listener configurations")
>> private List<Object> listenerConfigurations =
>> Arrays.asList(new HttpListenerConfiguration(), new
>> HttpsListenerConfiguration());
>>
>> Since the plugin only looks at the argument type I will not be able to
>> have the above-mentioned configuration (Plugin will check for annotations
>> inside the "Object" class). Furthermore since "Object" class doesn't have
>> any annotation, I will not have any of the configuration elements at all.
>>
>> 3)
>>
>> @Element(description = "Listener configurations")
>> private List listenerConfigurations =
>> Arrays.asList(new HttpListenerConfiguration(), new
>> HttpsListenerConfiguration());
>>
>>
>> This will throw an exception since the argument type is not stated within
>> the angle brackets (should take as Object by default right?)
>>
>> *Suggestion*
>>
>> - Consider the instance rather than the reference type when creating
>> the configuration file to solve the above problems.
>> - Iterate through inherited classes when creating the configuration
>> file. This way we can avoid duplicating the same code in multiple places
>> and help solve the problem stated in (1)
>>
>>
>> WDYT?
>>
>> [1] carbon-kernel issue 1285
>> <https://github.com/wso2/carbon-kernel/issues/1285>
>>
>> Best Regards,
>>
>> *Vidura Nanayakkara*
>> Software Engineer
>>
>> Email : [email protected]
>> Mobile : +94 (0) 717 919277 <+94%2071%20791%209277>
>> Web : http://wso2.com
>> Blog : https://medium.com/@viduran <http://wso2.com/>
>> Twitter : http://twitter.com/viduranana
>> LinkedIn : https://lk.linkedin.com/in/vidura-nanayakkara
>> <http://wso2.com/>
>>
>
>
>
> --
> *Imesh Gunaratne*
> Software Architect
> WSO2 Inc: http://wso2.com
> T: +94 11 214 5345 M: +94 77 374 2057 <+94%2077%20374%202057>
> W: https://medium.com/@imesh TW: @imesh
> lean. enterprise. middleware
>
>
--
Best Regards,
*Vidura Nanayakkara*
Software Engineer
Email : [email protected]
Mobile : +94 (0) 717 919277
Web : http://wso2.com
Blog : https://medium.com/@viduran <http://wso2.com/>
Twitter : http://twitter.com/viduranana
LinkedIn : https://lk.linkedin.com/in/vidura-nanayakkara <http://wso2.com/>
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture