Commit bb3423fc by Tuomas Riihimäki

EJB:t saa suoraa HostnameFilteriltä hostnamen eikä sitä tarvitse enää kertoa jok…

…a funktiokutsussa uudelleen \o/ Refaktoroitu funktioista Event parametri pois
1 parent cfc80c30
Showing with 1382 additions and 350 deletions
...@@ -28,5 +28,8 @@ ...@@ -28,5 +28,8 @@
<dependent-module archiveName="slf4j-jdk14-1.5.8.jar" deploy-path="/lib" handle="module:/classpath/lib/LanBortal/ExtraLibs/slf4j-jdk14-1.5.8.jar"> <dependent-module archiveName="slf4j-jdk14-1.5.8.jar" deploy-path="/lib" handle="module:/classpath/lib/LanBortal/ExtraLibs/slf4j-jdk14-1.5.8.jar">
<dependency-type>uses</dependency-type> <dependency-type>uses</dependency-type>
</dependent-module> </dependent-module>
<dependent-module archiveName="log4j.jar" deploy-path="/lib" handle="module:/classpath/lib/LanBortal/ExtraLibs/log4j.jar">
<dependency-type>uses</dependency-type>
</dependent-module>
</wb-module> </wb-module>
</project-modules> </project-modules>
No preview for this file type
...@@ -3,11 +3,11 @@ ...@@ -3,11 +3,11 @@
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="src"/>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/LanBortalAuthModuleClient"/> <classpathentry combineaccessrules="false" exported="true" kind="src" path="/LanBortalAuthModuleClient"/>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/com.sun.enterprise.jst.server.runtimeTarget/GlassFish v3 Java EE 6"/> <classpathentry kind="con" path="org.eclipse.jst.server.core.container/com.sun.enterprise.jst.server.runtimeTarget/GlassFish v3 Java EE 6"/>
<classpathentry kind="lib" path="/Users/tuomari/bin/glassfishv31_0507_2/glassfish/lib/appserv-rt.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
<attributes> <attributes>
<attribute name="owner.project.facets" value="java"/> <attribute name="owner.project.facets" value="java"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="lib" path="/Users/tuomari/bin/glassfishv3_b10-07_12_2010/glassfish/lib/appserv-rt.jar"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
...@@ -4,11 +4,11 @@ ...@@ -4,11 +4,11 @@
<source path="ejbModule" includes="" excludes="" output="../LanBortalWeb/as3;"/> <source path="ejbModule" includes="" excludes="" output="../LanBortalWeb/as3;"/>
<project path="LanBortalAuthModuleClient"/> <project path="LanBortalAuthModuleClient"/>
<project path="LanBortalBeansClient"/> <project path="LanBortalBeansClient"/>
<template kind="REMOTE_DESTINATION" uris="class:org/granite/generator/template/remote.gsp;class:org/granite/generator/template/remoteBase.gsp"/>
<template kind="ENTITY" uris="class:org/granite/generator/template/entity.gsp;class:org/granite/generator/template/entityBase.gsp"/>
<template kind="INTERFACE" uris="class:org/granite/generator/template/interface.gsp"/> <template kind="INTERFACE" uris="class:org/granite/generator/template/interface.gsp"/>
<template kind="ENUM" uris="class:org/granite/generator/template/enum.gsp"/> <template kind="ENTITY" uris="class:org/granite/generator/template/entity.gsp;class:org/granite/generator/template/entityBase.gsp"/>
<template kind="REMOTE_DESTINATION" uris="class:org/granite/generator/template/remote.gsp;class:org/granite/generator/template/remoteBase.gsp"/>
<template kind="BEAN" uris="class:org/granite/generator/template/bean.gsp;class:org/granite/generator/template/beanBase.gsp"/> <template kind="BEAN" uris="class:org/granite/generator/template/bean.gsp;class:org/granite/generator/template/beanBase.gsp"/>
<template kind="ENUM" uris="class:org/granite/generator/template/enum.gsp"/>
<transformer type="org.granite.generator.as3.JavaAs3GroovyTransformer"/> <transformer type="org.granite.generator.as3.JavaAs3GroovyTransformer"/>
</gas3> </gas3>
</graniteProperties> </graniteProperties>
\ No newline at end of file
...@@ -25,6 +25,11 @@ ...@@ -25,6 +25,11 @@
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
<buildCommand>
<name>org.axdt.as3.imp.builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec> </buildSpec>
<natures> <natures>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature> <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
...@@ -32,5 +37,6 @@ ...@@ -32,5 +37,6 @@
<nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.granite.builder.granitenature</nature> <nature>org.granite.builder.granitenature</nature>
<nature>org.axdt.as3.imp.nature</nature>
</natures> </natures>
</projectDescription> </projectDescription>
...@@ -13,6 +13,7 @@ import fi.insomnia.bortal.facade.BillFacade; ...@@ -13,6 +13,7 @@ import fi.insomnia.bortal.facade.BillFacade;
import fi.insomnia.bortal.model.Bill; import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.Event; import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
/** /**
* Session Bean implementation class BillBean * Session Bean implementation class BillBean
*/ */
...@@ -30,6 +31,8 @@ public class BillBean implements BillBeanLocal { ...@@ -30,6 +31,8 @@ public class BillBean implements BillBeanLocal {
@EJB @EJB
private AuthorisationBeanLocal authbean; private AuthorisationBeanLocal authbean;
@EJB
private EventBeanLocal eventbean;
/** /**
* Default constructor. * Default constructor.
...@@ -38,13 +41,13 @@ public class BillBean implements BillBeanLocal { ...@@ -38,13 +41,13 @@ public class BillBean implements BillBeanLocal {
// TODO Auto-generated constructor stub // TODO Auto-generated constructor stub
} }
public Bill findById(int eventId, int id) { public Bill findById(int id) {
if (eventId <= 0 && id <= 0) { Event event = eventbean.getCurrentEvent();
if (id <= 0) {
return null; return null;
} }
Bill bill = billFacade.find(eventId, id); Bill bill = billFacade.find(event.getId(), id);
Event event = bill.getEvent(); User currentuser = userBean.getCurrentUser();
User currentuser = userBean.getCurrentUser(event);
if (!currentuser.equals(bill.getUser())) if (!currentuser.equals(bill.getUser()))
if (!authbean.isAuthorised(currentuser, Right.ADMIN, RightType.READ)) { if (!authbean.isAuthorised(currentuser, Right.ADMIN, RightType.READ)) {
...@@ -67,6 +70,4 @@ public class BillBean implements BillBeanLocal { ...@@ -67,6 +70,4 @@ public class BillBean implements BillBeanLocal {
return new PdfPrinter(bill).output(); return new PdfPrinter(bill).output();
} }
} }
...@@ -13,6 +13,7 @@ import fi.insomnia.bortal.facade.UserFacade; ...@@ -13,6 +13,7 @@ import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.Event; import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventOrganiser; import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.utilities.ThreadLocalContextHolder;
/** /**
* Session Bean implementation class EventBean * Session Bean implementation class EventBean
...@@ -73,6 +74,11 @@ public class EventBean implements EventBeanLocal { ...@@ -73,6 +74,11 @@ public class EventBean implements EventBeanLocal {
return settings; return settings;
} }
public Event getCurrentEvent() {
return getEventByHostname((String) ThreadLocalContextHolder.get(HTTP_URL_HOSTNAME));
}
......
...@@ -40,8 +40,8 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote { ...@@ -40,8 +40,8 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote {
public User tryLogin(String username, String password) { public User tryLogin(String username, String password) {
User user = userfacade.findByLogin(username.trim()); User user = userfacade.findByLogin(username.trim());
logger.debug("Trying to login as {}", username); logger.debug("Trying to login as {}", username);
logger.info("Logging test"); logger.info("Logging test");
User ret = null; User ret = null;
if (user != null) { if (user != null) {
if (user.checkPassword(password)) { if (user.checkPassword(password)) {
......
...@@ -19,7 +19,6 @@ import fi.insomnia.bortal.enums.RolePermission; ...@@ -19,7 +19,6 @@ import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.exceptions.EjbPermissionDeniedException; import fi.insomnia.bortal.exceptions.EjbPermissionDeniedException;
import fi.insomnia.bortal.facade.EventMapFacade; import fi.insomnia.bortal.facade.EventMapFacade;
import fi.insomnia.bortal.facade.PlaceFacade; import fi.insomnia.bortal.facade.PlaceFacade;
import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.Place; import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.PlaceGroup; import fi.insomnia.bortal.model.PlaceGroup;
...@@ -49,16 +48,18 @@ public class PlaceMapBean implements PlaceMapBeanLocal { ...@@ -49,16 +48,18 @@ public class PlaceMapBean implements PlaceMapBeanLocal {
private SecurityBeanLocal secubean; private SecurityBeanLocal secubean;
@EJB @EJB
private UserBeanLocal userbean; private UserBeanLocal userbean;
@EJB
private EventBeanLocal eventbean;
public void printPlaceMapToStream(OutputStream outputStream, String filetype, Event event, Integer mapId, List<Integer> placeIds) throws IOException, EjbPermissionDeniedException { public void printPlaceMapToStream(OutputStream outputStream, String filetype, Integer mapId, List<Integer> placeIds) throws IOException, EjbPermissionDeniedException {
User user = userbean.getCurrentUser(event); User user = userbean.getCurrentUser();
if (!userbean.hasPermission(Permission.TICKET_SALES, user, RolePermission.READ)) { if (!userbean.hasPermission(Permission.TICKET_SALES, user, RolePermission.READ)) {
throw new EjbPermissionDeniedException(secubean, user, "User has no right to view placemap ( TICKET_SALES, READ )"); throw new EjbPermissionDeniedException(secubean, user, "User has no right to view placemap ( TICKET_SALES, READ )");
} }
long begin = new Date().getTime(); long begin = new Date().getTime();
Integer eventId = event.getId(); Integer eventId = eventbean.getCurrentEvent().getId();
List<Place> selectedPlaceList = new ArrayList<Place>(); List<Place> selectedPlaceList = new ArrayList<Place>();
...@@ -68,7 +69,7 @@ public class PlaceMapBean implements PlaceMapBeanLocal { ...@@ -68,7 +69,7 @@ public class PlaceMapBean implements PlaceMapBeanLocal {
selectedPlaceList.add(placeFacade.find(eventId, id)); selectedPlaceList.add(placeFacade.find(eventId, id));
} }
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("Fetching map for event {}", event); logger.debug("Fetching map for event {}", eventbean.getCurrentEvent());
logger.debug("Got mapid {}, time {}", mapId, new Date().getTime() - begin); logger.debug("Got mapid {}, time {}", mapId, new Date().getTime() - begin);
} }
...@@ -83,7 +84,7 @@ public class PlaceMapBean implements PlaceMapBeanLocal { ...@@ -83,7 +84,7 @@ public class PlaceMapBean implements PlaceMapBeanLocal {
} }
if (map == null) { if (map == null) {
throw new EjbPermissionDeniedException(secubean, user, "Map not found with id: " + mapId + " and event id: " + event); throw new EjbPermissionDeniedException(secubean, user, "Map not found with id: " + mapId + " and event id: " + eventbean.getCurrentEvent());
} }
logger.debug("Got map object {}", map); logger.debug("Got map object {}", map);
...@@ -138,7 +139,7 @@ public class PlaceMapBean implements PlaceMapBeanLocal { ...@@ -138,7 +139,7 @@ public class PlaceMapBean implements PlaceMapBeanLocal {
return "/PlaceMap" + parameters; return "/PlaceMap" + parameters;
} }
public long selectablePlaceCount(User user, Event currentEvent) { public long selectablePlaceCount(User user) {
return placeFacade.count(currentEvent); return placeFacade.count(eventbean.getCurrentEvent());
} }
} }
...@@ -34,6 +34,7 @@ import fi.insomnia.bortal.model.Event; ...@@ -34,6 +34,7 @@ import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.Place; import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.utilities.ThreadLocalContextHolder;
import fi.insomnia.bortal.utilities.apachecodec.binary.Base64; import fi.insomnia.bortal.utilities.apachecodec.binary.Base64;
/** /**
...@@ -51,10 +52,6 @@ public class TestDataBean implements TestDataBeanLocal { ...@@ -51,10 +52,6 @@ public class TestDataBean implements TestDataBeanLocal {
@EJB @EJB
private EventMapFacade eventMapFacade; private EventMapFacade eventMapFacade;
@EJB @EJB
private EventStatusBeanLocal eventStatusBean;
@EJB
private EventOrganiserFacade eventOrganiserFacade;
@EJB
private EventBeanLocal eventBean; private EventBeanLocal eventBean;
@EJB @EJB
private UserFacade userFacade; private UserFacade userFacade;
...@@ -81,8 +78,8 @@ public class TestDataBean implements TestDataBeanLocal { ...@@ -81,8 +78,8 @@ public class TestDataBean implements TestDataBeanLocal {
} }
public void writeMap(Event e, long bytes) { public void writeMap( long bytes) {
EventMap map = new EventMap(e); EventMap map = new EventMap(eventBean.getCurrentEvent());
map.setName("test" + bytes); map.setName("test" + bytes);
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (int i = 0; i < bytes; ++i) { for (int i = 0; i < bytes; ++i) {
...@@ -157,8 +154,8 @@ public class TestDataBean implements TestDataBeanLocal { ...@@ -157,8 +154,8 @@ public class TestDataBean implements TestDataBeanLocal {
return u; return u;
} }
public Bill createBill(Event e, User u) { public Bill createBill( User u) {
Bill b = new Bill(e); Bill b = new Bill(eventBean.getCurrentEvent());
b.setUser(u); b.setUser(u);
b.setAddr1("Kalle Kävijä"); b.setAddr1("Kalle Kävijä");
b.setAddr2("co / Pelivieroitus Ry"); b.setAddr2("co / Pelivieroitus Ry");
...@@ -205,7 +202,8 @@ public class TestDataBean implements TestDataBeanLocal { ...@@ -205,7 +202,8 @@ public class TestDataBean implements TestDataBeanLocal {
return bl; return bl;
} }
public EventMap generateTestMap(Event event) { public EventMap generateTestMap() {
Event event = eventBean.getCurrentEvent();
try { try {
logger.info("Generating Test Map for event: " + event); logger.info("Generating Test Map for event: " + event);
EventMap map = new EventMap(event); EventMap map = new EventMap(event);
...@@ -233,7 +231,7 @@ public class TestDataBean implements TestDataBeanLocal { ...@@ -233,7 +231,7 @@ public class TestDataBean implements TestDataBeanLocal {
stream.close(); stream.close();
String str = Base64.encodeBase64String(bytes); String str = Base64.encodeBase64String(bytes);
logger.debug("Saving image with {} base64 encoded chars", str.length()); logger.debug("Saving image with {} base64 encoded chars", str.length());
map.setMapData(str ); map.setMapData(str);
map.setName("test0"); map.setName("test0");
eventMapFacade.create(map); eventMapFacade.create(map);
...@@ -289,7 +287,8 @@ public class TestDataBean implements TestDataBeanLocal { ...@@ -289,7 +287,8 @@ public class TestDataBean implements TestDataBeanLocal {
} }
@Override @Override
public void generateTestCompos(Event event) { public void generateTestCompos() {
Event event = eventBean.getCurrentEvent();
Compo compo = new Compo(event); Compo compo = new Compo(event);
compo.setName("Test compo"); compo.setName("Test compo");
compo.setHoldVoting(false); compo.setHoldVoting(false);
...@@ -313,4 +312,9 @@ public class TestDataBean implements TestDataBeanLocal { ...@@ -313,4 +312,9 @@ public class TestDataBean implements TestDataBeanLocal {
Query q = em.createQuery("delete from EventMap"); Query q = em.createQuery("delete from EventMap");
q.executeUpdate(); q.executeUpdate();
} }
public void contextTest() {
logger.debug("Hostname: {}",ThreadLocalContextHolder.get("HTTP_URL_HOSTNAME"));
}
} }
...@@ -11,13 +11,13 @@ import javax.ejb.EJB; ...@@ -11,13 +11,13 @@ import javax.ejb.EJB;
import javax.ejb.LocalBean; import javax.ejb.LocalBean;
import javax.ejb.SessionContext; import javax.ejb.SessionContext;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.enterprise.deploy.spi.Target;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.Permission; import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission; import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.exceptions.EjbPermissionDeniedException;
import fi.insomnia.bortal.facade.RoleFacade; import fi.insomnia.bortal.facade.RoleFacade;
import fi.insomnia.bortal.facade.UserFacade; import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.AccessRight; import fi.insomnia.bortal.model.AccessRight;
...@@ -42,11 +42,18 @@ public class UserBean implements UserBeanLocal { ...@@ -42,11 +42,18 @@ public class UserBean implements UserBeanLocal {
private UserFacade userFacade; private UserFacade userFacade;
@Resource @Resource
private SessionContext context; private SessionContext context;
@EJB @EJB
private RoleFacade roleFacade; private RoleFacade roleFacade;
@EJB @EJB
private AccessRightBeanLocal accessRightBeanLocal; private AccessRightBeanLocal accessRightBeanLocal;
@EJB
private SecurityBeanLocal secubean;
@EJB
private EventBeanLocal eventBean;
/** /**
* Default constructor. * Default constructor.
*/ */
...@@ -64,14 +71,23 @@ public class UserBean implements UserBeanLocal { ...@@ -64,14 +71,23 @@ public class UserBean implements UserBeanLocal {
return returnUser; return returnUser;
} }
public List<User> getUsers() { public List<User> getUsers() throws EjbPermissionDeniedException {
User curruser = getCurrentUser();
if (curruser == null || !hasPermission(Permission.USER_MANAGEMENT, curruser, RolePermission.READ)) {
throw new EjbPermissionDeniedException(secubean, curruser, "User tried to execute getUsers function with insufficient permissions");
}
List<User> ret = userFacade.findAll(); List<User> ret = userFacade.findAll();
logger.info("Found {} users from database ", ret.size()); logger.info("Found {} users from database ", ret.size());
return ret; return ret;
} }
@Override @Override
public User mergeChanges(User user) { public User mergeChanges(User user) throws EjbPermissionDeniedException {
User curruser = getCurrentUser();
if (curruser == null || !hasPermission(Permission.USER_MANAGEMENT, curruser, RolePermission.WRITE) || !user.equals(curruser)) {
throw new EjbPermissionDeniedException(secubean, curruser, "User tried to merge someone others data with insufficient permissions");
}
return userFacade.merge(user); return userFacade.merge(user);
} }
...@@ -83,17 +99,15 @@ public class UserBean implements UserBeanLocal { ...@@ -83,17 +99,15 @@ public class UserBean implements UserBeanLocal {
return (context.getCallerPrincipal() == null || user == null) ? false : context.getCallerPrincipal().getName().equals(user.getNick()); return (context.getCallerPrincipal() == null || user == null) ? false : context.getCallerPrincipal().getName().equals(user.getNick());
} }
public User getLoggedInUserOrNull() {
Principal principal = context.getCallerPrincipal();
User ret = getUser(principal.getName());
return ret;
}
@Override @Override
public User getCurrentUser(Event event) { public User getCurrentUser() {
User ret = getLoggedInUserOrNull(); Principal principal = context.getCallerPrincipal();
User ret = userFacade.findByLogin(principal.getName());
if (ret == null) { if (ret == null) {
ret = getDefaultUser(event); ret = getDefaultUser();
} }
return ret; return ret;
} }
...@@ -102,8 +116,8 @@ public class UserBean implements UserBeanLocal { ...@@ -102,8 +116,8 @@ public class UserBean implements UserBeanLocal {
* Makes sure default user and public role exist and the user is member of * Makes sure default user and public role exist and the user is member of
* the role. * the role.
*/ */
public User getDefaultUser(Event event) { public User getDefaultUser() {
Role publicRole = roleFacade.getOrCreatePublicRole(event); Role publicRole = roleFacade.getOrCreatePublicRole(eventBean.getCurrentEvent());
User defaultUser = userFacade.getOrCreateDefaultUser(); User defaultUser = userFacade.getOrCreateDefaultUser();
if (!defaultUser.getRoles().contains(publicRole)) { if (!defaultUser.getRoles().contains(publicRole)) {
ArrayList<Role> userRoles = new ArrayList<Role>(); ArrayList<Role> userRoles = new ArrayList<Role>();
...@@ -121,7 +135,7 @@ public class UserBean implements UserBeanLocal { ...@@ -121,7 +135,7 @@ public class UserBean implements UserBeanLocal {
// TODO: FIX THIS!! really bad idea.... // TODO: FIX THIS!! really bad idea....
if (user.isSuperadmin()) { if (user.isSuperadmin()) {
logger.debug("Returning true for superadmin for {} perm {}", target.name(),permission); logger.debug("Returning true for superadmin for {} perm {}", target.name(), permission);
return true; return true;
} }
......
package fi.insomnia.bortal.beans.flash;
public class Dummyclass {
private String name;
private Integer id;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
}
package fi.insomnia.bortal.beans.flash; package fi.insomnia.bortal.beans.flash;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.ejb.EJB; import javax.ejb.EJB;
...@@ -13,8 +14,11 @@ import org.granite.messaging.service.annotations.RemoteDestination; ...@@ -13,8 +14,11 @@ import org.granite.messaging.service.annotations.RemoteDestination;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.flash.wrapper.PlaceWrapper;
import fi.insomnia.bortal.facade.EventFacade; import fi.insomnia.bortal.facade.EventFacade;
import fi.insomnia.bortal.facade.EventMapFacade; import fi.insomnia.bortal.facade.EventMapFacade;
import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.EventPk; import fi.insomnia.bortal.model.EventPk;
import fi.insomnia.bortal.model.Place; import fi.insomnia.bortal.model.Place;
...@@ -25,7 +29,6 @@ import fi.insomnia.bortal.utilities.apachecodec.binary.Base64; ...@@ -25,7 +29,6 @@ import fi.insomnia.bortal.utilities.apachecodec.binary.Base64;
*/ */
@Stateless @Stateless
@RemoteDestination @RemoteDestination
public class FlashMapBean implements FlashMapBeanLocal { public class FlashMapBean implements FlashMapBeanLocal {
private static final Logger logger = LoggerFactory.getLogger(FlashMapBean.class); private static final Logger logger = LoggerFactory.getLogger(FlashMapBean.class);
...@@ -35,6 +38,9 @@ public class FlashMapBean implements FlashMapBeanLocal { ...@@ -35,6 +38,9 @@ public class FlashMapBean implements FlashMapBeanLocal {
private EventMapFacade mapFacade; private EventMapFacade mapFacade;
@PersistenceUnit @PersistenceUnit
private EntityManagerFactory emf; private EntityManagerFactory emf;
@EJB
private EventBeanLocal eventbean;
/** /**
* Default constructor. * Default constructor.
*/ */
...@@ -42,24 +48,28 @@ public class FlashMapBean implements FlashMapBeanLocal { ...@@ -42,24 +48,28 @@ public class FlashMapBean implements FlashMapBeanLocal {
// TODO Auto-generated constructor stub // TODO Auto-generated constructor stub
} }
public byte[] getMapBackground(Integer eventId, Integer mapId) public byte[] getMapBackground(Integer mapId) {
{ Event event = eventbean.getCurrentEvent();
logger.debug("Fetching data with eventid {}, mapid {}", eventId, mapId); logger.debug("Fetching data with eventid {}, mapid {}", event, mapId);
EntityManager em = emf.createEntityManager(); EntityManager em = emf.createEntityManager();
EventMap map = em.find(EventMap.class, new EventPk(eventId, mapId)); EventMap map = em.find(EventMap.class, new EventPk(event.getId(), mapId));
logger.debug("Got map: {}", map); logger.debug("Got map: {}", map);
return Base64.decodeBase64(map.getMapData()); return Base64.decodeBase64(map.getMapData());
} }
public List<Place> getMapPlaces(Integer eventId, Integer mapId) public List<PlaceWrapper> getMapPlaces(Integer mapId) {
{ Event event = eventbean.getCurrentEvent();
EventMap map = mapFacade.getMapById(eventId, mapId);
return map.getPlaces(); eventbean.getCurrentEvent();
EventMap map = mapFacade.getMapById(event.getId(), mapId);
List<Place> retplace = map.getPlaces();
List<PlaceWrapper> ret = new ArrayList<PlaceWrapper>();
for (Place p : retplace) {
ret.add(new PlaceWrapper(p));
} }
public String getEventById(Integer id) logger.debug("Returning {} places to flash.", ret.size());
{ return ret;
return "returning event with id " + id;
} }
} }
package fi.insomnia.bortal.beans.flash; package fi.insomnia.bortal.beans.flash;
import java.util.List; import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
import fi.insomnia.bortal.beans.flash.wrapper.PlaceWrapper;
import fi.insomnia.bortal.model.Event; import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.Place; import fi.insomnia.bortal.model.Place;
@Local @Local
public interface FlashMapBeanLocal { public interface FlashMapBeanLocal {
byte[] getMapBackground(Integer eventId, Integer mapId); byte[] getMapBackground(Integer mapId);
List<Place> getMapPlaces(Integer eventId, Integer mapId);
String getEventById(Integer id); List<PlaceWrapper> getMapPlaces(Integer mapId);
} }
package fi.insomnia.bortal.beans.flash;
import javax.ejb.Local;
import javax.ejb.Stateless;
import org.granite.messaging.service.annotations.RemoteDestination;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author tuomari
*
*The flash user interface sends log messages to the backend via this class.
*/
@Stateless
@RemoteDestination
public class RemoteLogger implements RemoteLoggerLocal{
private static final String PREPEND = "FLASH: ";
private static final Logger logger = LoggerFactory.getLogger(RemoteLogger.class);
public void debug(String msg) {
logger.debug(PREPEND+msg);
}
public void error(String msg) {
logger.error(PREPEND+msg);
}
public void info(String msg) {
logger.info(PREPEND+msg);
}
public void warn(String msg) {
logger.warn(PREPEND+msg);
}
}
package fi.insomnia.bortal.beans.flash;
import javax.ejb.Local;
@Local
public interface RemoteLoggerLocal {
void debug(String msg);
void error(String msg);
void info(String msg);
void warn(String msg);
}
package fi.insomnia.bortal.beans.flash.wrapper;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.model.Place;
public class PlaceWrapper {
private static final Logger logger = LoggerFactory.getLogger(PlaceWrapper.class);
private int id;
private String code;
private int userid;
private String description;
private String details;
private int groupId;
private int height;
private int versionfield;
private int mapId;
private int mapX;
private int mapY;
private String name;
private int reserver;
private int productid;
private int width;
public PlaceWrapper(Place p) {
id = p.getId().getId();
logger.debug("Creating new PlaceWrapper with id: {}", id);
code = p.getCode();
width = p.getWidth();
description = p.getDescription();
details = p.getDetails();
height = p.getHeight();
versionfield = p.getJpaVersionField();
mapX = p.getMapX();
mapY = p.getMapY();
name = p.getName();
if (p.getMap() != null) {
mapId = p.getMap().getId().getEventId();
}
if (p.getPlaceReserver() != null) {
reserver = p.getPlaceReserver().getId().getId();
}
if (p.getProduct() != null) {
productid = p.getProduct().getId().getId();
}
if (p.getCurrentUser() != null) {
userid = p.getCurrentUser().getId();
}
if (p.getGroup() != null) {
groupId = p.getGroup().getId().getId();
}
}
public int getId() {
return id;
}
public String getCode() {
return code;
}
public int getUserid() {
return userid;
}
public String getDescription() {
return description;
}
public String getDetails() {
return details;
}
public int getGroupId() {
return groupId;
}
public int getHeight() {
return height;
}
public int getVersionfield() {
return versionfield;
}
public int getMapId() {
return mapId;
}
public int getMapX() {
return mapX;
}
public int getMapY() {
return mapY;
}
public String getName() {
return name;
}
public int getReserver() {
return reserver;
}
public int getProductid() {
return productid;
}
public int getWidth() {
return width;
}
}
...@@ -10,7 +10,7 @@ import fi.insomnia.bortal.model.Event; ...@@ -10,7 +10,7 @@ import fi.insomnia.bortal.model.Event;
@Local @Local
public interface BillBeanLocal { public interface BillBeanLocal {
Bill findById(int eventId, int id); Bill findById( int id);
ByteArrayOutputStream getPdfBillStream(Bill bill); ByteArrayOutputStream getPdfBillStream(Bill bill);
......
...@@ -5,7 +5,10 @@ import fi.insomnia.bortal.model.Event; ...@@ -5,7 +5,10 @@ import fi.insomnia.bortal.model.Event;
@Local @Local
public interface EventBeanLocal { public interface EventBeanLocal {
static final String HTTP_URL_HOSTNAME = "HTTP_URL_HOSTNAME";
Event getEventByHostname(String hostname); Event getEventByHostname(String hostname);
Event getCurrentEvent();
} }
...@@ -18,10 +18,10 @@ import fi.insomnia.bortal.model.User; ...@@ -18,10 +18,10 @@ import fi.insomnia.bortal.model.User;
@RemoteDestination @RemoteDestination
public interface PlaceMapBeanLocal { public interface PlaceMapBeanLocal {
void printPlaceMapToStream(OutputStream outputStream, String filetype, Event event, Integer mapId, List<Integer> placeIds) throws EjbPermissionDeniedException,IOException; void printPlaceMapToStream(OutputStream outputStream, String filetype, Integer mapId, List<Integer> placeIds) throws EjbPermissionDeniedException,IOException;
public String getSelectPlaceMapUrl(EventMap activeMap, List<Place> selectedPlaces, User user); public String getSelectPlaceMapUrl(EventMap activeMap, List<Place> selectedPlaces, User user);
public long selectablePlaceCount(User user, Event currentEvent); public long selectablePlaceCount(User user);
// public EventMap findMap(int i); // public EventMap findMap(int i);
......
...@@ -3,7 +3,6 @@ package fi.insomnia.bortal.beans; ...@@ -3,7 +3,6 @@ package fi.insomnia.bortal.beans;
import javax.ejb.Local; import javax.ejb.Local;
import fi.insomnia.bortal.model.Bill; import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
...@@ -11,12 +10,12 @@ import fi.insomnia.bortal.model.User; ...@@ -11,12 +10,12 @@ import fi.insomnia.bortal.model.User;
public interface TestDataBeanLocal { public interface TestDataBeanLocal {
EventMap generateTestMap(Event event); EventMap generateTestMap();
void generateTestPlaces(EventMap map); void generateTestPlaces(EventMap map);
Bill createBill(Event e, User u); Bill createBill(User u);
User createUser(); User createUser();
...@@ -24,14 +23,14 @@ public interface TestDataBeanLocal { ...@@ -24,14 +23,14 @@ public interface TestDataBeanLocal {
public void printPlacesInfo(); public void printPlacesInfo();
void generateTestCompos(Event event); void generateTestCompos();
User createAdmin(); User createAdmin();
EventMap readMap(long bytes); EventMap readMap(long bytes);
void writeMap(Event e, long bytes); void writeMap(long bytes);
void flushMaps(); void flushMaps();
void contextTest();
} }
...@@ -8,6 +8,7 @@ import org.granite.messaging.service.annotations.RemoteDestination; ...@@ -8,6 +8,7 @@ import org.granite.messaging.service.annotations.RemoteDestination;
import fi.insomnia.bortal.enums.Permission; import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission; import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.exceptions.EjbPermissionDeniedException;
import fi.insomnia.bortal.model.Event; import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
...@@ -17,19 +18,21 @@ public interface UserBeanLocal { ...@@ -17,19 +18,21 @@ public interface UserBeanLocal {
User createNewUser(String nick, String password); User createNewUser(String nick, String password);
List<User> getUsers(); List<User> getUsers() throws EjbPermissionDeniedException;
User getUser(String nick); User getUser(String nick);
User mergeChanges(User currentUser); User mergeChanges(User currentUser) throws EjbPermissionDeniedException;
User getCurrentUser(Event event); User getCurrentUser();
User getDefaultUser(Event event); User getDefaultUser();
boolean hasPermission(Permission target, User user, RolePermission permission); boolean hasPermission(Permission target, User user, RolePermission permission);
boolean isCurrentUser(User thisuser); boolean isCurrentUser(User thisuser);
} }
...@@ -9,11 +9,9 @@ public enum BeanRole { ...@@ -9,11 +9,9 @@ public enum BeanRole {
ANONYMOUS, // Unauthenticated web user ANONYMOUS, // Unauthenticated web user
USER_BASE, // JAAS access for logged in user USER_BASE, // JAAS access for logged in user
ADMIN_BASE(USER_BASE), // JAAS access to administrative beans ADMIN_BASE(USER_BASE), // JAAS access to administrative beans
// Admin for the whole system (JAAS, boolean in User) // Admin for the whole system (JAAS, boolean in User)
SUPERADMIN(false, ADMIN_BASE), SUPERADMIN(false, ADMIN_BASE),
ORGANIZATION_ROOT(ADMIN_BASE), // E.g. Vectorama organisation admin ORGANIZATION_ROOT(ADMIN_BASE), // E.g. Vectorama organisation admin
; ;
private boolean inDatabase; private boolean inDatabase;
......
...@@ -12,9 +12,9 @@ public enum Permission { ...@@ -12,9 +12,9 @@ public enum Permission {
PERMISSION("Description"), PERMISSION("Description"),
LOGIN("User can see loginbutton. (only defaultuser should have permission to that one)"), LOGIN("User can see loginbutton. (only defaultuser should have permission to that one)"),
USER_MANAGEMENT("User has right to manage users.... "), USER_MANAGEMENT("User has right to view all users(r), modify users(w) "),
TICKET_SALES("User has right to view, and/or buy tickets"), TICKET_SALES("User has right to view, and/or buy tickets"),
ROLE_MANAGEMENT("..."); ROLE_MANAGEMENT("User has right to view(r), modify(w) and assign(x) roles");
private String description; private String description;
public static Permission getPermission(String name) { public static Permission getPermission(String name) {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<persistence-unit name="BortalDb" transaction-type="JTA"> <persistence-unit name="BortalDb" transaction-type="JTA">
<jta-data-source>jdbc/bortal</jta-data-source> <jta-data-source>jdbc/bortal</jta-data-source>
<properties> <properties>
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> <property name="eclipselink.ddl-generation" value="create-tables"/>
<property name="eclipselink.ddl-generation.output-mode" value="both"/> <property name="eclipselink.ddl-generation.output-mode" value="both"/>
<property name="eclipselink.cache.type.default" value="NONE"/> <property name="eclipselink.cache.type.default" value="NONE"/>
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
*/ */
package fi.insomnia.bortal.model; package fi.insomnia.bortal.model;
import java.io.Serializable;
import java.util.Calendar; import java.util.Calendar;
import java.util.List; import java.util.List;
...@@ -36,9 +37,13 @@ import javax.persistence.Version; ...@@ -36,9 +37,13 @@ import javax.persistence.Version;
@NamedQuery(name = "Event.findByEndTime", query = "SELECT e FROM Event e WHERE e.endTime = :endTime"), @NamedQuery(name = "Event.findByEndTime", query = "SELECT e FROM Event e WHERE e.endTime = :endTime"),
@NamedQuery(name = "Event.findByName", query = "SELECT e FROM Event e WHERE e.name = :name"), @NamedQuery(name = "Event.findByName", query = "SELECT e FROM Event e WHERE e.name = :name"),
@NamedQuery(name = "Event.findByReferer", query = "SELECT e FROM Event e WHERE e.referer = :referer") }) @NamedQuery(name = "Event.findByReferer", query = "SELECT e FROM Event e WHERE e.referer = :referer") })
public class Event implements ModelInterface<Integer> { public class Event implements ModelInterface<Integer>, Serializable {
/**
*
*/
private static final long serialVersionUID = 179811358211927126L;
private static final long serialVersionUID = 1L;
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "event_id", nullable = false) @Column(name = "event_id", nullable = false)
......
...@@ -5,12 +5,14 @@ ...@@ -5,12 +5,14 @@
package fi.insomnia.bortal.model; package fi.insomnia.bortal.model;
import java.io.Serializable;
/** /**
* *
* @author tuukka * @author tuukka
*/ */
public interface EventChildInterface extends ModelInterface<EventPk> { public interface EventChildInterface extends ModelInterface<EventPk>, Serializable{
public EventPk getId(); public EventPk getId();
public void setId(EventPk id); public void setId(EventPk id);
......
...@@ -8,6 +8,7 @@ import java.awt.Color; ...@@ -8,6 +8,7 @@ import java.awt.Color;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.Serializable;
import java.util.Calendar; import java.util.Calendar;
import javax.persistence.Column; import javax.persistence.Column;
...@@ -40,9 +41,12 @@ import javax.persistence.Version; ...@@ -40,9 +41,12 @@ import javax.persistence.Version;
@NamedQuery(name = "Place.findByMapY", query = "SELECT p FROM Place p WHERE p.mapY = :mapY"), @NamedQuery(name = "Place.findByMapY", query = "SELECT p FROM Place p WHERE p.mapY = :mapY"),
@NamedQuery(name = "Place.findByDetails", query = "SELECT p FROM Place p WHERE p.details = :details"), @NamedQuery(name = "Place.findByDetails", query = "SELECT p FROM Place p WHERE p.details = :details"),
@NamedQuery(name = "Place.findByCode", query = "SELECT p FROM Place p WHERE p.code = :code")}) @NamedQuery(name = "Place.findByCode", query = "SELECT p FROM Place p WHERE p.code = :code")})
public class Place implements EventChildInterface { public class Place implements EventChildInterface, Serializable {
private static final long serialVersionUID = 1L; /**
*
*/
private static final long serialVersionUID = -5314851260772328611L;
@EmbeddedId @EmbeddedId
private EventPk id; private EventPk id;
@Lob @Lob
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
package fi.insomnia.bortal.model; package fi.insomnia.bortal.model;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List; import java.util.List;
import javax.persistence.CascadeType; import javax.persistence.CascadeType;
...@@ -30,7 +29,6 @@ import javax.persistence.Version; ...@@ -30,7 +29,6 @@ import javax.persistence.Version;
@Table(name = "products") @Table(name = "products")
@NamedQueries( { @NamedQueries( {
@NamedQuery(name = "Product.findAll", query = "SELECT p FROM Product p"), @NamedQuery(name = "Product.findAll", query = "SELECT p FROM Product p"),
@NamedQuery(name = "Product.findByProductName", query = "SELECT p FROM Product p WHERE p.name = :name"), @NamedQuery(name = "Product.findByProductName", query = "SELECT p FROM Product p WHERE p.name = :name"),
@NamedQuery(name = "Product.findByPrice", query = "SELECT p FROM Product p WHERE p.price = :price"), @NamedQuery(name = "Product.findByPrice", query = "SELECT p FROM Product p WHERE p.price = :price"),
@NamedQuery(name = "Product.findBySort", query = "SELECT p FROM Product p WHERE p.sort = :sort"), @NamedQuery(name = "Product.findBySort", query = "SELECT p FROM Product p WHERE p.sort = :sort"),
......
package fi.insomnia.bortal.utilities;
import java.util.HashMap;
import java.util.Map;
public class ThreadLocalContextHolder {
private static final ThreadLocal<Map<String, Object>> THREAD_WITH_CONTEXT = new ThreadLocal<Map<String, Object>>();
private ThreadLocalContextHolder() {
}
public static void put(String key, Object payload) {
if (THREAD_WITH_CONTEXT.get() == null) {
THREAD_WITH_CONTEXT.set(new HashMap<String, Object>());
}
THREAD_WITH_CONTEXT.get().put(key, payload);
}
public static Object get(String key) {
return THREAD_WITH_CONTEXT.get().get(key);
}
public static void cleanupThread() {
THREAD_WITH_CONTEXT.remove();
}
}
\ No newline at end of file
Manifest-Version: 1.0 Manifest-Version: 1.0
Class-Path: lib/log4j.jar
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<!--
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="/tmp/graniteds-pojo.log"/>
<param name="Threshold" value="INFO"/>
<param name="Append" value="false"/>
<param name="MaxFileSize" value="1MB"/>
<param name="MaxBackupIndex" value="1"/>
<layout class="org.apache.log4j.PatternLayout">
<param
name="ConversionPattern"
value="%d %-5p %X{service} %X{user} [%c] %m%n"/>
</layout>
</appender>
-->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<param name="Threshold" value="INFO"/>
<layout class="org.apache.log4j.PatternLayout">
<param
name="ConversionPattern"
value="%d{ABSOLUTE} %-5p %X{service} %X{user} [%c{1}] %m%n"/>
</layout>
</appender>
<category name="org.granite">
<priority value="INFO" />
</category>
<category name="org.granite.messaging.webapp.AMFMessageServlet">
<priority value="INFO" />
</category>
<root>
<appender-ref ref="CONSOLE"/>
<!-- appender-ref ref="FILE"/> -->
</root>
</log4j:configuration>
...@@ -62,6 +62,10 @@ ...@@ -62,6 +62,10 @@
<to-view-id>/permissionDenied.xhtml</to-view-id> <to-view-id>/permissionDenied.xhtml</to-view-id>
</navigation-case> </navigation-case>
<navigation-case> <navigation-case>
<from-outcome>viewExpired</from-outcome>
<to-view-id>/viewExpired.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>logout</from-outcome> <from-outcome>logout</from-outcome>
<to-view-id>/auth/logout.xhtml</to-view-id> <to-view-id>/auth/logout.xhtml</to-view-id>
</navigation-case> </navigation-case>
...@@ -81,7 +85,9 @@ ...@@ -81,7 +85,9 @@
<to-view-id>/role/edit.xhtml</to-view-id> <to-view-id>/role/edit.xhtml</to-view-id>
</navigation-case> </navigation-case>
</navigation-rule> </navigation-rule>
<factory>
<exception-handler-factory>fi.insomnia.bortal.exceptions.BortalExceptionHandlerFactory</exception-handler-factory>
</factory>
</faces-config> </faces-config>
......
...@@ -7,10 +7,7 @@ ...@@ -7,10 +7,7 @@
<security type="org.granite.messaging.service.security.GlassFishV3SecurityService"/> <security type="org.granite.messaging.service.security.GlassFishV3SecurityService"/>
<tide-components> <tide-components>
<tide-component instance-of="org.granite.tide.ejb.EjbIdentity"/> <tide-component instance-of="org.granite.tide.ejb.EjbIdentity"/>
<!-- <tide-component annotated-with="org.granite.messaging.service.annotations.RemoteDestination"/>
-->
<tide-component type="fi\.insomnia\.bortal\.beans\.flash\..*"/> <tide-component type="fi\.insomnia\.bortal\.beans\.flash\..*"/>
<tide-component annotated-with="javax.ejb.Stateless"/>
</tide-components> </tide-components>
</granite-config> </granite-config>
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
</filter> </filter>
<filter-mapping> <filter-mapping>
<filter-name>HostnameFilter</filter-name> <filter-name>HostnameFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name> <servlet-name>*</servlet-name>
</filter-mapping> </filter-mapping>
<login-config> <login-config>
<auth-method>FORM</auth-method> <auth-method>FORM</auth-method>
...@@ -83,15 +83,13 @@ ...@@ -83,15 +83,13 @@
<error-code>403</error-code> <error-code>403</error-code>
<location>/auth/notauthorized.jsf</location> <location>/auth/notauthorized.jsf</location>
</error-page> </error-page>
<error-page>
<exception-type>fi.insomnia.bortal.exceptions.PermissionDeniedException</exception-type>
<location>/auth/notauthorized.jsf</location>
</error-page>
<!-- <!-- ################################# # GRANITEDS STUFF!!! # # Don't edit! # # Tuomari # ################################# -->
#################################
# GRANITEDS STUFF!!! #
# Don't edit! #
# Tuomari #
#################################
-->
<!-- Granite config context listener --> <!-- Granite config context listener -->
<listener> <listener>
<listener-class>org.granite.config.GraniteConfigListener</listener-class> <listener-class>org.granite.config.GraniteConfigListener</listener-class>
...@@ -102,16 +100,7 @@ ...@@ -102,16 +100,7 @@
<filter-name>AMFMessageFilter</filter-name> <filter-name>AMFMessageFilter</filter-name>
<filter-class>org.granite.messaging.webapp.AMFMessageFilter</filter-class> <filter-class>org.granite.messaging.webapp.AMFMessageFilter</filter-class>
<!-- <!-- Uncomment (part of) this block if configs are not present at default locations. <init-param> <param-name>servicesConfigPath</param-name> <param-value>/WEB-INF/flex/services-config.xml</param-value> </init-param> <init-param> <param-name>graniteConfigPath</param-name> <param-value>/WEB-INF/granite/granite-config.xml</param-value> </init-param -->
Uncomment (part of) this block if configs are not present at default locations.
<init-param>
<param-name>servicesConfigPath</param-name>
<param-value>/WEB-INF/flex/services-config.xml</param-value>
</init-param>
<init-param>
<param-name>graniteConfigPath</param-name>
<param-value>/WEB-INF/granite/granite-config.xml</param-value>
</init-param-->
</filter> </filter>
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.axdt.as3.debug.launcher.type">
<stringAttribute key="ALT_PATH" value="file://${deploy_loc}/${resource_name_noext}.swf"/>
<stringAttribute key="COMPILER_CHOICE" value="org.axdt.flex4sdk.compiler"/>
<booleanAttribute key="FOR_AIR" value="false"/>
<booleanAttribute key="GATHER_LIBS" value="true"/>
<booleanAttribute key="OPEN_SWF" value="true"/>
<stringAttribute key="OPEN_WITH" value="CHOICE_SWFVIEW"/>
<booleanAttribute key="SEARCH_CONFIG" value="true"/>
<booleanAttribute key="USE_ALT_PATH" value="false"/>
<stringAttribute key="target" value="/LanBortalWeb/as3/fi/insomnia/bortal/flash/eventmap/eventmap.mxml"/>
</launchConfiguration>
...@@ -8,10 +8,10 @@ ...@@ -8,10 +8,10 @@
<body> <body>
<object > <object >
<param name="foo" width="1200" height="1200" <param name="foo" width="640" height="480"
value="flash/main.swf?param1=r1239012309hadosl"> value="flash/eventmap.swf?mapId=1">
<embed width="1200" height="1200" <embed width="640" height="480"
src="flash/main.swf?param1=r1239012309hadosl"> </embed></param> src="flash/eventmap.swf?mapId=1"> </embed></param>
</object> </object>
</body> </body>
......
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
<br /> <br />
<h:commandButton value="execute map tests" action="#{TestDataView.executeMapTests}" /> <h:commandButton value="execute map tests" action="#{TestDataView.executeMapTests}" />
<br /> <br />
<h:commandButton value="Context Test" action="#{TestDataView.contextTest}" />
<br />
</h:form> </h:form>
</h:body> </h:body>
......
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title></title>
</h:head>
<h:body>
<ui:composition template="/layout/default-template.xhtml">
<ui:define name="title">HelloWorld</ui:define>
<ui:define name="header">Header</ui:define>
<ui:define name="content">
<h1>Permission Denied!</h1>
</ui:define>
<ui:define name="footer">footer</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -17,9 +17,9 @@ ...@@ -17,9 +17,9 @@
<composite:implementation> <composite:implementation>
<tools:canRead target="LOGIN"> <tools:canRead target="LOGIN">
<f:facet name="errorMessage"> <f:facet name="errorMessage">
<login:logout />
</f:facet>
<login:login isOneliner="true" /> <login:login isOneliner="true" />
</f:facet>
<login:logout />
</tools:canRead> </tools:canRead>
</composite:implementation> </composite:implementation>
......
...@@ -25,36 +25,36 @@ ...@@ -25,36 +25,36 @@
<h:dataTable border="1" id="rights" value="#{roleView.roleRights}" var="rr"> <h:dataTable border="1" id="rights" value="#{roleView.roleRights}" var="rr">
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="Name" /> <h:outputText value="#{i18n['role.name']}" />
</f:facet> </f:facet>
<h:outputText value="#{rr.accessRight.name}" /> <h:outputText value="#{rr.accessRight.name}" />
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="Name" /> <h:outputText value="#{i18n['role.description']}" />
</f:facet> </f:facet>
<h:outputText value="#{rr.accessRight.name}" /> <h:outputText value="#{rr.accessRight.description}" />
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="Read" /> <h:outputText value="#{i18n['role.read'}" />
</f:facet> </f:facet>
<h:selectBooleanCheckbox value="#{rr.read}" /> <h:selectBooleanCheckbox value="#{rr.read}" />
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="Write" /> <h:outputText value="#{i18n['role.write']" />
</f:facet> </f:facet>
<h:selectBooleanCheckbox value="#{rr.write}" /> <h:selectBooleanCheckbox value="#{rr.write}" />
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="Execute" /> <h:outputText value="#{i18n['role.execute']" />
</f:facet> </f:facet>
<h:selectBooleanCheckbox value="#{rr.execute}" /> <h:selectBooleanCheckbox value="#{rr.execute}" />
</h:column> </h:column>
<h:column> <h:column>
<h:commandButton value="Save" action="#{roleView.editRoleRight}" /> <h:commandButton value="#{i18n['role.edit.save']" action="#{roleView.editRoleRight}" />
</h:column> </h:column>
</h:dataTable> </h:dataTable>
</h:form> </h:form>
......
...@@ -12,9 +12,11 @@ ...@@ -12,9 +12,11 @@
<ui:composition> <ui:composition>
<h:panelGrid> <h:panelGrid columns="2">
<h:outputText value="#{i18n['role.name']}" /><h:inputText value="#{roleView.role.name}" /> <h:outputText value="#{i18n['role.name']}" />
<h:inputText value="#{roleView.role.name}" />
<h:outputText value="#{i18n['role.parents']}" />
<h:selectManyListbox value="#{roleView.role.parents}"> <h:selectManyListbox value="#{roleView.role.parents}">
<f:selectItems var="par" itemLabel="${par.name}" value="#{roleView.possibleParents}" /> <f:selectItems var="par" itemLabel="${par.name}" value="#{roleView.possibleParents}" />
</h:selectManyListbox> </h:selectManyListbox>
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#" /> <h:outputText value="#" />
</f:facet> </f:facet>
<h:outputText value="#{role.id}" /> <h:outputText value="#{role.id.id}" />
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
......
...@@ -27,9 +27,9 @@ ...@@ -27,9 +27,9 @@
<h:outputLabel value="#{i18n['user.town']}:" /><h:inputText value="#{userView.user.town}" /> <h:outputLabel value="#{i18n['user.town']}:" /><h:inputText value="#{userView.user.town}" />
<h:outputLabel value="#{i18n['user.sex']}:" /> <h:outputLabel value="#{i18n['user.sex']}:" />
<h:selectOneRadio id="sex" value="#{userView.user.gender}"> <h:selectOneRadio id="sex" value="#{userView.user.gender}">
<f:selectItem id="undefined" itemLabel="#{i18n['global.sex.UNDEFINED']}" itemValue="UNDEFINED" /> <f:selectItem id="undefined" itemLabel="#{i18n['user.gender.UNDEFINED']}" itemValue="UNDEFINED" />
<f:selectItem id="male" itemLabel="#{i18n['global.sex.MALE']}" itemValue="MALE" /> <f:selectItem id="male" itemLabel="#{i18n['user.gender.MALE']}" itemValue="MALE" />
<f:selectItem id="female" itemLabel="#{i18n['global.sex.FEMALE']}" itemValue="FEMALE" /> <f:selectItem id="female" itemLabel="#{i18n['user.gender.FEMALE']}" itemValue="FEMALE" />
</h:selectOneRadio> </h:selectOneRadio>
<h:commandButton action="#{userView.saveUser()}" value="#{i18n['save']}" /> <h:commandButton action="#{userView.saveUser()}" value="#{i18n['save']}" />
</h:panelGrid> </h:panelGrid>
......
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
<f:facet name="header"> <f:facet name="header">
<h:outputText value="Sex" /> <h:outputText value="Sex" />
</f:facet> </f:facet>
<h:outputText value="#{i18n[concat['global.sex.,#user.gender']]}" /> <h:outputText value="#{i18n[concat['user.gender.,#user.gender']]}" />
</h:column> </h:column>
<h:column rendered="#{sessionHandler.canWrite('USER_MANAGEMENT') }"> <h:column rendered="#{sessionHandler.canWrite('USER_MANAGEMENT') }">
......
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title></title>
</h:head>
<h:body>
<ui:composition template="/layout/default-template.xhtml">
<ui:define name="title">HelloWorld</ui:define>
<ui:define name="header">Header</ui:define>
<ui:define name="content">
<h1>View expired!</h1>
<p>Please refresh the page.</p>
</ui:define>
<ui:define name="footer">footer</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -18,12 +18,14 @@ package fi.insomnia.bortal.beans { ...@@ -18,12 +18,14 @@ package fi.insomnia.bortal.beans {
private var _authbean:AuthorisationBeanLocal; private var _authbean:AuthorisationBeanLocal;
private var _billFacade:BillFacade; private var _billFacade:BillFacade;
private var _eventbean:EventBeanLocal;
private var _secubean:SecurityBeanLocal; private var _secubean:SecurityBeanLocal;
private var _userBean:UserBeanLocal; private var _userBean:UserBeanLocal;
public function readExternal(input:IDataInput):void { public function readExternal(input:IDataInput):void {
_authbean = input.readObject() as AuthorisationBeanLocal; _authbean = input.readObject() as AuthorisationBeanLocal;
_billFacade = input.readObject() as BillFacade; _billFacade = input.readObject() as BillFacade;
_eventbean = input.readObject() as EventBeanLocal;
_secubean = input.readObject() as SecurityBeanLocal; _secubean = input.readObject() as SecurityBeanLocal;
_userBean = input.readObject() as UserBeanLocal; _userBean = input.readObject() as UserBeanLocal;
} }
...@@ -31,6 +33,7 @@ package fi.insomnia.bortal.beans { ...@@ -31,6 +33,7 @@ package fi.insomnia.bortal.beans {
public function writeExternal(output:IDataOutput):void { public function writeExternal(output:IDataOutput):void {
output.writeObject(_authbean); output.writeObject(_authbean);
output.writeObject(_billFacade); output.writeObject(_billFacade);
output.writeObject(_eventbean);
output.writeObject(_secubean); output.writeObject(_secubean);
output.writeObject(_userBean); output.writeObject(_userBean);
} }
......
...@@ -22,6 +22,10 @@ package fi.insomnia.bortal.beans { ...@@ -22,6 +22,10 @@ package fi.insomnia.bortal.beans {
private var _eventStatusBean:EventStatusBeanLocal; private var _eventStatusBean:EventStatusBeanLocal;
private var _userFacade:UserFacade; private var _userFacade:UserFacade;
public function get currentEvent():Event {
return null;
}
public function readExternal(input:IDataInput):void { public function readExternal(input:IDataInput):void {
_eventFacade = input.readObject() as EventFacade; _eventFacade = input.readObject() as EventFacade;
_eventOrganiserFacade = input.readObject() as EventOrganiserFacade; _eventOrganiserFacade = input.readObject() as EventOrganiserFacade;
......
...@@ -7,6 +7,10 @@ ...@@ -7,6 +7,10 @@
package fi.insomnia.bortal.beans { package fi.insomnia.bortal.beans {
import fi.insomnia.bortal.model.Event;
public interface EventBeanLocal { public interface EventBeanLocal {
function get currentEvent():Event;
} }
} }
\ No newline at end of file
...@@ -17,12 +17,14 @@ package fi.insomnia.bortal.beans { ...@@ -17,12 +17,14 @@ package fi.insomnia.bortal.beans {
public class PlaceMapBeanBase implements IExternalizable, PlaceMapBeanLocal { public class PlaceMapBeanBase implements IExternalizable, PlaceMapBeanLocal {
private var _eventMapFacade:EventMapFacade; private var _eventMapFacade:EventMapFacade;
private var _eventbean:EventBeanLocal;
private var _placeFacade:PlaceFacade; private var _placeFacade:PlaceFacade;
private var _secubean:SecurityBeanLocal; private var _secubean:SecurityBeanLocal;
private var _userbean:UserBeanLocal; private var _userbean:UserBeanLocal;
public function readExternal(input:IDataInput):void { public function readExternal(input:IDataInput):void {
_eventMapFacade = input.readObject() as EventMapFacade; _eventMapFacade = input.readObject() as EventMapFacade;
_eventbean = input.readObject() as EventBeanLocal;
_placeFacade = input.readObject() as PlaceFacade; _placeFacade = input.readObject() as PlaceFacade;
_secubean = input.readObject() as SecurityBeanLocal; _secubean = input.readObject() as SecurityBeanLocal;
_userbean = input.readObject() as UserBeanLocal; _userbean = input.readObject() as UserBeanLocal;
...@@ -30,6 +32,7 @@ package fi.insomnia.bortal.beans { ...@@ -30,6 +32,7 @@ package fi.insomnia.bortal.beans {
public function writeExternal(output:IDataOutput):void { public function writeExternal(output:IDataOutput):void {
output.writeObject(_eventMapFacade); output.writeObject(_eventMapFacade);
output.writeObject(_eventbean);
output.writeObject(_placeFacade); output.writeObject(_placeFacade);
output.writeObject(_secubean); output.writeObject(_secubean);
output.writeObject(_userbean); output.writeObject(_userbean);
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
package fi.insomnia.bortal.beans { package fi.insomnia.bortal.beans {
import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import java.io.OutputStream; import java.io.OutputStream;
...@@ -27,10 +26,10 @@ package fi.insomnia.bortal.beans { ...@@ -27,10 +26,10 @@ package fi.insomnia.bortal.beans {
_initRemote = true; _initRemote = true;
} }
public function printPlaceMapToStream(arg0:OutputStream, arg1:String, arg2:Event, arg3:Number, arg4:ListCollectionView):void { public function printPlaceMapToStream(arg0:OutputStream, arg1:String, arg2:Number, arg3:ListCollectionView):void {
if (!_initRemote) if (!_initRemote)
initRemote(); initRemote();
getOperation("printPlaceMapToStream").send(arg0, arg1, arg2, arg3, arg4); getOperation("printPlaceMapToStream").send(arg0, arg1, arg2, arg3);
} }
public function getSelectPlaceMapUrl(arg0:EventMap, arg1:ListCollectionView, arg2:User):void { public function getSelectPlaceMapUrl(arg0:EventMap, arg1:ListCollectionView, arg2:User):void {
...@@ -39,10 +38,10 @@ package fi.insomnia.bortal.beans { ...@@ -39,10 +38,10 @@ package fi.insomnia.bortal.beans {
getOperation("getSelectPlaceMapUrl").send(arg0, arg1, arg2); getOperation("getSelectPlaceMapUrl").send(arg0, arg1, arg2);
} }
public function selectablePlaceCount(arg0:User, arg1:Event):void { public function selectablePlaceCount(arg0:User):void {
if (!_initRemote) if (!_initRemote)
initRemote(); initRemote();
getOperation("selectablePlaceCount").send(arg0, arg1); getOperation("selectablePlaceCount").send(arg0);
} }
public function addOperationListener(op:Function, type:String, handler:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void { public function addOperationListener(op:Function, type:String, handler:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
......
...@@ -12,7 +12,6 @@ package fi.insomnia.bortal.beans { ...@@ -12,7 +12,6 @@ package fi.insomnia.bortal.beans {
import fi.insomnia.bortal.facade.CompoEntryFacade; import fi.insomnia.bortal.facade.CompoEntryFacade;
import fi.insomnia.bortal.facade.CompoFacade; import fi.insomnia.bortal.facade.CompoFacade;
import fi.insomnia.bortal.facade.EventMapFacade; import fi.insomnia.bortal.facade.EventMapFacade;
import fi.insomnia.bortal.facade.EventOrganiserFacade;
import fi.insomnia.bortal.facade.PlaceFacade; import fi.insomnia.bortal.facade.PlaceFacade;
import fi.insomnia.bortal.facade.UserFacade; import fi.insomnia.bortal.facade.UserFacade;
import flash.utils.IDataInput; import flash.utils.IDataInput;
...@@ -30,8 +29,6 @@ package fi.insomnia.bortal.beans { ...@@ -30,8 +29,6 @@ package fi.insomnia.bortal.beans {
private var _em:EntityManager; private var _em:EntityManager;
private var _eventBean:EventBeanLocal; private var _eventBean:EventBeanLocal;
private var _eventMapFacade:EventMapFacade; private var _eventMapFacade:EventMapFacade;
private var _eventOrganiserFacade:EventOrganiserFacade;
private var _eventStatusBean:EventStatusBeanLocal;
private var _placeFacade:PlaceFacade; private var _placeFacade:PlaceFacade;
private var _role:RoleBeanLocal; private var _role:RoleBeanLocal;
private var _userFacade:UserFacade; private var _userFacade:UserFacade;
...@@ -45,8 +42,6 @@ package fi.insomnia.bortal.beans { ...@@ -45,8 +42,6 @@ package fi.insomnia.bortal.beans {
_em = input.readObject() as EntityManager; _em = input.readObject() as EntityManager;
_eventBean = input.readObject() as EventBeanLocal; _eventBean = input.readObject() as EventBeanLocal;
_eventMapFacade = input.readObject() as EventMapFacade; _eventMapFacade = input.readObject() as EventMapFacade;
_eventOrganiserFacade = input.readObject() as EventOrganiserFacade;
_eventStatusBean = input.readObject() as EventStatusBeanLocal;
_placeFacade = input.readObject() as PlaceFacade; _placeFacade = input.readObject() as PlaceFacade;
_role = input.readObject() as RoleBeanLocal; _role = input.readObject() as RoleBeanLocal;
_userFacade = input.readObject() as UserFacade; _userFacade = input.readObject() as UserFacade;
...@@ -61,8 +56,6 @@ package fi.insomnia.bortal.beans { ...@@ -61,8 +56,6 @@ package fi.insomnia.bortal.beans {
output.writeObject(_em); output.writeObject(_em);
output.writeObject(_eventBean); output.writeObject(_eventBean);
output.writeObject(_eventMapFacade); output.writeObject(_eventMapFacade);
output.writeObject(_eventOrganiserFacade);
output.writeObject(_eventStatusBean);
output.writeObject(_placeFacade); output.writeObject(_placeFacade);
output.writeObject(_role); output.writeObject(_role);
output.writeObject(_userFacade); output.writeObject(_userFacade);
......
...@@ -19,9 +19,19 @@ package fi.insomnia.bortal.beans { ...@@ -19,9 +19,19 @@ package fi.insomnia.bortal.beans {
private var _accessRightBeanLocal:AccessRightBeanLocal; private var _accessRightBeanLocal:AccessRightBeanLocal;
private var _context:SessionContext; private var _context:SessionContext;
private var _eventBean:EventBeanLocal;
private var _roleFacade:RoleFacade; private var _roleFacade:RoleFacade;
private var _secubean:SecurityBeanLocal;
private var _userFacade:UserFacade; private var _userFacade:UserFacade;
public function get currentUser():User {
return null;
}
public function get defaultUser():User {
return null;
}
public function get users():ListCollectionView { public function get users():ListCollectionView {
return null; return null;
} }
...@@ -29,14 +39,18 @@ package fi.insomnia.bortal.beans { ...@@ -29,14 +39,18 @@ package fi.insomnia.bortal.beans {
public function readExternal(input:IDataInput):void { public function readExternal(input:IDataInput):void {
_accessRightBeanLocal = input.readObject() as AccessRightBeanLocal; _accessRightBeanLocal = input.readObject() as AccessRightBeanLocal;
_context = input.readObject() as SessionContext; _context = input.readObject() as SessionContext;
_eventBean = input.readObject() as EventBeanLocal;
_roleFacade = input.readObject() as RoleFacade; _roleFacade = input.readObject() as RoleFacade;
_secubean = input.readObject() as SecurityBeanLocal;
_userFacade = input.readObject() as UserFacade; _userFacade = input.readObject() as UserFacade;
} }
public function writeExternal(output:IDataOutput):void { public function writeExternal(output:IDataOutput):void {
output.writeObject(_accessRightBeanLocal); output.writeObject(_accessRightBeanLocal);
output.writeObject(_context); output.writeObject(_context);
output.writeObject(_eventBean);
output.writeObject(_roleFacade); output.writeObject(_roleFacade);
output.writeObject(_secubean);
output.writeObject(_userFacade); output.writeObject(_userFacade);
} }
} }
......
...@@ -7,10 +7,15 @@ ...@@ -7,10 +7,15 @@
package fi.insomnia.bortal.beans { package fi.insomnia.bortal.beans {
import fi.insomnia.bortal.model.User;
import mx.collections.ListCollectionView; import mx.collections.ListCollectionView;
public interface UserBeanLocal { public interface UserBeanLocal {
function get currentUser():User;
function get defaultUser():User;
function get users():ListCollectionView; function get users():ListCollectionView;
} }
} }
\ No newline at end of file
...@@ -22,22 +22,16 @@ package fi.insomnia.bortal.beans.flash { ...@@ -22,22 +22,16 @@ package fi.insomnia.bortal.beans.flash {
_initRemote = true; _initRemote = true;
} }
public function getMapBackground(arg0:Number, arg1:Number):void { public function getMapBackground(arg0:Number):void {
if (!_initRemote) if (!_initRemote)
initRemote(); initRemote();
getOperation("getMapBackground").send(arg0, arg1); getOperation("getMapBackground").send(arg0);
} }
public function getMapPlaces(arg0:Number, arg1:Number):void { public function getMapPlaces(arg0:Number):void {
if (!_initRemote) if (!_initRemote)
initRemote(); initRemote();
getOperation("getMapPlaces").send(arg0, arg1); getOperation("getMapPlaces").send(arg0);
}
public function getEventById(arg0:Number):void {
if (!_initRemote)
initRemote();
getOperation("getEventById").send(arg0);
} }
public function addOperationListener(op:Function, type:String, handler:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void { public function addOperationListener(op:Function, type:String, handler:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
...@@ -45,8 +39,6 @@ package fi.insomnia.bortal.beans.flash { ...@@ -45,8 +39,6 @@ package fi.insomnia.bortal.beans.flash {
this.getOperation("getMapBackground").addEventListener(type, handler, useCapture, priority, useWeakReference); this.getOperation("getMapBackground").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.getMapPlaces) if (op == this.getMapPlaces)
this.getOperation("getMapPlaces").addEventListener(type, handler, useCapture, priority, useWeakReference); this.getOperation("getMapPlaces").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.getEventById)
this.getOperation("getEventById").addEventListener(type, handler, useCapture, priority, useWeakReference);
} }
public function removeOperationListener(op:Function, event:String, handler:Function):void { public function removeOperationListener(op:Function, event:String, handler:Function):void {
...@@ -54,8 +46,6 @@ package fi.insomnia.bortal.beans.flash { ...@@ -54,8 +46,6 @@ package fi.insomnia.bortal.beans.flash {
this.getOperation("getMapBackground").removeEventListener(event, handler); this.getOperation("getMapBackground").removeEventListener(event, handler);
if (op == this.getMapPlaces) if (op == this.getMapPlaces)
this.getOperation("getMapPlaces").removeEventListener(event, handler); this.getOperation("getMapPlaces").removeEventListener(event, handler);
if (op == this.getEventById)
this.getOperation("getEventById").removeEventListener(event, handler);
} }
} }
} }
\ No newline at end of file
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* NOTE: this file is only generated if it does not exist. You may safely put
* your custom code here.
*/
package fi.insomnia.bortal.beans.flash {
[Bindable]
[RemoteClass(alias="fi.insomnia.bortal.beans.flash.PlaceWrapper")]
public class PlaceWrapper extends PlaceWrapperBase {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR. INSTEAD, EDIT THE INHERITED CLASS (PlaceWrapper.as).
*/
package fi.insomnia.bortal.beans.flash {
import flash.utils.IDataInput;
import flash.utils.IDataOutput;
import flash.utils.IExternalizable;
[Bindable]
public class PlaceWrapperBase implements IExternalizable {
private var _code:String;
private var _description:String;
private var _details:String;
private var _groupId:int;
private var _height:int;
private var _id:int;
private var _mapId:int;
private var _mapX:int;
private var _mapY:int;
private var _name:String;
private var _productid:int;
private var _reserver:int;
private var _userid:int;
private var _versionfield:int;
private var _width:int;
[Bindable(event="unused")]
public function get code():String {
return _code;
}
[Bindable(event="unused")]
public function get description():String {
return _description;
}
[Bindable(event="unused")]
public function get details():String {
return _details;
}
[Bindable(event="unused")]
public function get groupId():int {
return _groupId;
}
[Bindable(event="unused")]
public function get height():int {
return _height;
}
[Bindable(event="unused")]
public function get id():int {
return _id;
}
[Bindable(event="unused")]
public function get mapId():int {
return _mapId;
}
[Bindable(event="unused")]
public function get mapX():int {
return _mapX;
}
[Bindable(event="unused")]
public function get mapY():int {
return _mapY;
}
[Bindable(event="unused")]
public function get name():String {
return _name;
}
[Bindable(event="unused")]
public function get productid():int {
return _productid;
}
[Bindable(event="unused")]
public function get reserver():int {
return _reserver;
}
[Bindable(event="unused")]
public function get userid():int {
return _userid;
}
[Bindable(event="unused")]
public function get versionfield():int {
return _versionfield;
}
[Bindable(event="unused")]
public function get width():int {
return _width;
}
public function readExternal(input:IDataInput):void {
_code = input.readObject() as String;
_description = input.readObject() as String;
_details = input.readObject() as String;
_groupId = input.readObject() as int;
_height = input.readObject() as int;
_id = input.readObject() as int;
_mapId = input.readObject() as int;
_mapX = input.readObject() as int;
_mapY = input.readObject() as int;
_name = input.readObject() as String;
_productid = input.readObject() as int;
_reserver = input.readObject() as int;
_userid = input.readObject() as int;
_versionfield = input.readObject() as int;
_width = input.readObject() as int;
}
public function writeExternal(output:IDataOutput):void {
output.writeObject(_code);
output.writeObject(_description);
output.writeObject(_details);
output.writeObject(_groupId);
output.writeObject(_height);
output.writeObject(_id);
output.writeObject(_mapId);
output.writeObject(_mapX);
output.writeObject(_mapY);
output.writeObject(_name);
output.writeObject(_productid);
output.writeObject(_reserver);
output.writeObject(_userid);
output.writeObject(_versionfield);
output.writeObject(_width);
}
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* NOTE: this file is only generated if it does not exist. You may safely put
* your custom code here.
*/
package fi.insomnia.bortal.beans.flash {
[RemoteClass(alias="fi.insomnia.bortal.beans.flash.RemoteLogger")]
public class RemoteLogger extends RemoteLoggerBase {
}
}
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR. INSTEAD, EDIT THE INHERITED CLASS (RemoteLogger.as).
*/
package fi.insomnia.bortal.beans.flash {
import mx.messaging.ChannelSet;
import mx.messaging.config.ServerConfig;
import mx.rpc.remoting.mxml.RemoteObject;
public class RemoteLoggerBase extends RemoteObject {
private var _initRemote:Boolean = false;
private function initRemote():void {
destination = "";
channelSet = new ChannelSet();
channelSet.addChannel(ServerConfig.getChannel(""));
_initRemote = true;
}
public function debug(arg0:String):void {
if (!_initRemote)
initRemote();
getOperation("debug").send(arg0);
}
public function error(arg0:String):void {
if (!_initRemote)
initRemote();
getOperation("error").send(arg0);
}
public function info(arg0:String):void {
if (!_initRemote)
initRemote();
getOperation("info").send(arg0);
}
public function warn(arg0:String):void {
if (!_initRemote)
initRemote();
getOperation("warn").send(arg0);
}
public function addOperationListener(op:Function, type:String, handler:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
if (op == this.debug)
this.getOperation("debug").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.error)
this.getOperation("error").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.info)
this.getOperation("info").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.warn)
this.getOperation("warn").addEventListener(type, handler, useCapture, priority, useWeakReference);
}
public function removeOperationListener(op:Function, event:String, handler:Function):void {
if (op == this.debug)
this.getOperation("debug").removeEventListener(event, handler);
if (op == this.error)
this.getOperation("error").removeEventListener(event, handler);
if (op == this.info)
this.getOperation("info").removeEventListener(event, handler);
if (op == this.warn)
this.getOperation("warn").removeEventListener(event, handler);
}
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans.flash {
public interface RemoteLoggerLocal {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* NOTE: this file is only generated if it does not exist. You may safely put
* your custom code here.
*/
package fi.insomnia.bortal.beans.flash.wrapper {
[Bindable]
[RemoteClass(alias="fi.insomnia.bortal.beans.flash.wrapper.PlaceWrapper")]
public class PlaceWrapper extends PlaceWrapperBase {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR. INSTEAD, EDIT THE INHERITED CLASS (PlaceWrapper.as).
*/
package fi.insomnia.bortal.beans.flash.wrapper {
import flash.utils.IDataInput;
import flash.utils.IDataOutput;
import flash.utils.IExternalizable;
[Bindable]
public class PlaceWrapperBase implements IExternalizable {
private var _code:String;
private var _description:String;
private var _details:String;
private var _groupId:int;
private var _height:int;
private var _id:int;
private var _mapId:int;
private var _mapX:int;
private var _mapY:int;
private var _name:String;
private var _productid:int;
private var _reserver:int;
private var _userid:int;
private var _versionfield:int;
private var _width:int;
[Bindable(event="unused")]
public function get code():String {
return _code;
}
[Bindable(event="unused")]
public function get description():String {
return _description;
}
[Bindable(event="unused")]
public function get details():String {
return _details;
}
[Bindable(event="unused")]
public function get groupId():int {
return _groupId;
}
[Bindable(event="unused")]
public function get height():int {
return _height;
}
[Bindable(event="unused")]
public function get id():int {
return _id;
}
[Bindable(event="unused")]
public function get mapId():int {
return _mapId;
}
[Bindable(event="unused")]
public function get mapX():int {
return _mapX;
}
[Bindable(event="unused")]
public function get mapY():int {
return _mapY;
}
[Bindable(event="unused")]
public function get name():String {
return _name;
}
[Bindable(event="unused")]
public function get productid():int {
return _productid;
}
[Bindable(event="unused")]
public function get reserver():int {
return _reserver;
}
[Bindable(event="unused")]
public function get userid():int {
return _userid;
}
[Bindable(event="unused")]
public function get versionfield():int {
return _versionfield;
}
[Bindable(event="unused")]
public function get width():int {
return _width;
}
public function readExternal(input:IDataInput):void {
_code = input.readObject() as String;
_description = input.readObject() as String;
_details = input.readObject() as String;
_groupId = input.readObject() as int;
_height = input.readObject() as int;
_id = input.readObject() as int;
_mapId = input.readObject() as int;
_mapX = input.readObject() as int;
_mapY = input.readObject() as int;
_name = input.readObject() as String;
_productid = input.readObject() as int;
_reserver = input.readObject() as int;
_userid = input.readObject() as int;
_versionfield = input.readObject() as int;
_width = input.readObject() as int;
}
public function writeExternal(output:IDataOutput):void {
output.writeObject(_code);
output.writeObject(_description);
output.writeObject(_details);
output.writeObject(_groupId);
output.writeObject(_height);
output.writeObject(_id);
output.writeObject(_mapId);
output.writeObject(_mapX);
output.writeObject(_mapY);
output.writeObject(_name);
output.writeObject(_productid);
output.writeObject(_reserver);
output.writeObject(_userid);
output.writeObject(_versionfield);
output.writeObject(_width);
}
}
}
\ No newline at end of file
/**
* @author tuomari
*/
package fi.insomnia.bortal.flash {
import org.granite.tide.BaseContext;
import org.granite.tide.events.TideResultEvent;
import org.granite.tide.events.TideFaultEvent;
import mx.controls.Alert;
public class LocalLogger {
private var _context:BaseContext;
public function LocalLogger(tide:BaseContext) {
_context = tide;
}
private var _log:Boolean = false;
public function debug(msg:String):void
{
if(!log)
{
return;
}
_context.remoteLogger.debug(msg,ret,err);
}
public function info(msg:String):void
{
if(!log)
{
return;
}
_context.remoteLogger.info(msg,ret,err);
}
public function error(msg:String):void
{
if(!log)
{
return;
}
_context.remoteLogger.error(msg,ret,err);
}
public function warn(msg:String):void
{
if(!log)
{
return;
}
_context.remoteLogger.warn(msg,ret,err);
}
public function set log(value:Boolean):void {
_log = value;
}
public function get log():Boolean {
return _log;
}
private function ret(event:TideResultEvent):void
{
//Alert.show("Log returned","Log", Alert.OK);
}
private function err(event:TideFaultEvent):void
{
Alert.show("Error sending log. Stop loggin", "Tide error", Alert.OK);
trace("Error sending log.. stop logging");
_log = false;
}
}
}
\ No newline at end of file
/**
* @author tuomari
*/
package fi.insomnia.bortal.flash.eventmap {
import org.granite.tide.ejb.Ejb;
import org.granite.tide.ejb.Context;
import org.granite.tide.ejb.Identity;
import org.granite.tide.events.TideUIEvent;
import org.granite.tide.service.DefaultServiceInitializer;
import org.granite.tide.data.events.TideDataConflictsEvent;
import org.granite.tide.data.Conflicts;
import mx.events.CloseEvent;
import org.granite.tide.events.TideResultEvent;
import org.granite.tide.events.TideFaultEvent;
import mx.core.Application;
import mx.controls.Label;
import mx.controls.Text;
import mx.controls.Image;
import mx.controls.Alert;
import mx.collections.ListCollectionView;
import mx.collections.IViewCursor
import fi.insomnia.bortal.beans.EventBean;
import fi.insomnia.bortal.flash.LocalLogger;
import fi.insomnia.bortal.beans.flash.wrapper.PlaceWrapper;
public class EventMapper {
private var _app:Application;
private var _logger:LocalLogger;
[Bindable]
private var _bgImg : Image;
[Bindable] [In]
public var _identity:Identity;
private var _tideContext:Context = Ejb.getInstance().getEjbContext();
private var _mapId:Number;
public function EventMapper( application: Application) {
// identity.isLoggedIn();
_logger = new LocalLogger(_tideContext);
_logger.log = true;
_bgImg = new Image();
_app = application;
_mapId = _app.parameters.mapId;
_tideContext.flashMapBean.getMapBackground(_mapId, bgResult, bgFault);
_tideContext.flashMapBean.getMapPlaces(_mapId,placesResult,placeFault);
_logger.debug("Initialized EventMapper");
}
private function bgResult(event:TideResultEvent):void {
_bgImg.data = event.result
_app.addChild(_bgImg);
}
private function bgFault(event:TideFaultEvent):void {
// Alert.show("Error communicating with backend.\nPlease try again.","Network error", Alert.OK);
Alert.show(event.fault.toString(), "Background Fault", Alert.OK);
}
private function placeFault(event:TideFaultEvent):void {
// Alert.show("Error communicating with backend.\nPlease try again.","Network error", Alert.OK);
Alert.show(event.fault.toString(), "Place fault", Alert.OK);
}
private function placesResult(event:TideResultEvent):void {
_logger.debug("got places");
var places:ListCollectionView = event.result as ListCollectionView;
var placeIter:IViewCursor = places.createCursor();
_logger.debug("Iterating over places");
while( !placeIter.afterLast )
{
var rowElement:Object = placeIter.current;
_logger.debug("Got bject from iterator: " + rowElement);
var placeobj:PlaceObject = new PlaceObject(_tideContext, rowElement as PlaceWrapper);
_logger.debug("Adding placeobj as child to bgImg");
_bgImg.addChild(placeobj);
_logger.debug("Added place: " + placeobj.id);
placeIter.moveNext();
}
}
}
}
\ No newline at end of file
/**
* @author tuomari
*/
package fi.insomnia.bortal.flash.eventmap {
import fi.insomnia.bortal.flash.LocalLogger;
import fi.insomnia.bortal.beans.flash.wrapper.PlaceWrapper;
import org.granite.tide.BaseContext;
import mx.containers.Canvas;
public class PlaceObject extends Canvas{
private var _place:PlaceWrapper;
private var _tideContext:BaseContext;
private var _log:LocalLogger;
public function PlaceObject(context:BaseContext, p:PlaceWrapper) {
_log = new LocalLogger(context);
_tideContext = context;
_place = p;
x = 1
this.width = p.width;
this.height = p.height;
this.x = p.mapX;
this.y = p.mapY;
this.setStyle('backgroundColor',0x00CC00);
graphics.lineStyle(2);
graphics.beginFill(0xFF0000);
graphics.drawRect(4,4,width-8, height-8);
graphics.endFill();
_log.debug("Added place: "+ p.id);
}
}
}
\ No newline at end of file
...@@ -3,18 +3,18 @@ ...@@ -3,18 +3,18 @@
<compiler> <compiler>
<!-- keep-generated-actionscript>true</keep-generated-actionscript> --> <!-- keep-generated-actionscript>true</keep-generated-actionscript> -->
<include-libraries> <include-libraries>
<library>../../../../../flashlibs/granite-essentials.swc</library> <library>../../../../../../flashlibs/granite-essentials.swc</library>
</include-libraries> </include-libraries>
<services>../../../../../WebContent/WEB-INF/flex/services-config.xml</services> <services>../../../../../../WebContent/WEB-INF/flex/services-config.xml</services>
<debug>false</debug> <debug>true</debug>
<define> <define>
<name>CONFIG::Debug</name> <name>CONFIG::Debug</name>
<value>false</value> <value>true</value>
</define> </define>
<define> <define>
<name>CONFIG::Debugging</name> <name>CONFIG::Debugging</name>
<value>false</value> <value>true</value>
</define> </define>
<show-actionscript-warnings>true</show-actionscript-warnings> <show-actionscript-warnings>true</show-actionscript-warnings>
<show-binding-warnings>true</show-binding-warnings> <show-binding-warnings>true</show-binding-warnings>
......
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" preinitialize="Ejb.getInstance().initApplication()" creationComplete="init();" layout="absolute">
<mx:Script>
<![CDATA[
import org.granite.tide.ejb.Ejb;
private function init():void {
var mapper:EventMapper = new EventMapper(this);
}
]]>
</mx:Script>
</mx:Application>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" preinitialize="Ejb.getInstance().initApplication()" creationComplete="init();" layout="absolute">
<mx:Text id="teksti" text="Foobar123"></mx:Text>
<mx:Script>
<![CDATA[
import org.granite.tide.ejb.Ejb;
import org.granite.tide.ejb.Context;
import org.granite.tide.ejb.Identity;
import org.granite.tide.events.TideUIEvent;
import org.granite.tide.service.DefaultServiceInitializer;
import org.granite.tide.data.events.TideDataConflictsEvent;
import org.granite.tide.data.Conflicts;
import mx.events.CloseEvent;
import org.granite.tide.events.TideResultEvent;
import org.granite.tide.events.TideFaultEvent;
import mx.controls.Label;
import mx.controls.Text;
import mx.controls.Image;
import fi.insomnia.bortal.beans.EventBean;
import mx.controls.Alert;
//Ejb.getInstance().addComponentWithFactory("serviceInitializer", DefaultServiceInitializer,
// { contextRoot: "/graniteds-tide-ejb3" });
// Ejb.getInstance().addModule(AddressBookModule);
private var tideContext:Context = Ejb.getInstance().getEjbContext();
private var text1:Label;
[Bindable]
private var startupimg : Image;
private function init():void {
identity.isLoggedIn();
text1 = new Label();
text1.x = 50;
text1.y = 80;
text1.text = "Flashparam 3 Map: "+ parameters.param1 ;//+ " Username: " + identity.username + " LoggedIn: " + identity.isLoggedIn();
this.addChild(text1);
tideContext.flashMapBean.getMapBackground(1,1, eventhandler,helloFault);
// Ejb.getInstance().getEjbContext().addEventListener(TideDataConflictsEvent.DATA_CONFLICTS, conflictsHandler);
}
private function eventhandler(event:TideResultEvent):void {
var text2:Label = new Label();
text2.x = 50;
text2.y = 100;
text2.text = "Got result4!!";
this.addChild(text2);
var text3:Label = new Label();
text3.x = 50;
text3.y = 150;
var bgimg:Image = new Image();
bgimg.data = event.result;
this.addChild(bgimg);
var txt3:String = "null";
if(event.result != null)
{
txt3 = event.result.name;
}
text3.text = txt3;
this.addChild(text3);
}
private function helloFault(event:TideFaultEvent):void {
var text2:Text = new Text();
text2.x = 50;
text2.y = 100;
text2.text = event.fault.toString();
this.addChild(text2);
}
private var _conflicts:Conflicts;
private function conflictsHandler(event:TideDataConflictsEvent):void {
_conflicts = event.conflicts;
Alert.show("Someone else has modified the person you are currently working on.\nDo you want to keep your modifications ?",
"Modification conflict", Alert.YES | Alert.NO, null, conflictsCloseHandler);
}
private function conflictsCloseHandler(event:CloseEvent):void {
if (event.detail == Alert.YES)
_conflicts.acceptAllClient();
else
_conflicts.acceptAllServer();
}
[Bindable] [In]
public var identity:Identity;
]]>
</mx:Script>
</mx:Application>
\ No newline at end of file
...@@ -3,8 +3,6 @@ package fi.insomnia.bortal; ...@@ -3,8 +3,6 @@ package fi.insomnia.bortal;
import java.io.IOException; import java.io.IOException;
import java.security.AccessController; import java.security.AccessController;
import javax.ejb.AccessLocalException;
import javax.ejb.EJBAccessException;
import javax.security.auth.Subject; import javax.security.auth.Subject;
import javax.servlet.Filter; import javax.servlet.Filter;
import javax.servlet.FilterChain; import javax.servlet.FilterChain;
...@@ -13,18 +11,19 @@ import javax.servlet.ServletException; ...@@ -13,18 +11,19 @@ import javax.servlet.ServletException;
import javax.servlet.ServletRequest; import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.utilities.ThreadLocalContextHolder;
/** /**
* Servlet Filter implementation class HostnameFilter * Servlet Filter implementation class HostnameFilter
*/ */
public class HostnameFilter implements Filter { public class HostnameFilter implements Filter {
private static final String HTTP_URL_HOSTNAME = "HTTP_URL_HOSTNAME";
private static final Logger logger = LoggerFactory.getLogger(HostnameFilter.class); private static final Logger logger = LoggerFactory.getLogger(HostnameFilter.class);
/** /**
...@@ -50,9 +49,8 @@ public class HostnameFilter implements Filter { ...@@ -50,9 +49,8 @@ public class HostnameFilter implements Filter {
if (request != null && request instanceof HttpServletRequest) { if (request != null && request instanceof HttpServletRequest) {
httpRequest = ((HttpServletRequest) request); httpRequest = ((HttpServletRequest) request);
StringBuffer url = httpRequest.getRequestURL(); StringBuffer url = httpRequest.getRequestURL();
Subject subj = Subject.getSubject(AccessController.getContext()); Subject subj = Subject.getSubject(AccessController.getContext());
logger.warn("request URL: {}", url); logger.debug("request URL: {}", url);
int beginindex = 7; // Let's skip http:// int beginindex = 7; // Let's skip http://
int slashindex = url.indexOf("/", beginindex); int slashindex = url.indexOf("/", beginindex);
...@@ -65,23 +63,16 @@ public class HostnameFilter implements Filter { ...@@ -65,23 +63,16 @@ public class HostnameFilter implements Filter {
if (lastindex < 0) { if (lastindex < 0) {
lastindex = url.length() - 1; lastindex = url.length() - 1;
} }
logger.warn("begin: {}, last {}", beginindex, lastindex);
String hostname = url.substring(beginindex, lastindex); String hostname = url.substring(beginindex, lastindex);
logger.info("Setting hostname to {} ", hostname); logger.debug("Setting hostname to {} ", hostname);
httpRequest.getSession().setAttribute( httpRequest.getSession().setAttribute(EventBeanLocal.HTTP_URL_HOSTNAME, hostname);
HTTP_URL_HOSTNAME, hostname);
ThreadLocalContextHolder.put(EventBeanLocal.HTTP_URL_HOSTNAME, hostname);
} }
// pass the request along the filter chain // pass the request along the filter chain
chain.doFilter(request, response); chain.doFilter(request, response);
} ThreadLocalContextHolder.cleanupThread();
private void error401(ServletResponse response) throws IOException {
if (response instanceof HttpServletResponse) {
((HttpServletResponse) response).sendError(401);
} else {
logger.warn("Error sending errorcode! response not http but {}" + response.getClass());
}
} }
/** /**
...@@ -91,10 +82,10 @@ public class HostnameFilter implements Filter { ...@@ -91,10 +82,10 @@ public class HostnameFilter implements Filter {
// Nothing... // Nothing...
} }
public static String getHostname(HttpSession sess) { public static String getCurrentHostname(HttpSession sess) {
String ret = null; String ret = null;
if (sess != null) { if (sess != null) {
Object retObj = sess.getAttribute(HTTP_URL_HOSTNAME); Object retObj = sess.getAttribute(EventBeanLocal.HTTP_URL_HOSTNAME);
if (retObj != null) if (retObj != null)
ret = retObj.toString(); ret = retObj.toString();
} }
......
package fi.insomnia.bortal; package fi.insomnia.bortal;
import java.util.MissingResourceException;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import javax.faces.application.Application; import javax.faces.application.Application;
...@@ -14,17 +15,26 @@ import javax.faces.context.FacesContext; ...@@ -14,17 +15,26 @@ import javax.faces.context.FacesContext;
*/ */
public class I18n { public class I18n {
public static ResourceBundle GetResourceBundle() { public static ResourceBundle getResourceBundle() {
FacesContext facesContext = FacesContext.getCurrentInstance(); FacesContext facesContext = FacesContext.getCurrentInstance();
Application app = facesContext.getApplication(); Application app = facesContext.getApplication();
ResourceBundle bundle = app.getResourceBundle(facesContext, "i18n"); ResourceBundle bundle = app.getResourceBundle(facesContext, "i18n");
return bundle; return bundle;
} }
public static String Get(String key) { public static String get(String key) {
String value = GetResourceBundle().getString(key); String value = null;
try {
value = getResourceBundle().getString(key);
} catch (MissingResourceException e) {
value = null;
}
if (key == null) { if (key == null) {
return "########"; value = "########";
} else if (value == null) {
value = "???" + key + "???";
} }
return value; return value;
} }
......
package fi.insomnia.bortal.exceptions;
import java.util.Iterator;
import java.util.Map;
import javax.faces.FacesException;
import javax.faces.application.NavigationHandler;
import javax.faces.application.ViewExpiredException;
import javax.faces.context.ExceptionHandler;
import javax.faces.context.ExceptionHandlerWrapper;
import javax.faces.context.FacesContext;
import javax.faces.event.ExceptionQueuedEvent;
import javax.faces.event.ExceptionQueuedEventContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class BortalExceptionHandler extends ExceptionHandlerWrapper {
private static final Logger logger = LoggerFactory.getLogger(BortalExceptionHandler.class);
private ExceptionHandler wrapped;
public BortalExceptionHandler(ExceptionHandler wrapped) {
this.wrapped = wrapped;
}
@Override
public ExceptionHandler getWrapped() {
return wrapped;
}
@Override
public void handle() throws FacesException {
logger.debug("Handling exceptions");
for (Iterator<ExceptionQueuedEvent> i = getUnhandledExceptionQueuedEvents().iterator(); i.hasNext();) {
ExceptionQueuedEvent event = i.next();
ExceptionQueuedEventContext context = (ExceptionQueuedEventContext) event.getSource();
Throwable t = context.getException();
if (t instanceof ViewExpiredException) {
errorpage(i, t, "viewExpired");
} else if (t instanceof PermissionDeniedException) {
errorpage(i, t, "permissionDenied");
}
}
// At this point, the queue will not contain any ViewExpiredEvents.
// Therefore, let the parent handle them.
getWrapped().handle();
}
private void errorpage(Iterator<ExceptionQueuedEvent> i, Throwable t, String navigateTo) {
ViewExpiredException vee = (ViewExpiredException) t;
FacesContext fc = FacesContext.getCurrentInstance();
Map<String, Object> requestMap = fc.getExternalContext().getRequestMap();
NavigationHandler nav = fc.getApplication().getNavigationHandler();
try {
// Push some useful stuff to the request scope for
// use in the page
requestMap.put("currentViewId", vee.getViewId());
nav.handleNavigation(fc, null, navigateTo);
fc.renderResponse();
} finally {
i.remove();
}
}
}
package fi.insomnia.bortal.exceptions;
import javax.faces.context.ExceptionHandler;
import javax.faces.context.ExceptionHandlerFactory;
public class BortalExceptionHandlerFactory extends ExceptionHandlerFactory {
private ExceptionHandlerFactory parent;
public BortalExceptionHandlerFactory(ExceptionHandlerFactory parent) {
this.parent = parent;
}
@Override
public ExceptionHandler getExceptionHandler() {
ExceptionHandler result = parent.getExceptionHandler();
result = new BortalExceptionHandler(result);
return result;
}
}
...@@ -10,6 +10,10 @@ public class PermissionDeniedException extends RuntimeException { ...@@ -10,6 +10,10 @@ public class PermissionDeniedException extends RuntimeException {
bean.logPermissionDenied(user, this); bean.logPermissionDenied(user, this);
} }
public PermissionDeniedException(EjbPermissionDeniedException e)
{
}
/** /**
* *
*/ */
......
...@@ -65,19 +65,7 @@ public class SessionHandler { ...@@ -65,19 +65,7 @@ public class SessionHandler {
return sess; return sess;
} }
public String getHostname() {
HttpSession sess = getHttpSession();
String ret = "";
if (sess != null) {
ret = HostnameFilter.getHostname(getHttpSession());
}
return ret;
}
public Event getCurrentEvent() {
String hostname = getHostname();
return eventbean.getEventByHostname(hostname);
}
public boolean hasPermission(Permission target, RolePermission permission) { public boolean hasPermission(Permission target, RolePermission permission) {
if (target == null) { if (target == null) {
...@@ -122,11 +110,11 @@ public class SessionHandler { ...@@ -122,11 +110,11 @@ public class SessionHandler {
this.thisuser = getUser(); this.thisuser = getUser();
impersonating = false; impersonating = false;
} else if (canExecute("user")) { } else if (canExecute("user")) {
secubean.logMessage(userbean.getCurrentUser(getCurrentEvent()), "Successfully impersonating user id: " + user.getId() + " and login: " + user.getLogin()); secubean.logMessage(userbean.getCurrentUser(), "Successfully impersonating user id: " + user.getId() + " and login: " + user.getLogin());
this.thisuser = user; this.thisuser = user;
impersonating = true; impersonating = true;
} else { } else {
secubean.logMessage(userbean.getCurrentUser(getCurrentEvent()), "User tried to impersonate as id: " + user.getId() + " login: " + user.getLogin() + " but did not have enough rights"); secubean.logMessage(userbean.getCurrentUser(), "User tried to impersonate as id: " + user.getId() + " login: " + user.getLogin() + " but did not have enough rights");
} }
} }
...@@ -135,7 +123,7 @@ public class SessionHandler { ...@@ -135,7 +123,7 @@ public class SessionHandler {
boolean iscurruser = userbean.isCurrentUser(thisuser); boolean iscurruser = userbean.isCurrentUser(thisuser);
logger.debug("Current user {}", (thisuser == null) ? "null" : thisuser.getNick()); logger.debug("Current user {}", (thisuser == null) ? "null" : thisuser.getNick());
if (thisuser == null || (!impersonating && !iscurruser)) { if (thisuser == null || (!impersonating && !iscurruser)) {
thisuser = userbean.getCurrentUser(getCurrentEvent()); thisuser = userbean.getCurrentUser();
} }
return thisuser; return thisuser;
......
...@@ -76,7 +76,7 @@ public class PlaceMap extends HttpServlet { ...@@ -76,7 +76,7 @@ public class PlaceMap extends HttpServlet {
response.setContentType("image/jpeg"); response.setContentType("image/jpeg");
ostream = response.getOutputStream(); ostream = response.getOutputStream();
placemapBean.printPlaceMapToStream(ostream, "jpeg", getEvent(request), mapId, placeIds); placemapBean.printPlaceMapToStream(ostream, "jpeg", mapId, placeIds);
logger.debug("Flushing ostream"); logger.debug("Flushing ostream");
ostream.flush(); ostream.flush();
/* /*
...@@ -100,10 +100,6 @@ public class PlaceMap extends HttpServlet { ...@@ -100,10 +100,6 @@ public class PlaceMap extends HttpServlet {
} }
} }
private Event getEvent(HttpServletRequest request) {
String hostname = HostnameFilter.getHostname(request.getSession());
return eventBean.getEventByHostname(hostname);
}
public void addPlacesToMap() { public void addPlacesToMap() {
} }
......
...@@ -50,9 +50,8 @@ public class PrintBill extends HttpServlet { ...@@ -50,9 +50,8 @@ public class PrintBill extends HttpServlet {
private void ouput(HttpServletRequest request, HttpServletResponse response) throws IOException { private void ouput(HttpServletRequest request, HttpServletResponse response) throws IOException {
Event event = eventbean.getEventByHostname(HostnameFilter.getHostname(request.getSession()));
Integer billid = getIntegerParameter(request, BILL_ID); Integer billid = getIntegerParameter(request, BILL_ID);
Bill bill = billentity.findById(event.getId(), billid); Bill bill = billentity.findById( billid);
if (bill == null) { if (bill == null) {
return; return;
} }
......
...@@ -4,9 +4,11 @@ ...@@ -4,9 +4,11 @@
*/ */
package fi.insomnia.bortal.view; package fi.insomnia.bortal.view;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.PlaceBeanLocal; import fi.insomnia.bortal.beans.PlaceBeanLocal;
import fi.insomnia.bortal.beans.PlaceMapBeanLocal; import fi.insomnia.bortal.beans.PlaceMapBeanLocal;
import fi.insomnia.bortal.handler.SessionHandler; import fi.insomnia.bortal.handler.SessionHandler;
import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.Place; import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
...@@ -42,6 +44,8 @@ public class MapView { ...@@ -42,6 +44,8 @@ public class MapView {
private SessionHandler sessionHandler; private SessionHandler sessionHandler;
private EventMap activeMap = null; private EventMap activeMap = null;
private List<Place> selectedPlaces = new ArrayList<Place>(); private List<Place> selectedPlaces = new ArrayList<Place>();
@EJB
private EventBeanLocal eventBean;
// private Place selectedPlace = null; // private Place selectedPlace = null;
...@@ -93,9 +97,9 @@ public class MapView { ...@@ -93,9 +97,9 @@ public class MapView {
public EventMap getActiveMap() { public EventMap getActiveMap() {
if (activeMap == null) { if (activeMap == null) {
Event event = eventBean.getCurrentEvent();
if (sessionHandler.getCurrentEvent().getEventMaps().size() >= 1) { if (event.getEventMaps().size() >= 1) {
activeMap = sessionHandler.getCurrentEvent().getEventMaps().get(0); activeMap = event.getEventMaps().get(0);
} }
} }
...@@ -126,7 +130,7 @@ public class MapView { ...@@ -126,7 +130,7 @@ public class MapView {
} }
public String placeLeftToSelect() { public String placeLeftToSelect() {
long totalPlaces = placeMapBean.selectablePlaceCount(sessionHandler.getUser(), sessionHandler.getCurrentEvent()); long totalPlaces = placeMapBean.selectablePlaceCount(sessionHandler.getUser());
return (totalPlaces - selectedPlaces.size()) + ""; return (totalPlaces - selectedPlaces.size()) + "";
} }
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
*/ */
package fi.insomnia.bortal.view; package fi.insomnia.bortal.view;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.RoleBeanLocal; import fi.insomnia.bortal.beans.RoleBeanLocal;
import fi.insomnia.bortal.beans.SecurityBeanLocal; import fi.insomnia.bortal.beans.SecurityBeanLocal;
import fi.insomnia.bortal.enums.Permission; import fi.insomnia.bortal.enums.Permission;
...@@ -35,6 +36,8 @@ public class RoleView { ...@@ -35,6 +36,8 @@ public class RoleView {
private SessionHandler sessionhandler; private SessionHandler sessionhandler;
@EJB @EJB
private EventBeanLocal eventbean;
@EJB
private RoleBeanLocal roleBean; private RoleBeanLocal roleBean;
private static final Logger logger = LoggerFactory.getLogger(RoleView.class); private static final Logger logger = LoggerFactory.getLogger(RoleView.class);
...@@ -55,7 +58,7 @@ public class RoleView { ...@@ -55,7 +58,7 @@ public class RoleView {
public DataModel<RoleRight> getRoleRights() { public DataModel<RoleRight> getRoleRights() {
if (rolerights == null) { if (rolerights == null) {
logger.info("Fetching new rolerights from database"); logger.info("Fetching new rolerights from database");
rolerights = new ListDataModel<RoleRight>(roleBean.getEventRoleRights(sessionhandler.getCurrentEvent(), role)); rolerights = new ListDataModel<RoleRight>(roleBean.getEventRoleRights(eventbean.getCurrentEvent(), role));
} }
return rolerights; return rolerights;
} }
...@@ -111,7 +114,7 @@ public class RoleView { ...@@ -111,7 +114,7 @@ public class RoleView {
*/ */
public Role getRole() { public Role getRole() {
if (role == null) { if (role == null) {
role = new Role(sessionhandler.getCurrentEvent()); role = new Role(eventbean.getCurrentEvent());
} }
return role; return role;
} }
......
...@@ -39,12 +39,11 @@ public class TestDataView { ...@@ -39,12 +39,11 @@ public class TestDataView {
public void generateData() { public void generateData() {
Event event = getSessionhandler().getCurrentEvent();
User user = testdatabean.createUser(); User user = testdatabean.createUser();
User admin = testdatabean.createAdmin(); User admin = testdatabean.createAdmin();
testdatabean.createBill(event, user); testdatabean.createBill( user);
EventMap map = testdatabean.generateTestMap(event); EventMap map = testdatabean.generateTestMap();
testdatabean.generateTestPlaces(map); testdatabean.generateTestPlaces(map);
...@@ -52,12 +51,11 @@ public class TestDataView { ...@@ -52,12 +51,11 @@ public class TestDataView {
} }
public void generateMapTests() { public void generateMapTests() {
Event event = getSessionhandler().getCurrentEvent();
testdatabean.flushMaps(); testdatabean.flushMaps();
testdatabean.generateTestMap(event); testdatabean.generateTestMap();
for (long i = 100; i < 1024 * 100; i += 100) { for (long i = 100; i < 1024 * 100; i += 100) {
logger.debug("Writing data with {} chars", i); logger.debug("Writing data with {} chars", i);
testdatabean.writeMap(event, i); testdatabean.writeMap( i);
} }
} }
...@@ -92,4 +90,9 @@ public class TestDataView { ...@@ -92,4 +90,9 @@ public class TestDataView {
return null; return null;
} }
public void contextTest()
{
testdatabean.contextTest();
}
} }
...@@ -3,18 +3,23 @@ package fi.insomnia.bortal.view; ...@@ -3,18 +3,23 @@ package fi.insomnia.bortal.view;
import java.util.List; import java.util.List;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty; import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped; import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.ListDataModel; import javax.faces.model.ListDataModel;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.I18n;
import fi.insomnia.bortal.beans.SecurityBeanLocal; import fi.insomnia.bortal.beans.SecurityBeanLocal;
import fi.insomnia.bortal.beans.JaasBeanLocal; import fi.insomnia.bortal.beans.JaasBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.Permission; import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.exceptions.EjbPermissionDeniedException;
import fi.insomnia.bortal.exceptions.PermissionDeniedException; import fi.insomnia.bortal.exceptions.PermissionDeniedException;
import fi.insomnia.bortal.handler.SessionHandler; import fi.insomnia.bortal.handler.SessionHandler;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
...@@ -49,11 +54,17 @@ public class UserView { ...@@ -49,11 +54,17 @@ public class UserView {
} }
public String createUser() { public String createUser() {
if (!getSessionhandler().canWrite(Permission.USER_MANAGEMENT.name())) { if (!getSessionhandler().canWrite(Permission.USER_MANAGEMENT)) {
// Give message to administration what happened here. // Give message to administration what happened here.
throw new PermissionDeniedException(securitybean, getSessionhandler().getUser(), "User " + getSessionhandler().getUser() + " does not have permission to create user!"); throw new PermissionDeniedException(securitybean, getSessionhandler().getUser(), "User " + getSessionhandler().getUser() + " does not have permission to create user!");
} }
if(null != userBean.getUser(login))
{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(I18n.get("userview.userExists")));
return "create";
}
logger.info("Saving user"); logger.info("Saving user");
// Luodaan uusi käyttäjä UserBeanin funktiolla createNewUser jolle // Luodaan uusi käyttäjä UserBeanin funktiolla createNewUser jolle
// annetaan parametrina pakolliset tiedot ( login ja salasana ) // annetaan parametrina pakolliset tiedot ( login ja salasana )
...@@ -63,19 +74,28 @@ public class UserView { ...@@ -63,19 +74,28 @@ public class UserView {
password = ""; password = "";
if (getUser() == null) { if (getUser() == null) {
logger.warn("Could not create user. function returned null!"); logger.warn("Could not create user. function returned null!");
return "fault"; return "create";
} }
return "edit"; return "edit";
} }
public String saveUser() { public String saveUser() {
setUser( userBean.mergeChanges(getUser())); try {
setUser(userBean.mergeChanges(getUser()));
} catch (EjbPermissionDeniedException e) {
throw new PermissionDeniedException(e);
}
return "userSave"; return "userSave";
} }
public ListDataModel<User> getUsers() { public ListDataModel<User> getUsers() {
List<User> users = userBean.getUsers(); List<User> users;
try {
users = userBean.getUsers();
} catch (EjbPermissionDeniedException e) {
throw new PermissionDeniedException(e);
}
items = new ListDataModel<User>(users); items = new ListDataModel<User>(users);
logger.info("Fetching users. Found {}", items.getRowCount()); logger.info("Fetching users. Found {}", items.getRowCount());
...@@ -88,7 +108,6 @@ public class UserView { ...@@ -88,7 +108,6 @@ public class UserView {
return login; return login;
} }
public void setLogin(String login) { public void setLogin(String login) {
this.login = login; this.login = login;
} }
......
user.username=K\u00E4ytt\u00E4j\u00E4tunnus user.username=K\u00E4ytt\u00E4j\u00E4tunnus
user.realname=Nimi user.realname=Nimi
user.password=Salasana user.password=Salasana
...@@ -5,8 +6,10 @@ user.email=S\u00E4hk\u00F6postiosoite ...@@ -5,8 +6,10 @@ user.email=S\u00E4hk\u00F6postiosoite
user.phone=Puhelinnumero user.phone=Puhelinnumero
user.bankaccount=Tilinumero user.bankaccount=Tilinumero
user.bank=Pankki user.bank=Pankki
save=Tallenna user.gender.UNDEFINED=Mrittelemtt
cancel=Peruuta user.gender.MALE=Mies
user.gender.FEMALE=Nainen
login.username=K\u00E4ytt\u00E4j\u00E4tunnus: login.username=K\u00E4ytt\u00E4j\u00E4tunnus:
login.password=Salasana: login.password=Salasana:
...@@ -21,6 +24,13 @@ nasty.user=paha k\u00E4ytt\u00E4j\u00E4 ei yrit\u00E4 haxoroida meid\u00E4n soft ...@@ -21,6 +24,13 @@ nasty.user=paha k\u00E4ytt\u00E4j\u00E4 ei yrit\u00E4 haxoroida meid\u00E4n soft
product.name=Tuote product.name=Tuote
product.price=Hinta product.price=Hinta
global.sex.UNDEFINED=Mrittelemtt
global.sex.MALE=Mies role.name=Rooli
global.sex.FEMALE=Nainen role.description=Roolin kuvaus
\ No newline at end of file role.read=Luku
role.write=Kirjoitus
role.execute=Suoritus
save=Tallenna
cancel=Peruuta
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!