org.fudgemsg.mapping
Class FudgeDefaultBuilderFactory

java.lang.Object
  extended by org.fudgemsg.mapping.FudgeDefaultBuilderFactory
All Implemented Interfaces:
FudgeBuilderFactory

public class FudgeDefaultBuilderFactory
extends Object
implements FudgeBuilderFactory

Default factory for building Fudge message encoders and decoders.

Building a Fudge message:

Building an object:

Generic builders are provided for Map, List (and Set), FudgeFieldContainer, DBObject and array types.


Constructor Summary
FudgeDefaultBuilderFactory()
          Creates a new factory.
 
Method Summary
<T> void
addGenericBuilder(Class<T> clazz, FudgeBuilder<T> builder)
          Registers a generic builder with the factory that may be returned as a FudgeObjectBuilder for the class, or as a FudgeMessageBuilder for any sub-classes of the class.
<T> FudgeMessageBuilder<T>
createMessageBuilder(Class<T> clazz)
          If the object has a public toFudgeMsg method, that will be used.
protected
<T> FudgeMessageBuilder<T>
createMessageBuilderFromAnnotation(Class<T> clazz)
          Attempt to construct a FudgeObjectBuilder for the specified type based on the presence of a HasFudgeBuilder annotation on that type.
<T> FudgeObjectBuilder<T>
createObjectBuilder(Class<T> clazz)
          If the object has a public fromFudgeMsg method, that will be used.
protected
<T> FudgeObjectBuilder<T>
createObjectBuilderFromAnnotation(Class<T> clazz)
          Attempt to construct a FudgeObjectBuilder for the specified type based on the presence of a HasFudgeBuilder annotation on that type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FudgeDefaultBuilderFactory

public FudgeDefaultBuilderFactory()
Creates a new factory. org.fudgemsg.mapping.FudgeDefaultBuilderFactory.properties will be read and used to initialize the generic builders.

Method Detail

createObjectBuilder

public <T> FudgeObjectBuilder<T> createObjectBuilder(Class<T> clazz)
If the object has a public fromFudgeMsg method, that will be used. Otherwise, if it has a public constructor that takes a FudgeFieldContainer, that will be used. Registered default builders for classes list Map and List will be tried, failing that the JavaBeanBuilder will be used.

Specified by:
createObjectBuilder in interface FudgeBuilderFactory
Type Parameters:
T - Java type of the class a builder is requested for
Parameters:
clazz - Java class a builder is requested for
Returns:
a FudgeObjectBuilder or null if no suitable builder can be created

createObjectBuilderFromAnnotation

protected <T> FudgeObjectBuilder<T> createObjectBuilderFromAnnotation(Class<T> clazz)
Attempt to construct a FudgeObjectBuilder for the specified type based on the presence of a HasFudgeBuilder annotation on that type.

Type Parameters:
T - Java type of the class a builder is requested for
Parameters:
clazz - Java class a builder is requested for
Returns:
A FudgeObjectBuilder based on HasFudgeBuilder annotation, or null.

createMessageBuilder

public <T> FudgeMessageBuilder<T> createMessageBuilder(Class<T> clazz)
If the object has a public toFudgeMsg method, that will be used. Otherwise the JavaBeanBuilder will be used.

Specified by:
createMessageBuilder in interface FudgeBuilderFactory
Type Parameters:
T - Java type of the class a builder is requested for
Parameters:
clazz - Java class a builder is requested for
Returns:
a FudgeMessageBuilder or null if no suitable builder can be created

createMessageBuilderFromAnnotation

protected <T> FudgeMessageBuilder<T> createMessageBuilderFromAnnotation(Class<T> clazz)
Attempt to construct a FudgeObjectBuilder for the specified type based on the presence of a HasFudgeBuilder annotation on that type.

Type Parameters:
T - Java type of the class a builder is requested for
Parameters:
clazz - Java class a builder is requested for
Returns:
A FudgeObjectBuilder based on HasFudgeBuilder annotation, or null.

addGenericBuilder

public <T> void addGenericBuilder(Class<T> clazz,
                                  FudgeBuilder<T> builder)
Registers a generic builder with the factory that may be returned as a FudgeObjectBuilder for the class, or as a FudgeMessageBuilder for any sub-classes of the class. After calling this, a factory may choose to return an alternative builder, but may not return null for a class which the generic builder has been registered for.

Specified by:
addGenericBuilder in interface FudgeBuilderFactory
Type Parameters:
T - the generic type (probably an interface) the builder is for
Parameters:
clazz - the generic type (probably an interface) the builder is for
builder - the builder to register


Copyright 2009-Present by OpenGamma Inc. and individual contributors
Released under the Apache License, Version 2.0