String url = helper.getApiSearchUrl(pkgName);
boolean isUpdate = getForm(pkgName, form.getName()) != null;
String finalUrl = url + URLEncoder.encode(form.getName(), GuvnorHelper.ENCODING) + ".formdef";
method = isUpdate ? helper.createPutMethod(finalUrl) : helper.createPostMethod(finalUrl);
FormRepresentationEncoder encoder = FormEncodingFactory.getEncoder();
method.setRequestEntity(new StringRequestEntity(encoder.encode(form), null, null));
method.setRequestHeader("Checkin-Comment", form.getDocumentation());
helper.setAuth(client, method);
client.executeMethod(method);
if (!"OK".equalsIgnoreCase(method.getResponseBodyAsString())) {
throw new FormServiceException("Remote guvnor error: " + method.getResponseBodyAsString());