@Override public String getClassNameForObjectID(Object id, ClassLoaderResolver clr, ExecutionContext ec) { if (id == null) { // User stupidity return null; } else if (id instanceof SCOID) { // Object is a SCOID return ((SCOID) id).getSCOClass(); } String rootClassName = super.getClassNameForObjectID(id, clr, ec); // TODO Allow for use of users-own PK class in multiple inheritance trees String[] subclasses = getMetaDataManager().getSubclassesForClass(rootClassName, true); if (subclasses == null || subclasses.length == 0) { // No subclasses so no need to go to the datastore return rootClassName; } AbstractClassMetaData rootCmd = getMetaDataManager().getMetaDataForClass(rootClassName, clr); return Neo4jUtils.getClassNameForIdentity(id, rootCmd, ec, clr); }
return ((SCOID)id).getSCOClass();
@Override public String getClassNameForObjectID(Object id, ClassLoaderResolver clr, ExecutionContext ec) { if (id == null) { // User stupidity return null; } else if (id instanceof SCOID) { // Object is a SCOID return ((SCOID) id).getSCOClass(); } // Find overall root class possible for this id String rootClassName = super.getClassNameForObjectID(id, clr, ec); if (rootClassName != null) { // User could have passed in a superclass of the real class, so consult the datastore for the precise table/class String[] subclasses = getMetaDataManager().getSubclassesForClass(rootClassName, true); if (subclasses == null || subclasses.length == 0) { // No subclasses so no need to go to the datastore return rootClassName; } AbstractClassMetaData rootCmd = getMetaDataManager().getMetaDataForClass(rootClassName, clr); return MongoDBUtils.getClassNameForIdentity(id, rootCmd, ec, clr); } return null; }