Exempelkod
Exempelkod, sessionskontroll
När ett GET-anrop skickas, vilket normalt sett är så man kommer till applikationen första gången så sätts en parameter i sessionen. Varje gång det sedan blir en POST så kontrolleras denna. Denna metod fungerar normalt sett, men vid vissa typer av integrationer där tex boendekalkylen startas upp med ett POST-anrop så kommer koden inte att fungera och då kan man inte aktivera denna funktion.
Implementerar ni en egen funktion så är det alltid bra att kontrollera även boendekalkylens egna session förutom det ni själva önskar att kontrollera. Hur denna kod bör fungera påverkas av hur boendekalkylen är integrerad med andra system, nedanstående exempel bör bara ses som ett exempel på hur man kan läsa och sätta sessionsvariabler.
public
class
KontrolleraBkSession
implements
capitex.integration.ISessionskontroll {
public
void
KontrolleraSession(IKontext kontext)
throws
SessionSaknas {
IGetRequestMethod rm=(IGetRequestMethod)kontext.getService(IGetRequestMethod.
class
);
IAdvancedSessionAccess as=(IAdvancedSessionAccess)kontext.getService(IAdvancedSessionAccess.
class
);
String m=rm.GetMethod();
if
(m.equals(
"GET"
)) {
as.setSessionVar(
"KontrolleraBkSession_Initiated"
,
"1"
);
}
else
if
(m.equals(
"POST"
)) {
String minit=(String)as.getSessionVar(
"KontrolleraBkSession_Initiated"
);
if
(minit==
null
|| !minit.equals(
"1"
)) {
throw
new
SessionSaknas(
"Sessionen mot boendekalkylen har avslutats på servern,\r\ntroligtvis på grund av att du varit inaktiv för lång tid.\r\nUppgifter som matats in sedan du sparade sist har tyvärr gått förlorade!"
);
}
}
else
{
throw
new
java.lang.UnsupportedOperationException(
"Requestmetod '"
+m+
"' ej supportad av klassen KontrolleraBkSession!"
);
}
}
}