org.planx.msd
Class DiscriminatorFactory

java.lang.Object
  extended by org.planx.msd.DiscriminatorFactory

public abstract class DiscriminatorFactory
extends Object

This factory class provides shared discriminators for atomic types and commonly used datatypes. The discriminators are not synchronized and should be synchronized externally if used by multiple threads. However, if multiple threads perform multiset discrimination simultaneously, the preferred way is to create a non-shared discriminator for each thread directly, and not use this factory. This is done by creating a Memory for each thread and passing the Memory object for a given thread to the constructors of the discriminators needed for that thread. This requires more memory than synchronizing shared discriminators but avoids congestion.

For further information please see the Package Summary.

Author:
Thomas Ambus

Constructor Summary
protected DiscriminatorFactory()
           
 
Method Summary
abstract
<T> Discriminator<List<T>>
getBagDiscriminator(Discriminator<T> d)
          Returns a shared discriminator for Lists considered as bags.
abstract  Discriminator<Byte> getByteDiscriminator()
          Returns a shared discriminator for Byte objects.
abstract  Discriminator<Character> getCharacterDiscriminator()
          Returns a shared discriminator for Character objects.
abstract
<T extends CharSequence>
Discriminator<T>
getCharSequenceDiscriminator()
          Returns a shared discriminator for CharSequence objects.
abstract  ClassDiscriminator<Object> getClassDiscriminator()
          Returns a shared ClassDiscriminator for Objects.
abstract  Discriminator<Double> getDoubleDiscriminator()
          Returns a shared discriminator for Double objects.
abstract  Discriminator<Float> getFloatDiscriminator()
          Returns a shared discriminator for Float objects.
abstract  Discriminator<Integer> getIntegerDiscriminator()
          Returns a shared discriminator for Integer objects.
abstract
<T> Discriminator<List<T>>
getListDiscriminator(Discriminator<T> d)
          Returns a shared discriminator for Lists of the type implied by the specified Discriminator.
abstract  Discriminator<Long> getLongDiscriminator()
          Returns a shared discriminator for Long objects.
abstract  Memory getMemory()
          Returns a shared Memory instance for use by customized discriminators.
abstract
<E> PolymorphicDiscriminator<E>
getPolymorphicDiscriminator(Class<E> cls)
          Returns a PolymorphicDiscriminator for the specified class.
abstract
<T> Discriminator<List<T>>
getSetDiscriminator(Discriminator<T> d)
          Returns a shared discriminator for Lists considered as sets.
abstract  Discriminator<Short> getShortDiscriminator()
          Returns a shared discriminator for Short objects.
static DiscriminatorFactory instance()
          Returns an instance of DiscriminatorFactory.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DiscriminatorFactory

protected DiscriminatorFactory()
Method Detail

instance

public static DiscriminatorFactory instance()
Returns an instance of DiscriminatorFactory.


getPolymorphicDiscriminator

public abstract <E> PolymorphicDiscriminator<E> getPolymorphicDiscriminator(Class<E> cls)
Returns a PolymorphicDiscriminator for the specified class. This is useful for maintaining the ability to discriminate subtypes of various classes. Each implementation should make sure to register its sub-classes with the PolymorphicDiscriminator of the appropriate super class before any other part of the system needs to discriminate its sub-classes.


getMemory

public abstract Memory getMemory()
Returns a shared Memory instance for use by customized discriminators.


getCharacterDiscriminator

public abstract Discriminator<Character> getCharacterDiscriminator()
Returns a shared discriminator for Character objects.


getCharSequenceDiscriminator

public abstract <T extends CharSequence> Discriminator<T> getCharSequenceDiscriminator()
Returns a shared discriminator for CharSequence objects.


getClassDiscriminator

public abstract ClassDiscriminator<Object> getClassDiscriminator()
Returns a shared ClassDiscriminator for Objects.


getByteDiscriminator

public abstract Discriminator<Byte> getByteDiscriminator()
Returns a shared discriminator for Byte objects.


getShortDiscriminator

public abstract Discriminator<Short> getShortDiscriminator()
Returns a shared discriminator for Short objects.


getIntegerDiscriminator

public abstract Discriminator<Integer> getIntegerDiscriminator()
Returns a shared discriminator for Integer objects.


getLongDiscriminator

public abstract Discriminator<Long> getLongDiscriminator()
Returns a shared discriminator for Long objects.


getFloatDiscriminator

public abstract Discriminator<Float> getFloatDiscriminator()
Returns a shared discriminator for Float objects.


getDoubleDiscriminator

public abstract Discriminator<Double> getDoubleDiscriminator()
Returns a shared discriminator for Double objects.


getListDiscriminator

public abstract <T> Discriminator<List<T>> getListDiscriminator(Discriminator<T> d)
Returns a shared discriminator for Lists of the type implied by the specified Discriminator.


getBagDiscriminator

public abstract <T> Discriminator<List<T>> getBagDiscriminator(Discriminator<T> d)
Returns a shared discriminator for Lists considered as bags.


getSetDiscriminator

public abstract <T> Discriminator<List<T>> getSetDiscriminator(Discriminator<T> d)
Returns a shared discriminator for Lists considered as sets.



Copyright © 2010. All Rights Reserved.