throws InvalidTicketException {
throws InvalidTicketException, MoriaStoreException {
    public String createServiceTicket(final String loginTicketId, final String targetServicePrincipal)            throws InvalidTicketException {        /* Validate arguments */        if (loginTicketId == null || loginTicketId.equals("")) {            throw new IllegalArgumentException("loginTicketId must be a non-empty string");        }        if (targetServicePrincipal == null || targetServicePrincipal.equals("")) {            throw new IllegalArgumentException("servicePrincipal must be a non-empty string");        }        MoriaTicket loginTicket = getTicketFromStore(MoriaTicketType.LOGIN_TICKET, loginTicketId);        validateTicket(loginTicket, MoriaTicketType.LOGIN_TICKET, targetServicePrincipal);        /*         * Create new service ticket and assosiate it with the same authentication attempt as the         * login ticket         */        MoriaTicket serviceTicket = new MoriaTicket(MoriaTicketType.SERVICE_TICKET, loginTicket.getServicePrincipal(),                serviceTicketTTL);        insertIntoStore(serviceTicket, getAuthnAttempt(loginTicketId, true), null);        return serviceTicket.getTicketId();    }