org.apache.openjpa.meta
Class AbstractCFMetaDataFactory

java.lang.Object
  extended by org.apache.openjpa.meta.AbstractMetaDataFactory
      extended by 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 fomat.

Since:
0.4.0
Author:
Abe White

Nested Class Summary
static interface AbstractCFMetaDataFactory.Parser
          Internal parser interface.
static interface AbstractCFMetaDataFactory.Serializer
          Internal serializer interface.
 
Field Summary
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
AbstractCFMetaDataFactory()
           
 
Method Summary
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(Collection<String> cpath)
          Set of classpath directories or jars to scan for metadata supplied by user.
 void setClasspathScan(String cpath)
          Set of classpath directories or jars to scan for metadata supplied by user via auto-configuration.
 void setFiles(Collection<File> files)
          Set of Files of metadata files or directories supplied by user.
 void setFiles(String files)
          Set of semicolon-separated Files of metadata files or directories supplied by user via auto-configuration.
 void setResources(Collection<String> rsrcs)
          Set of resource paths of metadata files or jars supplied by user.
 void setResources(String rsrcs)
          Set of semicolon-separated resource paths of metadata files or jars supplied by user via auto-configuration.
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(Collection<URL> urls)
          Set of URLs of metadata files or jars supplied by user.
 void setURLs(String urls)
          Set of semicolon-separated URLs of metadata files or jars supplied by user via auto-configuration.
 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
Constructor Detail

AbstractCFMetaDataFactory

public AbstractCFMetaDataFactory()
Method Detail

setFiles

public void setFiles(Collection<File> files)
Set of Files of metadata files or directories supplied by user.


setFiles

public void setFiles(String files)
Set of semicolon-separated Files of metadata files or directories supplied by user via auto-configuration.


setURLs

public void setURLs(Collection<URL> urls)
Set of URLs of metadata files or jars supplied by user.


setURLs

public void setURLs(String urls)
Set of semicolon-separated URLs 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 interface MetaDataFactory
Overrides:
store in class AbstractMetaDataFactory
mode - hint about what aspects of the metadata have changed
output - if non-null, rather than storing metadata directly, add entries mapping each output destination such as a File 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 interface MetaDataFactory
Overrides:
drop in class AbstractMetaDataFactory
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; use MetaDataRepository.getPersistentTypeNames(boolean, java.lang.ClassLoader) instead.

Specified by:
getPersistentTypeNames in interface MetaDataFactory
Overrides:
getPersistentTypeNames in class AbstractMetaDataFactory
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:
String - encoded - 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 when getPersistentTypeNames(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 interface MetaDataFactory
Overrides:
clear in class AbstractMetaDataFactory


Copyright © 2006-2012 Apache Software Foundation. All Rights Reserved.