You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by gk...@apache.org on 2016/10/10 14:18:29 UTC

svn commit: r1764103 - in /turbine/fulcrum/trunk/json/jackson2/src: java/org/apache/fulcrum/json/jackson/ java/org/apache/fulcrum/json/jackson/jsonpath/ test/org/apache/fulcrum/json/jackson/

Author: gk
Date: Mon Oct 10 14:18:29 2016
New Revision: 1764103

URL: http://svn.apache.org/viewvc?rev=1764103&view=rev
Log:
- Decoupling JsonService and JsonPath 

Added:
    turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/jsonpath/
    turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/jsonpath/DefaultJsonPathWrapper.java   (with props)
    turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/jsonpath/JsonPathDefault.java   (with props)
Modified:
    turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/Jackson2MapperService.java
    turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JsonPathJacksonTest.java

Modified: turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/Jackson2MapperService.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/Jackson2MapperService.java?rev=1764103&r1=1764102&r2=1764103&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/Jackson2MapperService.java (original)
+++ turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/Jackson2MapperService.java Mon Oct 10 14:18:29 2016
@@ -23,12 +23,10 @@ import java.io.IOException;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Collection;
-import java.util.EnumSet;
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.avalon.framework.activity.Initializable;
 import org.apache.avalon.framework.configuration.Configurable;
@@ -38,6 +36,7 @@ import org.apache.avalon.framework.logge
 import org.apache.avalon.framework.logger.LogEnabled;
 import org.apache.fulcrum.json.JsonService;
 import org.apache.fulcrum.json.jackson.filters.CustomModuleWrapper;
+import org.apache.fulcrum.json.jackson.jsonpath.DefaultJsonPathWrapper;
 
 import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.core.JsonParser;
@@ -65,11 +64,6 @@ import com.fasterxml.jackson.databind.se
 import com.fasterxml.jackson.databind.ser.PropertyFilter;
 import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
 import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
-import com.jayway.jsonpath.Option;
-import com.jayway.jsonpath.spi.json.JacksonJsonProvider;
-import com.jayway.jsonpath.spi.json.JsonProvider;
-import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider;
-import com.jayway.jsonpath.spi.mapper.MappingProvider;
 
 /**
  * 
@@ -91,6 +85,7 @@ import com.jayway.jsonpath.spi.mapper.Ma
 public class Jackson2MapperService extends AbstractLogEnabled implements
         JsonService, Initializable, Configurable {
 
+
     private static final String DEFAULT_TYPING = "defaultTyping";
     private static final String CACHE_FILTERS = "cacheFilters";
     private static final String DATE_FORMAT = "dateFormat";
@@ -788,26 +783,16 @@ public class Jackson2MapperService exten
         
         if (useJsonPath) {
             // set it before runtime
-            com.jayway.jsonpath.Configuration.setDefaults(new com.jayway.jsonpath.Configuration.Defaults() {
-
-                private final JsonProvider jsonProvider = new JacksonJsonProvider(Jackson2MapperService.this.mapper);
-                private final MappingProvider mappingProvider = new JacksonMappingProvider(Jackson2MapperService.this.mapper);
-
-                @Override
-                public JsonProvider jsonProvider() {
-                    return jsonProvider;
-                }
-
-                @Override
-                public MappingProvider mappingProvider() {
-                    return mappingProvider;
-                }
+            DefaultJsonPathWrapper djpw = null;
+            try {
+                djpw = new DefaultJsonPathWrapper(this.mapper);
+                getLogger().debug("******** initialized new jsonPath defaults: " +djpw.getJsonPathDefault());
+            } catch (Exception e) {
+                throw new Exception(
+                        "JsonMapperService: Error instantiating " + djpw
+                                + " using useJsonPath=" + useJsonPath);
+            }
 
-                @Override
-                public Set<Option> options() {
-                    return EnumSet.noneOf(Option.class);
-                }
-            });
         }
     }
 

Added: turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/jsonpath/DefaultJsonPathWrapper.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/jsonpath/DefaultJsonPathWrapper.java?rev=1764103&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/jsonpath/DefaultJsonPathWrapper.java (added)
+++ turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/jsonpath/DefaultJsonPathWrapper.java Mon Oct 10 14:18:29 2016
@@ -0,0 +1,50 @@
+package org.apache.fulcrum.json.jackson.jsonpath;
+
+/*
+ * 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.
+ */
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.jayway.jsonpath.Configuration;
+import com.jayway.jsonpath.Configuration.Defaults;
+import com.jayway.jsonpath.JsonPath;
+
+/**
+ * Intermediary class to wrap @link {@link JsonPath} default configuration setting {@link Configuration#setDefaults(Defaults)} with {@link JsonPathDefault}.
+ * 
+ * @author gkallidis
+ *
+ */
+public class DefaultJsonPathWrapper {
+    
+    private final Defaults jsonPathDefault;
+    
+    public DefaultJsonPathWrapper(ObjectMapper mapper)  {
+        jsonPathDefault = new JsonPathDefault(mapper);
+        Configuration.setDefaults(jsonPathDefault);
+    }
+
+
+    /**
+     * @return {@link Defaults}
+     */
+    public Defaults getJsonPathDefault() {
+        return jsonPathDefault;
+    }
+
+}

