code: public Destination createDestinationFromString(String uri, DestType destType) throws JMSException {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "createDestinationFromString", new Object[]{uri, destType});
      JmsDestination result = null;
  
      // throw exception if URI begins with illegal string
      if (uri.startsWith(JmsDestinationImpl.DEST_PREFIX)) {
        throw (JMSException) JmsErrorUtils.newThrowable(
          JMSException.class,
          "RESERVED_DEST_PREFIX_CWSIA0383",
          new Object[] { JmsDestinationImpl.DEST_PREFIX, uri },
          tc);
      }
  
      // Decide which method should process the URI, determined on its prefix.
      if (uri.startsWith(JmsQueueImpl.QUEUE_PREFIX) || uri.startsWith(JmsTopicImpl.TOPIC_PREFIX)) {
        result = processURI(uri, QM_ERROR, null);
      }
      else {
        if (destType == DestType.QUEUE) {
          JmsQueueImpl q = new JmsQueueImpl();
          q.setQueueName(uri);
          result = q;
        }
        else {
          // processShortopicForm processes the optional @topicspace element.
          result = processShortTopicForm(uri);
        }
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "createDestinationFromString",  result);
      return result;
    }
docs: This is the method called from JmsSessionImpl.createQueue()|Topic().
  The URI passed is first examined, and then the processing is delegated
  to one of the more specific methods.
  
  The only real processing done in this method is to remove any arbitrary
  escape characters (see code comment below for more detail).
  
  @param uri The URI from which to create the Destination
  @param destType String indicating Topic or Queue
  @throws JMSException if problems occure creating Destination from URI
  @return Object The fully configured Destination