diff options
-rw-r--r-- | .gitignore | 6 | ||||
-rw-r--r-- | server/src/com/vaadin/annotations/SystemMessagesMod.java | 39 | ||||
-rw-r--r-- | server/src/com/vaadin/server/VaadinServlet.java | 10 |
3 files changed, 54 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore index bdc0e45be5..78618d3f12 100644 --- a/.gitignore +++ b/.gitignore @@ -85,4 +85,8 @@ scripts/*.pyc result .sass-cache -phantomjsdriver.log
\ No newline at end of file +phantomjsdriver.log + +#IDEA +*.iml +.idea
\ No newline at end of file diff --git a/server/src/com/vaadin/annotations/SystemMessagesMod.java b/server/src/com/vaadin/annotations/SystemMessagesMod.java new file mode 100644 index 0000000000..944adf5d18 --- /dev/null +++ b/server/src/com/vaadin/annotations/SystemMessagesMod.java @@ -0,0 +1,39 @@ +/* + * Copyright 2000-2014 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.annotations; + +import com.vaadin.server.BootstrapListener; +import com.vaadin.server.SystemMessagesProvider; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Installs customized SystemMessagesProvider for VaadinServlet. + */ + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Inherited +@Documented +public @interface SystemMessagesMod { + public Class<? extends SystemMessagesProvider> value(); + +} diff --git a/server/src/com/vaadin/server/VaadinServlet.java b/server/src/com/vaadin/server/VaadinServlet.java index cd6e4cd7cd..785ee5631e 100644 --- a/server/src/com/vaadin/server/VaadinServlet.java +++ b/server/src/com/vaadin/server/VaadinServlet.java @@ -50,6 +50,7 @@ import javax.servlet.http.HttpServletResponse; import com.google.gwt.thirdparty.guava.common.base.Charsets; import com.google.gwt.thirdparty.guava.common.io.Files; +import com.vaadin.annotations.SystemMessagesMod; import com.vaadin.annotations.VaadinServletConfiguration; import com.vaadin.annotations.VaadinServletConfiguration.InitParameterName; import com.vaadin.sass.internal.ScssStylesheet; @@ -315,6 +316,15 @@ public class VaadinServlet extends HttpServlet implements Constants { VaadinServletService service = new VaadinServletService(this, deploymentConfiguration); service.init(); + SystemMessagesMod systemMessagesMod = this.getClass().getAnnotation(SystemMessagesMod.class); + if(systemMessagesMod != null) { + try { + service.setSystemMessagesProvider(systemMessagesMod.value().newInstance()); + } catch (Exception e) { + throw new ServiceException(e); + } + } + return service; } |