code: @Override
  	public void read(DataInputView in) throws IOException {
  		final boolean isNotNull = in.readBoolean();
  		if (isNotNull) {
  			final String scheme = StringUtils.readNullableString(in);
  			final String userInfo = StringUtils.readNullableString(in);
  			final String host = StringUtils.readNullableString(in);
  			final int port = in.readInt();
  			final String path = StringUtils.readNullableString(in);
  			final String query = StringUtils.readNullableString(in);
  			final String fragment = StringUtils.readNullableString(in);
  
  			try {
  				uri = new URI(scheme, userInfo, host, port, path, query, fragment);
  			} catch (URISyntaxException e) {
  				throw new IOException("Error reconstructing URI", e);
  			}
  		}
  	}
docs: ------------------------------------------------------------------------