org.objectweb.speedo.naming.lib
Class CommonLongIdNamingManager

java.lang.Object
  extended by org.objectweb.speedo.naming.lib.NamingManagerHelper
      extended by org.objectweb.speedo.naming.lib.CommonLongIdNamingManager
All Implemented Interfaces:
NamingManager
Direct Known Subclasses:
LongIdNamingManager, OLongIdNamingManager

public abstract class CommonLongIdNamingManager
extends NamingManagerHelper

Defines a common implementation of NamingManager for identifier based on a single long or java.lang.Long field.

Author:
S.Chassande-Barrioz

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.objectweb.speedo.naming.api.NamingManager
NamingManager.NamingField
 
Field Summary
 
Fields inherited from class org.objectweb.speedo.naming.lib.NamingManagerHelper
BINDER_IDX, cache, HINTS_SEP, ID_CAT_IDX, logger, mapper, PCLASS_IDX, pmf, PNC_IDX, POLYMORPHIC_PNC
 
Fields inherited from interface org.objectweb.speedo.naming.api.NamingManager
PNH_NULL_VALUE, PNH_PFIELD, PNH_REF_STATE, SEP
 
Constructor Summary
CommonLongIdNamingManager()
           
 
Method Summary
abstract  boolean canManage(SpeedoClass sc)
          Indicates if the naming manager is able to manage the identifier of a persistent class.
 boolean canProvidePBinder(java.lang.Object hints, java.lang.ClassLoader classLoader)
          indicates if the naming manager is able to build a PBinder instance for this hints parameter specified
 boolean canProvidePNamingContext(java.lang.Object hints, java.lang.ClassLoader classLoader)
          indicates if the naming manager is able to build a PNC instance for this hints parameter specified
protected abstract  boolean checkFieldType(java.lang.String type)
          Checks if the field type is the one expected
 org.objectweb.jorm.naming.api.PName decode(org.objectweb.jorm.naming.api.PNameCoder pnc, java.lang.Object oid, java.lang.Class clazz, JormFactory jf)
          Decodes an object identifier into a PName.
protected abstract  org.objectweb.jorm.naming.api.PName decodeLong(org.objectweb.jorm.naming.api.PNameCoder pnc, java.lang.String idStr)
          Decodes a string value into a PName.
 void defineClassIdentifierNameDef(org.objectweb.jorm.metainfo.api.NameDef nd, org.objectweb.jorm.metainfo.api.Class jc, SpeedoClass sc, org.objectweb.jorm.metainfo.api.ClassMapping cm, MIBuilderHelper mibh, JormMIMappingBuilder mb, java.util.Collection createdMOs)
          Fill the name def of a class identifier
 void defineClassReferenceNameDef(org.objectweb.jorm.metainfo.api.NameDef nd, org.objectweb.jorm.metainfo.api.ClassRef cr, SpeedoField sf, SpeedoClass currentClass, org.objectweb.jorm.metainfo.api.ClassMapping cm, MIBuilderHelper mibh, JormMIMappingBuilder mb)
          Fill the name def of the class reference from a class
 void defineClassReferenceNameDef(org.objectweb.jorm.metainfo.api.NameDef nd, org.objectweb.jorm.metainfo.api.ClassRef cr, SpeedoField sf, SpeedoClass currentClass, org.objectweb.jorm.metainfo.api.GenClassMapping gcm, MIBuilderHelper mibh, JormMIMappingBuilder mb)
          Fill the name def of the class reference from a generic class
 void defineGenClassIdentifierNameDef(org.objectweb.jorm.metainfo.api.NameDef nd, org.objectweb.jorm.metainfo.api.GenClassRef gcr, SpeedoField sf, SpeedoClass currentClass, org.objectweb.jorm.metainfo.api.GenClassMapping gcm, MIBuilderHelper mibh, JormMIMappingBuilder mb)
          Fill the name def of the gen class identifier
 void defineGenClassReferenceNameDef(org.objectweb.jorm.metainfo.api.NameDef nd, org.objectweb.jorm.metainfo.api.GenClassRef gcr, SpeedoField sf, SpeedoClass currentClass, org.objectweb.jorm.metainfo.api.ClassMapping cm, MIBuilderHelper mibh, JormMIMappingBuilder mb)
          Fill the name def of the generic class reference from a class
abstract  java.lang.Object encode(org.objectweb.jorm.naming.api.PName pn)
          Encodes a PName into a value.
protected abstract  org.objectweb.medor.expression.lib.BasicOperand getBasicOperand()
           
protected abstract  java.lang.String getBinderForClass()
           
protected abstract  java.lang.String getBinderForGenClass()
           
 SpeedoColumn[] getDefaultColumn(SpeedoClass sc)
           
protected abstract  org.objectweb.jorm.type.api.PType getFieldType()
           
protected abstract  java.lang.String getHiddenLidFieldName()
           
protected abstract  java.lang.Class getJavaFieldType()
           
 void getJormNamingConfig(org.objectweb.jorm.metainfo.api.NameDef nd, SpeedoClass targetClass, org.objectweb.jorm.metainfo.api.MetaObject sourceMO, java.lang.String key, java.util.Properties result)
          computes the naming configuration information for a class or a reference.
protected abstract  java.lang.String getLongIdLid()
           
abstract  java.lang.Class getLongIdManagerClass()
           
protected abstract  java.lang.String getLongIdName()
           
abstract  org.objectweb.jorm.api.PMapper getMapper()
           
 NamingManager.NamingField[] getNamingfields(SpeedoClass sc)
          Retrieves the array of field used in the identifier of a persistent class and which values are not calculated by the application.
protected  org.objectweb.jorm.naming.api.PBinder getPBinder(java.lang.String className, java.lang.String binderInfo)
           
 org.objectweb.jorm.naming.api.PBinder getPBinder(java.lang.String className, java.lang.String hints, java.lang.ClassLoader classLoader, byte mappingStructureRule, java.util.Map cn2binder, java.util.Map cn2pnc)
          Build a PBinder instance for this hints parameter specified
abstract  java.lang.Class getPBinderClass()
           
abstract  java.lang.Class getPNameClass()
           
 java.lang.String getPNameHints(SpeedoClass sc, org.objectweb.jorm.metainfo.api.NameDef nd)
          compute a string value which permit to help the building of the class PName (export)
 java.lang.Object[] getPNameHints2(SpeedoClass sc, org.objectweb.jorm.metainfo.api.NameDef nd)
           
 org.objectweb.jorm.naming.api.PNamingContext getPNamingContext(java.lang.String className, java.lang.String hints, java.lang.ClassLoader classLoader, byte mappingStructureRule, java.util.Map cn2binder, java.util.Map cn2pnc, org.objectweb.jorm.metainfo.api.Manager miManager, org.objectweb.jorm.api.PClassMapping pcm)
          Build a PNamingContext instance for this hints parameter specified
abstract  java.lang.Class getPNamingContextClass()
           
 void init()
           
 boolean needInheritanceDiscriminator(SpeedoClass sc)
           
abstract  org.objectweb.jorm.naming.api.PBinder newClassPBinder(java.lang.String className, java.lang.Object conn)
           
abstract  org.objectweb.jorm.naming.api.PNamingContext newClassPNamingContext()
           
abstract  org.objectweb.jorm.naming.api.PBinder newGenClassPBinder()
           
 void setCache(CacheManager cache)
           
 void setLogger(org.objectweb.util.monolog.api.Logger logger)
           
 void setPmf(POManagerFactoryItf pmf)
           
 boolean supportPNamingcontext()
          indicates if the use of PNamingContext is support by this mapping.
 
Methods inherited from class org.objectweb.speedo.naming.lib.NamingManagerHelper
getBinderClassNameFromHints, getName, getPNCClassNameFromHints, getTokens, setPMapper
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.objectweb.speedo.naming.api.NamingManager
getGCPNameHints
 

Constructor Detail

CommonLongIdNamingManager

public CommonLongIdNamingManager()
Method Detail

getLongIdName

protected abstract java.lang.String getLongIdName()
Returns:
the name of the composite name (JORM object) corresponding the identifier.

getLongIdLid

protected abstract java.lang.String getLongIdLid()
Returns:
the default name of the identifier field.

getFieldType

protected abstract org.objectweb.jorm.type.api.PType getFieldType()
Returns:
the default jorm type of the identifier field.

getJavaFieldType

protected abstract java.lang.Class getJavaFieldType()
Returns:
the default java type of the identifier field.

getBasicOperand

protected abstract org.objectweb.medor.expression.lib.BasicOperand getBasicOperand()
Returns:
the operand (Medor object) used for computing the class identifier

checkFieldType

protected abstract boolean checkFieldType(java.lang.String type)
Checks if the field type is the one expected

Parameters:
type - is the field type as a string.
Returns:
true if this the right type.

getMapper

public abstract org.objectweb.jorm.api.PMapper getMapper()
Returns:
the mapper used

newGenClassPBinder

public abstract org.objectweb.jorm.naming.api.PBinder newGenClassPBinder()
                                                                  throws org.objectweb.jorm.api.PException
Returns:
a new PBinder for managing GenClass identifier.
Throws:
org.objectweb.jorm.api.PException

newClassPBinder

public abstract org.objectweb.jorm.naming.api.PBinder newClassPBinder(java.lang.String className,
                                                                      java.lang.Object conn)
                                                               throws org.objectweb.jorm.api.PException
Parameters:
className - is the class name of the persistent class
conn - is the connection to the underlying persistent support.
Returns:
a new PBinder for managing class identifier.
Throws:
org.objectweb.jorm.api.PException

newClassPNamingContext

public abstract org.objectweb.jorm.naming.api.PNamingContext newClassPNamingContext()
                                                                             throws org.objectweb.jorm.api.PException
Returns:
a new PBinder for managing class reference.
Throws:
org.objectweb.jorm.api.PException

getPNameClass

public abstract java.lang.Class getPNameClass()
Returns:
the class of the PName used by this naming.

getPBinderClass

public abstract java.lang.Class getPBinderClass()
Returns:
the class of the PBinder used by this naming.

getLongIdManagerClass

public abstract java.lang.Class getLongIdManagerClass()
Returns:
the class of the IdManager used by this naming.

getPNamingContextClass

public abstract java.lang.Class getPNamingContextClass()
Returns:
the class of the PNamingContext used by this naming.

decodeLong

protected abstract org.objectweb.jorm.naming.api.PName decodeLong(org.objectweb.jorm.naming.api.PNameCoder pnc,
                                                                  java.lang.String idStr)
                                                           throws org.objectweb.jorm.api.PException
Decodes a string value into a PName.

Parameters:
pnc - is the PNameCoder able to decode the string
idStr - is the string representation of an identifier
Returns:
a PName
Throws:
org.objectweb.jorm.api.PException

encode

public abstract java.lang.Object encode(org.objectweb.jorm.naming.api.PName pn)
                                 throws org.objectweb.jorm.api.PException
Encodes a PName into a value.

Parameters:
pn - is the PName to encode
Returns:
the encoded PName
Throws:
org.objectweb.jorm.api.PException

getBinderForGenClass

protected abstract java.lang.String getBinderForGenClass()
Returns:
Returns the bINDER_FOR_GENCLASS.

getBinderForClass

protected abstract java.lang.String getBinderForClass()
Returns:
Returns the bINDER_FOR_CLASS.

getHiddenLidFieldName

protected abstract java.lang.String getHiddenLidFieldName()
Returns:
Returns the hIDDEN_LID_FIELD_NAME.

init

public void init()
          throws org.objectweb.jorm.api.PException
Throws:
org.objectweb.jorm.api.PException

setPmf

public void setPmf(POManagerFactoryItf pmf)
Specified by:
setPmf in interface NamingManager
Overrides:
setPmf in class NamingManagerHelper

supportPNamingcontext

public boolean supportPNamingcontext()
Description copied from interface: NamingManager
indicates if the use of PNamingContext is support by this mapping. If true then getPNamingContext method can be use, otherwise the getPBinder must be use instead. The case of PNamingContext are not supported, means the PBinder are used as PNameCoder by PBinding as reference coder.

Specified by:
supportPNamingcontext in interface NamingManager
Overrides:
supportPNamingcontext in class NamingManagerHelper

canManage

public abstract boolean canManage(SpeedoClass sc)
Description copied from interface: NamingManager
Indicates if the naming manager is able to manage the identifier of a persistent class.

Parameters:
sc - The speedo meta object representing the persistent class

canProvidePBinder

public boolean canProvidePBinder(java.lang.Object hints,
                                 java.lang.ClassLoader classLoader)
Description copied from interface: NamingManager
indicates if the naming manager is able to build a PBinder instance for this hints parameter specified

Specified by:
canProvidePBinder in interface NamingManager
Overrides:
canProvidePBinder in class NamingManagerHelper
Parameters:
hints - is the helper of the PBinder building
classLoader - is the classloader to use for instanciate the PBinder

canProvidePNamingContext

public boolean canProvidePNamingContext(java.lang.Object hints,
                                        java.lang.ClassLoader classLoader)
Description copied from interface: NamingManager
indicates if the naming manager is able to build a PNC instance for this hints parameter specified

Specified by:
canProvidePNamingContext in interface NamingManager
Overrides:
canProvidePNamingContext in class NamingManagerHelper
Parameters:
hints - is the helper of the PNC building
classLoader - is the classloader to use for instanciate the PNC

decode

public org.objectweb.jorm.naming.api.PName decode(org.objectweb.jorm.naming.api.PNameCoder pnc,
                                                  java.lang.Object oid,
                                                  java.lang.Class clazz,
                                                  JormFactory jf)
                                           throws org.objectweb.jorm.api.PException
Description copied from interface: NamingManager
Decodes an object identifier into a PName.

Parameters:
pnc - is the PNameCoder instance to use for the decoding the object identifier. The pnc parameter can be null. In this case the oid must
oid - is the object identifier
clazz - is the java.lang.Class of the persistent class identified by the oid
jf - is the JormFactory instance. It permits to
Returns:
the object identifier decode as PName
Throws:
org.objectweb.jorm.api.PException

setLogger

public void setLogger(org.objectweb.util.monolog.api.Logger logger)
Specified by:
setLogger in interface NamingManager
Overrides:
setLogger in class NamingManagerHelper

getPNameHints

public java.lang.String getPNameHints(SpeedoClass sc,
                                      org.objectweb.jorm.metainfo.api.NameDef nd)
Description copied from interface: NamingManager
compute a string value which permit to help the building of the class PName (export)

Parameters:
sc - is the Speedo class which the hints must be specified
nd - is the name def of the class

getPNameHints2

public java.lang.Object[] getPNameHints2(SpeedoClass sc,
                                         org.objectweb.jorm.metainfo.api.NameDef nd)

getNamingfields

public NamingManager.NamingField[] getNamingfields(SpeedoClass sc)
Description copied from interface: NamingManager
Retrieves the array of field used in the identifier of a persistent class and which values are not calculated by the application. The application field must be set at makePersistent time.

Specified by:
getNamingfields in interface NamingManager
Overrides:
getNamingfields in class NamingManagerHelper
Parameters:
sc - is the speedo meta object of the persistent class

defineClassIdentifierNameDef

public void defineClassIdentifierNameDef(org.objectweb.jorm.metainfo.api.NameDef nd,
                                         org.objectweb.jorm.metainfo.api.Class jc,
                                         SpeedoClass sc,
                                         org.objectweb.jorm.metainfo.api.ClassMapping cm,
                                         MIBuilderHelper mibh,
                                         JormMIMappingBuilder mb,
                                         java.util.Collection createdMOs)
                                  throws SpeedoException,
                                         org.objectweb.jorm.api.PException
Description copied from interface: NamingManager
Fill the name def of a class identifier

Parameters:
nd - is the name def to fill
jc - is the jorm meta object representing the class.
sc - is the speedo meta object representing the class.
cm - if the mapping structure hosting the mapping of the class.
mibh - is a helper for the management of the JORM meta info
mb - is the mapping builder permitting the creation of the mapping objects.
createdMOs - is a result paramter. This collection must be fill with the created Jorm Meta objects representing a class or a composite name. Here only the new composite names have to be added.
Throws:
SpeedoException - if the speedo meta information is not completly defined.
org.objectweb.jorm.api.PException

needInheritanceDiscriminator

