/* Copyright (c) 2015 OpenPlans - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.platform.resource; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.HashSet; import java.util.List; import java.util.Set; import org.geoserver.platform.resource.ResourceNotification.Event; import org.geoserver.platform.resource.ResourceNotification.Kind; import org.junit.Test; /** * * @author Niels Charlier * */ public class SimpleResourceNotificationDispatcherTest extends AbstractResourceNotificationDispatcherTest { @Override protected ResourceNotificationDispatcher initWatcher() { return new SimpleResourceNotificationDispatcher(); } @Test public void testRenameEvents() { Resource src = store.get("DirA"); Resource dest = store.get("DirB"); List<Event> events = SimpleResourceNotificationDispatcher.createRenameEvents(src, dest); assertEquals(6, events.size()); Set<String> set = new HashSet<String>(); set.add("DirB"); set.add("DirB/FileA1"); set.add("DirB/FileA2"); set.add("DirB/DirC"); set.add("DirB/DirC/FileC1"); set.add("DirB/DirC/FileC2"); for (Event event : events) { String path = event.getPath(); assertEquals(path.equals("DirB") || path.equals("DirB/FileA2") ? Kind.ENTRY_MODIFY : Kind.ENTRY_CREATE, event.getKind()); assertTrue(set.remove(path)); } assertTrue(set.isEmpty()); } @Test public void testDeleteEvents() { Resource res = store.get("DirA"); List<Event> events = SimpleResourceNotificationDispatcher.createEvents(res, Kind.ENTRY_DELETE); assertEquals(6, events.size()); Set<String> set = new HashSet<String>(); set.add("DirA"); set.add("DirA/FileA1"); set.add("DirA/FileA2"); set.add("DirA/DirC"); set.add("DirA/DirC/FileC1"); set.add("DirA/DirC/FileC2"); for (Event event : events) { assertEquals(Kind.ENTRY_DELETE, event.getKind()); assertTrue(set.remove(event.getPath())); } assertTrue(set.isEmpty()); } @Test public void testCreateEvents() { Resource res = store.get("DirD/DirE/DirF/FileQ"); List<Event> events = SimpleResourceNotificationDispatcher.createEvents(res, Kind.ENTRY_CREATE); assertEquals(4, events.size()); Set<String> set = new HashSet<String>(); set.add("DirD"); set.add("DirD/DirE"); set.add("DirD/DirE/DirF"); set.add("DirD/DirE/DirF/FileQ"); for (Event event : events) { assertEquals(Kind.ENTRY_CREATE, event.getKind()); assertTrue(set.remove(event.getPath())); } assertTrue(set.isEmpty()); } }