All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencms.ugc.client.export.CmsXmlContentUgcApi Maven / Gradle / Ivy

Go to download

OpenCms is an enterprise-ready, easy to use website content management system based on Java and XML technology. Offering a complete set of features, OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.

There is a newer version: 18.0
Show newest version
/*
 * This library is part of OpenCms -
 * the Open Source Content Management System
 *
 * Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com)
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * For further information about Alkacon Software, please see the
 * company website: http://www.alkacon.com
 *
 * For further information about OpenCms, please see the
 * project website: http://www.opencms.org
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package org.opencms.ugc.client.export;

import org.opencms.ugc.client.CmsRequestCounter;
import org.opencms.ugc.client.CmsRpcCallHelper;
import org.opencms.ugc.shared.CmsUgcConstants;
import org.opencms.ugc.shared.CmsUgcContent;
import org.opencms.ugc.shared.CmsUgcException;
import org.opencms.ugc.shared.rpc.I_CmsUgcEditService;
import org.opencms.ugc.shared.rpc.I_CmsUgcEditServiceAsync;
import org.opencms.util.CmsUUID;

import org.timepedia.exporter.client.Export;
import org.timepedia.exporter.client.ExportPackage;
import org.timepedia.exporter.client.Exportable;
import org.timepedia.exporter.client.NoExport;

import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.GWT.UncaughtExceptionHandler;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;

/**
 * Root access point for the Javascript form editing API exported with gwt-exporter. Can be used
 * to acquire new form editing sessions.

*/ @Export @ExportPackage("opencmsugc") public class CmsXmlContentUgcApi implements Exportable { /** The request counter. */ private CmsRequestCounter m_requestCounter = new CmsRequestCounter(); /** Service instance. */ @NoExport public static final I_CmsUgcEditServiceAsync SERVICE = GWT.create(I_CmsUgcEditService.class); /** The service URL. */ @NoExport public static final String SERVICE_URL; /** * Default constructor for gwt-exporter.

*/ public CmsXmlContentUgcApi() { GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() { public void onUncaughtException(final Throwable e) { handleError(e, new I_CmsErrorCallback() { public void call(String errorType, String message, JavaScriptObject additionalData) { throw new RuntimeException(e); } }); } }); } static { String url = Window.Location.getHref(); // cut off fragment, parameters, and trailing slash, then append service name url = url.replaceAll("#.*$", "").replaceAll("\\?.*$", "").replaceAll("/$", "") + "/org.opencms.ugc.CmsUgcEditService.gwt"; SERVICE_URL = url; ((ServiceDefTarget)SERVICE).setServiceEntryPoint(SERVICE_URL); } /** * Gets the request counter.

* * @return the request counter */ @NoExport public CmsRequestCounter getRequestCounter() { return m_requestCounter; } /** * Creates an RPC helper object.

* * @return the RPC helper */ @NoExport public CmsRpcCallHelper getRpcHelper() { return new CmsRpcCallHelper(m_requestCounter); } /** * Passes an exception to the given error handling callback and optionally outputs some debug info.

* * @param e the exception * @param callback the error handling callback */ public void handleError(Throwable e, I_CmsErrorCallback callback) { String errorCode = CmsUgcConstants.ErrorCode.errMisc.toString(); String message; if (e instanceof CmsUgcException) { CmsUgcException formException = (CmsUgcException)e; errorCode = formException.getErrorCode().toString(); message = formException.getUserMessage(); } else { message = e.getMessage(); } if (callback != null) { callback.call(errorCode, message, JavaScriptObject.createObject()); } } /** * Loads a pre-created session.

* * @param sessionId the session id * @param formElement the form element * @param onSuccess the callback to call in case of success * @param onError the callback to call in case of an error */ public void initFormForSession( final String sessionId, final Element formElement, final I_CmsClientCmsUgcSessionCallback onSuccess, final I_CmsErrorCallback onError) { getRpcHelper().executeRpc(SERVICE.getContent(new CmsUUID(sessionId), new AsyncCallback() { public void onFailure(Throwable caught) { handleError(caught, onError); } public void onSuccess(CmsUgcContent result) { CmsClientUgcSession session = new CmsClientUgcSession(CmsXmlContentUgcApi.this, result); session.initFormElement(formElement); onSuccess.call(session); } })); } /** * Sets the error callback for all uncaught exceptions.

* * @param callback the error callback */ public void setErrorCallback(final I_CmsStringArrayCallback callback) { if (callback != null) { GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() { public void onUncaughtException(Throwable e) { String[] stack = new String[e.getStackTrace().length]; for (int i = 0; i < e.getStackTrace().length; i++) { StackTraceElement stackEl = e.getStackTrace()[i]; stack[i] = stackEl.toString(); } callback.call(stack); } }); } else { GWT.setUncaughtExceptionHandler(null); } } /** * Sets the wait indicator callback.

* * @param callback a callback used to switch the wait indicator off or on.

*/ public void setWaitIndicatorCallback(I_CmsBooleanCallback callback) { m_requestCounter.setCallback(callback); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy