From 0ed2c1124cf1b9e49a2ec1fa0126a8df09f9e758 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 7 Oct 2014 09:18:11 +0200 Subject: Repackage to org.cristalise --- .../c2kernel/entity/proxy/MemberSubscription.java | 140 --------------------- 1 file changed, 140 deletions(-) delete mode 100644 src/main/java/com/c2kernel/entity/proxy/MemberSubscription.java (limited to 'src/main/java/com/c2kernel/entity/proxy/MemberSubscription.java') diff --git a/src/main/java/com/c2kernel/entity/proxy/MemberSubscription.java b/src/main/java/com/c2kernel/entity/proxy/MemberSubscription.java deleted file mode 100644 index 60e5233..0000000 --- a/src/main/java/com/c2kernel/entity/proxy/MemberSubscription.java +++ /dev/null @@ -1,140 +0,0 @@ -/** - * This file is part of the CRISTAL-iSE kernel. - * Copyright (c) 2001-2014 The CRISTAL Consortium. All rights reserved. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; with out even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - * - * http://www.fsf.org/licensing/licenses/lgpl.html - */ -package com.c2kernel.entity.proxy; -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.StringTokenizer; - -import com.c2kernel.common.ObjectNotFoundException; -import com.c2kernel.entity.C2KLocalObject; -import com.c2kernel.utils.Logger; - -public class MemberSubscription implements Runnable { - public static final String ERROR = "Error"; - public static final String END = "theEND"; - - ItemProxy subject; - String interest; - // keep the subscriber by weak reference, so it is not kept from the garbage collector if no longer used - WeakReference> observerReference; - ArrayList contents = new ArrayList(); - boolean preLoad; - - public MemberSubscription(ProxyObserver observer, String interest, boolean preLoad) { - setObserver(observer); - this.interest = interest; - this.preLoad = preLoad; - } - - @Override - public void run() { - Thread.currentThread().setName("Member Subscription: "+subject.getPath()+":"+interest); - if (preLoad) loadChildren(); - } - - private void loadChildren() { - C newMember; - ProxyObserver observer = getObserver(); - if (observer == null) return; //reaped - try { - // fetch contents of path - String children = subject.queryData(interest+"/all"); - StringTokenizer tok = new StringTokenizer(children, ","); - ArrayList newContents = new ArrayList(); - while (tok.hasMoreTokens()) - newContents.add(tok.nextToken()); - - // look to see what's new - for (String newChild: newContents) { - - // load child object - try { - newMember = (C)subject.getObject(interest+"/"+newChild); - contents.remove(newChild); - observer.add(newMember); - } catch (ObjectNotFoundException ex) { - observer.control(ERROR, "Listed member "+newChild+" was not found."); - } catch (ClassCastException ex) { - Logger.error(ex); - observer.control(ERROR, "Listed member "+newChild+" was the wrong type."); - } - } - // report what's left in old contents as deleted - for (String oldChild: contents) { - observer.remove(interest+"/"+oldChild); - } - //replace contents arraylist - contents = newContents; - //report that we're done - observer.control(END, null); - } catch (Exception ex) { - observer.control(ERROR, "Query on "+interest+" failed with "+ex.getMessage()); - } - } - - public boolean isRelevant(String path) { - Logger.msg(7, "Checking relevance of "+path+" to "+interest); - return (path.startsWith(interest)); - } - - public void update(String path, boolean deleted) { - ProxyObserver observer = getObserver(); - if (observer == null) return; //reaped - Logger.msg(7, "Processing proxy message path "+path +" for "+observer+". Interest: "+interest+" Was Deleted:"+deleted); - if (!path.startsWith(interest)) // doesn't concern us - return; - - if (path.equals(interest)) // refresh contents - loadChildren(); - else { - String name = path.substring(interest.length()); - if (deleted) { - Logger.msg(4, "Removing "+path); - contents.remove(name); - observer.remove(name); - } - else { - try { - C newMember = (C)subject.getObject(path); - Logger.msg(4, "Adding "+path); - contents.add(name); - observer.add(newMember); - } catch (ObjectNotFoundException e) { - Logger.error("Member Subscription: could not load "+path); - Logger.error(e); - } - } - } - } - - public void setObserver(ProxyObserver observer) { - observerReference = new WeakReference>(observer); - } - - public void setSubject(ItemProxy subject) { - this.subject = subject; - } - - public ProxyObserver getObserver() { - return observerReference.get(); - } -} - -- cgit v1.2.3