/** * Copyright 2011 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jbpm.formapi.client.form; import org.jbpm.formapi.client.form.FormEncodingClientFactory; import org.jbpm.formapi.shared.api.FormRepresentation; import org.jbpm.formapi.shared.form.FormRepresentationDecoder; import org.jbpm.formapi.shared.form.FormRepresentationEncoder; import com.google.gwt.junit.client.GWTTestCase; public class FormEncodingClientFactoryGwtTest extends GWTTestCase { private static final String JSON = "{\"name\": \"myForm\",\"action\": \"complete\","+ "\"taskId\": \"myTask\",\"documentation\": \"This is documentation\",\"enctype\": \"multipart/form-data\","+ "\"lastModified\": \"1309368553625\",\"method\": \"POST\",\"formItems\": [{\"styleClass\": null,"+ "\"value\": \"Login Form Template\",\"typeId\": \"header\",\"input\": null,"+ "\"@className\": \"org.jbpm.formbuilder.shared.api.items.HeaderRepresentation\","+ "\"width\": null,\"height\": null,\"output\": null,\"cssId\": null,\"cssName\": null,"+ "\"itemValidations\": []},{\"input\": null,\"width\": \"100%\",\"rows\": 3,\"output\": null,"+ "\"itemValidations\": [],\"columns\": 2,\"@className\": \"org.jbpm.formbuilder.shared.api.items.TableRepresentation\","+ "\"typeId\": \"table\",\"cellPadding\": 0,\"height\": \"200px\",\"borderWidth\": 1,\"cellSpacing\": 0,\"elements\": ["+ "[{\"value\": \"Password\",\"typeId\": \"label\",\"input\": null,\"@className\": " + "\"org.jbpm.formbuilder.shared.api.items.LabelRepresentation\",\"width\": null,\"height\": null,\"output\": null,\"cssName\": null,"+ "\"itemValidations\": [],\"id\": null},{\"maxLength\": null,\"typeId\": \"textField\",\"input\": null,\"@className\": " + "\"org.jbpm.formbuilder.shared.api.items.TextFieldRepresentation\",\"width\": \"160px\",\"defaultValue\": null,\"height\": \"21px\"," + "\"output\": null,\"itemValidations\": [],\"name\": \"usr\",\"id\": null}],[{\"value\": null,\"typeId\": \"label\",\"input\": null,"+ "\"@className\": \"org.jbpm.formbuilder.shared.api.items.LabelRepresentation\",\"width\": null,\"height\": null,"+ "\"output\": null,\"cssName\": null,\"itemValidations\": [],\"id\": null},{\"maxLength\": null,\"typeId\": \"textField\","+ "\"input\": null,\"@className\": \"org.jbpm.formbuilder.shared.api.items.TextFieldRepresentation\",\"width\": \"160px\","+ "\"defaultValue\": null,\"height\": \"21px\",\"output\": null,\"itemValidations\": [],\"name\": \"pwd\",\"id\": null"+ "}],[null,{\"onClickScript\": {\"@className\": \"org.jbpm.formbuilder.shared.api.FBScript\", \"type\": \"text/javascript\"," + "\"documentation\": null,\"content\": \"document.forms[0].submit();\",\"src\": null,\"invokeFunction\": null,\"id\": null}," + "\"typeId\": \"completeButton\",\"input\": null,\"@className\": \"org.jbpm.formbuilder.shared.api.items.CompleteButtonRepresentation\"," + "\"text\": \"Login\",\"width\": \"140px\",\"height\": \"25px\",\"output\": null,\"itemValidations\": [],\"name\": null,\"id\": null"+ "}]]}],\"formValidations\": [],\"inputs\": {\"in2\": {\"@className\": \"org.jbpm.formbuilder.shared.api.InputData\","+ "\"mimeType\": null,\"value\": \"${process.dataY}\",\"name\": \"in2\",\"formatter\": null},\"in1\": {"+ "\"@className\": \"org.jbpm.formbuilder.shared.api.InputData\",\"mimeType\": null,\"value\": \"${process.dataX}\","+ "\"name\": \"in1\",\"formatter\": null}},\"outputs\": {\"process.dataZ\": {"+ "\"@className\": \"org.jbpm.formbuilder.shared.api.OutputData\",\"mimeType\": null,\"value\": \"${pwd}\"," + "\"name\": \"process.dataZ\",\"formatter\": null}},\"onLoadScripts\": [],\"onSubmitScripts\": []}"; @Override public String getModuleName() { return "org.jbpm.formbuilder.FormBuilder"; } public void testComplexFormDecoding() throws Exception { String json = JSON; assertNotNull("json shouldn't be null", json); assertNotSame("json shouldn't be empty", "", json); FormRepresentationEncoder encoder = FormEncodingClientFactory.getEncoder(); FormRepresentationDecoder decoder = FormEncodingClientFactory.getDecoder(); FormRepresentation form = decoder.decode(json); assertNotNull("form shouldn't be null", form); String json2 = encoder.encode(form); FormRepresentation form2 = decoder.decode(json2); assertNotNull("json2 shouldn't be null", json2); assertNotSame("json2 shouldn't be empty", "", json2); assertNotNull("form2 shouldn't be null", form2); assertEquals("both forms should be the same in contents", form, form2); } }