Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [higgins-dev] Dynamic setting updates for IContexts

For the second option (IConfigurableComponent.setComponentSetting), I assume
this would replace a component setting that was already there.  So we'd need
a getComponentSetting() for the case in which you just want to change an element
of a setting(e.g., add new element to list or map, remove element from list/map).

IMO, this would only affect the instance of the component being modified.

And, of course, this might trigger other actions in the general case, essentially a re-configuration of the component. For some components, the setComponentSetting method could be quite complex, as the action could depend on the particular setting being modified.

...Greg


Jim Sermersheim wrote:


both good points that I have no comeback for.


Ok, so let's go back to choosing between these:


IContext.setComponentSetting(String name, Object value);
IConfigurableComponent.setComponentSetting(String name, Object value);


For now, I'll do the former and if Mike or someone wants to talk about the latter, we can switch over later.


Jim





 >>> "Duane Buss" <dbuss@xxxxxxxxxx> 06/25/08 10:54 AM >>>

Two Issues

* How do I know if the context attribute is temporary or permanent, and is this a per instance attribute or a global setting that other instances of this same context will pickup.


* Doesn't this create confusion between config settings and context properties? How many items in config would also be settable via setProperties?



Duane

 >>>

*From: *

	

"Jim Sermersheim" <jimse@xxxxxxxxxx>

*To:*

	

Higgins dev <higgins-dev@xxxxxxxxxxx>

*Date: *

	

06/25/08 10:36 AM

*Subject: *

	

[higgins-dev] Dynamic setting updates for IContexts

Over the past month, we've had a number of requests to be able to programatically update different settings for an instance of IContext. The use cases typically are for things where we need the context provider to behave differently based on changing conditions.


At first, we started thinking we should piggyback the existing IConfigurableComponent interfaces. Currently IContext does not extend IConfigurableComponent, but we could change that. Two problems exist with doing it this way:

* There's no way to update a single/specific setting. It would be cumbersome or even break things to send in an entire new configuration Map each time we want to change a single setting

* Often the component settings are shared among other components. The ability to update that shared Map may cause other problems.


So next, we started thinking we need a simple way to update IContext instance-specific settings. The idea was to add something like IContext.setProperty(String propName, Object propVal); One could call it like this:

myContext.setProperty("UseSSL", "true");


There are some questions like: What if the CP doesn't support the "UseSSL" setting? Should it fail the call to setProperty? How does the caller discover ahead of time whether a CP supports a setting?


I started looking at that and thought, wait a minute, IContexts *already have* properties. They're called attributes. All a cp needs to do is we need is to define special attribute identifiers which are valid to be placed on their context, and have a defined semantic behavior. So one could make the same setting call like this:

myContext.addAttribute(new BasicAttribute("http://example.com/ontology/contextSettings#UseSSL";, "true"));


The benefits are that we introduce no new APIs, and the caller can discover whether the context's model allows specific settings


Jim


------------------------------------------------------------------------

_______________________________________________
higgins-dev mailing list
higgins-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/higgins-dev




Back to the top