Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIbrahim Sallam2010-05-16 06:15:02 +0000
committerIbrahim Sallam2010-05-16 06:15:02 +0000
commitc44de545715af902f2949a12f4af3bdc372ce179 (patch)
tree7f3a25bfa4e0675c3a055417fe25140d311b8c27
parentb5eb5b67cd5b997a5285ae789ee44662765f25fb (diff)
downloadcdo-c44de545715af902f2949a12f4af3bdc372ce179.tar.gz
cdo-c44de545715af902f2949a12f4af3bdc372ce179.tar.xz
cdo-c44de545715af902f2949a12f4af3bdc372ce179.zip
Changed the Package storage management to use ooMap
Changed the way we named Objectivity Package based on the model.
-rw-r--r--plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjyClassProposed.java8
-rw-r--r--plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjyPackageHandler.java144
2 files changed, 87 insertions, 65 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjyClassProposed.java b/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjyClassProposed.java
index 8ad52fcdf3..abebf2ce86 100644
--- a/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjyClassProposed.java
+++ b/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjyClassProposed.java
@@ -55,7 +55,7 @@ public class ObjyClassProposed
public void propose()
{
- String className = ObjySchema.getObjectivityClassName(eClass, onlyStructure);
+ String className = ObjySchema.formObjectivityClassName(eClass, onlyStructure);
Proposed_Class proposedooClass = null;
@@ -80,7 +80,7 @@ public class ObjyClassProposed
ObjySchema.createObjyClassSchema(eSuperObject, itrOnlyStructure);
- String superClassName = ObjySchema.getObjectivityClassName(eSuperObject, itrOnlyStructure);
+ String superClassName = ObjySchema.formObjectivityClassName(eSuperObject, itrOnlyStructure);
proposedooClass.add_base_class(com.objy.as.app.d_Module.LAST, // Position
d_Access_Kind.d_PUBLIC, // Access kind
superClassName); // Base class name*/
@@ -142,7 +142,7 @@ public class ObjyClassProposed
public void evolve(d_Class dClass)
{
- String className = ObjySchema.getObjectivityClassName(eClass, onlyStructure);
+ String className = ObjySchema.formObjectivityClassName(eClass, onlyStructure);
Proposed_Class proposedooClass = null;
@@ -224,7 +224,7 @@ public class ObjyClassProposed
for (EClass classifier : toBeEvolve)
{
- String localName = ObjySchema.getObjectivityClassName(classifier, false);
+ String localName = ObjySchema.formObjectivityClassName(classifier, false);
d_Class localDClass = ObjySchema.getTopModule().resolve_class(localName);
if (localDClass == null)
{
diff --git a/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjyPackageHandler.java b/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjyPackageHandler.java
index 23f58346d5..89dff3a7e0 100644
--- a/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjyPackageHandler.java
+++ b/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/db/ObjyPackageHandler.java
@@ -16,11 +16,11 @@ import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.model.EMFUtil;
-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.schema.ObjyPackageInfo;
import org.eclipse.emf.cdo.server.internal.objectivity.schema.ObjyPackageUnit;
import org.eclipse.emf.cdo.server.internal.objectivity.utils.OBJYCDOIDUtil;
+import org.eclipse.emf.cdo.server.internal.objectivity.utils.ObjyDb;
import org.eclipse.emf.cdo.server.internal.objectivity.utils.SmartLock;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageInfo;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
@@ -30,6 +30,11 @@ import org.eclipse.net4j.util.om.trace.ContextTracer;
import org.eclipse.emf.ecore.EPackage;
+import com.objy.db.app.Session;
+import com.objy.db.app.ooId;
+import com.objy.db.app.ooObj;
+import com.objy.db.util.ooMap;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -47,24 +52,36 @@ public class ObjyPackageHandler
private static final ContextTracer TRACER_INFO = new ContextTracer(OM.INFO, ObjyPackageHandler.class);
- private ObjyScope objyScope = null;
+ protected ooId packageMapId;
+
+ // private ObjectivityStore store = null;
- private ObjectivityStore store = null;
+ private boolean zipped = true;
- private boolean zipped = false;
+ public ObjyPackageHandler()
+ {
+ // this.store = store;
+ packageMapId = ObjyDb.getOrCreatePackageMap();
+ }
- public ObjyPackageHandler(ObjectivityStore store, ObjyScope objyScope, boolean zipped)
+ /***
+ * Factory method to create the PackageMap, which is an ooMap
+ */
+ public static ooId create(ooId scopeContOid)
{
- this.store = store;
- this.objyScope = objyScope;
- this.zipped = zipped;
+ ooMap map = new ooMap();
+ ooObj clusterObject = ooObj.create_ooObj(scopeContOid);
+ clusterObject.cluster(map);
+ return map.getOid();
}
- public void writePackages(InternalCDOPackageUnit packageUnit, OMMonitor monitor)
+ public void writePackages(CDOPackageRegistry packageRegistry, InternalCDOPackageUnit packageUnit, OMMonitor monitor)
{
try
{
- SmartLock.lock(objyScope.getContainerObj());
+ ooMap packageMap = getMap();
+
+ SmartLock.lock(packageMap.getContainer());
InternalCDOPackageInfo[] packageInfos = packageUnit.getPackageInfos();
monitor.begin(1 + packageInfos.length);
@@ -73,37 +90,41 @@ public class ObjyPackageHandler
TRACER_INFO.format("Writing package unit: {0}", packageUnit); //$NON-NLS-1$
}
- byte[] ePackageAsBytes = getEPackageBytes(packageUnit);
+ byte[] ePackageAsBytes = getEPackageBytes(packageRegistry, packageUnit);
- ObjyPackageUnit ooPackageUnit = new ObjyPackageUnit(ePackageAsBytes.length);
- objyScope.getContainerObj().cluster(ooPackageUnit);
+ ObjyPackageUnit objyPackageUnit = new ObjyPackageUnit(ePackageAsBytes.length);
+ packageMap.cluster(objyPackageUnit);
- ooPackageUnit.setId(packageUnit.getID());
- ooPackageUnit.setOrdinal(packageUnit.getOriginalType().ordinal());
- ooPackageUnit.setTimeStamp(packageUnit.getTimeStamp());
- ooPackageUnit.setPackageAsBytes(ePackageAsBytes);
+ objyPackageUnit.setId(packageUnit.getID());
+ objyPackageUnit.setOrdinal(packageUnit.getOriginalType().ordinal());
+ objyPackageUnit.setTimeStamp(packageUnit.getTimeStamp());
+ objyPackageUnit.setPackageAsBytes(ePackageAsBytes);
if (TRACER_DEBUG.isEnabled())
{
- TRACER_DEBUG.trace("... writing OoPackageUnit.getId(): " + ooPackageUnit.getId());
+ TRACER_DEBUG.trace("... writing ObjyPackageUnit.getId(): " + objyPackageUnit.getId());
}
- ObjyPackageInfo ooPackageInfo;
+ ObjyPackageInfo objyPackageInfo;
for (InternalCDOPackageInfo packageInfo : packageInfos)
{
- ooPackageInfo = createPackageInfo(packageInfo, monitor); // Don't fork monitor
- ooPackageUnit.addPackageInfo(ooPackageInfo);
+ objyPackageInfo = createPackageInfo(packageInfo, monitor); // Don't fork monitor
+ objyPackageUnit.addPackageInfo(objyPackageInfo);
// make sure we have the mapping between the Package name an the nsURI
// set mapping between package name and the nsURI
// getStore().addPackageMapping(packageInfo.getPackageURI(), ooPackageInfo.getPackageName());
// getStore().addPackageMapping(ooPackageInfo.getPackageName(), packageInfo.getPackageURI());
- getStore().addPackageMapping(packageInfo.getPackageURI(), ooPackageInfo.getPackageUniqueName());
- getStore().addPackageMapping(ooPackageInfo.getPackageUniqueName(), packageInfo.getPackageURI());
+ String objyPackageName = ObjySchema.getObjyPackageName(packageInfo.getPackageURI());
+ ObjySchema.setPackageNameMapping(packageInfo.getPackageURI(), objyPackageName);
+ ObjySchema.setPackageNameMapping(objyPackageName, packageInfo.getPackageURI());
- // we might as well create the schema in Objy.
+ // we might as well create the schema in Objy, although I`m not sure if we needed for the ecore pacakge.
EPackage ePackage = packageInfo.getEPackage();
ObjySchema.registerEPackage(ePackage);
}
+
+ // add the package unit to the map.
+ packageMap.add(objyPackageUnit, objyPackageUnit.getId());
}
finally
{
@@ -133,34 +154,26 @@ public class ObjyPackageHandler
return ooPackageInfo;
}
- private byte[] getEPackageBytes(InternalCDOPackageUnit packageUnit)
+ private byte[] getEPackageBytes(CDOPackageRegistry packageRegistry, InternalCDOPackageUnit packageUnit)
{
EPackage ePackage = packageUnit.getTopLevelPackageInfo().getEPackage();
- return EMFUtil.getEPackageBytes(ePackage, zipped, getPackageRegistry());
- }
-
- private CDOPackageRegistry getPackageRegistry()
- {
- return getStore().getRepository().getPackageRegistry();
- }
-
- private ObjectivityStore getStore()
- {
- return store;
+ return EMFUtil.getEPackageBytes(ePackage, zipped, packageRegistry);
}
public Collection<InternalCDOPackageUnit> readPackageUnits()
{
final Map<ObjyPackageUnit, InternalCDOPackageUnit> packageUnitsMap = new HashMap<ObjyPackageUnit, InternalCDOPackageUnit>();
- Iterator<?> itr = objyScope.getDatabaseObj().scan(ObjyPackageUnit.class.getName());
+ ooMap packageMap = getMap();
+
+ Iterator<?> itr = packageMap.elements();
while (itr.hasNext())
{
- ObjyPackageUnit ooPackageUnit = (ObjyPackageUnit)itr.next();
+ ObjyPackageUnit objyPackageUnit = (ObjyPackageUnit)itr.next();
InternalCDOPackageUnit packageUnit = createPackageUnit();
- packageUnit.setOriginalType(CDOPackageUnit.Type.values()[ooPackageUnit.getOrdinal()]);
- packageUnit.setTimeStamp(ooPackageUnit.getTimeStamp());
- packageUnitsMap.put(ooPackageUnit, packageUnit);
+ packageUnit.setOriginalType(CDOPackageUnit.Type.values()[objyPackageUnit.getOrdinal()]);
+ packageUnit.setTimeStamp(objyPackageUnit.getTimeStamp());
+ packageUnitsMap.put(objyPackageUnit, packageUnit);
if (TRACER_INFO.isEnabled())
{
TRACER_INFO.format("Read package unit: {0}", packageUnit); //$NON-NLS-1$
@@ -171,18 +184,19 @@ public class ObjyPackageHandler
for (Entry<ObjyPackageUnit, InternalCDOPackageUnit> entry : packageUnitsMap.entrySet())
{
// scan the relationship.
- List<ObjyPackageInfo> ooPackageInfoList = entry.getKey().getPackageInfos();
+ List<ObjyPackageInfo> objyPackageInfoList = entry.getKey().getPackageInfos();
List<InternalCDOPackageInfo> packageInfoList = new ArrayList<InternalCDOPackageInfo>();
// create the package infos.
- for (ObjyPackageInfo ooPackageInfo : ooPackageInfoList)
+ for (ObjyPackageInfo objyPackageInfo : objyPackageInfoList)
{
- InternalCDOPackageInfo packageInfo = createPackageInfo(ooPackageInfo);
+ InternalCDOPackageInfo packageInfo = createPackageInfo(objyPackageInfo);
packageInfoList.add(packageInfo);
- // set mapping between package name and the nsURI
+ // set mapping between package URI and the package name used in Objy Schema.
// getStore().addPackageMapping(packageInfo.getPackageURI(), ooPackageInfo.getPackageName());
// getStore().addPackageMapping(ooPackageInfo.getPackageName(), packageInfo.getPackageURI());
- getStore().addPackageMapping(packageInfo.getPackageURI(), ooPackageInfo.getPackageUniqueName());
- getStore().addPackageMapping(ooPackageInfo.getPackageUniqueName(), packageInfo.getPackageURI());
+ String objyPackageName = ObjySchema.getObjyPackageName(packageInfo.getPackageURI());
+ ObjySchema.setPackageNameMapping(packageInfo.getPackageURI(), objyPackageName);
+ ObjySchema.setPackageNameMapping(objyPackageName, packageInfo.getPackageURI());
}
// add the package infos to the unit.
InternalCDOPackageInfo[] array = packageInfoList.toArray(new InternalCDOPackageInfo[packageInfoList.size()]);
@@ -227,25 +241,33 @@ public class ObjyPackageHandler
{
byte[] bytes = null;
- // TODO - we should use the predicate query.
- Iterator<?> itr = objyScope.getDatabaseObj().scan(ObjyPackageUnit.class.getName());
- System.out.println("Looking for packageUnit.ID(): " + packageUnit.getID());
- while (itr.hasNext())
+ ooMap map = getMap();
+ String packageUnitId = packageUnit.getID();
+ if (TRACER_INFO.isEnabled())
{
- ObjyPackageUnit ooPackageUnit = (ObjyPackageUnit)itr.next();
- System.out.println("... found OoPackageUnit.getId(): " + ooPackageUnit.getId());
- if (ooPackageUnit.getId().equals(packageUnit.getID()))
+ TRACER_INFO.format("Looking for package unit with ID: {0}", packageUnitId); //$NON-NLS-1$
+ }
+ if (map.isMember(packageUnitId))
+ {
+ if (TRACER_INFO.isEnabled())
{
- if (TRACER_INFO.isEnabled())
- {
- TRACER_INFO.format("Read package unit with ID: {0}", packageUnit.getID()); //$NON-NLS-1$
- }
- // this is our package...
- bytes = ooPackageUnit.getPackageAsBytes();
- break;
+ TRACER_INFO.format("Reading package unit with ID: {0}", packageUnitId); //$NON-NLS-1$
}
+ ObjyPackageUnit objyPackageUnit = (ObjyPackageUnit)map.lookup(packageUnitId);
+ // this is our package...
+ bytes = objyPackageUnit.getPackageAsBytes();
}
return bytes;
}
+ /***
+ * This function assume we are in an Objy transaction.
+ */
+ private ooMap getMap()
+ {
+ ooMap map = null;
+ map = (ooMap)Session.getCurrent().getFD().objectFrom(packageMapId);
+ return map;
+ }
+
}

Back to the top