fluid-ws-java-client/src/main/java/com/fluidbpm/ws/client/v1/sqlutil/SQLUtilWebSocketGetFormFieldsClient.java
public List<FormFieldListing> getFormFieldsSynchronized(
			Form ... formsToGetFieldListingForForParam
	) {
		if(formsToGetFieldListingForForParam == null) {
			return null;
		}

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

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

		//Send all the messages...
		int numberOfSentForms = 0;
		for(Form formToSend : formsToGetFieldListingForForParam) {
			this.setEchoIfNotSet(formToSend);

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

		try {
			List<FormFieldListing> 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-GetFormFields: " +
								"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-GetFormFields: " +
							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-GetFormFields: " +
								cause.getMessage(), cause,
						FluidClientException.ErrorCode.STATEMENT_EXECUTION_ERROR);
			}
		} catch (TimeoutException eParam) {
			//Timeout...
			String errMessage = this.getExceptionMessageVerbose(
					"SQLUtil-WebSocket-GetFormFields",
					uniqueReqId,
					numberOfSentForms);
			throw new FluidClientException(
					errMessage, FluidClientException.ErrorCode.IO_ERROR);
		} finally {
			this.removeHandler(uniqueReqId);
		}
	}
public List<FormFieldListing> getFormFieldsSynchronized(
			Form ... formsToGetFieldListingForForParam
	) {
		if(formsToGetFieldListingForForParam == null) {
			return null;
		}

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

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

		//Send all the messages...
		int numberOfSentForms = 0;
		for(Form formToSend : formsToGetFieldListingForForParam) {
			this.setEchoIfNotSet(formToSend);

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

		try {
			List<FormFieldListing> 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-GetFormFields: " +
								"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-GetFormFields: " +
							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-GetFormFields: " +
								cause.getMessage(), cause,
						FluidClientException.ErrorCode.STATEMENT_EXECUTION_ERROR);
			}
		} catch (TimeoutException eParam) {
			//Timeout...
			String errMessage = this.getExceptionMessageVerbose(
					"SQLUtil-WebSocket-GetFormFields",
					uniqueReqId,
					numberOfSentForms);
			throw new FluidClientException(
					errMessage, FluidClientException.ErrorCode.IO_ERROR);
		} finally {
			this.removeHandler(uniqueReqId);
		}
	}
Retrieves all the Ancestors (Forms) for the {@code formToGetAncestorsForForParam}.

@param formsToGetFieldListingForForParam The Fluid Form to get Ancestors for.

@return The {@code formToGetAncestorsForForParam} Table Records as {@code Form}'s.