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.");
+ }
+ }
+}