You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by al...@apache.org on 2012/07/23 19:03:11 UTC
svn commit: r1364712 - in
/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session:
SessionImpl.java SessionManagerImpl.java
Author: alexdma
Date: Mon Jul 23 17:03:11 2012
New Revision: 1364712
URL: http://svn.apache.org/viewvc?rev=1364712&view=rev
Log:
Fixed: sessions were not keeping track of attached scopes that were deleted. Made SessionManagerImpl a listener that react to unregistration/deactivation events (STANBOL-571) (TODO make attachments restorable when a scope is re-activated).
Modified:
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionManagerImpl.java
Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java?rev=1364712&r1=1364711&r2=1364712&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java Mon Jul 23 17:03:11 2012
@@ -105,6 +105,7 @@ public class SessionImpl extends Abstrac
@Override
public void detachScope(String scopeId) {
+ if (!attachedScopes.contains(scopeId)) return;
attachedScopes.remove(scopeId);
fireScopeDetached(scopeId);
}
Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionManagerImpl.java?rev=1364712&r1=1364711&r2=1364712&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionManagerImpl.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionManagerImpl.java Mon Jul 23 17:03:11 2012
@@ -31,11 +31,14 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
+import org.apache.stanbol.ontologymanager.ontonet.api.ONManager;
import org.apache.stanbol.ontologymanager.ontonet.api.OfflineConfiguration;
import org.apache.stanbol.ontologymanager.ontonet.api.OntologyNetworkConfiguration;
import org.apache.stanbol.ontologymanager.ontonet.api.collector.OntologyCollectorListener;
import org.apache.stanbol.ontologymanager.ontonet.api.io.GraphSource;
import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyProvider;
+import org.apache.stanbol.ontologymanager.ontonet.api.scope.OntologyScope;
+import org.apache.stanbol.ontologymanager.ontonet.api.scope.ScopeEventListener;
import org.apache.stanbol.ontologymanager.ontonet.api.session.DuplicateSessionIDException;
import org.apache.stanbol.ontologymanager.ontonet.api.session.NonReferenceableSessionException;
import org.apache.stanbol.ontologymanager.ontonet.api.session.Session;
@@ -63,7 +66,7 @@ import org.slf4j.LoggerFactory;
*/
@Component(immediate = true, metatype = true)
@Service(SessionManager.class)
-public class SessionManagerImpl implements SessionManager {
+public class SessionManagerImpl implements SessionManager, ScopeEventListener {
public static final String _ID_DEFAULT = "session";
public static final int _MAX_ACTIVE_SESSIONS_DEFAULT = -1;
@@ -88,6 +91,9 @@ public class SessionManagerImpl implemen
private int maxSessions;
@Reference
+ private ONManager onManager;
+
+ @Reference
private OfflineConfiguration offline;
@Reference
@@ -119,8 +125,23 @@ public class SessionManagerImpl implemen
public SessionManagerImpl(OntologyProvider<?> ontologyProvider,
OfflineConfiguration offline,
Dictionary<String,Object> configuration) {
+ this(ontologyProvider, null, offline, configuration);
+ }
+
+ /**
+ * To be invoked by non-OSGi environments.
+ *
+ * @param the
+ * ontology provider that will store and provide ontologies for this session manager.
+ * @param configuration
+ */
+ public SessionManagerImpl(OntologyProvider<?> ontologyProvider,
+ ONManager onManager,
+ OfflineConfiguration offline,
+ Dictionary<String,Object> configuration) {
this();
this.ontologyProvider = ontologyProvider;
+ this.onManager = onManager;
this.offline = offline;
try {
activate(configuration);
@@ -184,6 +205,8 @@ public class SessionManagerImpl implemen
if (ontologyProvider instanceof SessionListener) this
.addSessionListener((SessionListener) ontologyProvider);
+ if (onManager != null) onManager.addScopeRegistrationListener(this);
+
// Rebuild sessions
rebuildSessions();
@@ -419,4 +442,25 @@ public class SessionManagerImpl implemen
"Not necessary. Session content is always stored by default in the current implementation.");
}
+ @Override
+ public void scopeActivated(OntologyScope scope) {}
+
+ @Override
+ public void scopeCreated(OntologyScope scope) {}
+
+ @Override
+ public void scopeDeactivated(OntologyScope scope) {
+ for (String sid : getRegisteredSessionIDs())
+ getSession(sid).detachScope(scope.getID());
+ }
+
+ @Override
+ public void scopeUnregistered(OntologyScope scope) {
+ for (String sid : getRegisteredSessionIDs())
+ getSession(sid).detachScope(scope.getID());
+ }
+
+ @Override
+ public void scopeRegistered(OntologyScope scope) {}
+
}