private void parseSessionString(){
  if (isParsed) {
    return;
  }
  if (isNull()) {
    throw new IllegalArgumentException("sid value is null or empty");
  }
  String serverID=null;
  try {
    String sidString=encryptedString;
    if (isC66Encoded()) {
      sidString=c66DecodeCookieString(encryptedString);
    }
    int outerIndex=sidString.lastIndexOf("@");
    if (outerIndex == -1) {
      isParsed=true;
      return;
    }
    String outer=sidString.substring(outerIndex + 1);
    int tailIndex=outer.indexOf("#");
    tail=outer.substring(tailIndex + 1);
    if (tailIndex != -1) {
      String extensionPart=outer.substring(0,tailIndex);
      extensions=new DynamicSessionIDExtensions(new LegacySessionIDExtensions(extensionPart));
    }
 else {
      extensions=new LegacySessionIDExtensions();
    }
    serverID=extensions.getSiteID();
    if (serverID != null) {
      setServerID(serverID);
    }
  }
 catch (  Exception e) {
    debug.error("Invalid sessionid format:[" + encryptedString + "]",e);
    throw new IllegalArgumentException("Invalid sessionid format:[" + encryptedString + "]"+ e);
  }
  isParsed=true;
}

private void parseSessionString ( ) { if ( isParsed ) { return ; } if ( isNull ( ) ) { throw new IllegalArgumentException ( "sid value is null or empty" ) ; } String serverID = null ; try { String sidString = encryptedString ; if ( isC66Encoded ( ) ) { sidString = c66DecodeCookieString ( encryptedString ) ; } int outerIndex = sidString . lastIndexOf ( "@" ) ; if ( outerIndex == - 1 ) { isParsed = true ; return ; } String outer = sidString . substring ( outerIndex + 1 ) ; int tailIndex = outer . indexOf ( "#" ) ; tail = outer . substring ( tailIndex + 1 ) ; if ( tailIndex != - 1 ) { String extensionPart = outer . substring ( 0 , tailIndex ) ; extensions = new DynamicSessionIDExtensions ( new LegacySessionIDExtensions ( extensionPart ) ) ; } else { extensions = new LegacySessionIDExtensions ( ) ; } serverID = extensions . getSiteID ( ) ; if ( serverID != null ) { setServerID ( serverID ) ; } } catch ( Exception e ) { debug . error ( "Invalid sessionid format:[" + encryptedString + "]" , e ) ; throw new IllegalArgumentException ( "Invalid sessionid format:[" + encryptedString + "]" + e ) ; } isParsed = true ; }
extracts the server , protocol , port , extensions and tail from session id
