@Override public WorkspaceInfo createWorkspace() { return delegate.createWorkspace(); }
/** Given a namespace and user, returns it back if the user can access it, null otherwise */ protected <T extends NamespaceInfo> T checkAccess( Authentication user, T ns, MixedModeBehavior mixedModeBehavior) { if (ns == null) return null; // route the security check thru the associated workspace info WorkspaceInfo ws = delegate.getWorkspaceByName(ns.getPrefix()); if (ws == null) { // temporary workaround, build a fake workspace, as we're probably // in between a change of workspace/namespace name ws = delegate.getFactory().createWorkspace(); ws.setName(ns.getPrefix()); } WorkspaceInfo info = checkAccess(user, ws, mixedModeBehavior); if (info == null) return null; else return ns; }
@Test public void testAddWorkspace() throws Exception { File ws = new File(testData.getDataDirectoryRoot(), "workspaces/acme"); assertFalse(ws.exists()); WorkspaceInfo acme = catalog.getFactory().createWorkspace(); acme.setName("acme"); catalog.add(acme); assertTrue(ws.exists()); }
@Test public void testChangeDataStoreWorkspace() throws Exception { testAddDataStore(); File f1 = new File(testData.getDataDirectoryRoot(), "workspaces/acme/foostore/datastore.xml"); assertTrue(f1.exists()); WorkspaceInfo nws = catalog.getFactory().createWorkspace(); nws.setName("topp"); catalog.add(nws); DataStoreInfo ds = catalog.getDataStoreByName("acme", "foostore"); ds.setWorkspace(nws); catalog.save(ds); assertFalse(f1.exists()); File f2 = new File(testData.getDataDirectoryRoot(), "workspaces/topp/foostore/datastore.xml"); assertTrue(f2.exists()); }
@Test public void testAutoCascadeDefaultWorksapce() { CatalogFactory factory = catalog.getFactory(); WorkspaceInfo ws1 = factory.createWorkspace(); ws1.setName("ws1Name"); WorkspaceInfo ws2 = factory.createWorkspace(); ws2.setName("ws2Name"); catalog.add(ws1); catalog.add(ws2); assertEquals(ws1, catalog.getDefaultWorkspace()); catalog.remove(ws1); assertEquals(ws2, catalog.getDefaultWorkspace()); }
@Test public void testExceptionThrowingListener() throws Exception { ExceptionThrowingListener l = new ExceptionThrowingListener(); catalog.addListener(l); l.throwCatalogException = false; WorkspaceInfo ws = catalog.getFactory().createWorkspace(); ws.setName("foo"); // no exception thrown back catalog.add(ws); l.throwCatalogException = true; ws = catalog.getFactory().createWorkspace(); ws.setName("bar"); try { catalog.add(ws); fail(); } catch (CatalogException ce) { // good } }
@Test public void testAddWorkspace() { assertTrue(catalog.getWorkspaces().isEmpty()); catalog.add(ws); assertEquals(1, catalog.getWorkspaces().size()); WorkspaceInfo ws2 = catalog.getFactory().createWorkspace(); try { catalog.getWorkspaces().add(ws2); fail("adding directly should throw an exception"); } catch (Exception e) { } try { catalog.add(ws2); fail("addign without a name should throw an exception"); } catch (Exception e) { } ws2.setName("ws2"); catalog.add(ws2); }
@Test public void testAddLayerGroupWithWorkspaceWithResourceFromAnotherWorkspace() { WorkspaceInfo ws = catalog.getFactory().createWorkspace(); ws.setName("other"); catalog.add(ws); LayerGroupInfo lg2 = catalog.getFactory().createLayerGroup(); lg2.setWorkspace(ws); lg2.setName("layerGroup2"); lg2.getLayers().add(l); lg2.getStyles().add(s); try { catalog.add(lg2); fail(); } catch (IllegalArgumentException expected) { } }
private WMSStoreInfo buildWmsStore() { Catalog catalog = new CatalogImpl(); CatalogFactory cFactory = catalog.getFactory(); WorkspaceInfo ws = cFactory.createWorkspace(); ws.setName("foo"); WMSStoreInfo wms = cFactory.createWebMapServer(); wms.setName("bar"); wms.setWorkspace(ws); wms.setCapabilitiesURL("http://fake.host/wms?request=GetCapabilities&service=wms"); wms.setUsername("user"); wms.setPassword("password"); return wms; } }
@Test public void testOldJTSBindingConversion() throws Exception { Catalog catalog = new CatalogImpl(); CatalogFactory cFactory = catalog.getFactory(); WorkspaceInfo ws = cFactory.createWorkspace(); ws.setName("foo"); catalog.add(ws); NamespaceInfo ns = cFactory.createNamespace(); ns.setPrefix("acme"); ns.setURI("http://acme.org"); catalog.add(ns); DataStoreInfo ds = cFactory.createDataStore(); ds.setWorkspace(ws); ds.setName("foo"); catalog.add(ds); persister.setCatalog(catalog); FeatureTypeInfo ft = persister.load( getClass().getResourceAsStream("/org/geoserver/config/old_jts_binding.xml"), FeatureTypeInfo.class); assertNotNull(ft); assertEquals( org.locationtech.jts.geom.LineString.class, ft.getAttributes().get(0).getBinding()); }
@Test public void testDataStore() throws Exception { Catalog catalog = new CatalogImpl(); CatalogFactory cFactory = catalog.getFactory(); WorkspaceInfo ws = cFactory.createWorkspace(); ws.setName("foo"); DataStoreInfo ds1 = cFactory.createDataStore(); ds1.setName("bar"); ds1.setWorkspace(ws); ByteArrayOutputStream out = out(); persister.save(ds1, out); DataStoreInfo ds2 = persister.load(in(out), DataStoreInfo.class); assertEquals("bar", ds2.getName()); assertNotNull(ds2.getWorkspace()); assertEquals("foo", ds2.getWorkspace().getId()); Document dom = dom(in(out)); assertEquals("dataStore", dom.getDocumentElement().getNodeName()); }
@Test public void testCoverageStore() throws Exception { Catalog catalog = new CatalogImpl(); CatalogFactory cFactory = catalog.getFactory(); WorkspaceInfo ws = cFactory.createWorkspace(); ws.setName("foo"); CoverageStoreInfo cs1 = cFactory.createCoverageStore(); cs1.setName("bar"); cs1.setWorkspace(ws); ByteArrayOutputStream out = out(); persister.save(cs1, out); CoverageStoreInfo ds2 = persister.load(in(out), CoverageStoreInfo.class); assertEquals("bar", ds2.getName()); assertNotNull(ds2.getWorkspace()); assertEquals("foo", ds2.getWorkspace().getId()); Document dom = dom(in(out)); assertEquals("coverageStore", dom.getDocumentElement().getNodeName()); }
@Test public void testChangeDataStoreWorkspace() throws Exception { addDataStore(); WorkspaceInfo ws2 = catalog.getFactory().createWorkspace(); ws2.setName("newWorkspace"); catalog.add(ws2); ws2 = catalog.getWorkspaceByName(ws2.getName()); DataStoreInfo ds2 = catalog.getDataStoreByName(ds.getName()); ds2.setWorkspace(ws2); catalog.save(ds2); assertNull(catalog.getDataStoreByName(ws, ds2.getName())); assertNotNull(catalog.getDataStoreByName(ws2, ds2.getName())); }
@Test public void testDataStoreReferencedByName() throws Exception { Catalog catalog = new CatalogImpl(); CatalogFactory cFactory = catalog.getFactory(); WorkspaceInfo ws = cFactory.createWorkspace(); ws.setName("foo"); DataStoreInfo ds1 = cFactory.createDataStore(); ds1.setName("bar"); ds1.setWorkspace(ws); catalog.detach(ds1); ((DataStoreInfoImpl) ds1).setId(null); ByteArrayOutputStream out = out(); XStreamPersister persister = new XStreamPersisterFactory().createXMLPersister(); persister.setReferenceByName(true); persister.save(ds1, out); DataStoreInfo ds2 = persister.load(in(out), DataStoreInfo.class); assertEquals("bar", ds2.getName()); assertNotNull(ds2.getWorkspace()); assertEquals("foo", ds2.getWorkspace().getId()); Document dom = dom(in(out)); assertEquals("dataStore", dom.getDocumentElement().getNodeName()); }
@Test public void testCoverageStoreReferencedByName() throws Exception { Catalog catalog = new CatalogImpl(); CatalogFactory cFactory = catalog.getFactory(); WorkspaceInfo ws = cFactory.createWorkspace(); ws.setName("foo"); CoverageStoreInfo cs1 = cFactory.createCoverageStore(); cs1.setName("bar"); cs1.setWorkspace(ws); catalog.detach(cs1); ((CoverageStoreInfoImpl) cs1).setId(null); ByteArrayOutputStream out = out(); XStreamPersister persister = new XStreamPersisterFactory().createXMLPersister(); persister.setReferenceByName(true); persister.save(cs1, out); CoverageStoreInfo ds2 = persister.load(in(out), CoverageStoreInfo.class); assertEquals("bar", ds2.getName()); assertNotNull(ds2.getWorkspace()); assertEquals("foo", ds2.getWorkspace().getId()); Document dom = dom(in(out)); assertEquals("coverageStore", dom.getDocumentElement().getNodeName()); }
@Test public void testWorkspaceStyle() throws Exception { Catalog catalog = new CatalogImpl(); CatalogFactory cFactory = catalog.getFactory(); WorkspaceInfo ws = cFactory.createWorkspace(); ws.setName("foo"); StyleInfo s1 = cFactory.createStyle(); s1.setName("bar"); s1.setFilename("bar.sld"); s1.setWorkspace(ws); ByteArrayOutputStream out = out(); persister.save(s1, out); ByteArrayInputStream in = in(out); StyleInfo s2 = persister.load(in, StyleInfo.class); assertEquals("bar", s2.getName()); assertNotNull(s2.getWorkspace()); assertEquals("foo", s2.getWorkspace().getId()); Document dom = dom(in(out)); assertEquals("style", dom.getDocumentElement().getNodeName()); catalog.add(ws); catalog.add(s2); // Make sure the catalog resolves the workspace assertEquals("foo", s2.getWorkspace().getName()); }
@Test public void testWMSStore() throws Exception { Catalog catalog = new CatalogImpl(); CatalogFactory cFactory = catalog.getFactory(); WorkspaceInfo ws = cFactory.createWorkspace(); ws.setName("foo"); WMSStoreInfo wms1 = cFactory.createWebMapServer(); wms1.setName("bar"); wms1.setWorkspace(ws); wms1.setCapabilitiesURL("http://fake.host/wms?request=GetCapabilities&service=wms"); ByteArrayOutputStream out = out(); persister.save(wms1, out); WMSStoreInfo wms2 = persister.load(in(out), WMSStoreInfo.class); assertEquals("bar", wms2.getName()); assertEquals(WMSStoreInfoImpl.DEFAULT_MAX_CONNECTIONS, wms2.getMaxConnections()); assertEquals(WMSStoreInfoImpl.DEFAULT_CONNECT_TIMEOUT, wms2.getConnectTimeout()); assertEquals(WMSStoreInfoImpl.DEFAULT_READ_TIMEOUT, wms2.getReadTimeout()); assertNotNull(wms2.getWorkspace()); assertEquals("foo", wms2.getWorkspace().getId()); Document dom = dom(in(out)); assertEquals("wmsStore", dom.getDocumentElement().getNodeName()); }
@Test public void testReloadWithLocalServices() throws Exception { // setup a non default workspace WorkspaceInfo ws = getCatalog().getFactory().createWorkspace(); ws.setName("nonDefault"); NamespaceInfo ni = getCatalog().getFactory().createNamespace(); ni.setPrefix("nonDefault"); ni.setURI("http://www.geoserver.org/nonDefault"); getCatalog().add(ws); getCatalog().add(ni); // create a ws specific setting SettingsInfo s = geoServer.getFactory().createSettings(); s.setWorkspace(ws); geoServer.add(s); getGeoServer().reload(); }
@Test public void testModifySettingsChangeWorkspace() throws Exception { testAddSettings(); WorkspaceInfo ws1 = catalog.getWorkspaceByName("acme"); WorkspaceInfo ws2 = catalog.getFactory().createWorkspace(); ws2.setName("foo"); catalog.add(ws2); SettingsInfo settings = getGeoServer().getSettings(ws1); settings.setWorkspace(ws2); getGeoServer().save(settings); File f = catalog.getResourceLoader().find("workspaces", ws1.getName(), "settings.xml"); assertNull(f); f = catalog.getResourceLoader().find("workspaces", ws2.getName(), "settings.xml"); assertNotNull(f); Document dom = dom(f); assertXpathEvaluatesTo(ws2.getId(), "/settings/workspace/id", dom); }
@Test public void testGetStyleByNameWithWorkspace2() throws Exception { addWorkspace(); WorkspaceInfo ws2 = catalog.getFactory().createWorkspace(); ws2.setName("wsName2"); catalog.add(ws2); // add style with same name in each workspace StyleInfo s1 = catalog.getFactory().createStyle(); s1.setName("foo"); s1.setFilename("foo1.sld"); s1.setWorkspace(ws); catalog.add(s1); StyleInfo s2 = catalog.getFactory().createStyle(); s2.setName("foo"); s2.setFilename("foo2.sld"); s2.setWorkspace(ws2); catalog.add(s2); assertEquals(s1, catalog.getStyleByName("foo")); assertEquals(s1, catalog.getStyleByName(ws.getName(), "foo")); assertEquals(s1, catalog.getStyleByName(ws, "foo")); assertEquals(s2, catalog.getStyleByName(ws2.getName(), "foo")); assertEquals(s2, catalog.getStyleByName(ws2, "foo")); }