cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From serg...@apache.org
Subject [1/2] cxf git commit: [CXF-5854, CXF-6150] Support for creating templates at runtime if the context property is set; optionally refreshing templates created from the annotations
Date Fri, 12 Dec 2014 13:57:40 GMT
Repository: cxf
Updated Branches:
  refs/heads/master ee66bfcfd -> 8c128d12c


[CXF-5854, CXF-6150] Support for creating templates at runtime if the context property is
set; optionally refreshing templates created from the annotations


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/598f6711
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/598f6711
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/598f6711

Branch: refs/heads/master
Commit: 598f6711ac22edd3065a4a896888e74f4d61261a
Parents: 3834ba2
Author: Sergey Beryozkin <sberyozkin@talend.com>
Authored: Fri Dec 12 13:57:04 2014 +0000
Committer: Sergey Beryozkin <sberyozkin@talend.com>
Committed: Fri Dec 12 13:57:04 2014 +0000

----------------------------------------------------------------------
 .../cxf/jaxrs/provider/XSLTJaxbProvider.java    | 34 +++++++++++++++++---
 1 file changed, 29 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/598f6711/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java
index 304f595..528ad80 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java
@@ -87,7 +87,7 @@ public class XSLTJaxbProvider<T> extends JAXBElementProvider<T>
{
     private static final String ABSOLUTE_PATH_PARAMETER = "absolute.path";
     private static final String BASE_PATH_PARAMETER = "base.path";
     private static final String RELATIVE_PATH_PARAMETER = "relative.path";
-    
+    private static final String XSLT_TEMPLATE_PROPERTY = "xslt.template";
     private SAXTransformerFactory factory;
     private Templates inTemplates;
     private Templates outTemplates;
@@ -106,6 +106,7 @@ public class XSLTJaxbProvider<T> extends JAXBElementProvider<T>
{
     private String systemId;
     
     private boolean supportJaxbOnly;
+    private boolean refreshTemplates;
     
     public void setSupportJaxbOnly(boolean support) {
         this.supportJaxbOnly = support;
@@ -170,7 +171,7 @@ public class XSLTJaxbProvider<T> extends JAXBElementProvider<T>
{
         XSLTTransform ann = getXsltTransformAnn(anns, mt);
         if (ann != null) {
             t = annotationTemplates.get(ann.value());
-            if (t == null) {
+            if (t == null || refreshTemplates) {
                 String path = ann.value();
                 final String cp = "classpath:";
                 if (!path.startsWith(cp)) {
@@ -181,7 +182,7 @@ public class XSLTJaxbProvider<T> extends JAXBElementProvider<T>
{
                     createTemplates(ClassLoaderUtils.getResource(ann.value(), cls));
                 }
                 if (t != null) {
-                    annotationTemplates.putIfAbsent(ann.value(), t);
+                    annotationTemplates.put(ann.value(), t);
                 }
             }
         }
@@ -218,7 +219,11 @@ public class XSLTJaxbProvider<T> extends JAXBElementProvider<T>
{
     
     
     protected Templates getInTemplates(Annotation[] anns, MediaType mt) {
-        Templates t = inTemplates != null ? inTemplates 
+        Templates t = createTemplatesFromContext();
+        if (t != null) {
+            return t;
+        }
+        t = inTemplates != null ? inTemplates 
             : inMediaTemplates != null ? inMediaTemplates.get(mt.getType() + "/" + mt.getSubtype())
: null;
         if (t == null) {    
             t = getAnnotationTemplates(anns);
@@ -227,7 +232,11 @@ public class XSLTJaxbProvider<T> extends JAXBElementProvider<T>
{
     }
     
     protected Templates getOutTemplates(Annotation[] anns, MediaType mt) {
-        Templates t = outTemplates != null ? outTemplates 
+        Templates t = createTemplatesFromContext();
+        if (t != null) {
+            return t;
+        }
+        t = outTemplates != null ? outTemplates 
             : outMediaTemplates != null ? outMediaTemplates.get(mt.getType() + "/" + mt.getSubtype())
: null;
         if (t == null) {    
             t = getAnnotationTemplates(anns);
@@ -487,6 +496,17 @@ public class XSLTJaxbProvider<T> extends JAXBElementProvider<T>
{
         return null;
     }
     
+    protected Templates createTemplatesFromContext() { 
+        MessageContext mc = getContext();
+        if (mc != null) {
+            String template = (String)mc.getContextualProperty(XSLT_TEMPLATE_PROPERTY);
+            if (template != null) {
+                return createTemplates(template);
+            }
+        }
+        return null;
+    }
+    
     protected Templates createTemplates(URL urlStream) {
         try {
             if (urlStream == null) {
@@ -511,6 +531,10 @@ public class XSLTJaxbProvider<T> extends JAXBElementProvider<T>
{
         return null;
     }
     
+    public void setRefreshTemplates(boolean refresh) {
+        this.refreshTemplates = refresh;
+    }
+
     private static class TemplatesImpl implements Templates {
 
         private Templates templates;


Mime
View raw message