Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIbrahim Sallam2010-05-16 06:18:57 +0000
committerIbrahim Sallam2010-05-16 06:18:57 +0000
commit9442764824884ece1b2e84a4fd53ddce6bb18070 (patch)
treece354102e5f6f0c2b990ee1eef895dfc8e14d312
parent8cf1c74271aea801ec7b0b73ee9216e0e593a17b (diff)
downloadcdo-9442764824884ece1b2e84a4fd53ddce6bb18070.tar.gz
cdo-9442764824884ece1b2e84a4fd53ddce6bb18070.tar.xz
cdo-9442764824884ece1b2e84a4fd53ddce6bb18070.zip
Changes to Package Management and Package naming for Objy classes based on the model.
-rw-r--r--plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjySchema.java75
1 files changed, 61 insertions, 14 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjySchema.java b/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjySchema.java
index 15845220ea..1c84e1b4ba 100644
--- a/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjySchema.java
+++ b/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjySchema.java
@@ -16,12 +16,12 @@ import org.eclipse.emf.cdo.server.internal.objectivity.ObjectivityStore;
import org.eclipse.emf.cdo.server.internal.objectivity.bundle.OM;
import org.eclipse.emf.cdo.server.internal.objectivity.mapper.ITypeMapper;
import org.eclipse.emf.cdo.server.internal.objectivity.mapper.ObjyMapper;
-import org.eclipse.emf.cdo.server.internal.objectivity.schema.ObjyResourceList;
import org.eclipse.emf.cdo.server.internal.objectivity.schema.ObjyArrayListId;
import org.eclipse.emf.cdo.server.internal.objectivity.schema.ObjyArrayListString;
import org.eclipse.emf.cdo.server.internal.objectivity.schema.ObjyBase;
import org.eclipse.emf.cdo.server.internal.objectivity.schema.ObjyFeatureMapArrayList;
import org.eclipse.emf.cdo.server.internal.objectivity.schema.ObjyProxy;
+import org.eclipse.emf.cdo.server.internal.objectivity.schema.ObjyResourceList;
import org.eclipse.net4j.util.om.trace.ContextTracer;
@@ -38,6 +38,7 @@ import com.objy.as.app.d_Class;
import com.objy.as.app.d_Module;
import java.util.HashMap;
+import java.util.Map;
/**
* Wrapper for the AS schema code with caching of the wrapped classes. This class need to be reseted by the
@@ -60,6 +61,8 @@ public class ObjySchema
private static HashMap<EClass, EClass> visitedStructureOnlyClasses = new HashMap<EClass, EClass>();
+ private static Map<String, String> packageNameMapping = new HashMap<String, String>();
+
private static d_Module topModule = null;
public static void resetCache()
@@ -101,7 +104,7 @@ public class ObjySchema
*/
static public String getObjectivityClassName(EClassifier eClassifier)
{
- return getObjectivityClassName(eClassifier, false);
+ return formObjectivityClassName(eClassifier, false);
}
/**
@@ -110,7 +113,7 @@ public class ObjySchema
* @param eClassObject
* @return
*/
- static public String getObjectivityClassName(EClassifier eClassifier, boolean onlyStructure)
+ static String formObjectivityClassName(EClassifier eClassifier, boolean onlyStructure)
{
if (eClassifier == EcorePackage.eINSTANCE.getEObject())
{
@@ -119,17 +122,33 @@ public class ObjySchema
// same class names might exist in different nsUri.
String nsURI = eClassifier.getEPackage().getNsURI();
- // get the hash string for uniqueness.
- String nsURIHash = new Integer(Math.abs(nsURI.hashCode())).toString();
+ // // get the hash string for uniqueness.
+ // String nsURIHash = new Integer(Math.abs(nsURI.hashCode())).toString();
+ String objyPackageName = getObjyPackageName(nsURI);
if (onlyStructure)
{
// return "oo_" + eClassifier.getEPackage().getName() + "_" + eClassifier.getName() + "ST";
- return "oo_" + nsURIHash + "_" + eClassifier.getEPackage().getNsPrefix() + "_" + eClassifier.getName() + "_ST";
+ // return "oo_" + nsURIHash + "_" + eClassifier.getEPackage().getNsPrefix() + "_" + eClassifier.getName() + "_ST";
+ return objyPackageName + ":" + eClassifier.getName() + "_ST";
}
// return "oo_" + eClassifier.getEPackage().getName() + "_" + eClassifier.getName();
- return "oo_" + nsURIHash + "_" + eClassifier.getEPackage().getNsPrefix() + "_" + eClassifier.getName();
+ // return "oo_" + nsURIHash + "_" + eClassifier.getEPackage().getNsPrefix() + "_" + eClassifier.getName();
+ return objyPackageName + ":" + eClassifier.getName();
+ }
+
+ static public void setPackageNameMapping(String name1, String name2)
+ {
+ if (packageNameMapping.get(name1) == null)
+ {
+ packageNameMapping.put(name1, name2);
+ }
+ }
+
+ static public String getPackageNameMapping(String key)
+ {
+ return packageNameMapping.get(key);
}
/**
@@ -270,7 +289,7 @@ public class ObjySchema
}
hashMap.put(eClass, eClass);
- String className = getObjectivityClassName(eClass, onlyStructure);
+ String className = formObjectivityClassName(eClass, onlyStructure);
d_Class dClass = getTopModule().resolve_class(className);
if (dClass != null)
@@ -299,7 +318,7 @@ public class ObjySchema
*/
static void evolveObjyClassSchema(EClass eClass, boolean onlyStructure)
{
- String className = getObjectivityClassName(eClass, onlyStructure);
+ String className = formObjectivityClassName(eClass, onlyStructure);
// check if the class has been proposed before
if (getTopModule().resolve_proposed_class(className) == null)
@@ -408,18 +427,18 @@ public class ObjySchema
EClass eClass = mapOfEClasses.get(className);
if (eClass == null)
{
- // the format is "oo_HASH_packageName_className"
- String[] splitClass = className.split("_");
+ // the format is "<some_URI_name_used_as_package_name>:className"
+ String[] splits = className.split(":");
// get the mapping to the nsURI.
CDOPackageRegistry registry = store.getRepository().getPackageRegistry();
- String nsURI = store.getPackageMapping(splitClass[1]);
+ String nsURI = getPackageNameMapping(splits[0]);
EPackage packageObject = registry.getEPackage(nsURI);
if (packageObject == null)
{
- throw new RuntimeException("Package not found " + splitClass[1] + " for class name " + className);
+ throw new RuntimeException("Package not found " + splits[1] + " for class name " + className);
}
- eClass = (EClass)packageObject.getEClassifier(splitClass[3]);
+ eClass = (EClass)packageObject.getEClassifier(splits[splits.length - 1]);
mapOfEClasses.put(className, eClass);
}
// else
@@ -461,4 +480,32 @@ public class ObjySchema
ObjyResourceList.buildSchema();
}
+ public static String getObjyPackageName(String packageURI)
+ {
+ String name = "";
+ boolean first = true;
+ // parse the URI, remove "http://" and replace each "." with "_"
+ String[] splits = packageURI.split("://");
+ for (String strValue : splits)
+ {
+ if (strValue.equals("http"))
+ {
+ continue;
+ }
+ if (!first)
+ {
+ name = name.concat("_");
+ }
+ else
+ {
+ first = false;
+ }
+
+ name = name.concat(strValue);
+ }
+ name = name.replace("/", ".");
+ name = name.replace(".", "_");
+ return name;
+ }
+
}

Back to the top