Package org.apache.wiki.providers
Class AbstractFileProvider
java.lang.Object
org.apache.wiki.providers.AbstractFileProvider
- All Implemented Interfaces:
PageProvider
,WikiProvider
- Direct Known Subclasses:
FileSystemProvider
,VersioningFileProvider
Provides a simple directory based repository for Wiki pages.
All files have ".txt" appended to make life easier for those who insist on using Windows or other software which makes assumptions on the files contents based on its name.
This class functions as a superclass to all file based providers.
- Since:
- 2.1.21.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
A simple filter which filters only those filenames which correspond to the file extension used. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
The default encoding.static final int
static final int
static final int
static final String
All files should have this extension to be recognized as JSPWiki files.protected String
protected Engine
static int
This number limits the length of a custom page property key length.static int
This parameter limits the number of custom page properties allowed on a pagestatic int
This number limits the length of a custom page property value length.static final String
static final String
static final String
static final String
Name of the property that defines where page directories are.Fields inherited from interface org.apache.wiki.api.providers.WikiProvider
LATEST_VERSION
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected Properties
addCustomProperties
(Page page, Properties props) By default all page attributes that start with "@" are returned as custom properties.void
deletePage
(String pageName) void
deleteVersion
(String pageName, int version) protected File
Finds a Wiki page from the page repository.Iterates through all WikiPages, matches them against the given query, and returns a Collection of SearchResult objects.getAllChangedSince
(Date date) Does not work.protected void
getCustomProperties
(Page page, Properties defaultProperties) Get custom properties usingaddCustomProperties(Page, Properties)
, validate them usingvalidateCustomPageProperties(Properties)
and add them to default properties providedint
getPageInfo
(String page, int version) Always returns the latest version, since FileSystemProvider does not support versioning.getPageText
(String page, int version) This implementation just returns the current version, as filesystem does not provide versioning information for now.getVersionHistory
(String page) The FileSystemProvider provides only one version.void
initialize
(Engine engine, Properties properties) protected String
mangleName
(String pagename) This makes sure that the queried page name is still readable by the file system.boolean
pageExists
(String page) boolean
pageExists
(String page, int version) void
putPageText
(Page page, String text) protected void
setCustomProperties
(Page page, Properties properties) Set the custom properties provided into the given page.protected String
unmangleName
(String filename) This makes the reverse of mangleName.protected void
validateCustomPageProperties
(Properties customProperties) Default validation, validates that key and value is ASCIIStringUtils.isAsciiPrintable()
and within lengths set up in jspwiki-custom.properties.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.wiki.api.providers.PageProvider
movePage
-
Field Details
-
m_encoding
-
m_engine
-
PROP_CUSTOMPROP_MAXLIMIT
- See Also:
-
PROP_CUSTOMPROP_MAXKEYLENGTH
- See Also:
-
PROP_CUSTOMPROP_MAXVALUELENGTH
- See Also:
-
DEFAULT_MAX_PROPLIMIT
- See Also:
-
DEFAULT_MAX_PROPKEYLENGTH
- See Also:
-
DEFAULT_MAX_PROPVALUELENGTH
- See Also:
-
MAX_PROPLIMIT
This parameter limits the number of custom page properties allowed on a page -
MAX_PROPKEYLENGTH
This number limits the length of a custom page property key length. The default value here designed with future JDBC providers in mind. -
MAX_PROPVALUELENGTH
This number limits the length of a custom page property value length. The default value here designed with future JDBC providers in mind. -
PROP_PAGEDIR
Name of the property that defines where page directories are.- See Also:
-
FILE_EXT
All files should have this extension to be recognized as JSPWiki files. We default to .txt, because that is probably easiest for Windows users, and guarantees correct handling.- See Also:
-
DEFAULT_ENCODING
The default encoding.
-
-
Constructor Details
-
AbstractFileProvider
public AbstractFileProvider()
-
-
Method Details
-
initialize
public void initialize(Engine engine, Properties properties) throws NoRequiredPropertyException, IOException, FileNotFoundException - Specified by:
initialize
in interfaceWikiProvider
- Throws:
FileNotFoundException
- If the specified page directory does not exist.IOException
- In case the specified page directory is a file, not a directory.NoRequiredPropertyException
-
mangleName
This makes sure that the queried page name is still readable by the file system. For example, all XML entities and slashes are encoded with the percent notation.- Parameters:
pagename
- The name to mangle- Returns:
- The mangled name.
-
unmangleName
This makes the reverse of mangleName.- Parameters:
filename
- The filename to unmangle- Returns:
- The unmangled name.
-
findPage
Finds a Wiki page from the page repository.- Parameters:
page
- The name of the page.- Returns:
- A File to the page. May be null.
-
pageExists
- Specified by:
pageExists
in interfacePageProvider
-
pageExists
- Specified by:
pageExists
in interfacePageProvider
-
getPageText
This implementation just returns the current version, as filesystem does not provide versioning information for now.- Specified by:
getPageText
in interfacePageProvider
- Throws:
ProviderException
-
putPageText
- Specified by:
putPageText
in interfacePageProvider
- Throws:
ProviderException
-
getAllPages
- Specified by:
getAllPages
in interfacePageProvider
- Throws:
ProviderException
-
getAllChangedSince
Does not work.- Specified by:
getAllChangedSince
in interfacePageProvider
- Parameters:
date
-- Returns:
-
getPageCount
- Specified by:
getPageCount
in interfacePageProvider
-
findPages
Iterates through all WikiPages, matches them against the given query, and returns a Collection of SearchResult objects.- Specified by:
findPages
in interfacePageProvider
-
getPageInfo
Always returns the latest version, since FileSystemProvider does not support versioning.- Specified by:
getPageInfo
in interfacePageProvider
- Throws:
ProviderException
-
getVersionHistory
The FileSystemProvider provides only one version.- Specified by:
getVersionHistory
in interfacePageProvider
- Throws:
ProviderException
-
getProviderInfo
- Specified by:
getProviderInfo
in interfaceWikiProvider
-
deleteVersion
- Specified by:
deleteVersion
in interfacePageProvider
- Throws:
ProviderException
-
deletePage
- Specified by:
deletePage
in interfacePageProvider
- Throws:
ProviderException
-
setCustomProperties
Set the custom properties provided into the given page.- Since:
- 2.10.2
-
getCustomProperties
Get custom properties usingaddCustomProperties(Page, Properties)
, validate them usingvalidateCustomPageProperties(Properties)
and add them to default properties provided- Throws:
IOException
- Since:
- 2.10.2
-
addCustomProperties
By default all page attributes that start with "@" are returned as custom properties. This can be overwritten by custom FileSystemProviders to save additional properties. CustomPageProperties are validated byvalidateCustomPageProperties(Properties)
- Parameters:
page
- the current pageprops
- the default properties of this page- Returns:
- default implementation returns empty Properties.
- Since:
- 2.10.2
-
validateCustomPageProperties
Default validation, validates that key and value is ASCIIStringUtils.isAsciiPrintable()
and within lengths set up in jspwiki-custom.properties. This can be overwritten by custom FileSystemProviders to validate additional properties See https://issues.apache.org/jira/browse/JSPWIKI-856- Parameters:
customProperties
- the custom page properties being added- Throws:
IOException
- Since:
- 2.10.2
-