public boolean objectAdded (DEvent event, DObject target)
    {
        ObjectAddedEvent oae = (ObjectAddedEvent)event;
        int oid = oae.getOid();

        // ensure that the target object exists
        if (!_objects.containsKey(oid)) {
            log.info("Rejecting object added event of non-existent object",
                     "refferOid", target.getOid(), "reffedOid", oid);
            return false;
        }

        // get the reference vector for the referenced object. we use bare arrays rather than
        // something like an array list to conserve memory. there will be many objects and
        // references
        Reference[] refs = _refs.get(oid);
        if (refs == null) {
            refs = new Reference[DEFREFVEC_SIZE];
            _refs.put(oid, refs);
        }

        // determine where to add the reference
        Reference ref = new Reference(target.getOid(), oae.getName(), oid);
        int rpos = -1;
        for (int ii = 0; ii < refs.length; ii++) {
            if (ref.equals(refs[ii])) {
                log.warning("Ignoring request to track existing reference " + ref + ".");
                return true;
            } else if (refs[ii] == null && rpos == -1) {
                rpos = ii;
            }
        }

        // expand the refvec if necessary
        if (rpos == -1) {
            Reference[] nrefs = new Reference[refs.length*2];
            System.arraycopy(refs, 0, nrefs, 0, refs.length);
            rpos = refs.length;
            _refs.put(oid, refs = nrefs);
        }

        // finally add the reference
        refs[rpos] = ref;

//        log.info("Tracked reference " + ref + ".");
        return true;
    }
public boolean objectAdded ( DEvent event , DObject target ) { ObjectAddedEvent oae = ( ObjectAddedEvent ) event ; int oid = oae . getOid ( ) ; if ( ! _objects . containsKey ( oid ) ) { log . info ( "Rejecting object added event of non-existent object" , "refferOid" , target . getOid ( ) , "reffedOid" , oid ) ; return false ; } Reference [ ] refs = _refs . get ( oid ) ; if ( refs == null ) { refs = new Reference [ DEFREFVEC_SIZE ] ; _refs . put ( oid , refs ) ; } Reference ref = new Reference ( target . getOid ( ) , oae . getName ( ) , oid ) ; int rpos = - 1 ; for ( int ii = 0 ; ii < refs . length ; ii ++ ) { if ( ref . equals ( refs [ ii ] ) ) { log . warning ( "Ignoring request to track existing reference " + ref + "." ) ; return true ; } else if ( refs [ ii ] == null && rpos == - 1 ) { rpos = ii ; } } if ( rpos == - 1 ) { Reference [ ] nrefs = new Reference [ refs . length * 2 ] ; System . arraycopy ( refs , 0 , nrefs , 0 , refs . length ) ; rpos = refs . length ; _refs . put ( oid , refs = nrefs ) ; } refs [ rpos ] = ref ; return true ; }
Called as a helper for <code>ObjectAddedEvent</code> events. It updates the object/oid list
tracking structures.

@return true if the event should be dispatched, false if it should be aborted.