package com.alexanderlogistics.zoho; import jakarta.annotation.security.DeclareRoles; import jakarta.annotation.security.RolesAllowed; import jakarta.annotation.security.RunAs; import jakarta.ejb.Lock; import jakarta.ejb.LockType; import jakarta.ejb.Singleton; /** * Der ZohoAPIService stellt methoden für den Zugriff auf die Zoho API bereit. * Er handelt auch die Authentifizeirung über einen Access Token. Der * ZohoOAuhtGrantService der dazu dient einen AccessCode von Zoho zu ermitteln * übergibt den code an diesesn Servcie. Er dietn also als Singelton */ @DeclareRoles({ "org.imixs.ACCESSLEVEL.NOACCESS", "org.imixs.ACCESSLEVEL.READERACCESS", "org.imixs.ACCESSLEVEL.AUTHORACCESS", "org.imixs.ACCESSLEVEL.EDITORACCESS", "org.imixs.ACCESSLEVEL.MANAGERACCESS" }) @RolesAllowed({ "org.imixs.ACCESSLEVEL.NOACCESS", "org.imixs.ACCESSLEVEL.READERACCESS", "org.imixs.ACCESSLEVEL.AUTHORACCESS", "org.imixs.ACCESSLEVEL.EDITORACCESS", "org.imixs.ACCESSLEVEL.MANAGERACCESS" }) @Singleton @RunAs("org.imixs.ACCESSLEVEL.MANAGERACCESS") public class ZohoAPIService { private String accessToken; private String clientID; private String clientSecret; @Lock(LockType.WRITE) // Standardmäßig ist @Lock(LockType.READ) public void setAccessToken(String token) { this.accessToken = token; } @Lock(LockType.READ) // Erlaubt parallele Lesezugriffe public String getAccessToken() { return accessToken; } }