You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jg...@apache.org on 2018/09/14 15:25:31 UTC

[1/2] tomee git commit: TOMEE-2233 adds support for configuration of dateFormat, locale and accessMode to TomEEJsonbProvider

Repository: tomee
Updated Branches:
  refs/heads/tomee-7.1.x 62c43616e -> 8873240e6


TOMEE-2233 adds support for configuration of dateFormat, locale and accessMode to TomEEJsonbProvider


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

Branch: refs/heads/tomee-7.1.x
Commit: e4969c1b2a974d25ca6c8f5a247266e881c25822
Parents: 62c4361
Author: rzo1 <ri...@zowalla.com>
Authored: Wed Sep 12 13:58:02 2018 +0200
Committer: rzo1 <ri...@zowalla.com>
Committed: Wed Sep 12 13:58:02 2018 +0200

----------------------------------------------------------------------
 .../server/cxf/rs/johnzon/TomEEJsonbProvider.java   | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/e4969c1b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProvider.java
----------------------------------------------------------------------
diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProvider.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProvider.java
index 19a8815..4211b6e 100644
--- a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProvider.java
+++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProvider.java
@@ -17,10 +17,13 @@
 package org.apache.openejb.server.cxf.rs.johnzon;
 
 import org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider;
+import org.apache.johnzon.mapper.access.AccessMode;
 
+import javax.json.bind.JsonbConfig;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.Produces;
 import javax.ws.rs.ext.Provider;
+import java.util.Locale;
 
 @Provider
 // This will sort the Provider to be after CXF defaults. Check org.apache.cxf.jaxrs.provider.ProviderFactory.sortReaders()
@@ -30,4 +33,17 @@ public class TomEEJsonbProvider<T> extends JsonbJaxrsProvider<T> {
     public TomEEJsonbProvider() {
         config.withPropertyVisibilityStrategy(new TomEEJsonbPropertyVisibilityStrategy());
     }
+
+    public void setDateFormat(String dateFormat) {
+        config.setProperty(JsonbConfig.DATE_FORMAT, dateFormat);
+    }
+
+    public void setLocale(Locale locale) {
+        config.setProperty(JsonbConfig.LOCALE, locale);
+    }
+
+    public void setAccessMode(AccessMode accessMode) {
+        config.setProperty("johnzon.accessMode", accessMode);
+    }
+
 }


[2/2] tomee git commit: TOMEE-2233 adds a test-case for custom configuration of TomEEJsonbProvider

Posted by jg...@apache.org.
TOMEE-2233 adds a test-case for custom configuration of TomEEJsonbProvider


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/8873240e
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/8873240e
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/8873240e

Branch: refs/heads/tomee-7.1.x
Commit: 8873240e6eca6bab2c8b39124fef8374499a399e
Parents: e4969c1
Author: rzo1 <ri...@zowalla.com>
Authored: Wed Sep 12 14:32:09 2018 +0200
Committer: rzo1 <ri...@zowalla.com>
Committed: Wed Sep 12 14:32:09 2018 +0200

----------------------------------------------------------------------
 .../cxf/rs/johnzon/TomEEJsonbProviderTest.java  | 116 +++++++++++++++++++
 1 file changed, 116 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/8873240e/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProviderTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProviderTest.java b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProviderTest.java
new file mode 100644
index 0000000..381369c
--- /dev/null
+++ b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProviderTest.java
@@ -0,0 +1,116 @@
+/*
+ *     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.openejb.server.cxf.rs.johnzon;
+
+import org.apache.johnzon.mapper.access.FieldAccessMode;
+import org.apache.openejb.config.EjbModule;
+import org.apache.openejb.config.sys.Resources;
+import org.apache.openejb.config.sys.Service;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.EnterpriseBean;
+import org.apache.openejb.jee.SingletonBean;
+import org.apache.openejb.jee.oejb3.OpenejbJar;
+import org.apache.openejb.jee.oejb3.PojoDeployment;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.loader.IO;
+import org.apache.openejb.testing.EnableServices;
+import org.apache.openejb.testing.Module;
+import org.apache.openejb.testing.RandomPort;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import java.io.IOException;
+import java.net.URL;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+import static org.junit.Assert.assertEquals;
+
+@EnableServices("jax-rs")
+@RunWith(ApplicationComposer.class)
+public class TomEEJsonbProviderTest {
+    @RandomPort("http")
+    private URL base;
+
+    @Module
+    public static EjbModule service(){
+        final EjbModule module = new EjbModule(new EjbJar(), new OpenejbJar());
+        final EnterpriseBean bean = new SingletonBean(Endpoint.class).localBean();
+        module.getEjbJar().addEnterpriseBean(bean);
+
+        final Resources resources = new Resources();
+
+        final Service configuredTomEEJsonbProvider = new Service("configuredTomEEJsonbProvider", null);
+        configuredTomEEJsonbProvider.setClassName(TomEEJsonbProvider.class.getName());
+        configuredTomEEJsonbProvider.getProperties().put("dateFormat", "LLL-yyyy");
+        configuredTomEEJsonbProvider.getProperties().put("locale", Locale.GERMANY);
+        configuredTomEEJsonbProvider.getProperties().put("accessMode", new FieldAccessMode(true,true));
+
+        resources.getService().add(configuredTomEEJsonbProvider);
+
+        module.initResources(resources);
+
+        final PojoDeployment e = new PojoDeployment();
+        e.setClassName("jaxrs-application");
+        e.getProperties().setProperty("cxf.jaxrs.providers", "configuredTomEEJsonbProvider");
+        module.getOpenejbJar().getPojoDeployment().add(e);
+
+        return module;
+    }
+
+    @Test
+    public void run() throws IOException {
+        assertEquals("{\"date\":\"" + localizedFormattedDate() + "\",\"fieldAccessOnly\":\"access-via-field\"}", IO.slurp(new URL(base.toExternalForm() + getClass().getSimpleName() + "/test")));
+    }
+
+    private String localizedFormattedDate() { // same configuredTomEEJsonbProvider should have done
+        return new SimpleDateFormat("MMM-yyyy", Locale.GERMANY).format(new Date());
+    }
+
+    @Path("test")
+    public static class Endpoint {
+        @GET
+        @Produces(MediaType.APPLICATION_JSON)
+        public Model get() {
+            final Model model = new Model();
+            model.setDate(new Date());
+            return model;
+        }
+    }
+
+    public static class Model {
+        private Date date;
+        private String fieldAccessOnly = "access-via-field";
+
+        public Date getDate() {
+            return date;
+        }
+
+        public void setDate(final Date date) {
+            this.date = date;
+        }
+
+        public String getSomeField() {
+            throw new UnsupportedOperationException("This Getter should not be invoked as we configured field-access.");
+        }
+    }
+}