001 /* 002 * Cumulus4j - Securing your data in the cloud - http://cumulus4j.org 003 * Copyright (C) 2011 NightLabs Consulting GmbH 004 * 005 * This program is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 017 */ 018 package org.cumulus4j.keymanager.back.shared; 019 020 import javax.xml.bind.annotation.XmlRootElement; 021 022 /** 023 * Super-class for all requests sent from app-server to key-manager. 024 * 025 * @author Marco หงุ่ยตระกูล-Schulze - marco at nightlabs dot de 026 * @see Response 027 */ 028 @XmlRootElement 029 public abstract class Request extends Message 030 { 031 private static final long serialVersionUID = 1L; 032 033 private String cryptoSessionID; 034 035 public Request() { } 036 037 public Request(String cryptoSessionID) 038 { 039 if (cryptoSessionID == null) 040 throw new IllegalArgumentException("cryptoSessionID == null"); 041 042 setRequestID(IdentifierUtil.createRandomID()); 043 this.cryptoSessionID = cryptoSessionID; 044 } 045 046 public String getCryptoSessionID() { 047 return cryptoSessionID; 048 } 049 public void setCryptoSessionID(String cryptoSessionID) { 050 this.cryptoSessionID = cryptoSessionID; 051 } 052 053 /** 054 * Get the session-id-prefix that is used for routing of messages. 055 * <p> 056 * See <code>org.cumulus4j.keymanager.Session</code> and <code>org.cumulus4j.keymanager.SessionManager</code> 057 * for its creation. 058 * @return the session-id-prefix that is used for routing of messages. 059 */ 060 public String getCryptoSessionIDPrefix() 061 { 062 String id = cryptoSessionID; 063 if (id == null) 064 return null; 065 066 int dotIdx = id.indexOf('*'); 067 if (dotIdx < 0) 068 throw new IllegalStateException("cryptoSessionID does not contain a dot ('*')!!!"); 069 070 return id.substring(0, dotIdx); 071 } 072 073 @Override 074 public String toString() { 075 return super.toString() + '[' + getRequestID() + ',' + cryptoSessionID + ']'; 076 } 077 }