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 Collection<String>
cpath
protected Collection<File>
files
static String
JAR_FILE_URLS
static String
MAPPING_FILE_NAMES
static String
PERSISTENCE_UNIT_ROOT_URL
protected Collection<String>
rsrcs
protected Collection<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(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 String
decode(String s)
Decodes a URL-encoded path string.protected abstract File
defaultSourceFile(ClassMetaData meta)
Return the default file for the given metadata.protected abstract File
defaultSourceFile(QueryMetaData query, Map clsNames)
Return a default file for the given query.protected abstract File
defaultSourceFile(SequenceMetaData seq, Map clsNames)
Return a default file for the given sequence.boolean
drop(Class[] cls, int mode, ClassLoader envLoader)
Drop the metadata for the given classes in the given mode(s).protected ClassMetaData
getDefiningMetaData(QueryMetaData query, Map clsNames)
Return the metadata that defines the given query, if any.Set<String>
getPersistentTypeNames(boolean devpath, ClassLoader envLoader)
Return all persistent class names, using the metadata locations supplied in configuration, optionally scanning the classpath.protected File
getSourceFile(ClassMetaData meta)
Return the current source file of the given metadata.protected 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(Object rsrc, 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, Class[] cls)
Parse all given classses.protected void
parse(MetaDataParser parser, Collection files)
Parse all given files.protected Set<String>
parsePersistentTypeNames(ClassLoader loader)
Parse persistent type names.protected void
serialize(MetaDataSerializer ser, Map<File,String> output, int flags)
Tell the given serialier to write its metadatas.void
setClasspathScan(String cpath)
Set of classpath directories or jars to scan for metadata supplied by user via auto-configuration.void
setClasspathScan(Collection<String> cpath)
Set of classpath directories or jars to scan for metadata supplied by user.void
setFiles(String files)
Set of semicolon-separatedFile
s of metadata files or directories supplied by user via auto-configuration.void
setFiles(Collection<File> files)
Set ofFile
s of metadata files or directories supplied by user.void
setResources(String rsrcs)
Set of semicolon-separated resource paths of metadata files or jars supplied by user via auto-configuration.void
setResources(Collection<String> rsrcs)
Set of resource paths of metadata files or jars supplied by user.protected void
setSourceFile(ClassMetaData meta, File sourceFile)
Set the current source file of the given metadata.protected void
setSourceFile(SequenceMetaData meta, File sourceFile)
Set the current source file of the given metadata.void
setURLs(String urls)
Set of semicolon-separatedURL
s of metadata files or jars supplied by user via auto-configuration.void
setURLs(Collection<URL> urls)
Set ofURL
s of metadata files or jars supplied by user.boolean
store(ClassMetaData[] metas, QueryMetaData[] queries, SequenceMetaData[] seqs, int mode, Map<File,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 Collection<File> files
-
urls
protected Collection<URL> urls
-
rsrcs
protected Collection<String> rsrcs
-
cpath
protected Collection<String> cpath
-
PERSISTENCE_UNIT_ROOT_URL
public static final String PERSISTENCE_UNIT_ROOT_URL
- See Also:
- Constant Field Values
-
MAPPING_FILE_NAMES
public static final String MAPPING_FILE_NAMES
- See Also:
- Constant Field Values
-
JAR_FILE_URLS
public static final String JAR_FILE_URLS
- See Also:
- Constant Field Values
-
-
Method Detail
-
setFiles
public void setFiles(Collection<File> files)
Set ofFile
s of metadata files or directories supplied by user.
-
setFiles
public void setFiles(String files)
Set of semicolon-separatedFile
s of metadata files or directories supplied by user via auto-configuration.
-
setURLs
public void setURLs(Collection<URL> urls)
Set ofURL
s of metadata files or jars supplied by user.
-
setURLs
public void setURLs(String urls)
Set of semicolon-separatedURL
s of metadata files or jars supplied by user via auto-configuration.
-
setResources
public void setResources(Collection<String> rsrcs)
Set of resource paths of metadata files or jars supplied by user.
-
setResources
public void setResources(String rsrcs)
Set of semicolon-separated resource paths of metadata files or jars supplied by user via auto-configuration.
-
setClasspathScan
public void setClasspathScan(Collection<String> cpath)
Set of classpath directories or jars to scan for metadata supplied by user.
-
setClasspathScan
public void setClasspathScan(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, Map<File,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(Class[] cls, int mode, 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, Collection files)
Parse all given files.
-
parse
protected void parse(MetaDataParser parser, 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, Map<File,String> output, int flags)
Tell the given serialier to write its metadatas.
-
backupAndDelete
protected void backupAndDelete(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 File getSourceFile(ClassMetaData meta)
Return the current source file of the given metadata.
-
setSourceFile
protected void setSourceFile(ClassMetaData meta, File sourceFile)
Set the current source file of the given metadata.
-
getSourceFile
protected File getSourceFile(SequenceMetaData meta)
Return the current source file of the given metadata.
-
setSourceFile
protected void setSourceFile(SequenceMetaData meta, File sourceFile)
Set the current source file of the given metadata.
-
defaultSourceFile
protected abstract File defaultSourceFile(ClassMetaData meta)
Return the default file for the given metadata.
-
defaultSourceFile
protected abstract File defaultSourceFile(QueryMetaData query, Map clsNames)
Return a default file for the given query.
-
defaultSourceFile
protected abstract File defaultSourceFile(SequenceMetaData seq, 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, Map clsNames)
Return the metadata that defines the given query, if any.- Parameters:
clsNames
- map of class names to metadatas
-
getPersistentTypeNames
public Set<String> getPersistentTypeNames(boolean devpath, 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 Set<String> parsePersistentTypeNames(ClassLoader loader) throws IOException
Parse persistent type names.- Throws:
IOException
-
decode
public static String decode(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(Object rsrc, 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
-
-