protected String createToken(
     String gadgetURL, String owner, String viewer, Long moduleId, String container) {
   try {
     BlobCrypter crypter = getBlobCrypter(this.containerKey);
     ExoBlobCrypterSecurityToken t =
         new ExoBlobCrypterSecurityToken(crypter, container, (String) null);
     t.setAppUrl(gadgetURL);
     t.setModuleId(moduleId);
     t.setOwnerId(owner);
     t.setViewerId(viewer);
     t.setTrustedJson("trusted");
     String portalContainer = PortalContainer.getCurrentPortalContainerName();
     PortalRequestContext portalRequestContext = Util.getPortalRequestContext();
     String url = portalRequestContext.getRequest().getRequestURL().toString();
     String hostName = url.substring(0, url.indexOf(portalRequestContext.getRequestContextPath()));
     t.setPortalContainer(portalContainer);
     t.setHostName(hostName);
     t.setPortalOwner(portalRequestContext.getPortalOwner());
     return t.encrypt();
   } catch (Exception e) {
     LOG.error("Failed to generate token for gadget " + gadgetURL + " for owner " + owner, e);
   }
   return null;
 }