All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.springframework.data.redis.serializer.DefaultRedisSerializationContext Maven / Gradle / Ivy

There is a newer version: 3.2.5
Show newest version
/*
 * Copyright 2017-2018 the original author or authors.
 *
 * Licensed 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.springframework.data.redis.serializer;

import org.springframework.lang.Nullable;
import org.springframework.util.Assert;

/**
 * Default implementation of {@link RedisSerializationContext}.
 *
 * @author Mark Paluch
 * @author Christoph Strobl
 * @since 2.0
 */
class DefaultRedisSerializationContext implements RedisSerializationContext {

	private final SerializationPair keyTuple;
	private final SerializationPair valueTuple;
	private final SerializationPair hashKeyTuple;
	private final SerializationPair hashValueTuple;
	private final SerializationPair stringTuple;

	private DefaultRedisSerializationContext(SerializationPair keyTuple, SerializationPair valueTuple,
			SerializationPair hashKeyTuple, SerializationPair hashValueTuple, SerializationPair stringTuple) {

		this.keyTuple = keyTuple;
		this.valueTuple = valueTuple;
		this.hashKeyTuple = hashKeyTuple;
		this.hashValueTuple = hashValueTuple;
		this.stringTuple = stringTuple;
	}

	/* (non-Javadoc)
	 * @see org.springframework.data.redis.serializer.RedisSerializationContext#getKeySerializationPair()
	 */
	@Override
	public SerializationPair getKeySerializationPair() {
		return keyTuple;
	}

	/* (non-Javadoc)
	 * @see org.springframework.data.redis.serializer.RedisSerializationContext#getValueSerializationPair()
	 */
	@Override
	public SerializationPair getValueSerializationPair() {
		return valueTuple;
	}

	/* (non-Javadoc)
	 * @see org.springframework.data.redis.serializer.RedisSerializationContext#getHashKeySerializationPair()
	 */
	@Override
	@SuppressWarnings("unchecked")
	public  SerializationPair getHashKeySerializationPair() {
		return (SerializationPair) hashKeyTuple;
	}

	/* (non-Javadoc)
	 * @see org.springframework.data.redis.serializer.RedisSerializationContext#getHashValueSerializationPair()
	 */
	@Override
	@SuppressWarnings("unchecked")
	public  SerializationPair getHashValueSerializationPair() {
		return (SerializationPair) hashValueTuple;
	}

	/* (non-Javadoc)
	 * @see org.springframework.data.redis.serializer.RedisSerializationContext#getStringSerializationPair()
	 */
	@Override
	public SerializationPair getStringSerializationPair() {
		return stringTuple;
	}

	/**
	 * Default implementation of {@link RedisSerializationContextBuilder}.
	 *
	 * @author Mark Paluch
	 * @author Christoph Strobl
	 * @since 2.0
	 */
	static class DefaultRedisSerializationContextBuilder implements RedisSerializationContextBuilder {

		private @Nullable SerializationPair keyTuple;
		private @Nullable SerializationPair valueTuple;
		private @Nullable SerializationPair hashKeyTuple;
		private @Nullable SerializationPair hashValueTuple;
		private SerializationPair stringTuple = SerializationPair.fromSerializer(RedisSerializer.string());

		/* (non-Javadoc)
		 * @see org.springframework.data.redis.serializer.RedisSerializationContextBuilder#key(SerializationPair)
		 */
		@Override
		public RedisSerializationContextBuilder key(SerializationPair tuple) {

			Assert.notNull(tuple, "SerializationPair must not be null!");

			this.keyTuple = tuple;
			return this;
		}

		/* (non-Javadoc)
		 * @see org.springframework.data.redis.serializer.RedisSerializationContextBuilder#value(SerializationPair)
		 */
		@Override
		public RedisSerializationContextBuilder value(SerializationPair tuple) {

			Assert.notNull(tuple, "SerializationPair must not be null!");

			this.valueTuple = tuple;
			return this;
		}

		/* (non-Javadoc)
		 * @see org.springframework.data.redis.serializer.RedisSerializationContextBuilder#hashKey(SerializationPair)
		 */
		@Override
		public RedisSerializationContextBuilder hashKey(SerializationPair tuple) {

			Assert.notNull(tuple, "SerializationPair must not be null!");

			this.hashKeyTuple = tuple;
			return this;
		}

		/* (non-Javadoc)
		 * @see org.springframework.data.redis.serializer.RedisSerializationContextBuilder#hashValue(SerializationPair)
		 */
		@Override
		public RedisSerializationContextBuilder hashValue(SerializationPair tuple) {

			Assert.notNull(tuple, "SerializationPair must not be null!");

			this.hashValueTuple = tuple;
			return this;
		}

		/* (non-Javadoc)
		 * @see org.springframework.data.redis.serializer.RedisSerializationContextBuilder#string(SerializationPair)
		 */
		@Override
		public RedisSerializationContextBuilder string(SerializationPair tuple) {

			Assert.notNull(tuple, "SerializationPair must not be null!");

			this.hashValueTuple = tuple;
			return this;
		}

		/* (non-Javadoc)
		 * @see org.springframework.data.redis.serializer.RedisSerializationContextBuilder#build()
		 */
		@Override
		public RedisSerializationContext build() {

			Assert.notNull(keyTuple, "Key SerializationPair must not be null!");
			Assert.notNull(valueTuple, "Value SerializationPair must not be null!");
			Assert.notNull(hashKeyTuple, "HashKey SerializationPair must not be null!");
			Assert.notNull(hashValueTuple, "ValueKey SerializationPair must not be null!");

			return new DefaultRedisSerializationContext<>(keyTuple, valueTuple, hashKeyTuple, hashValueTuple,
					stringTuple);
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy