org.compass.core.converter.json
Class SimpleJsonValueConverter

java.lang.Object
  extended by org.compass.core.converter.json.SimpleJsonValueConverter
All Implemented Interfaces:
Converter
Direct Known Subclasses:
ResourcePropertyJsonValueConverter

public class SimpleJsonValueConverter
extends Object
implements Converter

A simple JSON value converter that supports marshalling. Uses built in registed converters for types such as int, float and String.

Author:
kimchy

Constructor Summary
SimpleJsonValueConverter()
           
 
Method Summary
protected  void doSetBoost(Property property, Object root, ResourcePropertyMapping resourcePropertyMapping, MarshallingContext context)
          A simple extension point that allows to set the boost value for the created Property.
protected  String getNullValue(ResourcePropertyMapping resourcePropertyMapping, MarshallingContext context)
          If the converter handle nulls, the value that will be stored in the search engine for null values (during the marshall process).
protected  boolean handleNulls(ResourcePropertyMapping resourcePropertyMapping, MarshallingContext context)
          Should the converter handle nulls?
 boolean marshall(Resource resource, Object root, Mapping mapping, MarshallingContext context)
          Marshals the given object value into a Property which is added to the provided Resource.
protected  String toString(Object value, ResourcePropertyMapping resourcePropertyMapping, MarshallingContext context)
          Converst a value to a String.
 Object unmarshall(Resource resource, Mapping mapping, MarshallingContext context)
          Not supported operation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SimpleJsonValueConverter

public SimpleJsonValueConverter()
Method Detail

marshall

public boolean marshall(Resource resource,
                        Object root,
                        Mapping mapping,
                        MarshallingContext context)
                 throws ConversionException
Marshals the given object value into a Property which is added to the provided Resource.

Handles null values based on the given null value mappings by calling getNullValue(org.compass.core.mapping.ResourcePropertyMapping, org.compass.core.marshall.MarshallingContext).

The value itself is converted from an Object to a String using toString(Object, org.compass.core.mapping.ResourcePropertyMapping, org.compass.core.marshall.MarshallingContext).

Specified by:
marshall in interface Converter
Parameters:
resource - The resource to marhsall the object to
root - The Object to marshall to the resource
mapping - The mapping definition of how to marshall the Object to the resoruce
context - The context for the current marhslling process
Returns:
true if data was saved in the the index that can be read.
Throws:
ConversionException

handleNulls

protected boolean handleNulls(ResourcePropertyMapping resourcePropertyMapping,
                              MarshallingContext context)

Should the converter handle nulls? Handling nulls means should the converter process nulls or not. Usually the converter will not persist null values, but sometimes it might be needed (MarshallingContext.handleNulls()).

If a specific null value is configured with the ResourcePropertyMapping then the converter will always handle nulls and write it.

Parameters:
context - The marshalling context
Returns:
true if the converter should handle null values

getNullValue

protected String getNullValue(ResourcePropertyMapping resourcePropertyMapping,
                              MarshallingContext context)
If the converter handle nulls, the value that will be stored in the search engine for null values (during the marshall process). Uses ResourcePropertyMapping.getNullValue().

Parameters:
resourcePropertyMapping - The resource proeprty mapping to get the null value from
context - The marshalling context
Returns:
Null value that will be inserted for nulls.

doSetBoost

protected void doSetBoost(Property property,
                          Object root,
                          ResourcePropertyMapping resourcePropertyMapping,
                          MarshallingContext context)
                   throws ConversionException
A simple extension point that allows to set the boost value for the created Property.

The default implemenation uses the statically defined boost value in the mapping definition (ResourcePropertyMapping.getBoost()) to set the boost level using Property.setBoost(float)

Parameters:
property - The property to set the boost on
root - The object that is marshalled into a property
resourcePropertyMapping - The Resource Property Mapping definition
Throws:
ConversionException

toString

protected String toString(Object value,
                          ResourcePropertyMapping resourcePropertyMapping,
                          MarshallingContext context)
Converst a value to a String. Tryies to infer based on the type and use one of the registered converters based on the given type (in JSON we can have double, int, as well as Strings). Uses ConverterLookup.lookupConverter(Class).

The resulting converter is then used and uses ResourcePropertyConverter.toString(Object, org.compass.core.mapping.ResourcePropertyMapping).


unmarshall

public Object unmarshall(Resource resource,
                         Mapping mapping,
                         MarshallingContext context)
                  throws ConversionException
Not supported operation.

Specified by:
unmarshall in interface Converter
Parameters:
resource - The resource to unmarshall into an Object
mapping - The mapping definition of how to unmarshall the Resource into an Object
context - The context for the current marshalling process
Returns:
The object unmarshalled
Throws:
ConversionException


Copyright (c) 2004-2009 The Compass Project.