fluid-ws-java-client/src/main/java/com/fluidbpm/ws/client/v1/sqlutil/SQLUtilWebSocketGetDescendantsClient.java
public List<FormListing> getDescendantsSynchronized(
			Form ... formToGetDescendantsForParam) {

		if(formToGetDescendantsForParam == null ||
				formToGetDescendantsForParam.length == 0) {
			return null;
		}

		//Start a new request...
		String uniqueReqId = this.initNewRequest();

		//Mass data fetch...
		int numberOfSentForms = 0;
		if(this.massFetch) {
			FormListing listingToSend = new FormListing();
			List<Form> listOfValidForms = new ArrayList();
			for(Form formToSend : formToGetDescendantsForParam) {
				if(formToSend == null) {
					throw new FluidClientException(
							"Cannot provide 'null' for Form.",
							FluidClientException.ErrorCode.ILLEGAL_STATE_ERROR);
				}

				listOfValidForms.add(new Form(formToSend.getId()));
			}

			listingToSend.setEcho(UUID.randomUUID().toString());
			listingToSend.setListing(listOfValidForms);

			//Send the actual message...
			this.sendMessage(listingToSend, uniqueReqId);
			numberOfSentForms++;
		} else {
			//Single...
			//Send all the messages...
			for(Form formToSend : formToGetDescendantsForParam) {
				this.setEchoIfNotSet(formToSend);

				//Send the actual message...
				this.sendMessage(formToSend, uniqueReqId);
				numberOfSentForms++;
			}
		}

		try {
			List<FormListing> returnValue =
					this.getHandler(uniqueReqId).getCF().get(
							this.getTimeoutInMillis(), TimeUnit.MILLISECONDS);

			//Connection was closed.. this is a problem....
			if(this.getHandler(uniqueReqId).isConnectionClosed()) {
				throw new FluidClientException(
						"SQLUtil-WebSocket-GetDescendants: " +
								"The connection was closed by the server prior to the response received.",
						FluidClientException.ErrorCode.IO_ERROR);
			}

			return returnValue;
		} catch (InterruptedException exceptParam) {
			//Interrupted...

			throw new FluidClientException(
					"SQLUtil-WebSocket-Interrupted-GetDescendants: " +
							exceptParam.getMessage(),
					exceptParam,
					FluidClientException.ErrorCode.STATEMENT_EXECUTION_ERROR);
		} catch (ExecutionException executeProblem) {
			//Error on the web-socket...

			Throwable cause = executeProblem.getCause();

			//Fluid client exception...
			if(cause instanceof FluidClientException) {
				throw (FluidClientException)cause;
			} else {
				throw new FluidClientException(
						"SQLUtil-WebSocket-GetDescendants: " +
								cause.getMessage(), cause,
						FluidClientException.ErrorCode.STATEMENT_EXECUTION_ERROR);
			}
		} catch (TimeoutException eParam) {
			//Timeout...
			String errMessage = this.getExceptionMessageVerbose(
					"SQLUtil-WebSocket-GetDescendants",
					uniqueReqId,
					numberOfSentForms);
			throw new FluidClientException(
					errMessage, FluidClientException.ErrorCode.IO_ERROR);
		} finally {
			this.removeHandler(uniqueReqId);
		}
	}
public List<FormListing> getDescendantsSynchronized(
			Form ... formToGetDescendantsForParam) {

		if(formToGetDescendantsForParam == null ||
				formToGetDescendantsForParam.length == 0) {
			return null;
		}

		//Start a new request...
		String uniqueReqId = this.initNewRequest();

		//Mass data fetch...
		int numberOfSentForms = 0;
		if(this.massFetch) {
			FormListing listingToSend = new FormListing();
			List<Form> listOfValidForms = new ArrayList();
			for(Form formToSend : formToGetDescendantsForParam) {
				if(formToSend == null) {
					throw new FluidClientException(
							"Cannot provide 'null' for Form.",
							FluidClientException.ErrorCode.ILLEGAL_STATE_ERROR);
				}

				listOfValidForms.add(new Form(formToSend.getId()));
			}

			listingToSend.setEcho(UUID.randomUUID().toString());
			listingToSend.setListing(listOfValidForms);

			//Send the actual message...
			this.sendMessage(listingToSend, uniqueReqId);
			numberOfSentForms++;
		} else {
			//Single...
			//Send all the messages...
			for(Form formToSend : formToGetDescendantsForParam) {
				this.setEchoIfNotSet(formToSend);

				//Send the actual message...
				this.sendMessage(formToSend, uniqueReqId);
				numberOfSentForms++;
			}
		}

		try {
			List<FormListing> returnValue =
					this.getHandler(uniqueReqId).getCF().get(
							this.getTimeoutInMillis(), TimeUnit.MILLISECONDS);

			//Connection was closed.. this is a problem....
			if(this.getHandler(uniqueReqId).isConnectionClosed()) {
				throw new FluidClientException(
						"SQLUtil-WebSocket-GetDescendants: " +
								"The connection was closed by the server prior to the response received.",
						FluidClientException.ErrorCode.IO_ERROR);
			}

			return returnValue;
		} catch (InterruptedException exceptParam) {
			//Interrupted...

			throw new FluidClientException(
					"SQLUtil-WebSocket-Interrupted-GetDescendants: " +
							exceptParam.getMessage(),
					exceptParam,
					FluidClientException.ErrorCode.STATEMENT_EXECUTION_ERROR);
		} catch (ExecutionException executeProblem) {
			//Error on the web-socket...

			Throwable cause = executeProblem.getCause();

			//Fluid client exception...
			if(cause instanceof FluidClientException) {
				throw (FluidClientException)cause;
			} else {
				throw new FluidClientException(
						"SQLUtil-WebSocket-GetDescendants: " +
								cause.getMessage(), cause,
						FluidClientException.ErrorCode.STATEMENT_EXECUTION_ERROR);
			}
		} catch (TimeoutException eParam) {
			//Timeout...
			String errMessage = this.getExceptionMessageVerbose(
					"SQLUtil-WebSocket-GetDescendants",
					uniqueReqId,
					numberOfSentForms);
			throw new FluidClientException(
					errMessage, FluidClientException.ErrorCode.IO_ERROR);
		} finally {
			this.removeHandler(uniqueReqId);
		}
	}
Retrieves all the Descendants (Forms) for the {@code formToGetTableFormsForParam}.

@param formToGetDescendantsForParam The Fluid Form to get Descendants for.

@return The {@code formToGetDescendantsForParam} Descendants as {@code Form}'s.