/* Parse and execute a NAMING message */ protected boolean execNamingMessage(String opcode, Properties props) { if (opcode.equals("LOOKUP")) { if (props == null) { _log.debug("No parameters specified in NAMING LOOKUP message"); return false; } String name = props.getProperty("NAME"); if (name == null) { _log.debug("Name to resolve not specified in NAMING message"); return false; } Destination dest = null; if (name.equals("ME")) { if (getRawSession() != null) { dest = getRawSession().getDestination(); } else if (getStreamSession() != null) { dest = getStreamSession().getDestination(); } else if (getDatagramSession() != null) { dest = getDatagramSession().getDestination(); } else { _log.debug("Lookup for SESSION destination, but session is null"); return false; } } else { try { dest = SAMUtils.getDest(name); } catch (DataFormatException e) { } } if (dest == null) { return writeString("NAMING REPLY RESULT=KEY_NOT_FOUND NAME=" + name + "\n"); } return writeString( "NAMING REPLY RESULT=OK NAME=" + name + " VALUE=" + dest.toBase64() + "\n"); } else { _log.debug("Unrecognized NAMING message opcode: \"" + opcode + "\""); return false; } }