/** * Create a new empty OAV state representation. */ public OAVWeakState(OAVTypeModel tmodel) { this.tmodel = tmodel; this.objects = new LinkedHashMap(); this.types = new LinkedHashMap(); this.queue = new ReferenceQueue(); this.generator = new OAVWeakIdGenerator(queue); // this.generator = new OAVNameIdGenerator(); // this.generator = new OAVLongIdGenerator(); this.objectusages = new LinkedHashMap(); // this.objectusages = new IdentityHashMap(); this.rootobjects = new LinkedHashSet(); this.eventhandler = new OAVEventHandler(this); // this.nocheck = true; }
/** * Add a new state listener. * @param listener The state listener. * @param bunch True, for adding a bunch listener. */ public void addStateListener(IOAVStateListener listener, boolean bunch) { if(listener==null) throw new RuntimeException("Listener must not null."); eventhandler.addStateListener(listener, bunch); }
/** * Throw collected events and notify the listeners. */ public void notifyEventListeners() { eventhandler.notifyEventListeners(); }
/** * Add a Java object as root object. * @param object The Java object. */ public void addJavaRootObject(Object object) { assert nocheck || !rootobjects.contains(object); this.rootobjects.add(object); OAVJavaType java_type = tmodel.getJavaType(object.getClass()); if(OAVJavaType.KIND_BEAN.equals(java_type.getKind())) registerValue(java_type, object); eventhandler.objectAdded(object, java_type, true); }
/** * Drop a Java object from root objects. * @param object The Java object. */ public void removeJavaRootObject(Object object) { assert nocheck || rootobjects.contains(object); this.rootobjects.remove(object); OAVJavaType java_type = tmodel.getJavaType(object.getClass()); if(OAVJavaType.KIND_BEAN.equals(java_type.getKind())) deregisterValue(object); eventhandler.objectRemoved(object, java_type); }
eventhandler.objectModified(id, getType(id), attribute, null, value);
public void propertyChange(PropertyChangeEvent evt) { OAVAttributeType attr = type.getAttributeType(evt.getPropertyName()); eventhandler.beanModified(evt.getSource(), type, attr, evt.getOldValue(), evt.getNewValue()); } };
/** * Remove a state listener. * @param listener The state listener. */ public void removeStateListener(IOAVStateListener listener) { if(listener==null) throw new RuntimeException("Listener must not null."); eventhandler.removeStateListener(listener); }
added_objects = createIdSet(); added_objects.add(id);
notifyOneEvent(abeanevents[i]); for(int i=0; i<aoavevents.length; i++) notifyOneEvent(aoavevents[i]);
/** * Add a Java object as root object. * @param object The Java object. */ public void addJavaRootObject(Object object) { assert nocheck || !rootobjects.contains(object); this.rootobjects.add(object); OAVJavaType java_type = tmodel.getJavaType(object.getClass()); if(OAVJavaType.KIND_BEAN.equals(java_type.getKind())) registerValue(java_type, object); eventhandler.objectAdded(object, java_type, true); }
/** * Drop a Java object from root objects. * @param object The Java object. */ public void removeJavaRootObject(Object object) { assert nocheck || rootobjects.contains(object); this.rootobjects.remove(object); OAVJavaType java_type = tmodel.getJavaType(object.getClass()); if(OAVJavaType.KIND_BEAN.equals(java_type.getKind())) deregisterValue(object); eventhandler.objectRemoved(object, java_type); }
eventhandler.objectModified(id, getType(id), attribute, null, value);
public void propertyChange(PropertyChangeEvent evt) { OAVAttributeType attr = type.getAttributeType(evt.getPropertyName()); eventhandler.beanModified(evt.getSource(), type, attr, evt.getOldValue(), evt.getNewValue()); } };
/** * Remove a state listener. * @param listener The state listener. */ public void removeStateListener(IOAVStateListener listener) { if(listener==null) throw new RuntimeException("Listener must not null."); eventhandler.removeStateListener(listener); }
removed_objects = createIdSet(); removed_objects.add(id);
notifyOneEvent(abeanevents[i]); for(int i=0; i<aoavevents.length; i++) notifyOneEvent(aoavevents[i]);
/** * Impl of root/non-root object creation. */ protected Object createObject(OAVObjectType type, boolean root) { // #ifndef MIDP assert nocheck || checkTypeDefined(type); // #endif Object ret = generator.createId(this, type); // Map content = new LinkedHashMap(); // objects.put(ret, content); Map content = internalCreateObject(ret); content.put(TYPE, type); // System.out.println("Created object of type: "+type); eventhandler.objectAdded(ret, type, root); if(root) this.rootobjects.add(ret); return ret; }
/** * Drop a Java object from root objects. * @param object The Java object. */ public void removeJavaRootObject(Object object) { // #ifndef MIDP assert nocheck || !generator.isId(object); assert nocheck || rootobjects.contains(object) && javaobjects.contains(object); // #endif OAVJavaType java_type = tmodel.getJavaType(object.getClass()); if(OAVJavaType.KIND_VALUE.equals(java_type.getKind())) throw new RuntimeException("Value types not supported for Java root objects: "+java_type+", "+object); this.rootobjects.remove(object); if(!objectusages.containsKey(object)) // Todo: java objects in nested states. { javaobjects.remove(object); if(OAVJavaType.KIND_BEAN.equals(java_type.getKind())) deregisterValue(java_type, object); eventhandler.objectRemoved(object, java_type); } }
eventhandler.objectModified(id, getType(id), attribute, value, null); eventhandler.objectModified(id, getType(id), attribute, value, null);