123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- /*
- * Copyright 2000-2018 Vaadin Ltd.
- *
- * 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 com.vaadin.server;
-
- import java.io.Serializable;
- import java.util.Locale;
- import java.util.Properties;
-
- import com.vaadin.shared.ApplicationConstants;
- import com.vaadin.ui.Component;
- import com.vaadin.ui.UI;
- import com.vaadin.util.ReflectTools;
-
- /**
- * Contains helper methods shared by {@link VaadinServlet} and
- * {@link VaadinPortlet}.
- *
- * @deprecated As of 7.1. Will be removed or refactored in the future.
- */
- @Deprecated
- public class ServletPortletHelper implements Serializable {
- public static final String UPLOAD_URL_PREFIX = "APP/UPLOAD/";
- /**
- * The default SystemMessages (read-only).
- */
- static final SystemMessages DEFAULT_SYSTEM_MESSAGES = new SystemMessages();
-
- static Class<? extends LegacyApplication> getLegacyApplicationClass(
- VaadinService vaadinService) throws ServiceException {
- Properties initParameters = vaadinService.getDeploymentConfiguration()
- .getInitParameters();
- String applicationParameter = initParameters.getProperty("application");
- ClassLoader classLoader = vaadinService.getClassLoader();
-
- if (applicationParameter == null) {
- throw new ServiceException(
- "No \"application\" init parameter found");
- }
-
- try {
- return classLoader.loadClass(applicationParameter)
- .asSubclass(LegacyApplication.class);
- } catch (final ClassNotFoundException e) {
- throw new ServiceException(
- "Failed to load application class: " + applicationParameter,
- e);
- }
- }
-
- private static void verifyUIClass(String className, ClassLoader classLoader)
- throws ServiceException {
- if (className == null) {
- throw new ServiceException(
- VaadinSession.UI_PARAMETER + " init parameter not defined");
- }
-
- // Check that the UI layout class can be found
- try {
- Class<?> uiClass = classLoader.loadClass(className);
- if (!UI.class.isAssignableFrom(uiClass)) {
- throw new ServiceException(
- className + " does not implement UI");
- }
- // Try finding a default constructor, else throw exception
- uiClass.getConstructor();
- } catch (ClassNotFoundException e) {
- throw new ServiceException(className + " could not be loaded", e);
- } catch (SecurityException e) {
- throw new ServiceException(
- "Could not access " + className + " class", e);
- } catch (NoSuchMethodException e) {
- throw new ServiceException(
- className + " doesn't have a public no-args constructor");
- }
- }
-
- private static boolean hasPathPrefix(VaadinRequest request, String prefix) {
- String pathInfo = request.getPathInfo();
-
- if (pathInfo == null) {
- return false;
- }
-
- if (!prefix.startsWith("/")) {
- prefix = '/' + prefix;
- }
-
- if (!pathInfo.endsWith("/") && prefix.endsWith("/")) {
- pathInfo += '/';
- }
-
- if (pathInfo.startsWith(prefix)) {
- return true;
- }
-
- return false;
- }
-
- private static boolean isPathInfo(VaadinRequest request, String string) {
- String pathInfo = request.getPathInfo();
-
- if (pathInfo == null) {
- return false;
- }
-
- if (!string.startsWith("/")) {
- string = '/' + string;
- }
-
- if (pathInfo.equals(string)) {
- return true;
- }
-
- return false;
- }
-
- public static boolean isFileUploadRequest(VaadinRequest request) {
- return hasPathPrefix(request, UPLOAD_URL_PREFIX);
- }
-
- public static boolean isPublishedFileRequest(VaadinRequest request) {
- return hasPathPrefix(request,
- ApplicationConstants.PUBLISHED_FILE_PATH + "/");
- }
-
- public static boolean isUIDLRequest(VaadinRequest request) {
- return hasPathPrefix(request, ApplicationConstants.UIDL_PATH + '/');
- }
-
- public static boolean isAppRequest(VaadinRequest request) {
- return hasPathPrefix(request, ApplicationConstants.APP_PATH + '/');
- }
-
- public static boolean isHeartbeatRequest(VaadinRequest request) {
- return hasPathPrefix(request,
- ApplicationConstants.HEARTBEAT_PATH + '/');
- }
-
- public static boolean isPushRequest(VaadinRequest request) {
- return isPathInfo(request, ApplicationConstants.PUSH_PATH);
- }
-
- public static void initDefaultUIProvider(VaadinSession session,
- VaadinService vaadinService) throws ServiceException {
- String uiProperty = vaadinService.getDeploymentConfiguration()
- .getUIClassName();
-
- // Add provider for UI parameter first to give it lower priority
- // (providers are FILO)
- if (uiProperty != null) {
- verifyUIClass(uiProperty, vaadinService.getClassLoader());
- session.addUIProvider(new DefaultUIProvider());
- }
-
- String uiProviderProperty = vaadinService.getDeploymentConfiguration()
- .getUIProviderClassName();
- // Then add custom UI provider if defined
- if (uiProviderProperty != null) {
- UIProvider uiProvider = getUIProvider(uiProviderProperty,
- vaadinService.getClassLoader());
- session.addUIProvider(uiProvider);
- }
- }
-
- private static UIProvider getUIProvider(String uiProviderProperty,
- ClassLoader classLoader) throws ServiceException {
- try {
- Class<?> providerClass = classLoader.loadClass(uiProviderProperty);
- Class<? extends UIProvider> subclass = providerClass
- .asSubclass(UIProvider.class);
- return ReflectTools.createInstance(subclass);
- } catch (ClassNotFoundException e) {
- throw new ServiceException(
- "Could not load UIProvider class " + uiProviderProperty, e);
- } catch (ClassCastException e) {
- throw new ServiceException("UIProvider class " + uiProviderProperty
- + " does not extend UIProvider", e);
- }
- }
-
- public static void checkUiProviders(VaadinSession session,
- VaadinService vaadinService) throws ServiceException {
- if (session.getUIProviders().isEmpty()) {
- throw new ServiceException(
- "No UIProvider has been added and there is no \""
- + VaadinSession.UI_PARAMETER
- + "\" init parameter.");
- }
- }
-
- /**
- * Helper to find the most most suitable Locale. These potential sources are
- * checked in order until a Locale is found:
- * <ol>
- * <li>The passed component (or UI) if not null</li>
- * <li>{@link UI#getCurrent()} if defined</li>
- * <li>The passed session if not null</li>
- * <li>{@link VaadinSession#getCurrent()} if defined</li>
- * <li>The passed request if not null</li>
- * <li>{@link VaadinService#getCurrentRequest()} if defined</li>
- * <li>{@link Locale#getDefault()}</li>
- * </ol>
- */
- public static Locale findLocale(Component component, VaadinSession session,
- VaadinRequest request) {
- if (component == null) {
- component = UI.getCurrent();
- }
- if (component != null) {
- Locale locale = component.getLocale();
- if (locale != null) {
- return locale;
- }
- }
-
- if (session == null) {
- session = VaadinSession.getCurrent();
- }
- if (session != null) {
- Locale locale = session.getLocale();
- if (locale != null) {
- return locale;
- }
- }
-
- if (request == null) {
- request = VaadinService.getCurrentRequest();
- }
- if (request != null) {
- Locale locale = request.getLocale();
- if (locale != null) {
- return locale;
- }
- }
-
- return Locale.getDefault();
- }
-
- private ServletPortletHelper() {
- }
- }
|