Q on JenaSubsystemRegistry. The load() method. Is is to be called after adding a series of JenaSubsystemLifecycle objects? I guess I am asking if the standard use is:
{code} JenaSubsystemRegistry reg = // some method to get registry here reg.add( module1 ) reg.add( module2 ) reg.add( module3 ) reg.load(); {code} The Registry indicates that the collection of modules is a set, but the Lifecycle documentation makes no mention of equality or comparator requirements. How is the set in the Registry to be determined? I will assume for the moment that it is based on level and that only one Lifecycle element may be present for a specified level. If a second module is added with the level of a previous entry which is expected to be used (first or last?) Seems like JenaSubsystemRegistry might be a good candidate for a contract test. Claude On Fri, Sep 18, 2015 at 11:30 PM, ASF subversion and git services (JIRA) < j...@apache.org> wrote: > > [ > https://issues.apache.org/jira/browse/JENA-1029?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14876594#comment-14876594 > ] > > ASF subversion and git services commented on JENA-1029: > ------------------------------------------------------- > > Commit 8cbde67e6b58e75ddb528c432f3876ec8aabd85a in jena's branch > refs/heads/Jena-1029_subsystem from [~andy.seaborne] > [ https://git-wip-us.apache.org/repos/asf?p=jena.git;h=8cbde67 ] > > JENA-1029: TDB.init or RIOT.init becomes JenaSystem.init where needed. > > > Add a Jena-wide subsystem lifecycle > > ----------------------------------- > > > > Key: JENA-1029 > > URL: https://issues.apache.org/jira/browse/JENA-1029 > > Project: Apache Jena > > Issue Type: Improvement > > Affects Versions: Jena 3.0.0 > > Reporter: Andy Seaborne > > > > A subsystem lifecyclefor Jena would provide the hook for: > > * basic wiring together e.g. wiring RIOT into Jena core > > * initialization e.g. {{TDB.init()}} becomes redundant > > * starting and stopping in large systems, e.g. starting and stopping > Fuseki2 when in a Tomcat server > > This proposal is as simple as possible. It is for system bootstrap and > basic lifecycle. It is not intended to work for a mixture of jars from > different Jena releases. > > *Sub-system Interface* > > {code:title=JenaSubsystemLifecycle|borderStyle=solid} > > public interface JenaSubsystemLifecycle { > > public void start() ; > > public void stop() ; > > } > > {code} > > {{stop}} would not be called normally as part of JVM exit (code can do > that itself anyway). It is in support of start-stop-(re)start and only > called if there is a hook for such a cycle. {{stop}} is more of a > placeholder for the moment. > > *Registry* > > There is a single registry: > > {code:title=JenaSubsystemRegistry|borderStyle=solid} > > public class JenaSubsystemRegistry { > > public static void add(JenaSubsystemLifecycle module) ; > > public static boolean isRegistered(JenaSubsystemLifecycle module) ; > > public static void remove(JenaSubsystemLifecycle module) ; > > public static int size() ; > > public static boolean isEmpty() ; > > public static void forEach(Consumer<JenaSubsystemLifecycle> action) ; > > } > > {code} > > *Ensuring initialization* > > Jena core provides a "system init" that is cheap to call if > initialization has already occurred. It should attempt the first call as > early as possible. > > When initializing, it runs a {{ServiceLoader}} cycle to discover any > {{JenaSubsystemLifecycle}} implementations described in a > {{META-INF/services/...}} file and populates the registry. Then the > registry is > > used to call {{start()}} in some unspecified order. > > > > -- > This message was sent by Atlassian JIRA > (v6.3.4#6332) > -- I like: Like Like - The likeliest place on the web <http://like-like.xenei.com> LinkedIn: http://www.linkedin.com/in/claudewarren