code: private String resolveInternalDSLocation(Context context,
  			String internalDSLocation, Date dsCreateDT, String callbackHost)
  			throws ServerException {
  
  		if (callbackHost == null || callbackHost.isEmpty()) {
  			throw new DisseminationException(
  					"[DisseminationService] was unable to "
  							+ "resolve the base URL of the Fedora Server. The URL specified was: \""
  							+ callbackHost
  							+ "\". This information is required by the Dissemination Service.");
  		}
  
  		String[] s = internalDSLocation.split("\\+");
  		String dsLocation = null;
  		if (s.length == 3) {
  			dsLocation = callbackHost + "/" + m_fedoraAppServerContext
  					+ "/get/" + s[0] + "/" + s[1] + "/"
  					+ DateUtility.convertDateToString(dsCreateDT);
  
  		} else {
  			String message = "[DisseminationService] An error has occurred. "
  					+ "The internal dsLocation: \"" + internalDSLocation
  					+ "\" is " + "not in the required format of: "
  					+ "\"doPID+DSID+DSVERSIONID\" .";
  			logger.error(message);
  			throw new GeneralException(message);
  		}
  		logger.debug("********** Resolving Internal Datastream dsLocation: {}",
  				dsLocation);
  		return dsLocation;
  	}
docs: <p>
  Converts the internal dsLocation used by managed and XML type datastreams
  to the corresponding Default Dissemination request that will return the
  datastream contents.
  </p>
  
  @param internalDSLocation
  - dsLocation of the Managed or XML type datastream.
  @param PID
  - the persistent identifier of the digital object.
  @return - A URL corresponding to the Default Dissemination request for
  the specified datastream.
  @throws ServerException
  - If anything goes wrong during the conversion attempt.