Propchange: turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/jsonpath/DefaultJsonPathWrapper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/jsonpath/JsonPathDefault.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/jsonpath/JsonPathDefault.java?rev=1764103&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/jsonpath/JsonPathDefault.java (added)
+++ turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/jsonpath/JsonPathDefault.java Mon Oct 10 14:18:29 2016
@@ -0,0 +1,69 @@
+package org.apache.fulcrum.json.jackson.jsonpath;
+
+/*
+ * 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.
+ */
+
+import java.util.EnumSet;
+import java.util.Set;
+
+import org.apache.fulcrum.json.jackson.Jackson2MapperService;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.jayway.jsonpath.Configuration.Defaults;
+import com.jayway.jsonpath.Option;
+import com.jayway.jsonpath.spi.json.JacksonJsonProvider;
+import com.jayway.jsonpath.spi.json.JsonProvider;
+import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider;
+import com.jayway.jsonpath.spi.mapper.MappingProvider;
+
+/**
+ * Intermediary class implementing {@link Defaults} by glueing {@link Jackson2MapperService#getMapper()} with internal 
+ * objects {@link JacksonJsonProvider} and {@link JacksonMappingProvider}.
+ * 
+ * @author gkallidis
+ *
+ */
+public class JsonPathDefault implements
+        com.jayway.jsonpath.Configuration.Defaults {
+
+    private final JsonProvider jsonProvider;
+    private final MappingProvider mappingProvider;
+
+    // Jackson2MapperService.this.mapper
+    public JsonPathDefault(ObjectMapper mapper) {
+        jsonProvider = new JacksonJsonProvider(mapper);
+        mappingProvider = new JacksonMappingProvider(  mapper);
+    }
+
+
+    @Override
+    public JsonProvider jsonProvider() {
+        return jsonProvider;
+    }
+
+    @Override
+    public MappingProvider mappingProvider() {
+        return mappingProvider;
+    }
+
+    @Override
+    public Set<Option> options() {
+        return EnumSet.noneOf(Option.class);
+    }
+}

Propchange: turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/jsonpath/JsonPathDefault.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JsonPathJacksonTest.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JsonPathJacksonTest.java?rev=1764103&r1=1764102&r2=1764103&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JsonPathJacksonTest.java (original)
+++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JsonPathJacksonTest.java Mon Oct 10 14:18:29 2016
@@ -19,11 +19,12 @@ package org.apache.fulcrum.json.jackson;
  * under the License.
  */
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.util.ArrayList;
 import java.util.Calendar;
-import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -52,7 +53,7 @@ import com.jayway.jsonpath.spi.json.Jack
  * Test without type setting 
  * 
  * @author gk
- * @version $Id: JacksonMapperTest.java 1738815 2016-04-12 15:22:39Z gk $
+ * @version $Id$
  */
 public class JsonPathJacksonTest extends BaseUnit4Test {