001/*******************************************************************************
002 * Copyright 2017 The MIT Internet Trust Consortium
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *   http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 *******************************************************************************/
016
017package org.mitre.openid.connect.model.convert;
018
019import javax.persistence.AttributeConverter;
020import javax.persistence.Converter;
021
022import com.google.common.base.Strings;
023import com.google.gson.JsonObject;
024import com.google.gson.JsonParser;
025
026/**
027 * @author jricher
028 *
029 */
030@Converter
031public class JsonObjectStringConverter implements AttributeConverter<JsonObject, String> {
032
033        private JsonParser parser = new JsonParser();
034
035        @Override
036        public String convertToDatabaseColumn(JsonObject attribute) {
037                if (attribute != null) {
038                        return attribute.toString();
039                } else {
040                        return null;
041                }
042        }
043
044        /* (non-Javadoc)
045         * @see javax.persistence.AttributeConverter#convertToEntityAttribute(java.lang.Object)
046         */
047        @Override
048        public JsonObject convertToEntityAttribute(String dbData) {
049                if (!Strings.isNullOrEmpty(dbData)) {
050                        return parser.parse(dbData).getAsJsonObject();
051                } else {
052                        return null;
053                }
054        }
055
056}