Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2013-03-08 10:48:38 +0000
committerEike Stepper2013-03-08 10:48:38 +0000
commitc359069dd7114dd2ab4038bae89c5f42350cb885 (patch)
tree4a242e816f83de8de718a33668bc242a586f64fe /plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db
parentf2879b592ade925aa9b793a36e3884efc63e52ba (diff)
downloadcdo-c359069dd7114dd2ab4038bae89c5f42350cb885.tar.gz
cdo-c359069dd7114dd2ab4038bae89c5f42350cb885.tar.xz
cdo-c359069dd7114dd2ab4038bae89c5f42350cb885.zip
[401763] Make CDO Server more robust against data dictionary changes
https://bugs.eclipse.org/bugs/show_bug.cgi?id=401763
Diffstat (limited to 'plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db')
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBDatabase.java23
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBField.java5
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndex.java5
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndexField.java5
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchema.java5
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchemaElement.java10
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBTable.java5
7 files changed, 58 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBDatabase.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBDatabase.java
index 82c00288cf..f115dc24a0 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBDatabase.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBDatabase.java
@@ -11,6 +11,8 @@
package org.eclipse.net4j.db;
import org.eclipse.net4j.db.ddl.IDBSchema;
+import org.eclipse.net4j.db.ddl.IDBSchemaElement;
+import org.eclipse.net4j.db.ddl.IDBTable;
import org.eclipse.net4j.util.collection.Closeable;
import org.eclipse.net4j.util.container.IContainer;
@@ -41,4 +43,25 @@ public interface IDBDatabase extends IContainer<IDBTransaction>, Closeable
public int getStatementCacheCapacity();
public void setStatementCacheCapacity(int statementCacheCapacity);
+
+ public <T extends IDBSchemaElement, P extends IDBSchemaElement> T ensureSchemaElement(P parent, Class<T> type,
+ String name, RunnableWithSchemaElement<T, P> runnable);
+
+ public IDBTable ensureTable(String name, RunnableWithTable runnable);
+
+ /**
+ * @author Eike Stepper
+ */
+ public interface RunnableWithSchemaElement<T extends IDBSchemaElement, P extends IDBSchemaElement>
+ {
+ public T run(P parent, String name);
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public interface RunnableWithTable
+ {
+ public void run(IDBTable table);
+ }
}
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBField.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBField.java
index 0ab991768e..370fafde1d 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBField.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBField.java
@@ -24,6 +24,11 @@ public interface IDBField extends IDBSchemaElement, PositionProvider
{
public static final int DEFAULT = -1;
+ /**
+ * @since 4.2
+ */
+ public IDBTable getParent();
+
public IDBTable getTable();
public DBType getType();
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndex.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndex.java
index 8e9de00991..d0f4198630 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndex.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndex.java
@@ -19,6 +19,11 @@ package org.eclipse.net4j.db.ddl;
*/
public interface IDBIndex extends IDBSchemaElement
{
+ /**
+ * @since 4.2
+ */
+ public IDBTable getParent();
+
public IDBTable getTable();
public Type getType();
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndexField.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndexField.java
index 73b20f5598..0758d572ae 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndexField.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndexField.java
@@ -22,6 +22,11 @@ import org.eclipse.net4j.util.collection.PositionProvider;
*/
public interface IDBIndexField extends IDBSchemaElement, PositionProvider
{
+ /**
+ * @since 4.2
+ */
+ public IDBIndex getParent();
+
public IDBIndex getIndex();
public IDBField getField();
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchema.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchema.java
index d6971757de..39eda29ca8 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchema.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchema.java
@@ -36,6 +36,11 @@ public interface IDBSchema extends IDBSchemaElement
*/
public boolean isLocked();
+ /**
+ * @since 4.2
+ */
+ public <T extends IDBSchemaElement> T findElement(IDBSchemaElement prototype);
+
public IDBTable addTable(String name) throws DBException;
/**
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchemaElement.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchemaElement.java
index 15e36e9a4a..bf75072b5e 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchemaElement.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchemaElement.java
@@ -35,6 +35,11 @@ public interface IDBSchemaElement extends IDBNamedElement, IContainer<IDBSchemaE
/**
* @since 4.2
*/
+ public IDBSchemaElement getParent();
+
+ /**
+ * @since 4.2
+ */
@Deprecated
public void setName(String name);
@@ -43,6 +48,11 @@ public interface IDBSchemaElement extends IDBNamedElement, IContainer<IDBSchemaE
/**
* @since 4.2
*/
+ public <T extends IDBSchemaElement> T getElement(Class<T> type, String name);
+
+ /**
+ * @since 4.2
+ */
public void accept(IDBSchemaVisitor visitor);
/**
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBTable.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBTable.java
index 554727e02d..de3893a5dd 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBTable.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBTable.java
@@ -21,6 +21,11 @@ import org.eclipse.net4j.db.DBType;
*/
public interface IDBTable extends IDBSchemaElement
{
+ /**
+ * @since 4.2
+ */
+ public IDBSchema getParent();
+
public IDBField addField(String name, DBType type);
public IDBField addField(String name, DBType type, boolean notNull);

Back to the top