@Override public final String getId() { return this.ticket.getId(); }
@Override public int compareTo(final Ticket o) { return this.id.compareTo(o.getId()); } }
@Override public int compareTo(final Ticket o) { return getId().compareTo(o.getId()); } }
/** * Delete a single ticket instance from the store. * * @param ticketId the ticket id * @return the boolean */ public boolean deleteSingleTicket(final Ticket ticketId) { return deleteSingleTicket(ticketId.getId()); }
@Override protected void updateTicket(final Ticket ticket) { try { this.cache.put(FQN_TICKET, ticket.getId(), ticket); } catch (final CacheException e) { throw new RuntimeException(e); } }
/** * {@inheritDoc} * Either the element is removed from the cache * or it's not found in the cache and is already removed. * Thus the result of this op would always be true. */ @Override public boolean deleteSingleTicket(final String ticketId) { final Ticket ticket = getTicket(ticketId); if (ticket == null) { logger.debug("Ticket {} cannot be retrieved from the cache", ticketId); return true; } if (this.ticketGrantingTicketsCache.remove(ticket.getId())) { logger.debug("Ticket {} is removed", ticket.getId()); } if (this.serviceTicketsCache.remove(ticket.getId())) { logger.debug("Ticket {} is removed", ticket.getId()); } return true; }
@Override public final boolean equals(final Object object) { if (object == null) { return false; } if (object == this) { return true; } if (!(object instanceof TicketGrantingTicket)) { return false; } final Ticket ticket = (Ticket) object; return new EqualsBuilder() .append(ticket.getId(), this.getId()) .isEquals(); } }
/** * {@inheritDoc} */ @Override public boolean equals(final Object object) { if (object == null) { return false; } if (object == this) { return true; } if (!(object instanceof ServiceTicket)) { return false; } final Ticket ticket = (Ticket) object; return new EqualsBuilder() .append(ticket.getId(), this.getId()) .isEquals(); }
@Override public Integer apply(@Nullable final Ticket ticket) { int count = 0; if (ticket != null && ticket.isExpired()) { if (ticket instanceof TicketGrantingTicket) { logger.debug("Cleaning up expired ticket-granting ticket [{}]", ticket.getId()); logoutManager.performLogout((TicketGrantingTicket) ticket); count += registry.deleteTicket(ticket.getId()); } else if (ticket instanceof ServiceTicket) { logger.debug("Cleaning up expired service ticket [{}]", ticket.getId()); count += registry.deleteTicket(ticket.getId()); } else { logger.warn("Unknown ticket type [{} found to clean", ticket.getClass().getSimpleName()); } } return count; } });
/** * {@inheritDoc} * @throws IllegalArgumentException if class is null. * @throws ClassCastException if class does not match requested ticket * class. * @return specified ticket from the registry */ @Override public final <T extends Ticket> T getTicket(final String ticketId, final Class<? extends Ticket> clazz) { Assert.notNull(clazz, "clazz cannot be null"); final Ticket ticket = this.getTicket(ticketId); if (ticket == null) { return null; } if (!clazz.isAssignableFrom(ticket.getClass())) { throw new ClassCastException("Ticket [" + ticket.getId() + " is of type " + ticket.getClass() + " when we were expecting " + clazz); } return (T) ticket; }
@Override public void addTicket(final Ticket ticketToAdd) { final Ticket ticket = encodeTicket(ticketToAdd); final Element element = new Element(ticket.getId(), ticket); if (ticket instanceof ServiceTicket) { logger.debug("Adding service ticket {} to the cache {}", ticket.getId(), this.serviceTicketsCache.getName()); this.serviceTicketsCache.put(element); } else if (ticket instanceof TicketGrantingTicket) { logger.debug("Adding ticket granting ticket {} to the cache {}", ticket.getId(), this.ticketGrantingTicketsCache.getName()); this.ticketGrantingTicketsCache.put(element); } else { throw new IllegalArgumentException("Invalid ticket type " + ticket); } }
@Override public Ticket getTicket(String ticketId) { final Ticket t = this.ticketsMap.get(ticketId); logger.debug("Returning Ticket[{}] from the Hazelcast IMap", t == null ? "null" : t.getId()); return t == null ? null : getProxiedTicketInstance(t); }
public void addTicket(final Ticket ticket) { logger.debug("Adding ticket {}", ticket); try { String redisKey = this.getTicketRedisKey(ticket.getId()); this.client.boundValueOps(redisKey).set(ticket, getTimeout(ticket), TimeUnit.SECONDS); } catch (final Exception e) { logger.error("Failed Adding {}", ticket, e); } }
protected void updateTicket(final Ticket ticket) { logger.debug("Updating ticket {}", ticket); try { String redisKey = this.getTicketRedisKey(ticket.getId()); this.client.boundValueOps(redisKey).set(ticket, getTimeout(ticket), TimeUnit.SECONDS); } catch (final Exception e) { logger.error("Failed updating {}", ticket, e); } }
/** * Encode ticket. * * @param ticket the ticket * @return the ticket */ protected Ticket encodeTicket(final Ticket ticket) { if (this.cipherExecutor == null) { logger.trace("Ticket encryption is not enabled. Falling back to default behavior"); return ticket; } if (ticket == null) { return ticket; } logger.info("Encoding [{}]", ticket); final byte[] encodedTicketObject = CompressionUtils.serializeAndEncodeObject( this.cipherExecutor, ticket); final String encodedTicketId = encodeTicketId(ticket.getId()); final Ticket encodedTicket = new EncodedTicket( ByteSource.wrap(encodedTicketObject), encodedTicketId); logger.info("Created [{}]", encodedTicket); return encodedTicket; }
@Override public int deleteTicket(final String ticketId) { int count = 0; if (ticketId == null) { return count; } final Ticket ticket = getTicket(ticketId); if (ticket == null) { return count; } if (ticket instanceof TicketGrantingTicket) { if (ticket instanceof ProxyGrantingTicket) { logger.debug("Removing proxy-granting ticket [{}]", ticketId); } logger.debug("Removing children of ticket [{}] from the registry.", ticket.getId()); final TicketGrantingTicket tgt = (TicketGrantingTicket) ticket; count += deleteChildren(tgt); final Collection<ProxyGrantingTicket> proxyGrantingTickets = tgt.getProxyGrantingTickets(); final Iterator<ProxyGrantingTicket> it = proxyGrantingTickets.iterator(); while(it.hasNext()) { final ProxyGrantingTicket pgt = it.next(); count += deleteTicket(pgt.getId()); } } logger.debug("Removing ticket [{}] from the registry.", ticket); if (deleteSingleTicket(ticketId)) { count++; } return count; }