Author: vgritsenko
Date: Fri Apr 27 17:51:37 2007
New Revision: 533273
URL: http://svn.apache.org/viewvc?view=rev&rev=533273
Log:
<action dev="VG" type="update">
Do not create meta collections for the system collections.
</action>
<action dev="VG" type="fix" fixes-bug="42273" due-to="Natalia Shilenkova">
Save meta collection configuration in the database and initialize meta
collection from the configuration on startup. This keeps meta collection
configuration consistent with database configuration.
</action>
Modified:
xml/xindice/trunk/java/src/org/apache/xindice/core/Database.java
xml/xindice/trunk/java/src/org/apache/xindice/core/MetaSystemCollection.java
xml/xindice/trunk/java/src/org/apache/xindice/core/SystemCollection.java
xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DOMParser.java
xml/xindice/trunk/status.xml
Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/Database.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/Database.java?view=diff&rev=533273&r1=533272&r2=533273
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/Database.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/Database.java Fri Apr 27 17:51:37 2007
@@ -52,16 +52,20 @@
private static final Log log = LogFactory.getLog(Database.class);
+ // Configuration elements in config/system.xml file
public static final String DBROOT = "dbroot";
public static final String NAME = "name";
private static final String QUERYENGINE = "queryengine";
- private static final String COLKEY = "database.xml";
private static final String DATABASE = "database";
private static final String METADATA = "use-metadata";
public static final String DBROOT_DEFAULT = "./db/";
+ // Configuration documents stored in SysConfigs collection
+ private static final String COLKEY = "database.xml";
+ private static final String METAKEY = "meta.xml";
+
private static final Map databases = new HashMap(); // String to Database
private static final DatabaseShutdownHandler shutdownHandler = new DatabaseShutdownHandler();
@@ -226,12 +230,25 @@
systemCollection.getCollection(SystemCollection.CONFIGS).setDocument(COLKEY, d);
getConfig().resetDirty();
} catch (Exception e) {
- log.error("Error Writing Configuration '" + getName() + "', for database " + getName(), e);
+ log.error("Error Writing Configuration '" + COLKEY + "', for database " + getName(), e);
}
// Observer
DBObserver.getInstance().flushDatabaseConfig(this, getConfig());
}
+
+ if (isMetaEnabled()) {
+ Configuration config = metaSystemCollection.getConfig();
+ if (config.isDirty()) {
+ try {
+ Document d = config.getElement().getOwnerDocument();
+ systemCollection.getCollection(SystemCollection.CONFIGS).setDocument(METAKEY, d);
+ config.resetDirty();
+ } catch (Exception e) {
+ log.error("Error writing configuration '" + METAKEY + "', for database " + getName(), e);
+ }
+ }
+ }
}
/**
@@ -370,18 +387,19 @@
this.sysInit = true;
}
+ Collection sysConfigCollection = systemCollection.getCollection(SystemCollection.CONFIGS);
try {
// Bootstrap from the database itself... This is accomplished
// by intercepting the setConfig call and using a Configuration
// retrieved from the database instead of the standard config
- Document colDoc = systemCollection.getCollection(SystemCollection.CONFIGS).getDocument(COLKEY);
+ Document colDoc = sysConfigCollection.getDocument(COLKEY);
if (colDoc == null) {
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
colDoc = db.newDocument();
Element root = colDoc.createElement(DATABASE);
root.setAttribute(NAME, getName());
colDoc.appendChild(root);
- systemCollection.getCollection(SystemCollection.CONFIGS).setDocument(COLKEY, colDoc);
+ sysConfigCollection.setDocument(COLKEY, colDoc);
}
super.setConfig(new Configuration(colDoc.getDocumentElement(), false));
@@ -399,12 +417,28 @@
String metaCfg = config.getAttribute(METADATA);
if (metaCfg.equalsIgnoreCase("on")) {
metaEnabled = true;
- if (!metaInit) {
+ }
+
+ if (metaEnabled && !metaInit) {
+ try {
metaSystemCollection = new MetaSystemCollection(this);
- metaSystemCollection.init();
+
+ Document colDoc = sysConfigCollection.getDocument(METAKEY);
+ if (colDoc == null) {
+ metaSystemCollection.init();
+ Document metaConfig = metaSystemCollection.getConfig().getElement().getOwnerDocument();
+ sysConfigCollection.setDocument(METAKEY, metaConfig);
+ } else {
+ metaSystemCollection.setConfig(new Configuration(colDoc, false));
+ }
+
super.addCollection(metaSystemCollection);
metaInit = true;
- log.debug("Meta information initialized");
+ if (log.isDebugEnabled()) {
+ log.debug("Meta collection is initialized");
+ }
+ } catch (Exception e) {
+ log.error("Meta collection was not initialized", e);
}
}
Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/MetaSystemCollection.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/MetaSystemCollection.java?view=diff&rev=533273&r1=533272&r2=533273
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/MetaSystemCollection.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/MetaSystemCollection.java Fri Apr 27 17:51:37 2007
@@ -50,40 +50,12 @@
+ " <collections>"
// Meta Collections
+ " <collection name='" + METAS + "' compressed='true'>"
- + " <filer class='org.apache.xindice.core.filer.BTreeFiler'/>"
- + " <collections>"
- // Add Meta collections for System collections to avoid eternal loop during initialization
- + " <collection name='" + SystemCollection.SYSCOL + "'>"
- + " <collections>"
- // Meta for Symbol Tables Collection
- + " <collection name='" + SystemCollection.SYMBOLS + "' compressed='true'>"
- + " <filer class='org.apache.xindice.core.filer.BTreeFiler'/>"
- + " <symbols>"
- + " <symbol name='meta' nsuri='http://apache.org/xindice/metadata' id='0'/>"
- + " <symbol name='xmlns' nsuri='http://www.w3.org/2000/xmlns/' id='1'/>"
- + " <symbol name='system' nsuri='http://apache.org/xindice/metadata' id='2'/>"
- + " <symbol name='type' id='3'/>"
- + " <symbol name='attr' nsuri='http://apache.org/xindice/metadata' id='4'/>"
- + " <symbol name='name' id='5'/>"
- + " <symbol name='value' id='6'/>"
- + " </symbols>"
- + " <indexes/>"
- + " </collection>"
- // System Configuration Collection
- + " <collection name='" + SystemCollection.CONFIGS + "' compressed='false'>"
- + " <filer class='org.apache.xindice.core.filer.BTreeFiler'/>"
- + " <indexes/>"
- + " </collection>"
- + " </collections>"
- + " </collection>"
- + " </collections>"
- + " <indexes/>"
+ " </collection>"
+ " </collections>"
+ "</collection>";
private String dbCanonicalName;
- // private String sysCanonicalName;
+ private String sysCanonicalName;
public MetaSystemCollection(Database db) {
@@ -91,7 +63,7 @@
// Set the canonical names
dbCanonicalName = db.getCanonicalName();
- // sysCanonicalName = db.getSystemCollection().getCanonicalName();
+ sysCanonicalName = db.getSystemCollection().getCanonicalName();
}
public void init() throws DBException {
@@ -115,6 +87,7 @@
* @param collection the collection whose meta you want
* @param create whether or not to create the meta if its missing
* @return collection the meta collection for the requested collection
+ * @throws DBException if unable to get meta collection
*/
public Collection getMetaCollection(Collection collection, boolean create) throws DBException {
String path = collection.getCanonicalName();
@@ -130,9 +103,9 @@
}
// this is the system collection
- // if (path.startsWith(sysCanonicalName)) {
- // return null;
- // }
+ if (path.startsWith(sysCanonicalName)) {
+ return null;
+ }
Collection current = getCollection(METAS);
StringTokenizer st = new StringTokenizer(path.substring(dbCanonicalName.length()), "/");
@@ -175,6 +148,7 @@
* Collection.
*
* @param collection The Collection whose meta is required
+ * @throws DBException if unable to delete collection meta data
*/
public void dropCollectionMeta(Collection collection) throws DBException {
Collection mcol = getMetaCollection(collection, false);
@@ -196,6 +170,7 @@
*
* @param collection The Collection whose meta is required
* @return The requested MetaData
+ * @throws DBException if unable to retrieve collection meta data
*/
public MetaData getCollectionMeta(Collection collection) throws DBException {
Collection mcol = getMetaCollection(collection, true);
@@ -221,6 +196,7 @@
*
* @param collection The Collection that owns the MetaData
* @param meta The MetaData
+ * @throws DBException if unable to update collection meta data
*/
public void setCollectionMeta(Collection collection, MetaData meta) throws DBException {
if (null == meta) {
@@ -235,11 +211,12 @@
}
/**
- * dropDocumentMeta removes the MetaData for the specified
- * Document.
+ * dropDocumentMeta removes the meta data for the specified
+ * document.
*
- * @param collection The Collection whose meta is required
- * @param id the Document id
+ * @param collection Document collection
+ * @param id Document key
+ * @throws DBException if unable to delete document meta data
*/
public void dropDocumentMeta(Collection collection, String id) throws DBException {
Collection mcol = getMetaCollection(collection, false);
@@ -255,12 +232,13 @@
}
/**
- * getDocumentMeta retrieves the MetaData for the specified
+ * getDocumentMeta retrieves the meta data for the specified
* document.
*
- * @param collection The Collection whose meta is required
- * @param id the ID
+ * @param collection Document collection
+ * @param id Document key
* @return The requested MetaData
+ * @throws DBException if unable to retrieve document meta data
*/
public MetaData getDocumentMeta(Collection collection, String id) throws DBException {
Collection mcol = getMetaCollection(collection, true);
@@ -282,11 +260,12 @@
}
/**
- * setDocumentMeta save the Meta for the specified Collection.
+ * setDocumentMeta sets the meta data for the specified document.
*
- * @param collection The Collection that owns the MetaData
- * @param id
- * @param meta The MetaData
+ * @param collection Document collection
+ * @param id Document key
+ * @param meta New document meta data
+ * @throws DBException if unable to update document meta data
*/
public void setDocumentMeta(Collection collection, String id, MetaData meta) throws DBException {
if (null == meta) {
Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/SystemCollection.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/SystemCollection.java?view=diff&rev=533273&r1=533272&r2=533273
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/SystemCollection.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/SystemCollection.java Fri Apr 27 17:51:37 2007
@@ -67,7 +67,7 @@
+ "</collection>";
/**
- * @param db
+ * @param db Its database
*/
public SystemCollection(Database db) {
super(db);
@@ -101,6 +101,7 @@
*
* @param collection The Collection whose SymbolTable is required
* @return The requested SymbolTable
+ * @throws DBException if unable to load symbols
*/
public SymbolTable loadSymbols(Collection collection) throws DBException {
String name = getSymbolTableName(collection);
@@ -119,6 +120,7 @@
*
* @param collection The Collection that owns the SymbolTable
* @param symbols The SymbolTable
+ * @throws DBException if unable to save symbols
*/
public void saveSymbols(Collection collection, SymbolTable symbols) throws DBException {
String name = getSymbolTableName(collection);
@@ -135,6 +137,7 @@
* dropSymbols drop the SymbolTable for the specified Collection.
*
* @param collection The Collection that owns the SymbolTable
+ * @throws DBException if unable to drop symbols
*/
public void dropSymbols(Collection collection) throws DBException {
String name = getSymbolTableName(collection);
Modified: xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DOMParser.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DOMParser.java?view=diff&rev=533273&r1=533272&r2=533273
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DOMParser.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DOMParser.java Fri Apr 27 17:51:37 2007
@@ -56,7 +56,8 @@
*
* @version $Revision$, $Date$
*/
-public final class DOMParser extends DefaultHandler implements DeclHandler, LexicalHandler {
+public final class DOMParser extends DefaultHandler
+ implements DeclHandler, LexicalHandler {
private static final Log log = LogFactory.getLog(DOMParser.class);
@@ -66,14 +67,15 @@
private static final SAXParserFactory factory = SAXParserFactory.newInstance();
private SAXParser sp;
- private ErrorHandler errors = null;
- private EntityResolver entities = null;
+ private ErrorHandler errors;
+ private EntityResolver entities;
private Document doc;
private Node context;
private int state = -1;
private StringBuffer buf;
private final ObjectStack states = new ObjectStack();
+
public DOMParser() throws XindiceException {
try {
Modified: xml/xindice/trunk/status.xml
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/status.xml?view=diff&rev=533273&r1=533272&r2=533273
==============================================================================
--- xml/xindice/trunk/status.xml (original)
+++ xml/xindice/trunk/status.xml Fri Apr 27 17:51:37 2007
@@ -116,7 +116,15 @@
</todo>
<changes>
- <release version="1.1-dev" date="(not released)">
+ <release version="1.1" date="(not released)">
+ <action dev="VG" type="update">
+ Do not create meta collections for the system collections.
+ </action>
+ <action dev="VG" type="fix" fixes-bug="42273" due-to="Natalia Shilenkova">
+ Save meta collection configuration in the database and initialize meta
+ collection from the configuration on startup. This keeps meta collection
+ configuration consistent with database configuration.
+ </action>
<action dev="VG" type="fix" fixes-bug="42272" due-to="Natalia Shilenkova">
Clear Paged and BTree cache on close.
</action>
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.