public boolean needInheritanceDiscriminator(SpeedoClass sc)
                                     throws SpeedoException
Specified by:
needInheritanceDiscriminator in interface NamingManager
Overrides:
needInheritanceDiscriminator in class NamingManagerHelper
Throws:
SpeedoException

defineClassReferenceNameDef

public void defineClassReferenceNameDef(org.objectweb.jorm.metainfo.api.NameDef nd,
                                        org.objectweb.jorm.metainfo.api.ClassRef cr,
                                        SpeedoField sf,
                                        SpeedoClass currentClass,
                                        org.objectweb.jorm.metainfo.api.ClassMapping cm,
                                        MIBuilderHelper mibh,
                                        JormMIMappingBuilder mb)
                                 throws SpeedoException,
                                        org.objectweb.jorm.api.PException
Description copied from interface: NamingManager
Fill the name def of the class reference from a class

Parameters:
nd - is the name def to fill
cr - is the speedo meta object representing the class.
sf - is the speedo meta object representing the persistent reference to a class.
currentClass - is the class mapping the field
cm - if the mapping structure hosting the mapping of the class.
mibh - is a helper for the management of the JORM meta info
mb - is the mapping builder permitting the creation of the mapping objects.
Throws:
SpeedoException - if the speedo meta information is not completly defined.
org.objectweb.jorm.api.PException

defineClassReferenceNameDef

public void defineClassReferenceNameDef(org.objectweb.jorm.metainfo.api.NameDef nd,
                                        org.objectweb.jorm.metainfo.api.ClassRef cr,
                                        SpeedoField sf,
                                        SpeedoClass currentClass,
                                        org.objectweb.jorm.metainfo.api.GenClassMapping gcm,
                                        MIBuilderHelper mibh,
                                        JormMIMappingBuilder mb)
                                 throws SpeedoException,
                                        org.objectweb.jorm.api.PException
Description copied from interface: NamingManager
Fill the name def of the class reference from a generic class

Parameters:
nd - is the name def to fill
cr - is the speedo meta object representing the class.
sf - is the speedo meta object representing the persistent reference to a class.
currentClass - is the class mapping the field
gcm - if the mapping structure hosting the mapping of the class.
mibh - is a helper for the management of the JORM meta info
mb - is the mapping builder permitting the creation of the mapping objects.
Throws:
SpeedoException - if the speedo meta information is not completly defined.
org.objectweb.jorm.api.PException

defineGenClassIdentifierNameDef

public void defineGenClassIdentifierNameDef(org.objectweb.jorm.metainfo.api.NameDef nd,
                                            org.objectweb.jorm.metainfo.api.GenClassRef gcr,
                                            SpeedoField sf,
                                            SpeedoClass currentClass,
                                            org.objectweb.jorm.metainfo.api.GenClassMapping gcm,
                                            MIBuilderHelper mibh,
                                            JormMIMappingBuilder mb)
                                     throws SpeedoException,
                                            org.objectweb.jorm.api.PException
Description copied from interface: NamingManager
Fill the name def of the gen class identifier

Parameters:
nd - is the name def to fill
gcr - is the JORM meta object representing the generic class reference.
sf - is the speedo meta object representing the persistent reference to a generic class.
currentClass - is the class mapping the field
gcm - if the mapping structure hosting the mapping of the generic class.
mibh - is a helper for the management of the JORM meta info
mb - is the mapping builder permitting the creation of the mapping objects.
Throws:
SpeedoException - if the speedo meta information is not completly defined.
org.objectweb.jorm.api.PException

defineGenClassReferenceNameDef

public void defineGenClassReferenceNameDef(org.objectweb.jorm.metainfo.api.NameDef nd,
                                           org.objectweb.jorm.metainfo.api.GenClassRef gcr,
                                           SpeedoField sf,
                                           SpeedoClass currentClass,
                                           org.objectweb.jorm.metainfo.api.ClassMapping cm,
                                           MIBuilderHelper mibh,
                                           JormMIMappingBuilder mb)
                                    throws SpeedoException,
                                           org.objectweb.jorm.api.PException
Description copied from interface: NamingManager
Fill the name def of the generic class reference from a class

