And adding 2 Backend Java Functions (1 open, 1 close call) for each
dialog is a solution that scales well ?
On 27.02.2017 18:05, Zieris, Franz wrote:
@Stefan: Yep, I expected as much.
That’s what I meant by saying:
> I haven’t thought about your actual design problem for a minute now.
> I might be (!), that all of the above is highly irrelevant for your case, because the whole approach is not a
good idea.
Franz
*From:*Stefan Rossbach [mailto:srossb...@arcor.de]
*Sent:* Monday, February 27, 2017 5:57 PM
*To:* Zieris, Franz <franz.zie...@fu-berlin.de>; Matthias Bohnstedt
<matthias.bohnst...@gmail.com>
*Cc:* dpp-devel@lists.sourceforge.net
*Subject:* Re: [DPP-Devel] What happend to ISarosContext?
The issue is a little bit more complex. While Matthias indeed could
use bind keys he would still need an internal mapping.
I.e the browser sends the required page name (simple string). The
backend function that handle this call has now to lookup the binding
key and retrieve the required page object.
The interface was not created taken such issues into account.
We only had a single method to retrieve components (which is already
does type conversion) which was sufficient.
I do not know if adding a: Object getComponent(String key) method will
introduce more confusions.
On 27.02.2017 16:18, Zieris, Franz wrote:
Hi Matthias,
I’m not sure what your actual question really is (subject line and
content tell two different stories :) )
> The patch used the ISarosContext that isn't present anymore. The
> context that was injected as dependency. Please correct me if I am
> wrong: I figured that there where some refactorings, and I think the
> functionality that I'm looking for is no moved to 'ContainerContext'.
The context was not “injected as dependency”.
The context was (and is) the collection of all dependencies that
could be injected into other components.
(And yes, the new name is IContainerContext.)
> I want to add a method that can return a component by its name
> (a String key). Currently you can only get a component via the class.
There should be no need for adding a new method.
We patched the picocontainer many years ago, so it can handle more
things as keys than just classes (that’s the purpose of [1]).
What you are looking for is the concept of BindKeys, which allow
fine-grained keys for a key-value store (which a PicoContainer
basically is).
We already define four of those [2]:
-IBBstreamService and Socks5StreamService are two marker
interfaces that are used to handle two different instances of the
IStreamService interface [3].
-SarosVersion and PlatformVersion are two marker interfaces that
are used to handle two different Strings in the same container [4].
See the VersionManager’s ctor for an example of how the marker
interface is used to tell the PicoContainer which String instance
should be put in there [5].
> My question is how do I get the pico container that include the
> HTMLUIcontext
There is no HTMLUIContext, and there is no (single) PicoContainer.
But there is the SarosContext (now ContainerContext), and the
sessionContainer (a field within the SarosSession class).
The job of the context factories is to build up the context
(=key-value mapping) at runtime:
The ContainerContext is built up once, the sessionContainer is
built for every new session.
The HTMLUIContextFactory is called by the respective plugin
lifecycles if said plugin is to be started with the HTML GUI [6,7].
That’s all there is to do in order to get the HTMLUI dependencies
into “the PicoContainer”.
So much for the technical and historical background.
I haven’t thought about your actual design problem for a minute now.
I might be (!), that all of the above is highly irrelevant for
your case, because the whole approach is not a good idea.
I’ve forgotten all of the details of your patch, but I remember, I
was thinking hard about this back then.
Could you go through the discussion first (e.g. here [8,9]) and
summarize the design problems and proposed ideas?
Cheers,
Franz
[1]
https://github.com/saros-project/saros/tree/master@%7B2017-02-27%7D/de.fu_berlin.inf.dpp.core/patches/org/picocontainer/parameters
[2]
https://github.com/saros-project/saros/blob/master@%7B2017-02-27%7D/de.fu_berlin.inf.dpp.core/src/de/fu_berlin/inf/dpp/context/IContextKeyBindings.java
[3]
https://github.com/saros-project/saros/blob/master@%7B2017-02-27%7D/de.fu_berlin.inf.dpp.core/src/de/fu_berlin/inf/dpp/context/CoreContextFactory.java#L92
[4]
https://github.com/saros-project/saros/blob/master@%7B2017-02-27%7D/de.fu_berlin.inf.dpp/src/de/fu_berlin/inf/dpp/SarosEclipseContextFactory.java#L140
[5]
https://github.com/saros-project/saros/blob/master@%7B2017-02-27%7D/de.fu_berlin.inf.dpp.core/src/de/fu_berlin/inf/dpp/versioning/VersionManager.java#L131
[6]
https://github.com/saros-project/saros/blob/master@%7B2017-02-27%7D/de.fu_berlin.inf.dpp/src/de/fu_berlin/inf/dpp/EclipsePluginLifecycle.java#L65
[7]
https://github.com/saros-project/saros/blob/master@%7B2017-02-27%7D/de.fu_berlin.inf.dpp.intellij/src/de/fu_berlin/inf/dpp/intellij/IntellijProjectLifecycle.java#L56
[8]
http://saros-build.imp.fu-berlin.de/gerrit/#/c/3125/1/de.fu_berlin.inf.dpp.ui/src/de/fu_berlin/inf/dpp/ui/browser_functions/ManageDialog.java@45
[9]
http://saros-build.imp.fu-berlin.de/gerrit/#/c/3125/1/de.fu_berlin.inf.dpp.ui/src/de/fu_berlin/inf/dpp/ui/browser_functions/ManageDialog.java@68
*From:*Matthias Bohnstedt [mailto:matthias.bohnst...@gmail.com]
*Sent:* Monday, February 27, 2017 3:25 PM
*To:* dpp-devel@lists.sourceforge.net
<mailto:dpp-devel@lists.sourceforge.net>
*Subject:* [DPP-Devel] What happend to ISarosContext?
Hi all,
I am currently try to finish a long untouched patch[1]. Feel free
to have a look at the commit message for more infos.
The patch used the ISarosContext that isn't present anymore. The
context that was injected as dependency.
Please correct me if I am wrong: I figured that there where some
refactorings, and I think the functionality that I'm looking for
is no moved to 'ContainerContext'[3]. I want to add a method that
can return a component by its name (a String key). Currently you
can only get a component via the class[4].
My question is how do I get the pico container that include the
HTMLUIcontext[5]?
To clarify, I want to get a specific page instances from the
context (aka pico container), depending on the key value given by
the browser function call:
public void manageDialog(String dialogID){
IBrowserPagepage =(IBrowserPage)sarosContext.getComponent(dialogID);
// do something with this page
}
[1]http://saros-build.imp.fu-berlin.de/gerrit/#/c/3125/
[2]http://www.saros-project.org/html-gui#providing-functionality-the-java-part
[3]https://github.com/saros-project/saros/blob/master/de.fu_berlin.inf.dpp.core/src/de/fu_berlin/inf/dpp/context/ContainerContext.java
[4]https://github.com/saros-project/saros/blob/master/de.fu_berlin.inf.dpp.core/src/de/fu_berlin/inf/dpp/context/IContainerContext.java#L48
[5]https://github.com/saros-project/saros/blob/master/de.fu_berlin.inf.dpp.ui/src/de/fu_berlin/inf/dpp/HTMLUIContextFactory.java#L45
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org!http://sdm.link/slashdot
_______________________________________________
DPP-Devel mailing list
DPP-Devel@lists.sourceforge.net
<mailto:DPP-Devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/dpp-devel
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
DPP-Devel mailing list
DPP-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dpp-devel