Skip to content

Commit

Permalink
deprecated OClass.getBaseClasses() and replaced with getSubclasses(),…
Browse files Browse the repository at this point in the history
… that makes more sense
  • Loading branch information
luigidellaquila committed Mar 3, 2015
1 parent 4b44d75 commit cd17423
Show file tree
Hide file tree
Showing 9 changed files with 118 additions and 117 deletions.
Expand Up @@ -119,10 +119,17 @@ public boolean isAutomaticIndexable() {

public int[] getPolymorphicClusterIds();

@Deprecated
public Collection<OClass> getBaseClasses();

@Deprecated
public Collection<OClass> getAllBaseClasses();

public Collection<OClass> getSubclasses();

public Collection<OClass> getAllSubclasses();


public long getSize();

public float getClassOverSize();
Expand Down
Expand Up @@ -16,16 +16,16 @@

package com.orientechnologies.orient.core.metadata.schema;

import java.io.IOException;
import java.util.Collection;
import java.util.Map;
import java.util.Set;

import com.orientechnologies.common.listener.OProgressListener;
import com.orientechnologies.orient.core.index.OIndex;
import com.orientechnologies.orient.core.metadata.schema.clusterselection.OClusterSelectionStrategy;
import com.orientechnologies.orient.core.record.impl.ODocument;

import java.io.IOException;
import java.util.Collection;
import java.util.Map;
import java.util.Set;

/**
* Abstract Delegate for OClass interface.
*
Expand Down Expand Up @@ -208,14 +208,24 @@ public int[] getPolymorphicClusterIds() {
return delegate.getPolymorphicClusterIds();
}


@Override
public Collection<OClass> getSubclasses() {
return delegate.getSubclasses();
}

@Override
public Collection<OClass> getBaseClasses() {
return delegate.getBaseClasses();
return delegate.getSubclasses();
}
@Override
public Collection<OClass> getAllSubclasses() {
return delegate.getAllSubclasses();
}

@Override
public Collection<OClass> getAllBaseClasses() {
return delegate.getAllBaseClasses();
return delegate.getAllSubclasses();
}

@Override
Expand Down
Expand Up @@ -35,12 +35,7 @@
import com.orientechnologies.orient.core.exception.OSecurityAccessException;
import com.orientechnologies.orient.core.exception.OSecurityException;
import com.orientechnologies.orient.core.id.ORecordId;
import com.orientechnologies.orient.core.index.OIndex;
import com.orientechnologies.orient.core.index.OIndexDefinition;
import com.orientechnologies.orient.core.index.OIndexDefinitionFactory;
import com.orientechnologies.orient.core.index.OIndexException;
import com.orientechnologies.orient.core.index.OIndexManager;
import com.orientechnologies.orient.core.index.OIndexManagerProxy;
import com.orientechnologies.orient.core.index.*;
import com.orientechnologies.orient.core.metadata.schema.clusterselection.OClusterSelectionStrategy;
import com.orientechnologies.orient.core.metadata.security.ORole;
import com.orientechnologies.orient.core.metadata.security.ORule;
Expand All @@ -53,11 +48,7 @@
import com.orientechnologies.orient.core.serialization.serializer.record.string.ORecordSerializerSchemaAware2CSV;
import com.orientechnologies.orient.core.sql.OCommandSQL;
import com.orientechnologies.orient.core.sql.query.OSQLAsynchQuery;
import com.orientechnologies.orient.core.storage.OAutoshardedStorage;
import com.orientechnologies.orient.core.storage.OPhysicalPosition;
import com.orientechnologies.orient.core.storage.ORawBuffer;
import com.orientechnologies.orient.core.storage.OStorage;
import com.orientechnologies.orient.core.storage.OStorageProxy;
import com.orientechnologies.orient.core.storage.*;
import com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage;
import com.orientechnologies.orient.core.type.ODocumentWrapper;
import com.orientechnologies.orient.core.type.ODocumentWrapperNoClass;
Expand All @@ -72,22 +63,22 @@
*/
@SuppressWarnings("unchecked")
public class OClassImpl extends ODocumentWrapperNoClass implements OClass {
private static final long serialVersionUID = 1L;
private static final int NOT_EXISTENT_CLUSTER_ID = -1;
final OSchemaShared owner;
private final Map<String, OProperty> properties = new HashMap<String, OProperty>();
private int defaultClusterId = NOT_EXISTENT_CLUSTER_ID;
private String name;
private Class<?> javaClass;
private int[] clusterIds;
private OClassImpl superClass;
private int[] polymorphicClusterIds;
private List<OClass> baseClasses;
private float overSize = 0f;
private String shortName;
private boolean strictMode = false; // @SINCE v1.0rc8
private boolean abstractClass = false; // @SINCE v1.2.0
private Map<String, String> customFields;
private static final long serialVersionUID = 1L;
private static final int NOT_EXISTENT_CLUSTER_ID = -1;
final OSchemaShared owner;
private final Map<String, OProperty> properties = new HashMap<String, OProperty>();
private int defaultClusterId = NOT_EXISTENT_CLUSTER_ID;
private String name;
private Class<?> javaClass;
private int[] clusterIds;
private OClassImpl superClass;
private int[] polymorphicClusterIds;
private List<OClass> subclasses;
private float overSize = 0f;
private String shortName;
private boolean strictMode = false; // @SINCE v1.0rc8
private boolean abstractClass = false; // @SINCE v1.2.0
private Map<String, String> customFields;
private volatile OClusterSelectionStrategy clusterSelection; // @SINCE 1.7
private volatile int hashCode;

Expand Down Expand Up @@ -652,7 +643,7 @@ public void dropProperty(final String propertyName) {

@Override
public void fromStream() {
baseClasses = null;
subclasses = null;
superClass = null;

name = document.field("name");
Expand Down Expand Up @@ -907,43 +898,51 @@ public OClass removeClusterId(final int clusterId) {
return this;
}

public Collection<OClass> getBaseClasses() {
public Collection<OClass> getSubclasses() {
acquireSchemaReadLock();
try {
if (baseClasses == null || baseClasses.size() == 0)
if (subclasses == null || subclasses.size() == 0)
return Collections.emptyList();

return Collections.unmodifiableCollection(baseClasses);
return Collections.unmodifiableCollection(subclasses);
} finally {
releaseSchemaReadLock();
}
}

public Collection<OClass> getAllBaseClasses() {
public Collection<OClass> getAllSubclasses() {
acquireSchemaReadLock();
try {
final Set<OClass> set = new HashSet<OClass>();
if (baseClasses != null) {
set.addAll(baseClasses);
if (subclasses != null) {
set.addAll(subclasses);

for (OClass c : baseClasses)
set.addAll(c.getAllBaseClasses());
for (OClass c : subclasses)
set.addAll(c.getAllSubclasses());
}
return set;
} finally {
releaseSchemaReadLock();
}
}

public Collection<OClass> getBaseClasses() {
return getSubclasses();
}

public Collection<OClass> getAllBaseClasses() {
return getAllSubclasses();
}

OClass removeBaseClassInternal(final OClass baseClass) {
acquireSchemaWriteLock();
try {
checkEmbedded();

if (baseClasses == null)
if (subclasses == null)
return this;

if (baseClasses.remove(baseClass))
if (subclasses.remove(baseClass))
removePolymorphicClusterIds((OClassImpl) baseClass);

return this;
Expand Down Expand Up @@ -2058,13 +2057,13 @@ private void addClusterIdToIndexes(int iId) {
* The base class to add.
*/
private OClass addBaseClasses(final OClass iBaseClass) {
if (baseClasses == null)
baseClasses = new ArrayList<OClass>();
if (subclasses == null)
subclasses = new ArrayList<OClass>();

if (baseClasses.contains(iBaseClass))
if (subclasses.contains(iBaseClass))
return this;

baseClasses.add(iBaseClass);
subclasses.add(iBaseClass);

final Set<String> browsedClasses = new HashSet<String>();

Expand Down
@@ -1,16 +1,5 @@
package com.orientechnologies.orient.core.metadata.schema;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.orientechnologies.common.listener.OProgressListener;
import com.orientechnologies.orient.core.db.ODatabaseDocumentInternal;
import com.orientechnologies.orient.core.db.ODatabaseRecordThreadLocal;
Expand All @@ -20,20 +9,23 @@
import com.orientechnologies.orient.core.metadata.security.OSecurityShared;
import com.orientechnologies.orient.core.record.impl.ODocument;

import java.io.IOException;
import java.util.*;

/**
* @author Andrey Lomakin (a.lomakin-at-orientechnologies.com)
* @since 10/21/14
*/
public class OImmutableClass implements OClass {
private final boolean isAbstract;
private final boolean strictMode;
private final boolean isAbstract;
private final boolean strictMode;

private final String superClassName;
private final String name;
private final String streamAbleName;
private final Map<String, OProperty> properties;
private Map<String, OProperty> allPropertiesMap;
private Collection<OProperty> allProperties;
private Map<String, OProperty> allPropertiesMap;
private Collection<OProperty> allProperties;
private final Class<?> javaClass;
private final OClusterSelectionStrategy clusterSelection;
private final int defaultClusterId;
Expand All @@ -45,12 +37,12 @@ public class OImmutableClass implements OClass {
private final String shortName;
private final Map<String, String> customFields;

private final OImmutableSchema schema;
private final OImmutableSchema schema;
// do not do it volatile it is already SAFE TO USE IT in MT mode.
private OImmutableClass superClass;
private OImmutableClass superClass;
// do not do it volatile it is already SAFE TO USE IT in MT mode.
private Collection<OImmutableClass> baseClasses;
private boolean restricted;
private Collection<OImmutableClass> subclasses;
private boolean restricted;

public OImmutableClass(OClass oClass, OImmutableSchema schema) {
isAbstract = oClass.isAbstract();
Expand All @@ -70,7 +62,7 @@ public OImmutableClass(OClass oClass, OImmutableSchema schema) {
polymorphicClusterIds = oClass.getPolymorphicClusterIds();

baseClassesNames = new ArrayList<String>();
for (OClass baseClass : oClass.getBaseClasses())
for (OClass baseClass : oClass.getSubclasses())
baseClassesNames.add(baseClass.getName());

overSize = oClass.getOverSize();
Expand Down Expand Up @@ -341,28 +333,37 @@ public OImmutableSchema getSchema() {
}

@Override
public Collection<OClass> getBaseClasses() {
public Collection<OClass> getSubclasses() {
initBaseClasses();

ArrayList<OClass> result = new ArrayList<OClass>();
for (OClass c : baseClasses)
for (OClass c : subclasses)
result.add(c);

return result;
}

@Override
public Collection<OClass> getAllBaseClasses() {
public Collection<OClass> getAllSubclasses() {
initBaseClasses();

final Set<OClass> set = new HashSet<OClass>();
set.addAll(getBaseClasses());
set.addAll(getSubclasses());

for (OImmutableClass c : baseClasses)
set.addAll(c.getAllBaseClasses());
for (OImmutableClass c : subclasses)
set.addAll(c.getAllSubclasses());

return set;
}
@Override
public Collection<OClass> getBaseClasses() {
return getSubclasses();
}

@Override
public Collection<OClass> getAllBaseClasses() {
return getAllSubclasses();
}

@Override
public long getSize() {
Expand Down Expand Up @@ -662,12 +663,12 @@ private void initSuperClass() {
}

private void initBaseClasses() {
if (baseClasses == null) {
if (subclasses == null) {
final List<OImmutableClass> result = new ArrayList<OImmutableClass>(baseClassesNames.size());
for (String clsName : baseClassesNames)
result.add((OImmutableClass) schema.getClass(clsName));

baseClasses = result;
subclasses = result;
}
}

Expand Down
Expand Up @@ -19,16 +19,6 @@
*/
package com.orientechnologies.orient.core.metadata.schema;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.orientechnologies.common.concur.lock.OReadersWriterSpinLock;
import com.orientechnologies.common.concur.resource.OCloseable;
import com.orientechnologies.common.log.OLogManager;
Expand Down Expand Up @@ -63,6 +53,8 @@
import com.orientechnologies.orient.core.type.ODocumentWrapper;
import com.orientechnologies.orient.core.type.ODocumentWrapperNoClass;

import java.util.*;

/**
* Shared schema class. It's shared by all the database instances that point to the same storage.
*
Expand Down Expand Up @@ -481,7 +473,7 @@ public void dropClass(final String className) {
if (cls == null)
throw new OSchemaException("Class " + className + " was not found in current database");

if (!cls.getBaseClasses().isEmpty())
if (!cls.getSubclasses().isEmpty())
throw new OSchemaException("Class " + className
+ " cannot be dropped because it has sub classes. Remove the dependencies before trying to drop it again");

Expand Down Expand Up @@ -1081,7 +1073,7 @@ private void dropClassInternal(final String className) {
if (cls == null)
throw new OSchemaException("Class " + className + " was not found in current database");

if (!cls.getBaseClasses().isEmpty())
if (!cls.getSubclasses().isEmpty())
throw new OSchemaException("Class " + className
+ " cannot be dropped because it has sub classes. Remove the dependencies before trying to drop it again");

Expand Down

0 comments on commit cd17423

Please sign in to comment.