try {
- SyncReadProcedure<RelationInfo> procedure = new SyncReadProcedure<RelationInfo>();
- processor.forRelationInfo(this, relation, procedure);
+ RelationInfo rinfo = processor.getRelationInfo(this, relation);
Collection<Resource> predicates = getPredicates(subject);
-
- if(procedure.result.isFinal) {
-
+
+ if (rinfo.isFinal) {
+
return predicates.contains(relation);
-
- } else if (procedure.result.isFunctional) {
+
+ } else if (rinfo.isFunctional) {
try {
- int result = processor.getSingleObject(this, subject, relation);
- return result != 0;
+ return processor.getSingleObject(this, subject, relation) != 0;
} catch (ManyObjectsForFunctionalRelationException e) {
return true;
} catch (DatabaseException e) {
throw new ServiceException(e);
}
-
+
} else {
- for(Resource predicate : getPredicates(subject)) {
- if(isSubrelationOf(predicate, relation))
+ for (Resource predicate : getPredicates(subject)) {
+ if (isSubrelationOf(predicate, relation))
return true;
}
-
+
}
-
+
return false;
} catch (ServiceException e) {
throw new ServiceException(e);
+ } catch (DatabaseException e) {
+
+ throw new ServiceException(INTERNAL_ERROR_STRING, e);
+
}
}