/** * INTERNAL: * Returns a new DescriptorEventManager for the specified ClassDescriptor. */ public DescriptorEventManager() { this.eventSelectors = newAtomicReferenceArray(NumberOfEvents); this.eventMethods = newAtomicReferenceArray(NumberOfEvents); this.hasAnyEventListeners = false; this.excludeDefaultListeners = false; this.excludeSuperclassListeners = false; }
protected AtomicReferenceArray<String> getEventSelectors() { if (this.eventSelectors == null) { this.eventSelectors = newAtomicReferenceArray(NumberOfEvents); } return eventSelectors; }
protected AtomicReferenceArray<Method> getEventMethods() { //Lazy Initialized to prevent Null Pointer exception after serialization if (this.eventMethods == null) { this.eventMethods = newAtomicReferenceArray(NumberOfEvents); } return eventMethods; }
/** * INTERNAL: * Used to initialize a remote DescriptorEventManager. */ public void remoteInitialization(AbstractSession session) { this.eventMethods = newAtomicReferenceArray(NumberOfEvents); initialize(session); }
/** * INTERNAL: * Clone the manager and its private parts. */ @Override public Object clone() { try { DescriptorEventManager clone = (DescriptorEventManager)super.clone(); clone.setEventSelectors(newAtomicReferenceArray(getEventSelectors())); clone.setEventMethods(newAtomicReferenceArray(getEventMethods())); clone.setEventListeners(getEventListeners()); return clone; } catch (Exception exception) { throw new AssertionError(exception); } }