use of com.tvd12.ezyfoxserver.event.EzyUserAccessAppEvent in project ezyfox-server by youngmonkeys.
the class EzySimpleZoneContextTest method normalCaseTest.
@SuppressWarnings("unchecked")
@Test
public void normalCaseTest() {
EzyServerContext parent = mock(EzyServerContext.class);
EzySimpleZoneSetting zoneSetting = new EzySimpleZoneSetting();
zoneSetting.setName("test");
EzySimpleZone zone = new EzySimpleZone();
zone.setUserManager(mock(EzyZoneUserManager.class));
zone.setSetting(zoneSetting);
EzySimpleZoneContext context = new EzySimpleZoneContext();
context.setZone(zone);
context.setParent(parent);
context.init();
assert context.get(EzyBroadcastEvent.class) != null;
Asserts.assertNull(context.get(Void.class));
context.addCommand(ExCommand.class, ExCommand::new);
assert context.cmd(ExCommand.class) != null;
Asserts.assertNull(context.cmd(Void.class));
context.broadcast(EzyEventType.SERVER_INITIALIZING, new EzySimpleServerInitializingEvent(), true);
context.broadcastApps(EzyEventType.SERVER_READY, new EzySimpleServerReadyEvent(), true);
EzySimpleUser user = new EzySimpleUser();
user.setName("dungtv");
EzyUserAccessAppEvent accessAppEvent = new EzySimpleUserAccessAppEvent(user);
context.broadcastApps(EzyEventType.USER_ACCESS_APP, accessAppEvent, "dungtv", true);
context.broadcastApps(EzyEventType.USER_ACCESS_APP, accessAppEvent, user, true);
context.broadcastApps(EzyEventType.USER_ACCESS_APP, accessAppEvent, EzyPredicates.ALWAYS_TRUE, true);
// noinspection EqualsWithItself
assert context.equals(context);
EzyZoneContext zoneContext2 = mock(EzyZoneContext.class);
EzySimpleZone zone2 = new EzySimpleZone();
when(zoneContext2.getZone()).thenReturn(zone2);
assert !zoneContext2.equals(context);
System.out.println(context.hashCode() + ", " + context.hashCode());
assert context.hashCode() == context.hashCode();
EzyResponse response = mock(EzyResponse.class);
EzySession recipient = spy(EzyAbstractSession.class);
context.send(response, recipient, false);
context.send(response, Lists.newArrayList(recipient), false);
context.stream(new byte[0], recipient);
context.stream(new byte[0], Lists.newArrayList(recipient));
context.destroy();
}
use of com.tvd12.ezyfoxserver.event.EzyUserAccessAppEvent in project ezyfox-server by youngmonkeys.
the class EzyAccessAppController method doHandle.
protected void doHandle(EzyServerContext ctx, EzyAccessAppRequest request) {
EzyUser user = request.getUser();
int zoneId = user.getZoneId();
EzyAccessAppParams params = request.getParams();
EzyZoneContext zoneContext = ctx.getZoneContext(zoneId);
EzyAppContext appContext = zoneContext.getAppContext(params.getAppName());
EzyApplication app = appContext.getApp();
EzyAppSetting appSetting = app.getSetting();
EzyAppUserManager appUserManger = app.getUserManager();
EzySession session = request.getSession();
String username = user.getName();
Lock lock = appUserManger.getLock(username);
lock.lock();
try {
boolean hasNotAccessed = !appUserManger.containsUser(user);
if (hasNotAccessed) {
checkAppUserMangerAvailable(appUserManger);
}
EzyUserAccessAppEvent accessAppEvent = new EzySimpleUserAccessAppEvent(user);
appContext.handleEvent(EzyEventType.USER_ACCESS_APP, accessAppEvent);
if (hasNotAccessed) {
addUser(appUserManger, user, appSetting);
EzyUserAccessedAppEvent accessedAppEvent = new EzySimpleUserAccessedAppEvent(user);
appContext.handleEvent(EzyEventType.USER_ACCESSED_APP, accessedAppEvent);
}
EzyArray output = accessAppEvent.getOutput();
EzyResponse accessAppResponse = newAccessAppResponse(appSetting, output);
ctx.send(accessAppResponse, session, false);
} finally {
lock.unlock();
appUserManger.removeLock(username);
}
}
Aggregations