blob: f86da509c2beab9c75c4f74cd75b838c4b2dfec4 [file] [log] [blame]
/*
* Copyright (c) 2012, Paul Merlin. All Rights Reserved.
*
* 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.qi4j.valueserialization.orgjson;
import java.io.InputStream;
import java.io.OutputStream;
import org.qi4j.api.injection.scope.Structure;
import org.qi4j.api.structure.Application;
import org.qi4j.api.structure.Module;
import org.qi4j.api.type.ValueType;
import org.qi4j.api.value.ValueSerialization;
import org.qi4j.api.value.ValueSerializationException;
import org.qi4j.functional.Function;
import org.qi4j.functional.Function2;
/**
* ValueSerialization producing and consuming JSON documents using org.json.
*
* <p>
* This class is used internally by the Zest Runtime to provide default ValueSerialization when no
* ValueSerialization Service is available.
* </p>
* <p>
* In application code, prefer the use of {@link OrgJsonValueSerializationService}.
* </p>
*/
public class OrgJsonValueSerialization
implements ValueSerialization
{
private final OrgJsonValueSerializer serializer;
private final OrgJsonValueDeserializer deserializer;
public OrgJsonValueSerialization( @Structure Application application, @Structure Module module, @Structure final Module valuesModule )
{
this.serializer = new OrgJsonValueSerializer();
this.deserializer = new OrgJsonValueDeserializer( application, module, new Function<Application, Module>()
{
@Override
public Module map( Application from )
{
return valuesModule;
}
} );
}
@Override
public <T> Function<T, String> serialize()
{
return serializer.serialize();
}
@Override
@Deprecated
public <T> Function<T, String> serialize( boolean includeTypeInfo )
{
return serializer.serialize( includeTypeInfo );
}
@Override
public String serialize( Object object )
throws ValueSerializationException
{
return serializer.serialize( object );
}
@Override
@Deprecated
public String serialize( Object object, boolean includeTypeInfo )
throws ValueSerializationException
{
return serializer.serialize( object, includeTypeInfo );
}
@Override
public void serialize( Object object, OutputStream output )
throws ValueSerializationException
{
serializer.serialize( object, output );
}
@Override
@Deprecated
public void serialize( Object object, OutputStream output, boolean includeTypeInfo )
throws ValueSerializationException
{
serializer.serialize( object, output, includeTypeInfo );
}
@Override
public <T> Function<String, T> deserialize( Class<T> type )
{
return deserializer.deserialize( type );
}
@Override
public <T> Function<String, T> deserialize( ValueType valueType )
{
return deserializer.deserialize( valueType );
}
@Override
public <T> Function2<ValueType, String, T> deserialize()
{
return deserializer.deserialize();
}
@Override
public <T> T deserialize( Class<?> type, String input )
throws ValueSerializationException
{
return deserializer.deserialize( type, input );
}
@Override
public <T> T deserialize( ValueType type, String input )
throws ValueSerializationException
{
return deserializer.deserialize( type, input );
}
@Override
public <T> T deserialize( Class<?> type, InputStream input )
throws ValueSerializationException
{
return deserializer.deserialize( new ValueType( type ), input );
}
@Override
public <T> T deserialize( ValueType type, InputStream input )
throws ValueSerializationException
{
return deserializer.deserialize( type, input );
}
}