diff --git a/BimServer/src/org/bimserver/database/queries/DatabaseReadingStackFrame.java b/BimServer/src/org/bimserver/database/queries/DatabaseReadingStackFrame.java
index 8ed0d8a227..e6850d1323 100644
--- a/BimServer/src/org/bimserver/database/queries/DatabaseReadingStackFrame.java
+++ b/BimServer/src/org/bimserver/database/queries/DatabaseReadingStackFrame.java
@@ -1,60 +1,60 @@
-package org.bimserver.database.queries;
-
-/******************************************************************************
- * Copyright (C) 2009-2019 BIMserver.org
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see {@literal}.
- *****************************************************************************/
-
-import java.nio.BufferOverflowException;
-import java.nio.BufferUnderflowException;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
-
-import org.bimserver.BimserverDatabaseException;
-import org.bimserver.database.DatabaseSession.GetResult;
-import org.bimserver.database.Record;
-import org.bimserver.database.SearchingRecordIterator;
-import org.bimserver.database.queries.om.CanInclude;
-import org.bimserver.database.queries.om.Include;
-import org.bimserver.database.queries.om.Include.TypeDef;
-import org.bimserver.database.queries.om.QueryException;
-import org.bimserver.database.queries.om.QueryPart;
-import org.bimserver.database.queries.om.Reference;
-import org.bimserver.emf.PackageMetaData;
-import org.bimserver.shared.HashMapVirtualObject;
-import org.bimserver.shared.HashMapWrappedVirtualObject;
-import org.bimserver.shared.QueryContext;
-import org.bimserver.shared.WrappedVirtualObject;
-import org.bimserver.utils.BinUtils;
-import org.eclipse.emf.ecore.EAttribute;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EDataType;
-import org.eclipse.emf.ecore.EEnum;
-import org.eclipse.emf.ecore.EEnumLiteral;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EcorePackage;
-import org.eclipse.emf.ecore.impl.EEnumImpl;
-import org.slf4j.Logger;
+package org.bimserver.database.queries;
+
+/******************************************************************************
+ * Copyright (C) 2009-2019 BIMserver.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see {@literal}.
+ *****************************************************************************/
+
+import java.nio.BufferOverflowException;
+import java.nio.BufferUnderflowException;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+import org.bimserver.BimserverDatabaseException;
+import org.bimserver.database.DatabaseSession.GetResult;
+import org.bimserver.database.Record;
+import org.bimserver.database.SearchingRecordIterator;
+import org.bimserver.database.queries.om.CanInclude;
+import org.bimserver.database.queries.om.Include;
+import org.bimserver.database.queries.om.Include.TypeDef;
+import org.bimserver.database.queries.om.QueryException;
+import org.bimserver.database.queries.om.QueryPart;
+import org.bimserver.database.queries.om.Reference;
+import org.bimserver.emf.PackageMetaData;
+import org.bimserver.shared.HashMapVirtualObject;
+import org.bimserver.shared.HashMapWrappedVirtualObject;
+import org.bimserver.shared.QueryContext;
+import org.bimserver.shared.WrappedVirtualObject;
+import org.bimserver.utils.BinUtils;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EEnumLiteral;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EEnumImpl;
+import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public abstract class DatabaseReadingStackFrame extends StackFrame implements ObjectProvidingStackFrame {
+public abstract class DatabaseReadingStackFrame extends StackFrame implements ObjectProvidingStackFrame {
private static final Logger LOGGER = LoggerFactory.getLogger(DatabaseReadingStackFrame.class);
private final QueryContext reusable;
private final QueryObjectProvider queryObjectProvider;
@@ -88,27 +88,27 @@ public QueryPart getQueryPart() {
return queryPart;
}
- protected void processPossibleIncludes(HashMapVirtualObject object, EClass previousType, CanInclude canInclude) throws QueryException, BimserverDatabaseException {
- if (object != null && canInclude != null) {
- if (canInclude.hasReferences()) {
- for (Reference reference : canInclude.getReferences()) {
- processPossibleInclude(object, canInclude, reference.getInclude());
+ protected void processPossibleIncludes(HashMapVirtualObject object, EClass previousType, CanInclude canInclude) throws QueryException, BimserverDatabaseException {
+ if (object != null && canInclude != null) {
+ if (canInclude.hasReferences()) {
+ for (Reference reference : canInclude.getReferences()) {
+ processPossibleInclude(object, canInclude, reference.getInclude());
}
}
if (canInclude.hasIncludes()) {
- for (Include include : canInclude.getIncludes()) {
+ for (Include include : canInclude.getIncludes()) {
processPossibleInclude(object, canInclude, include);
}
- }
+ }
if (canInclude.isIncludeAllFields()) {
for (EReference eReference : object.eClass().getEAllReferences()) {
Include include = new Include(reusable.getPackageMetaData());
include.addType(object.eClass(), false);
- include.addField(eReference.getName());
- if (canInclude.hasIncludes()) {
- for (Include include2 : canInclude.getIncludes()) {
- include.addInclude(include2);
- }
+ include.addField(eReference.getName());
+ if (canInclude.hasIncludes()) {
+ for (Include include2 : canInclude.getIncludes()) {
+ include.addInclude(include2);
+ }
}
processPossibleInclude(object, canInclude, include);
}
@@ -121,45 +121,45 @@ protected void processPossibleIncludes(HashMapVirtualObject object, EClass previ
protected void processPossibleInclude(HashMapVirtualObject object, CanInclude previousInclude, Include include) throws QueryException, BimserverDatabaseException {
if (include.hasTypes()) {
- for (TypeDef filterClass : include.getTypes()) {
+ for (TypeDef filterClass : include.getTypes()) {
// TODO also exclude the possibly excluded types here
if (!filterClass.geteClass().isSuperTypeOf(object.eClass())) {
-// System.out.println(filterClass.getName() + " / " + currentObject.eClass().getName());
+// System.out.println(filterClass.getName() + " / " + currentObject.eClass().getName());
// TODO too many times queries are spending time here
return;
}
}
- }
- if (include.hasDirectFields()) {
- for (EReference eReference : include.getFieldsDirect()) {
- Object ref = object.get(eReference.getName());
- if (ref != null) {
- if (ref instanceof List) {
- for (Long r : (List)ref) {
- HashMapVirtualObject byOid = getByOid(r, true);
- int index = object.addDirectListReference(eReference, byOid);
- object.addUseForSerialization(eReference, index);
- processPossibleIncludes(byOid, byOid.eClass(), include);
- }
- } else {
- if (ref instanceof Long) {
- HashMapVirtualObject byOid = getByOid((Long)ref, true);
- if (byOid == null) {
- throw new BimserverDatabaseException("Object with oid " + ref + " not found (" + queryObjectProvider.getDatabaseSession().getEClassForOid((Long)ref).getName() + ")");
- }
- object.setDirectReference(eReference, byOid);
- object.addUseForSerialization(eReference);
- processPossibleIncludes(byOid, byOid.eClass(), include);
- } else {
- object.setDirectReference(eReference, (HashMapWrappedVirtualObject)ref);
- }
- }
- }
- }
+ }
+ if (include.hasDirectFields()) {
+ for (EReference eReference : include.getFieldsDirect()) {
+ Object ref = object.get(eReference.getName());
+ if (ref != null) {
+ if (ref instanceof List) {
+ for (Long r : (List)ref) {
+ HashMapVirtualObject byOid = getByOid(r, true);
+ int index = object.addDirectListReference(eReference, byOid);
+ object.addUseForSerialization(eReference, index);
+ // processPossibleIncludes(byOid, byOid.eClass(), include);
+ }
+ } else {
+ if (ref instanceof Long) {
+ HashMapVirtualObject byOid = getByOid((Long)ref, true);
+ if (byOid == null) {
+ throw new BimserverDatabaseException("Object with oid " + ref + " not found (" + queryObjectProvider.getDatabaseSession().getEClassForOid((Long)ref).getName() + ")");
+ }
+ object.setDirectReference(eReference, byOid);
+ object.addUseForSerialization(eReference);
+ // processPossibleIncludes(byOid, byOid.eClass(), include);
+ } else {
+ object.setDirectReference(eReference, (HashMapWrappedVirtualObject)ref);
+ }
+ }
+ }
+ }
}
if (include.hasFields() && !include.isExclude()) {
- for (EStructuralFeature eStructuralFeature : include.getFields()) {
- object.addUseForSerialization(eStructuralFeature);
+ for (EStructuralFeature eStructuralFeature : include.getFields()) {
+ object.addUseForSerialization(eStructuralFeature);
}
}
@@ -188,18 +188,18 @@ public GetResult getMap(EClass originalQueryClass, EClass eClass, ByteBuffer buf
}
protected HashMapVirtualObject convertByteArrayToObject(EClass eClass, long oid, ByteBuffer buffer, int rid) throws BimserverDatabaseException {
- try {
+ try {
int unsettedLength = getPackageMetaData().getUnsettedLength(eClass);
byte[] unsetted = new byte[unsettedLength];
buffer.get(unsetted);
int fieldCounter = 0;
-
- HashMapVirtualObject idEObject = new HashMapVirtualObject(reusable, eClass, oid, new UUID(buffer.getLong(), buffer.getLong()));
-
- for (EStructuralFeature feature : eClass.getEAllStructuralFeatures()) {
- try {
+
+ HashMapVirtualObject idEObject = new HashMapVirtualObject(reusable, eClass, oid, new UUID(buffer.getLong(), buffer.getLong()));
+
+ for (EStructuralFeature feature : eClass.getEAllStructuralFeatures()) {
+ try {
if (getPackageMetaData().useForDatabaseStorage(eClass, feature)) {
boolean isUnsetted = (unsetted[fieldCounter / 8] & (1 << (fieldCounter % 8))) != 0;
if (isUnsetted) {
@@ -227,7 +227,7 @@ protected HashMapVirtualObject convertByteArrayToObject(EClass eClass, long oid,
}
}
} else if (feature.getEType() instanceof EClass) {
- // EReference eReference = (EReference) feature;
+ // EReference eReference = (EReference) feature;
buffer.order(ByteOrder.LITTLE_ENDIAN);
short cid = buffer.getShort();
buffer.order(ByteOrder.BIG_ENDIAN);
@@ -248,7 +248,7 @@ protected HashMapVirtualObject convertByteArrayToObject(EClass eClass, long oid,
EClass referenceClass = queryObjectProvider.getDatabaseSession().getEClass(cid);
if (referenceClass == null) {
throw new BimserverDatabaseException("No eClass found for cid " + cid);
- }
+ }
buffer.position(buffer.position() - 2);
newValue = readReference(buffer, feature, referenceClass);
if ((Long)newValue != -1) {
@@ -265,15 +265,15 @@ protected HashMapVirtualObject convertByteArrayToObject(EClass eClass, long oid,
} else if (feature.getEType() instanceof EDataType) {
newValue = readPrimitiveValue(feature.getEType(), buffer);
}
- if (newValue != null) {
- if (feature instanceof EAttribute) {
- idEObject.setAttribute((EAttribute) feature, newValue);
- } else {
- if (newValue instanceof Long) {
- idEObject.setReference((EReference) feature, (Long)newValue);
- } else {
- idEObject.setReference((EReference) feature, (WrappedVirtualObject)newValue);
- }
+ if (newValue != null) {
+ if (feature instanceof EAttribute) {
+ idEObject.setAttribute((EAttribute) feature, newValue);
+ } else {
+ if (newValue instanceof Long) {
+ idEObject.setReference((EReference) feature, (Long)newValue);
+ } else {
+ idEObject.setReference((EReference) feature, (WrappedVirtualObject)newValue);
+ }
}
}
}
@@ -300,15 +300,15 @@ private long readReference(ByteBuffer buffer, EStructuralFeature feature, EClass
if (buffer.capacity() == 1 && buffer.get(0) == -1) {
buffer.position(buffer.position() + 1);
return -1;
- }
- buffer.order(ByteOrder.LITTLE_ENDIAN);
+ }
+ buffer.order(ByteOrder.LITTLE_ENDIAN);
long oid = buffer.getLong();
- buffer.order(ByteOrder.BIG_ENDIAN);
+ buffer.order(ByteOrder.BIG_ENDIAN);
return oid;
}
- private HashMapWrappedVirtualObject readWrappedValue(EStructuralFeature feature, ByteBuffer buffer, EClass eClass) throws BimserverDatabaseException {
- EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature("wrappedValue");
+ private HashMapWrappedVirtualObject readWrappedValue(EStructuralFeature feature, ByteBuffer buffer, EClass eClass) throws BimserverDatabaseException {
+ EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature("wrappedValue");
Object primitiveValue = readPrimitiveValue(eStructuralFeature.getEType(), buffer);
HashMapWrappedVirtualObject eObject = new HashMapWrappedVirtualObject(eClass);
eObject.setAttribute((EAttribute) eStructuralFeature, primitiveValue);
@@ -317,29 +317,29 @@ private HashMapWrappedVirtualObject readWrappedValue(EStructuralFeature feature,
Object stringVal = readPrimitiveValue(EcorePackage.eINSTANCE.getEString(), buffer);
eObject.setAttribute((EAttribute) strFeature, stringVal);
}
- return eObject;
+ return eObject;
}
private HashMapWrappedVirtualObject readEmbeddedValue(EStructuralFeature feature, ByteBuffer buffer, EClass eClass) throws BimserverDatabaseException {
HashMapWrappedVirtualObject eObject = new HashMapWrappedVirtualObject(eClass);
for (EStructuralFeature eStructuralFeature : eClass.getEAllStructuralFeatures()) {
- if (eStructuralFeature.isMany()) {
- } else {
- if (eStructuralFeature.getEType() instanceof EDataType) {
+ if (eStructuralFeature.isMany()) {
+ } else {
+ if (eStructuralFeature.getEType() instanceof EDataType) {
Object primitiveValue = readPrimitiveValue(eStructuralFeature.getEType(), buffer);
- eObject.setAttribute((EAttribute) eStructuralFeature, primitiveValue);
- } else {
- buffer.order(ByteOrder.LITTLE_ENDIAN);
- short cid = buffer.getShort();
- buffer.order(ByteOrder.BIG_ENDIAN);
- if (cid == -1) {
- // null, do nothing
- } else if (cid < 0) {
- // negative cid means value is embedded in
- // record
- EClass referenceClass = queryObjectProvider.getDatabaseSession().getEClass((short) (-cid));
- eObject.setReference((EReference) eStructuralFeature, readEmbeddedValue(eStructuralFeature, buffer, referenceClass));
- }
+ eObject.setAttribute((EAttribute) eStructuralFeature, primitiveValue);
+ } else {
+ buffer.order(ByteOrder.LITTLE_ENDIAN);
+ short cid = buffer.getShort();
+ buffer.order(ByteOrder.BIG_ENDIAN);
+ if (cid == -1) {
+ // null, do nothing
+ } else if (cid < 0) {
+ // negative cid means value is embedded in
+ // record
+ EClass referenceClass = queryObjectProvider.getDatabaseSession().getEClass((short) (-cid));
+ eObject.setReference((EReference) eStructuralFeature, readEmbeddedValue(eStructuralFeature, buffer, referenceClass));
+ }
}
}
}
@@ -390,60 +390,60 @@ public Object readPrimitiveValue(EClassifier classifier, ByteBuffer buffer) {
}
}
- private Object readList(HashMapVirtualObject idEObject, ByteBuffer buffer, EStructuralFeature feature) throws BimserverDatabaseException {
+ private Object readList(HashMapVirtualObject idEObject, ByteBuffer buffer, EStructuralFeature feature) throws BimserverDatabaseException {
if (feature.getEType() instanceof EEnum) {
} else if (feature.getEType() instanceof EClass) {
if (buffer.capacity() == 1 && buffer.get(0) == -1) {
buffer.position(buffer.position() + 1);
- } else {
- int listSize = buffer.getInt();
-
-// // DEBUG
-// int limit = 2000;
-// if (listSize > limit) {
-// LOGGER.warn("List of size " + listSize + " > " + limit + ", probably an error");
+ } else {
+ int listSize = buffer.getInt();
+
+// // DEBUG
+// int limit = 2000;
+// if (listSize > limit) {
+// LOGGER.warn("List of size " + listSize + " > " + limit + ", probably an error");
// }
- for (int i = 0; i < listSize; i++) {
+ for (int i = 0; i < listSize; i++) {
if (feature.getEAnnotation("twodimensionalarray") != null) {
- HashMapVirtualObject newObject = new HashMapVirtualObject(reusable, (EClass) feature.getEType());
- EClass eClass = (EClass)feature.getEType();
- EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature("List");
-
- buffer.order(ByteOrder.LITTLE_ENDIAN);
- short cid = buffer.getShort();
- buffer.order(ByteOrder.BIG_ENDIAN);
- EClass referenceClass = queryObjectProvider.getDatabaseSession().getEClass((short) (-cid));
- if (referenceClass == null) {
- throw new BimserverDatabaseException("No class found for cid " + (-cid));
- }
-
+ HashMapVirtualObject newObject = new HashMapVirtualObject(reusable, (EClass) feature.getEType());
+ EClass eClass = (EClass)feature.getEType();
+ EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature("List");
+
+ buffer.order(ByteOrder.LITTLE_ENDIAN);
+ short cid = buffer.getShort();
+ buffer.order(ByteOrder.BIG_ENDIAN);
+ EClass referenceClass = queryObjectProvider.getDatabaseSession().getEClass((short) (-cid));
+ if (referenceClass == null) {
+ throw new BimserverDatabaseException("No class found for cid " + (-cid));
+ }
+
Object result = readList(newObject, buffer, eStructuralFeature);
- if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDouble() || eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDoubleObject()) {
- result = readList(newObject, buffer, eClass.getEStructuralFeature("ListAsString"));
- }
+ if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDouble() || eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDoubleObject()) {
+ result = readList(newObject, buffer, eClass.getEStructuralFeature("ListAsString"));
+ }
idEObject.setListItem(feature, i, newObject);
- } else {
+ } else {
buffer.order(ByteOrder.LITTLE_ENDIAN);
short cid = buffer.getShort();
- buffer.order(ByteOrder.BIG_ENDIAN);
+ buffer.order(ByteOrder.BIG_ENDIAN);
if (cid == -1) {
// null, do nothing
} else if (cid < 0) {
// negative cid means value is
// embedded
- // in record
+ // in record
EClass referenceClass = queryObjectProvider.getDatabaseSession().getEClass((short) (-cid));
if (referenceClass == null) {
throw new BimserverDatabaseException("No class found for cid " + (-cid));
- }
- EStructuralFeature wv = referenceClass.getEStructuralFeature("wrappedValue");
- if (wv != null && wv.isMany()) {
- HashMapVirtualObject eObject = new HashMapVirtualObject(reusable, referenceClass);
- readList(eObject, buffer, wv);
- idEObject.setListItem(feature, i, eObject);
- } else {
- idEObject.setListItem(feature, i, readWrappedValue(feature, buffer, referenceClass));
+ }
+ EStructuralFeature wv = referenceClass.getEStructuralFeature("wrappedValue");
+ if (wv != null && wv.isMany()) {
+ HashMapVirtualObject eObject = new HashMapVirtualObject(reusable, referenceClass);
+ readList(eObject, buffer, wv);
+ idEObject.setListItem(feature, i, eObject);
+ } else {
+ idEObject.setListItem(feature, i, readWrappedValue(feature, buffer, referenceClass));
}
idEObject.addUseForSerialization(feature, i);
} else if (cid > 0) {
@@ -452,27 +452,27 @@ private Object readList(HashMapVirtualObject idEObject, ByteBuffer buffer, EStru
// to another record
EClass referenceClass = queryObjectProvider.getDatabaseSession().getEClass(cid);
if (referenceClass == null) {
- throw new BimserverDatabaseException("Cannot find class with cid " + cid);
+ throw new BimserverDatabaseException("Cannot find class with cid " + cid);
}
buffer.position(buffer.position() - 2);
long rf = readReference(buffer, feature, referenceClass);
idEObject.setListItemReference(feature, i, referenceClass, rf, -1);
if (rf != -1) {
- if (queryObjectProvider.hasReadOrIsGoingToRead((rf)) || queryObjectProvider.hasReadOrIsGoingToRead(referenceClass)) {
+ if (queryObjectProvider.hasReadOrIsGoingToRead((rf)) || queryObjectProvider.hasReadOrIsGoingToRead(referenceClass)) {
idEObject.addUseForSerialization(feature, i);
}
}
-// } else if (cid == 0) {
-// throw new BimserverDatabaseException("Cid cannot be 0");
+// } else if (cid == 0) {
+// throw new BimserverDatabaseException("Cid cannot be 0");
}
}
}
}
} else if (feature.getEType() instanceof EDataType) {
- int listSize = buffer.getInt();
- if (listSize < 0) {
- throw new BimserverDatabaseException("Negative array size for " + feature.getEContainingClass().getName() + "." + feature.getName());
- }
+ int listSize = buffer.getInt();
+ if (listSize < 0) {
+ throw new BimserverDatabaseException("Negative array size for " + feature.getEContainingClass().getName() + "." + feature.getName());
+ }
for (int i = 0; i < listSize; i++) {
Object reference = readPrimitiveValue(feature.getEType(), buffer);
if (reference != null) {
@@ -483,15 +483,15 @@ private Object readList(HashMapVirtualObject idEObject, ByteBuffer buffer, EStru
return null;
}
- public HashMapVirtualObject getByOid(long oid) throws BimserverDatabaseException {
- return getByOid(oid, false);
- }
-
- public HashMapVirtualObject getByOid(long oid, boolean useCache) throws BimserverDatabaseException {
- HashMapVirtualObject byOid = getQueryObjectProvider().getFromCache((long)oid);
- if (byOid != null) {
- return byOid;
- }
+ public HashMapVirtualObject getByOid(long oid) throws BimserverDatabaseException {
+ return getByOid(oid, false);
+ }
+
+ public HashMapVirtualObject getByOid(long oid, boolean useCache) throws BimserverDatabaseException {
+ HashMapVirtualObject byOid = getQueryObjectProvider().getFromCache((long)oid);
+ if (byOid != null) {
+ return byOid;
+ }
EClass eClass = getQueryObjectProvider().getDatabaseSession().getEClassForOid(oid);
ByteBuffer mustStartWith = ByteBuffer.wrap(new byte[12]);
mustStartWith.putInt(reusable.getPid());
@@ -520,10 +520,10 @@ public HashMapVirtualObject getByOid(long oid, boolean useCache) throws Bimserve
return null;
// deleted entity
} else {
- byOid = convertByteArrayToObject(eClass, keyOid, valueBuffer, keyRid);
- if (byOid != null && useCache) {
- getQueryObjectProvider().cache(byOid);
- }
+ byOid = convertByteArrayToObject(eClass, keyOid, valueBuffer, keyRid);
+ if (byOid != null && useCache) {
+ getQueryObjectProvider().cache(byOid);
+ }
return byOid;
}
} else {
diff --git a/BimServer/src/org/bimserver/database/queries/json/ifc4-stdlib.json b/BimServer/src/org/bimserver/database/queries/json/ifc4-stdlib.json
index 65ab1d6acc..8cc6a3f784 100644
--- a/BimServer/src/org/bimserver/database/queries/json/ifc4-stdlib.json
+++ b/BimServer/src/org/bimserver/database/queries/json/ifc4-stdlib.json
@@ -286,21 +286,7 @@
"ObjectPlacement": {
"type": "IfcProduct",
"field": "ObjectPlacement",
- "includes": [
- "RelativePlacement",
- {
- "type": "IfcLocalPlacement",
- "field": "RelativePlacement",
- "include": {
- "type": "IfcAxis2Placement3D",
- "fields": [
- "Location",
- "Axis",
- "RefDirection"
- ]
- }
- }
- ]
+ "includes": [ "RelativePlacement" ]
}
}
}
\ No newline at end of file