public static ReplicationResult SendAndRecv2(HttpClient client,
			ContentExchange exchange) throws BookStoreException {
		int exchangeState;
		try {
			client.send(exchange);
		} catch (IOException ex) {
			throw new BookStoreException(
					BookStoreClientConstants.strERR_CLIENT_REQUEST_SENDING, ex);
		}

		try {
			exchangeState = exchange.waitForDone(); // block until the response
													// is available
		} catch (InterruptedException ex) {
			throw new BookStoreException(
					BookStoreClientConstants.strERR_CLIENT_REQUEST_SENDING, ex);
		}

		if (exchangeState == HttpExchange.STATUS_COMPLETED) {
			try {
				ReplicationResult bookStoreResponse = (ReplicationResult) BookStoreUtility
						.deserializeXMLStringToObject(exchange
								.getResponseContent().trim());
				if (bookStoreResponse == null) {
					throw new BookStoreException(
							BookStoreClientConstants.strERR_CLIENT_RESPONSE_DECODING);
				}
				/*//In case a replication was not successful
				boolean succesfull = bookStoreResponse.isReplicationSuccessful();
				if (!succesfull) {
					return null;
				*/
				return bookStoreResponse;

			} catch (UnsupportedEncodingException ex) {
				throw new BookStoreException(
						BookStoreClientConstants.strERR_CLIENT_RESPONSE_DECODING,
						ex);
			}
		} else if (exchangeState == HttpExchange.STATUS_EXCEPTED) {
			throw new BookStoreException(
					BookStoreClientConstants.strERR_CLIENT_REQUEST_EXCEPTION);
		} else if (exchangeState == HttpExchange.STATUS_EXPIRED) {
			throw new BookStoreException(
					BookStoreClientConstants.strERR_CLIENT_REQUEST_TIMEOUT);
		} else {
			throw new BookStoreException(
					BookStoreClientConstants.strERR_CLIENT_UNKNOWN);
		}
	}