alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

/*
 * TestListeners.java
 * NetBeans JUnit based test
 *
 * Created on 5. duben 2002, 17:00
 */

package org.netbeans.mdr.test;

import java.util.Iterator;
import java.util.Collection;

import junit.framework.*;

import org.netbeans.mdr.handlers.BaseObjectHandler;
import org.netbeans.mdr.NBMDRepositoryImpl;

import org.netbeans.api.mdr.MDRManager;
import org.netbeans.api.mdr.MDRepository;
import org.netbeans.api.mdr.CreationFailedException;

import org.netbeans.api.mdr.events.*;

import javax.jmi.reflect.*;
import javax.jmi.model.*;

/**
 *
 * @author mk97936
 */
public class MDRTestAssociationPreEvents extends MDREventsTestCase implements MDRPreChangeListener {
    
    private static final String PKG_NAME = "TEST_MOF";

    private EventsList eventsList = new EventsList();
    
    public MDRTestAssociationPreEvents(java.lang.String testName) {
        super(testName);
    }
    
    protected void setUp() {
        super.setUp();
        ((MDRChangeSource) repository).addListener(this);
    }
    
    protected void tearDown() {
        super.tearDown();
        ((MDRChangeSource) repository).removeListener(this);
    }
    
    // -------------------------------------------------------------------------
    
    public void testAddAssociation() {
        
        RefPackage testMOFPackage = createMOFExtent(PKG_NAME);

        EventsDataGenerator generator = new EventsDataGenerator(repository.getExtent(PKG_NAME));
        
        Collection allMOFAssociations = testMOFPackage.refAllAssociations();
        Iterator iterAssoc = allMOFAssociations.iterator();
        while (iterAssoc.hasNext()) {
            RefAssociation assocProxy = (RefAssociation) iterAssoc.next();
            Association metaAssoc = (Association) assocProxy.refMetaObject();
            eventsList.addPattern2(metaAssoc.getName(), EventsList._PLANNED | EventsList._ADD | EventsList._CHANGED, System.currentTimeMillis());
            java.util.List ends = generator.generateAssociation(assocProxy, metaAssoc, null, true);
            // !@#$%^& wait until event arives
            for (int i = 0; i < 20; i++) {
                try { Thread.currentThread().sleep(100); } 
                    catch (InterruptedException ie) { }
            }
            if (ends != null) {
                assertTrue(eventsList.checkEvents(metaAssoc.getName(), EventsList._PLANNED | EventsList._ADD | EventsList._CHANGED));
            }
            eventsList.clear();
        }
        
    }
    
    public void testRemoveAssociation() {
        
        RefPackage testMOFPackage = createMOFExtent(PKG_NAME);

        EventsDataGenerator generator = new EventsDataGenerator(repository.getExtent(PKG_NAME));
        
        Collection allMOFAssociations = testMOFPackage.refAllAssociations();
        Iterator iterAssoc = allMOFAssociations.iterator();
        while (iterAssoc.hasNext()) {
            RefAssociation assocProxy = (RefAssociation) iterAssoc.next();
            Association metaAssoc = (Association) assocProxy.refMetaObject();
            eventsList.addPattern2(metaAssoc.getName(), EventsList._PLANNED | EventsList._ADD | EventsList._CHANGED, System.currentTimeMillis());
            java.util.List ends = generator.generateAssociation(assocProxy, metaAssoc, null, true);
            // !@#$%^& wait until event arives
            for (int i = 0; i < 20; i++) {
                try { Thread.currentThread().sleep(100); } 
                    catch (InterruptedException ie) { }
            }
            if (ends != null) {
                assertTrue(eventsList.checkEvents(metaAssoc.getName(), EventsList._PLANNED | EventsList._ADD | EventsList._CHANGED));
            }
            eventsList.clear();
            
            if (ends != null) {                
                Collection links = assocProxy.refAllLinks();
                Object [] linksArray = links.toArray();
                if (linksArray.length >= 1) {
                    RefAssociationLink link = (RefAssociationLink) linksArray[0];
                    eventsList.addPattern2(metaAssoc.getName(), EventsList._PLANNED | EventsList._REMOVE | EventsList._CHANGED, System.currentTimeMillis());
                    assocProxy.refRemoveLink(link.refFirstEnd(), link.refSecondEnd());
                    // !@#$%^& wait until event arives
                    for (int i = 0; i < 20; i++) {
                        try { Thread.currentThread().sleep(100); }
                            catch (InterruptedException ie) { }
                    }
                    assertTrue(eventsList.checkEvents(metaAssoc.getName(), EventsList._PLANNED | EventsList._REMOVE | EventsList._CHANGED));
                    eventsList.clear();
                } else {
                    fail("Association contained no link!");
                }
            }
        }
        
    }
    
    // -------------------------------------------------------------------------
    
    public void change(MDRChangeEvent e) {
        assertEquals("Wrong order of events!", eventsQueue.getFirst(), e);
        eventsQueue.removeFirst();
        processEvent(e, CHANGED);
    }
    
    public void changeCancelled(MDRChangeEvent e) {
        assertEquals("Wrong order of events!", eventsQueue.getFirst(), e);
        eventsQueue.removeFirst();
        processEvent(e, CANCELED);
    }
    
    public void plannedChange(MDRChangeEvent e) {
        eventsQueue.add(e);
        processEvent(e, PLANNED);
    }
    
    private void processEvent(MDRChangeEvent e, int type) {
        
        if (e.isOfType(AssociationEvent.EVENTMASK_ASSOCIATION)) { // AssociationEvent
            
            // EVENT_ASSOCIATION_ADD
            if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_ADD) && (type == PLANNED)) {
                eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(), 
                                    e, System.currentTimeMillis(), EventsList._ADD | EventsList._PLANNED);
            } else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_ADD) && (type == CHANGED)) {
                eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(), 
                                    e, System.currentTimeMillis(), EventsList._ADD | EventsList._CHANGED);
            } else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_ADD) && (type == CANCELED)) {
                eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(), 
                                    e, System.currentTimeMillis(), EventsList._ADD | EventsList._CANCELED);
            }
            // EVENT_ASSOCIATION_SET
            else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_SET) && (type == PLANNED)) {
                eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(), 
                                    e, System.currentTimeMillis(), EventsList._SET | EventsList._PLANNED);
            } else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_SET) && (type == CHANGED)) {
                eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(), 
                                    e, System.currentTimeMillis(), EventsList._SET | EventsList._CHANGED);
            } else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_SET) && (type == CANCELED)) {
                eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(), 
                                    e, System.currentTimeMillis(), EventsList._SET | EventsList._CANCELED);
            }
            // EVENT_ASSOCIATION_REMOVE
            else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_REMOVE) && (type == PLANNED)) {
                eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(), 
                                    e, System.currentTimeMillis(), EventsList._REMOVE | EventsList._PLANNED);
            } else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_REMOVE) && (type == CHANGED)) {
                eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(), 
                                    e, System.currentTimeMillis(), EventsList._REMOVE | EventsList._CHANGED);
            } else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_REMOVE) && (type == CANCELED)) {
                eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(), 
                                    e, System.currentTimeMillis(), EventsList._REMOVE | EventsList._CANCELED);
            }
            
        }
        
    }
    
}
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.