Parameters:
nd - is the name def to fill
gcr - is the speedo meta object representing the generic class.
sf - is the speedo meta object representing the persistent reference to a generic class.
currentClass - is the class mapping the field
cm - if the mapping structure hosting the mapping of the class.
mibh - is a helper for the management of the JORM meta info
mb - is the mapping builder permitting the creation of the mapping objects.
Throws:
SpeedoException - if the speedo meta information is not completly defined.
org.objectweb.jorm.api.PException

getJormNamingConfig

public void getJormNamingConfig(org.objectweb.jorm.metainfo.api.NameDef nd,
                                SpeedoClass targetClass,
                                org.objectweb.jorm.metainfo.api.MetaObject sourceMO,
                                java.lang.String key,
                                java.util.Properties result)
Description copied from interface: NamingManager
computes the naming configuration information for a class or a reference. This information is store as a String. The string value will be passed to the getPBinder and getPNamingContext methods as hints. This method is used at generation time.
naming of a/td>MOClass/td>
class/td>Class/td>
reference to a Class/td>ClassRef/td>
reference to a GenClass/td>GenClassRef/td>
a GenClass identifier/td>GenClassRef/td>

targetClass - is the Speedo meta object representing the class which is designates by the
result - is the Properties which must be filled

getPBinder

public org.objectweb.jorm.naming.api.PBinder getPBinder(java.lang.String className,
                                                        java.lang.String hints,
                                                        java.lang.ClassLoader classLoader,
                                                        byte mappingStructureRule,
                                                        java.util.Map cn2binder,
                                                        java.util.Map cn2pnc)
                                                 throws org.objectweb.jorm.api.PException
Description copied from interface: NamingManager
Build a PBinder instance for this hints parameter specified

Specified by:
getPBinder in interface NamingManager
Overrides:
getPBinder in class NamingManagerHelper
hints - is the helper of the PBinder building. This hints must be the result of the getJormConfig call.
classLoader - is the classloader to use for instanciate the PBinder
mappingStructureRule - indicates the rule to apply concerning the data strucuture. Indeed a PBinder building can require to read the data support.
cn2binder - is the map of the existing PBinder instance (key = class name, value = PBinder instance)
cn2pnc - is the map of the existing PNC instance (key = class name, value = PNC instance)
Throws:
org.objectweb.jorm.api.PException

getPNamingContext

public org.objectweb.jorm.naming.api.PNamingContext getPNamingContext(java.lang.String className,
                                                                      java.lang.String hints,
                                                                      java.lang.ClassLoader classLoader,
                                                                      byte mappingStructureRule,
                                                                      java.util.Map cn2binder,
                                                                      java.util.Map cn2pnc,
                                                                      org.objectweb.jorm.metainfo.api.Manager miManager,
                                                                      org.objectweb.jorm.api.PClassMapping pcm)
                                                               throws org.objectweb.jorm.api.PException
Description copied from interface: NamingManager
Build a PNamingContext instance for this hints parameter specified

Specified by:
getPNamingContext in interface NamingManager
Overrides:
getPNamingContext in class NamingManagerHelper
hints - is the helper of the PBinder building. This hints must be the result of the getJormConfig call.
classLoader - is the classloader to use for instanciate the PBinder
mappingStructureRule - indicates the rule to apply concerning the data strucuture. Indeed a PBinder building can require to read the data support.
cn2binder - is the map of the existing PBinder instance (key = class name, value = PBinder instance)
cn2pnc - is the map of the existing PNC instance (key = class name, value = PNC instance)
Throws:
org.objectweb.jorm.api.PException

getPBinder

protected org.objectweb.jorm.naming.api.PBinder getPBinder(java.lang.String className,
                                                           java.lang.String binderInfo)
                                                    throws org.objectweb.jorm.api.PException
Throws:
org.objectweb.jorm.api.PException

setCache

public void setCache(CacheManager cache)
Specified by:
setCache in interface NamingManager
Overrides:
setCache in class NamingManagerHelper

getDefaultColumn

public SpeedoColumn[] getDefaultColumn(SpeedoClass sc)
Specified by:
getDefaultColumn in interface NamingManager
Overrides:
getDefaultColumn in class NamingManagerHelper