Package org.geoserver.config.hibernate

Source Code of org.geoserver.config.hibernate.HibernateGeoserverTest$TestListener

package org.geoserver.config.hibernate;

import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import java.util.Map;
import java.util.logging.Logger;
import org.geoserver.catalog.hibernate.HibCatalogImpl;
import org.geoserver.config.LoggingInfo;
import org.geoserver.hibernate.HibTestSupport;
import org.geoserver.config.ConfigurationListener;
import org.geoserver.config.ContactInfo;
import org.geoserver.config.GeoServerInfo;
import org.geoserver.config.ServiceInfo;
import org.geoserver.config.hibernate.beans.GeoServerInfoImplHb;
import org.geoserver.config.impl.ServiceInfoImpl;
import org.geoserver.hibernate.HibBootstrapper;
import org.geoserver.services.hibernate.beans.GMLInfoImplHb;
import org.geoserver.wfs.GMLInfo;
import org.geoserver.wfs.GMLInfo.SrsNameStyle;
import org.geoserver.wfs.WFSInfo;
import org.geotools.util.logging.Logging;

public class HibernateGeoserverTest extends HibTestSupport {

    HibCatalogImpl catalog;

    HibGeoServerImpl geoServer;

    protected void onSetUpBeforeTransaction() throws Exception {
        super.onSetUpBeforeTransaction();

        catalog = (HibCatalogImpl) applicationContext.getBean("catalogTarget");
        geoServer = (HibGeoServerImpl) applicationContext.getBean("configTarget");

    }

    private void removeServices() {
        for (ServiceInfo serviceInfo : geoServer.getServices()) {
            geoServer.remove(serviceInfo);
        }
    }

    public void testGeoServer() {

        GeoServerInfo info = geoServer.getFactory().createGlobal();
        info.setTitle("title");
        geoServer.setGlobal(info);
        assertEquals("Lost title attribute when persisting", "title", info.getTitle());

        GeoServerInfo reloaded = geoServer.getGlobal();
        assertEquals("Lost title attribute when reloading", "title", reloaded.getTitle());

        endTransaction();

        startNewTransaction();

        GeoServerInfo info2 = geoServer.getGlobal();
        assertFalse(info == info2);

        // info = info2;
        assertEquals("Lost title attribute inter transactions", "title", info2.getTitle());

    }

    public void testServices() {
        GeoServerInfo config = geoServer.getFactory().createGlobal();
        geoServer.setGlobal(config);

        removeServices();

        ServiceInfo info = geoServer.getFactory().createService();
        info.setName("foo");
        ((ServiceInfoImpl) info).setId("foo");
        info.setMetadataLink(catalog.getFactory().createMetadataLink());
        info.getMetadataLink().setAbout("about");
        geoServer.add(info);

        info = geoServer.getFactory().createService();
        ((ServiceInfoImpl) info).setId("bar");
        info.setName("bar");
        info.setMetadataLink(catalog.getFactory().createMetadataLink());
        info.getMetadataLink().setAbout("about");
        geoServer.add(info);

        endTransaction();

        startNewTransaction();
        Collection services = geoServer.getServices();
        assertEquals(2, services.size());

        Iterator i = services.iterator();
        info = (ServiceInfo) i.next();
        assertEquals("foo", info.getName());
        assertNotNull(info.getGeoServer());

        info = (ServiceInfo) i.next();
        assertEquals("bar", info.getName());
        assertNotNull(info.getGeoServer());
    }

    public void testGlobal() throws Exception {
        GeoServerInfo global1 = geoServer.getFactory().createGlobal();
        global1.setTitle("test global "
                + DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.FULL).format(
                        new Date()));

        geoServer.setGlobal(global1);

        endTransaction();
        startNewTransaction();

        assertEquals(global1, geoServer.getGlobal());

        endTransaction();
        startNewTransaction();

        GeoServerInfo global2 = geoServer.getFactory().createGlobal();
        global2.setTitle("subst'ed global "
                + DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.FULL).format(
                        new Date()));

        global2.setAdminPassword("secret");
        ContactInfo contactInfo = geoServer.getFactory().createContact();
        contactInfo.setAddress("the address");
        contactInfo.setAddressCity("the city");
        global2.setContact(contactInfo);
        geoServer.setGlobal(global2);

        endTransaction();
        startNewTransaction();

        GeoServerInfo globalZ = geoServer.getGlobal();

        String globalDebugDiff = ((GeoServerInfoImplHb) global2).getFirstDiff(globalZ);
        if (globalDebugDiff != null)
            Logging.getLogger(this.getClass()).severe("Globals do not match: " + globalDebugDiff);

        assertEquals(global2, globalZ);

        ContactInfo contactInfoZ = globalZ.getContact();
        assertEquals("Contacts differ", global2.getContact(), contactInfoZ);
        // assertEquals(global2, globalZ);
    }

    public void testModifyGlobal() throws Exception {
        GeoServerInfo global = geoServer.getFactory().createGlobal();
        geoServer.setGlobal(global);

        GeoServerInfo g1 = geoServer.getGlobal();
        assertNull(g1.getAdminPassword());

        g1.setAdminPassword("newAdminPassword");
        geoServer.save(g1);

        GeoServerInfo g2 = geoServer.getGlobal();
        assertEquals("newAdminPassword", g2.getAdminPassword());
    }

    public void testAddService() throws Exception {
        ServiceInfo service = geoServer.getFactory().createService();
        service.setName("testAddService");

        try {
            geoServer.add(service);
            fail("adding without id should throw exception");
        } catch (Exception e) {
            assertTrue(true);
        }

        ((ServiceInfoImpl) service).setId("id");
        geoServer.add(service);

        ServiceInfo s2 = geoServer.getFactory().createService();
        ((ServiceInfoImpl) s2).setId("id");
        s2.setName("testAddService2");

        try {
            geoServer.add(s2);
            fail("adding service with duplicate id should throw exception");
        } catch (Exception e) {
            assertTrue(true);
        }

        ServiceInfo s = geoServer.getServiceByName("testAddService", ServiceInfo.class);
        assertNotNull(s);
        assertEquals(service, s);
    }

    public void testModifyService() throws Exception {
        ServiceInfo service = geoServer.getFactory().createService();
        ((ServiceInfoImpl) service).setId("testModifyServiceID");
        service.setName("testModifyService");
        service.setTitle("bar");

        geoServer.add(service);

        ServiceInfo s1 = geoServer.getServiceByName("testModifyService", ServiceInfo.class);
        assertEquals("bar", s1.getTitle());

        s1.setTitle("changed");
        geoServer.save(s1);

        ServiceInfo s2 = geoServer.getServiceByName("testModifyService", ServiceInfo.class);

        assertEquals("changed", s2.getTitle());
    }


    public void testWFS() throws Exception {
        removeServices();

        HibBootstrapper bootstrapper = new HibBootstrapper(catalog, geoServer.getProxy());
        bootstrapper.createDefaultNamespace();
        bootstrapper.createDefaultWorkspace();
        bootstrapper.createBaseObjects();

       
        // WS should already be loaded
        WFSInfo wfs = (WFSInfo)geoServer.getService("wfs");
        assertNotNull(wfs);

        Map<WFSInfo.Version,GMLInfo> gml = wfs.getGML();
//
//
//        gml.setSrsNameStyle(SrsNameStyle.NORMAL);
//        wfs.getGML().put(WFSInfo.Version.V_10, gml);
//
//        // gml3
//        gml = new GMLInfoImplHb();
//        gml.setSrsNameStyle(SrsNameStyle.URN);
//        wfs.getGML().put(WFSInfo.Version.V_11, gml);
//        wfs.setGeoServer(serviceCatalog);

    }

    /**
     * todo: we're not firing events
     *
     * @throws Exception
     */
    public void _testGlobalEvents() throws Exception {
        TestListener tl = new TestListener();
        geoServer.addListener(tl);

        GeoServerInfo global = geoServer.getFactory().createGlobal();
        geoServer.setGlobal(global);

        global = geoServer.getGlobal();
        global.setAdminPassword("foo");
        // global.setMaxFeatures(100);
        global.setOnlineResource("bar");

        assertEquals(0, tl.gPropertyNames.size());
        geoServer.save(global);

        assertEquals(3, tl.gPropertyNames.size());
        assertTrue(tl.gPropertyNames.contains("adminPassword"));
        assertTrue(tl.gPropertyNames.contains("maxFeatures"));
        assertTrue(tl.gPropertyNames.contains("onlineResource"));
    }

    static class TestListener implements ConfigurationListener {

        List<String> gPropertyNames = new ArrayList<String>();

        List<Object> gOldValues = new ArrayList<Object>();

        List<Object> gNewValues = new ArrayList<Object>();

        List<String> sPropertyNames = new ArrayList<String>();

        List<Object> sOldValues = new ArrayList<Object>();

        List<Object> sNewValues = new ArrayList<Object>();

        public void handleGlobalChange(GeoServerInfo global, List<String> propertyNames,
                List<Object> oldValues, List<Object> newValues) {
            gPropertyNames.addAll(propertyNames);
            gOldValues.addAll(oldValues);
            gNewValues.addAll(newValues);
        }

        public void handleServiceChange(ServiceInfo service, List<String> propertyNames,
                List<Object> oldValues, List<Object> newValues) {

            sPropertyNames.addAll(propertyNames);
            sOldValues.addAll(oldValues);
            sNewValues.addAll(newValues);
        }

        public void reloaded() {
            Logger.getLogger(this.getClass().getName()).warning("reloaded() not implemented");
        }

        public void handlePostGlobalChange(GeoServerInfo global) {
            throw new UnsupportedOperationException("Not supported yet.");
        }

        public void handleLoggingChange(LoggingInfo logging, List<String> propertyNames,
                List<Object> oldValues, List<Object> newValues) {
            throw new UnsupportedOperationException("Not supported yet.");
        }

        public void handlePostLoggingChange(LoggingInfo logging) {
            throw new UnsupportedOperationException("Not supported yet.");
        }

        public void handlePostServiceChange(ServiceInfo service) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
    }

}
TOP

Related Classes of org.geoserver.config.hibernate.HibernateGeoserverTest$TestListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.