ServerRegistryTest.java :  » IDE-Netbeans » server » org » netbeans » modules » server » Java Open Source

Java Open Source » IDE Netbeans » server 
server » org » netbeans » modules » server » ServerRegistryTest.java
/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common
 * Development and Distribution License("CDDL") (collectively, the
 * "License"). You may not use this file except in compliance with the
 * License. You can obtain a copy of the License at
 * http://www.netbeans.org/cddl-gplv2.html
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
 * specific language governing permissions and limitations under the
 * License.  When distributing the software, include this License Header
 * Notice in each file and include the License file at
 * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Sun in the GPL Version 2 section of the License file that
 * accompanied this code. If applicable, add the following below the
 * License Header, with the fields enclosed by brackets [] replaced by
 * your own identifying information:
 * "Portions Copyrighted [year] [name of copyright owner]"
 *
 * If you wish your version of this file to be governed by only the CDDL
 * or only the GPL Version 2, indicate your decision by adding
 * "[Contributor] elects to include this software in this distribution
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
 * single choice of license, a recipient has the option to distribute
 * your version of this file under either the CDDL, the GPL Version 2 or
 * to extend the choice of license to its licensees as provided above.
 * However, if you add GPL Version 2 code and therefore, elected the GPL
 * Version 2 license, then the option applies only if the new code is
 * made subject to such option by the copyright holder.
 *
 * Contributor(s):
 *
 * Portions Copyrighted 2007 Sun Microsystems, Inc.
 */

package org.netbeans.modules.server;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.netbeans.api.server.ServerInstance;
import org.netbeans.junit.NbTestCase;
import org.netbeans.spi.server.ServerInstanceProvider;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.filesystems.Repository;
import org.openide.modules.ModuleInfo;
import org.openide.util.Lookup;

/**
 *
 * @author Petr Hejl
 */
public class ServerRegistryTest extends NbTestCase {

    public ServerRegistryTest(String name) {
        super(name);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        Lookup.getDefault().lookup(ModuleInfo.class);

        FileObject servers = Repository.getDefault().getDefaultFileSystem().getRoot()
                .getFileObject(ServerRegistry.SERVERS_PATH);
        FileObject testProvider = FileUtil.createData(servers, "TestProvider1.instance"); // NOI18N

        testProvider.setAttribute("instanceOf", ServerInstanceProvider.class.getName()); // NOI18N
        testProvider.setAttribute("instanceCreate", new TestInstanceProvider()); // NOI18N
    }

    public void testEmptyProvider() throws IOException {
        assertEquals(1, ServerRegistry.getInstance().getProviders().size());

        ServerInstanceProvider provider = ServerRegistry.getInstance().getProviders().iterator().next();
        assertTrue(provider instanceof TestInstanceProvider);
        ((TestInstanceProvider) provider).clean();
        assertTrue(provider.getInstances().isEmpty());
    }

    @SuppressWarnings("unchecked")
    public void testInstanceProvider() throws IOException {
        assertEquals(1, ServerRegistry.getInstance().getProviders().size());

        ServerInstanceProvider provider = ServerRegistry.getInstance().getProviders().iterator().next();
        assertTrue(provider instanceof TestInstanceProvider);
        TestInstanceProvider testProvider = (TestInstanceProvider) provider;
        testProvider.clean();

        TestInstance instance1 = TestInstance.createInstance(testProvider);
        TestInstance instance2 = TestInstance.createInstance(testProvider);

        List<ServerInstance> step1 = new ArrayList<ServerInstance>();
        Collections.addAll(step1, instance1.getCommonInstance());
        List<ServerInstance> step2 = new ArrayList<ServerInstance>();
        Collections.addAll(step2, instance1.getCommonInstance(), instance2.getCommonInstance());

        InstanceListener listener = new InstanceListener(step1, step2,
                step1, Collections.<ServerInstance>emptyList());
        ServerRegistry.getInstance().addChangeListener(listener);

        testProvider.addInstance(instance1.getCommonInstance());
        testProvider.addInstance(instance2.getCommonInstance());
        testProvider.removeInstance(instance2.getCommonInstance());
        testProvider.removeInstance(instance1.getCommonInstance());
    }

    private static class InstanceListener implements ChangeListener {

        private final List<List<ServerInstance>> steps = new ArrayList<List<ServerInstance>>();

        private int stepIndex;

        public InstanceListener(List<ServerInstance>... steps) {
            Collections.addAll(this.steps, steps);
        }

        public void stateChanged(ChangeEvent e) {
            final ServerRegistry registry = (ServerRegistry) e.getSource();

            List<ServerInstance> current = new ArrayList<ServerInstance>();
            for (ServerInstanceProvider provider : registry.getProviders()) {
                current.addAll(provider.getInstances());
            }

            List<ServerInstance> expected = steps.get(stepIndex++);
            assertEquals(expected.size(), current.size());

            for (ServerInstance instance : expected) {
                current.remove(instance);
            }

            assertTrue(current.isEmpty());
        }

    }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.