Package org.apache.openjpa.meta
Class AbstractCFMetaDataFactory
- java.lang.Object
-
- org.apache.openjpa.meta.AbstractMetaDataFactory
-
- org.apache.openjpa.meta.AbstractCFMetaDataFactory
-
- All Implemented Interfaces:
MetaDataFactory
,MetaDataModes
- Direct Known Subclasses:
PersistenceMetaDataFactory
public abstract class AbstractCFMetaDataFactory extends AbstractMetaDataFactory
Base class for factory implementations built around XML metadata files in the common format.- Since:
- 0.4.0
- Author:
- Abe White
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
AbstractCFMetaDataFactory.Parser
Internal parser interface.static interface
AbstractCFMetaDataFactory.Serializer
Internal serializer interface.
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Collection<java.lang.String>
cpath
protected java.util.Collection<java.io.File>
files
static java.lang.String
JAR_FILE_URLS
static java.lang.String
MAPPING_FILE_NAMES
static java.lang.String
PERSISTENCE_UNIT_ROOT_URL
protected java.util.Collection<java.lang.String>
rsrcs
protected java.util.Collection<java.net.URL>
urls
-
Fields inherited from class org.apache.openjpa.meta.AbstractMetaDataFactory
dir, log, repos, store, strict, types
-
Fields inherited from interface org.apache.openjpa.meta.MetaDataFactory
STORE_DEFAULT, STORE_PER_CLASS, STORE_VERBOSE
-
Fields inherited from interface org.apache.openjpa.meta.MetaDataModes
MODE_ALL, MODE_ANN_MAPPING, MODE_MAPPING, MODE_MAPPING_INIT, MODE_META, MODE_NONE, MODE_QUERY
-
-
Constructor Summary
Constructors Constructor Description AbstractCFMetaDataFactory()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
backupAndDelete(java.util.Collection files)
Backup and delete the source files for the given metadatas.void
clear()
Clear any internal caches.protected void
clearMapping(ClassMetaData meta)
Clear mapping information from the given metadata.static java.lang.String
decode(java.lang.String s)
Decodes a URL-encoded path string.protected abstract java.io.File
defaultSourceFile(ClassMetaData meta)
Return the default file for the given metadata.protected abstract java.io.File
defaultSourceFile(QueryMetaData query, java.util.Map clsNames)
Return a default file for the given query.protected abstract java.io.File
defaultSourceFile(SequenceMetaData seq, java.util.Map clsNames)
Return a default file for the given sequence.boolean
drop(java.lang.Class[] cls, int mode, java.lang.ClassLoader envLoader)
Drop the metadata for the given classes in the given mode(s).protected ClassMetaData
getDefiningMetaData(QueryMetaData query, java.util.Map clsNames)
Return the metadata that defines the given query, if any.java.util.Set<java.lang.String>
getPersistentTypeNames(boolean devpath, java.lang.ClassLoader envLoader)
Return all persistent class names, using the metadata locations supplied in configuration, optionally scanning the classpath.protected java.io.File
getSourceFile(ClassMetaData meta)
Return the current source file of the given metadata.protected java.io.File
getSourceFile(SequenceMetaData meta)
Return the current source file of the given metadata.protected boolean
isMappingOnlyFactory()
Return true if this factory deals only with mapping data, and relies on a separate factory for metadata.protected boolean
isParseTopDown()
Whether to parse classes top down.protected void
mapPersistentTypeNames(java.lang.Object rsrc, java.lang.String[] names)
Implement this method to map metadata resources to the persistent types contained within them.protected abstract AbstractCFMetaDataFactory.Serializer
newAnnotationSerializer()
Create a new annotation metadata serializer.protected abstract MetaDataFilter
newMetaDataFilter()
Return a metadata filter that identifies metadata resources when performing jar and classpath scans.protected abstract AbstractCFMetaDataFactory.Parser
newParser(boolean loading)
Create a new metadata parser.protected abstract AbstractCFMetaDataFactory.Serializer
newSerializer()
Create a new metadata serializer.protected void
parse(MetaDataParser parser, java.lang.Class[] cls)
Parse all given classses.protected void
parse(MetaDataParser parser, java.util.Collection files)
Parse all given files.protected java.util.Set<java.lang.String>
parsePersistentTypeNames(java.lang.ClassLoader loader)
Parse persistent type names.protected void
serialize(MetaDataSerializer ser, java.util.Map<java.io.File,java.lang.String> output, int flags)
Tell the given serialier to write its metadatas.void
setClasspathScan(java.lang.String cpath)
Set of classpath directories or jars to scan for metadata supplied by user via auto-configuration.void
setClasspathScan(java.util.Collection<java.lang.String> cpath)
Set of classpath directories or jars to scan for metadata supplied by user.void
setFiles(java.lang.String files)
Set of semicolon-separatedFile
s of metadata files or directories supplied by user via auto-configuration.void
setFiles(java.util.Collection<java.io.File> files)
Set ofFile
s of metadata files or directories supplied by user.void
setResources(java.lang.String rsrcs)
Set of semicolon-separated resource paths of metadata files or jars supplied by user via auto-configuration.void
setResources(java.util.Collection<java.lang.String> rsrcs)
Set of resource paths of metadata files or jars supplied by user.protected void
setSourceFile(ClassMetaData meta, java.io.File sourceFile)
Set the current source file of the given metadata.protected void
setSourceFile(SequenceMetaData meta, java.io.File sourceFile)
Set the current source file of the given metadata.void
setURLs(java.lang.String urls)
Set of semicolon-separatedURL
s of metadata files or jars supplied by user via auto-configuration.void
setURLs(java.util.Collection<java.net.URL> urls)
Set ofURL
s of metadata files or jars supplied by user.boolean
store(ClassMetaData[] metas, QueryMetaData[] queries, SequenceMetaData[] seqs, int mode, java.util.Map<java.io.File,java.lang.String> output)
Store the given metadata.-
Methods inherited from class org.apache.openjpa.meta.AbstractMetaDataFactory
addClassExtensionKeys, addFieldExtensionKeys, getQueryScope, getResultSetMappingScope, newClassArgParser, setRepository, setStoreDirectory, setStoreMode, setStrict, setTypes, setTypes
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.openjpa.meta.MetaDataFactory
getDefaults, getManagedClass, getManagedClassName, getMetaModelClassName, isMetaClass, load, loadXMLMetaData
-
-
-
-
Field Detail
-
files
protected java.util.Collection<java.io.File> files
-
urls
protected java.util.Collection<java.net.URL> urls
-
rsrcs
protected java.util.Collection<java.lang.String> rsrcs
-
cpath
protected java.util.Collection<java.lang.String> cpath
-
PERSISTENCE_UNIT_ROOT_URL
public static final java.lang.String PERSISTENCE_UNIT_ROOT_URL
- See Also:
- Constant Field Values
-
MAPPING_FILE_NAMES
public static final java.lang.String MAPPING_FILE_NAMES
- See Also:
- Constant Field Values
-
JAR_FILE_URLS
public static final java.lang.String JAR_FILE_URLS
- See Also:
- Constant Field Values
-
-
Method Detail
-
setFiles
public void setFiles(java.util.Collection<java.io.File> files)
Set ofFile
s of metadata files or directories supplied by user.
-
setFiles
public void setFiles(java.lang.String files)
Set of semicolon-separatedFile
s of metadata files or directories supplied by user via auto-configuration.
-
setURLs
public void setURLs(java.util.Collection<java.net.URL> urls)
Set ofURL
s of metadata files or jars supplied by user.
-
setURLs
public void setURLs(java.lang.String urls)
Set of semicolon-separatedURL
s of metadata files or jars supplied by user via auto-configuration.
-
setResources
public void setResources(java.util.Collection<java.lang.String> rsrcs)
Set of resource paths of metadata files or jars supplied by user.
-
setResources
public void setResources(java.lang.String rsrcs)
Set of semicolon-separated resource paths of metadata files or jars supplied by user via auto-configuration.
-
setClasspathScan
public void setClasspathScan(java.util.Collection<java.lang.String> cpath)
Set of classpath directories or jars to scan for metadata supplied by user.
-
setClasspathScan
public void setClasspathScan(java.lang.String cpath)
Set of classpath directories or jars to scan for metadata supplied by user via auto-configuration.
-
store
public boolean store(ClassMetaData[] metas, QueryMetaData[] queries, SequenceMetaData[] seqs, int mode, java.util.Map<java.io.File,java.lang.String> output)
Description copied from interface:MetaDataFactory
Store the given metadata.- Specified by:
store
in interfaceMetaDataFactory
- Overrides:
store
in classAbstractMetaDataFactory
mode
- hint about what aspects of the metadata have changedoutput
- if non-null, rather than storing metadata directly, add entries mapping each output destination such as aFile
to the planned output for that destination in string form- Returns:
- false if this factory is unable to store metadata
-
drop
public boolean drop(java.lang.Class[] cls, int mode, java.lang.ClassLoader envLoader)
Description copied from interface:MetaDataFactory
Drop the metadata for the given classes in the given mode(s).- Specified by:
drop
in interfaceMetaDataFactory
- Overrides:
drop
in classAbstractMetaDataFactory
- Returns:
- false if any metadata could not be dropped
-
isMappingOnlyFactory
protected boolean isMappingOnlyFactory()
Return true if this factory deals only with mapping data, and relies on a separate factory for metadata.
-
parse
protected void parse(MetaDataParser parser, java.util.Collection files)
Parse all given files.
-
parse
protected void parse(MetaDataParser parser, java.lang.Class[] cls)
Parse all given classses.
-
isParseTopDown
protected boolean isParseTopDown()
Whether to parse classes top down. Defaults to false.
-
serialize
protected void serialize(MetaDataSerializer ser, java.util.Map<java.io.File,java.lang.String> output, int flags)
Tell the given serialier to write its metadatas.
-
backupAndDelete
protected void backupAndDelete(java.util.Collection files)
Backup and delete the source files for the given metadatas.
-
clearMapping
protected void clearMapping(ClassMetaData meta)
Clear mapping information from the given metadata.
-
getSourceFile
protected java.io.File getSourceFile(ClassMetaData meta)
Return the current source file of the given metadata.
-
setSourceFile
protected void setSourceFile(ClassMetaData meta, java.io.File sourceFile)
Set the current source file of the given metadata.
-
getSourceFile
protected java.io.File getSourceFile(SequenceMetaData meta)
Return the current source file of the given metadata.
-
setSourceFile
protected void setSourceFile(SequenceMetaData meta, java.io.File sourceFile)
Set the current source file of the given metadata.
-
defaultSourceFile
protected abstract java.io.File defaultSourceFile(ClassMetaData meta)
Return the default file for the given metadata.
-
defaultSourceFile
protected abstract java.io.File defaultSourceFile(QueryMetaData query, java.util.Map clsNames)
Return a default file for the given query.
-
defaultSourceFile
protected abstract java.io.File defaultSourceFile(SequenceMetaData seq, java.util.Map clsNames)
Return a default file for the given sequence.
-
newParser
protected abstract AbstractCFMetaDataFactory.Parser newParser(boolean loading)
Create a new metadata parser.- Parameters:
loading
- if true, this will be the cached parser used for loading metadata
-
newSerializer
protected abstract AbstractCFMetaDataFactory.Serializer newSerializer()
Create a new metadata serializer.
-
newAnnotationSerializer
protected abstract AbstractCFMetaDataFactory.Serializer newAnnotationSerializer()
Create a new annotation metadata serializer.
-
getDefiningMetaData
protected ClassMetaData getDefiningMetaData(QueryMetaData query, java.util.Map clsNames)
Return the metadata that defines the given query, if any.- Parameters:
clsNames
- map of class names to metadatas
-
getPersistentTypeNames
public java.util.Set<java.lang.String> getPersistentTypeNames(boolean devpath, java.lang.ClassLoader envLoader)
Description copied from interface:MetaDataFactory
Return all persistent class names, using the metadata locations supplied in configuration, optionally scanning the classpath. Return null if no types are supplied and this factory is unable to scan the classpath. This method should not be used directly by outside code; useMetaDataRepository.getPersistentTypeNames(boolean, java.lang.ClassLoader)
instead.- Specified by:
getPersistentTypeNames
in interfaceMetaDataFactory
- Overrides:
getPersistentTypeNames
in classAbstractMetaDataFactory
- See Also:
MetaDataRepository.getPersistentTypeNames(boolean, java.lang.ClassLoader)
,MetaDataRepository.loadPersistentTypes(boolean, java.lang.ClassLoader)
-
parsePersistentTypeNames
protected java.util.Set<java.lang.String> parsePersistentTypeNames(java.lang.ClassLoader loader) throws java.io.IOException
Parse persistent type names.- Throws:
java.io.IOException
-
decode
public static java.lang.String decode(java.lang.String s)
Decodes a URL-encoded path string. For example, an encoded space (%20) is decoded into a normal space (' ') character. Added via OPENJPA-2102.- Parameters:
s
- - the encoded URL string- Returns:
- String decoded - the decoded string.
-
mapPersistentTypeNames
protected void mapPersistentTypeNames(java.lang.Object rsrc, java.lang.String[] names)
Implement this method to map metadata resources to the persistent types contained within them. The method will be called whengetPersistentTypeNames(boolean, java.lang.ClassLoader)
is invoked.
-
newMetaDataFilter
protected abstract MetaDataFilter newMetaDataFilter()
Return a metadata filter that identifies metadata resources when performing jar and classpath scans.
-
clear
public void clear()
Description copied from interface:MetaDataFactory
Clear any internal caches.- Specified by:
clear
in interfaceMetaDataFactory
- Overrides:
clear
in classAbstractMetaDataFactory
-
-