Return-Path: X-Original-To: apmail-struts-commits-archive@minotaur.apache.org Delivered-To: apmail-struts-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 443F211048 for ; Wed, 9 Jul 2014 18:00:23 +0000 (UTC) Received: (qmail 97462 invoked by uid 500); 9 Jul 2014 18:00:23 -0000 Delivered-To: apmail-struts-commits-archive@struts.apache.org Received: (qmail 97425 invoked by uid 500); 9 Jul 2014 18:00:23 -0000 Mailing-List: contact commits-help@struts.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@struts.apache.org Delivered-To: mailing list commits@struts.apache.org Received: (qmail 97415 invoked by uid 99); 9 Jul 2014 18:00:23 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 09 Jul 2014 18:00:23 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id C906494901D; Wed, 9 Jul 2014 18:00:22 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: lukaszlenart@apache.org To: commits@struts.apache.org Message-Id: <21847989ad994a0395c53e3a115963de@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: git commit: WW-4255 restores TagLibrary interface and marks it as deprecated Date: Wed, 9 Jul 2014 18:00:22 +0000 (UTC) Repository: struts Updated Branches: refs/heads/develop cc89601b6 -> 9aedd857a WW-4255 restores TagLibrary interface and marks it as deprecated Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/9aedd857 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/9aedd857 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/9aedd857 Branch: refs/heads/develop Commit: 9aedd857a4294a5091bce6abcdcb183f83833cb6 Parents: cc89601 Author: Lukasz Lenart Authored: Wed Jul 9 20:00:08 2014 +0200 Committer: Lukasz Lenart Committed: Wed Jul 9 20:00:08 2014 +0200 ---------------------------------------------------------------------- .../apache/struts2/views/DefaultTagLibrary.java | 10 +++- .../org/apache/struts2/views/TagLibrary.java | 57 ++++++++++++++++++++ .../views/freemarker/FreemarkerManager.java | 15 ++++++ .../struts2/views/velocity/VelocityManager.java | 16 ++++++ 4 files changed, 97 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/struts/blob/9aedd857/core/src/main/java/org/apache/struts2/views/DefaultTagLibrary.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/views/DefaultTagLibrary.java b/core/src/main/java/org/apache/struts2/views/DefaultTagLibrary.java index b5d9049..4ed6bc3 100644 --- a/core/src/main/java/org/apache/struts2/views/DefaultTagLibrary.java +++ b/core/src/main/java/org/apache/struts2/views/DefaultTagLibrary.java @@ -70,7 +70,7 @@ import com.opensymphony.xwork2.util.ValueStack; /** * The default Struts tag library */ -public class DefaultTagLibrary implements TagLibraryDirectiveProvider, TagLibraryModelProvider { +public class DefaultTagLibrary implements TagLibraryDirectiveProvider, TagLibraryModelProvider, TagLibrary { public Object getModels(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { @@ -120,4 +120,12 @@ public class DefaultTagLibrary implements TagLibraryDirectiveProvider, TagLibrar return Arrays.asList(directives); } + public Object getFreemarkerModels(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { + return getModels(stack, req, res); + } + + public List getVelocityDirectiveClasses() { + return getDirectiveClasses(); + } + } http://git-wip-us.apache.org/repos/asf/struts/blob/9aedd857/core/src/main/java/org/apache/struts2/views/TagLibrary.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/views/TagLibrary.java b/core/src/main/java/org/apache/struts2/views/TagLibrary.java new file mode 100644 index 0000000..b4c36d7 --- /dev/null +++ b/core/src/main/java/org/apache/struts2/views/TagLibrary.java @@ -0,0 +1,57 @@ +/* + * $Id$ + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.struts2.views; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.opensymphony.xwork2.util.ValueStack; + +/** + * Provides Velocity and Freemarker implementation classes for a tag library + * + * @deprecated use two other interfaces: {@link TagLibraryDirectiveProvider}, {@link TagLibraryModelProvider} + */ +@Deprecated +public interface TagLibrary { + + /** + * Gets a Java object that contains getters for the tag library's Freemarker models. + * Called once per Freemarker template processing. + * + * @param stack The current value stack + * @param req The HTTP request + * @param res The HTTP response + * @return The Java object containing the Freemarker model getter methods + */ + public Object getFreemarkerModels(ValueStack stack, HttpServletRequest req, HttpServletResponse res); + + /** + * Gets a list of Velocity directive classes for the tag library. Called once on framework + * startup when initializing Velocity. + * + * @return A list of Velocity directive classes + */ + public List getVelocityDirectiveClasses(); +} http://git-wip-us.apache.org/repos/asf/struts/blob/9aedd857/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java index 39b7fe6..2a16689 100644 --- a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java +++ b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java @@ -47,6 +47,7 @@ import freemarker.template.TemplateModel; import freemarker.template.utility.StringUtil; import org.apache.struts2.StrutsConstants; import org.apache.struts2.views.JspSupportServlet; +import org.apache.struts2.views.TagLibrary; import org.apache.struts2.views.TagLibraryModelProvider; import org.apache.struts2.views.util.ContextUtil; @@ -177,6 +178,7 @@ public class FreemarkerManager { protected int mruMaxStrongSize; protected String templateUpdateDelay; protected Map tagLibraries; + protected Map oldTagLibraries; private FileManager fileManager; private FreemarkerThemeTemplateLoader themeTemplateLoader; @@ -214,6 +216,13 @@ public class FreemarkerManager { map.put(prefix, container.getInstance(TagLibraryModelProvider.class, prefix)); } this.tagLibraries = Collections.unmodifiableMap(map); + + Map oldMap = new HashMap(); + Set oldPrefixes = container.getInstanceNames(TagLibrary.class); + for (String prefix : oldPrefixes) { + oldMap.put(prefix, container.getInstance(TagLibrary.class, prefix)); + } + this.oldTagLibraries = Collections.unmodifiableMap(oldMap); } @Inject @@ -534,6 +543,12 @@ public class FreemarkerManager { } } + if (oldTagLibraries != null) { + for (String prefix : oldTagLibraries.keySet()) { + model.put(prefix, oldTagLibraries.get(prefix).getFreemarkerModels(stack, request, response)); + } + } + //place the model in the request using the special parameter. This can be retrieved for freemarker and velocity. request.setAttribute(ATTR_TEMPLATE_MODEL, model); http://git-wip-us.apache.org/repos/asf/struts/blob/9aedd857/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java b/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java index 1e159b8..e026a2c 100644 --- a/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java +++ b/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java @@ -32,6 +32,7 @@ import org.apache.struts2.ServletActionContext; import org.apache.struts2.StrutsConstants; import org.apache.struts2.StrutsException; import org.apache.struts2.util.VelocityStrutsUtil; +import org.apache.struts2.views.TagLibrary; import org.apache.struts2.views.TagLibraryDirectiveProvider; import org.apache.struts2.views.jsp.ui.OgnlTool; import org.apache.struts2.views.util.ContextUtil; @@ -100,6 +101,7 @@ public class VelocityManager { private String customConfigFile; private List tagLibraries; + private List oldTagLibraries; @Inject public void setObjectFactory(ObjectFactory fac) { @@ -114,6 +116,13 @@ public class VelocityManager { list.add(container.getInstance(TagLibraryDirectiveProvider.class, prefix)); } this.tagLibraries = Collections.unmodifiableList(list); + + List oldList = new ArrayList(); + Set oldPrefixes = container.getInstanceNames(TagLibrary.class); + for (String prefix : oldPrefixes) { + oldList.add(container.getInstance(TagLibrary.class, prefix)); + } + this.oldTagLibraries = Collections.unmodifiableList(oldList); } /** @@ -531,6 +540,13 @@ public class VelocityManager { } } + for (TagLibrary tagLibrary : oldTagLibraries) { + List directives = tagLibrary.getVelocityDirectiveClasses(); + for (Class directive : directives) { + addDirective(sb, directive); + } + } + String directives = sb.toString(); String userdirective = p.getProperty("userdirective");