Fix StackOverflowException
This commit is contained in:
parent
26fb506560
commit
fcb0fcadeb
@ -120,11 +120,15 @@ public class PersistedSubject implements Subject {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isChildOf(@NonNull Set<Context> contexts, @NonNull Subject subject) {
|
public boolean isChildOf(@NonNull Set<Context> contexts, @NonNull Subject subject) {
|
||||||
return subjectData.getParents(contexts).contains(subject) ||
|
if (getContainingCollection().getIdentifier().equalsIgnoreCase("defaults")) {
|
||||||
transientSubjectData.getParents(contexts).contains(subject) ||
|
return subjectData.getParents(contexts).contains(subject) ||
|
||||||
getContainingCollection().getDefaults().getParents(contexts).contains(subject) ||
|
transientSubjectData.getParents(contexts).contains(subject);
|
||||||
service.getDefaults().getParents(contexts).contains(subject);
|
} else {
|
||||||
|
return subjectData.getParents(contexts).contains(subject) ||
|
||||||
|
transientSubjectData.getParents(contexts).contains(subject) ||
|
||||||
|
getContainingCollection().getDefaults().getParents(contexts).contains(subject) ||
|
||||||
|
service.getDefaults().getParents(contexts).contains(subject);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -132,8 +136,12 @@ public class PersistedSubject implements Subject {
|
|||||||
List<Subject> s = new ArrayList<>();
|
List<Subject> s = new ArrayList<>();
|
||||||
s.addAll(subjectData.getParents(contexts));
|
s.addAll(subjectData.getParents(contexts));
|
||||||
s.addAll(transientSubjectData.getParents(contexts));
|
s.addAll(transientSubjectData.getParents(contexts));
|
||||||
s.addAll(getContainingCollection().getDefaults().getParents(contexts));
|
|
||||||
s.addAll(service.getDefaults().getParents(contexts));
|
if (!getContainingCollection().getIdentifier().equalsIgnoreCase("defaults")) {
|
||||||
|
s.addAll(getContainingCollection().getDefaults().getParents(contexts));
|
||||||
|
s.addAll(service.getDefaults().getParents(contexts));
|
||||||
|
}
|
||||||
|
|
||||||
return ImmutableList.copyOf(s);
|
return ImmutableList.copyOf(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -156,6 +164,10 @@ public class PersistedSubject implements Subject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (getContainingCollection().getIdentifier().equalsIgnoreCase("defaults")) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
res = getContainingCollection().getDefaults().getOption(set, key);
|
res = getContainingCollection().getDefaults().getOption(set, key);
|
||||||
if (res.isPresent()) {
|
if (res.isPresent()) {
|
||||||
return res;
|
return res;
|
||||||
|
@ -97,17 +97,25 @@ public class SimpleSubject implements Subject {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isChildOf(@NonNull Set<Context> contexts, @NonNull Subject subject) {
|
public boolean isChildOf(@NonNull Set<Context> contexts, @NonNull Subject subject) {
|
||||||
return subjectData.getParents(contexts).contains(subject) ||
|
if (getContainingCollection().getIdentifier().equalsIgnoreCase("defaults")) {
|
||||||
getContainingCollection().getDefaults().getParents(contexts).contains(subject) ||
|
return subjectData.getParents(contexts).contains(subject);
|
||||||
service.getDefaults().getParents(contexts).contains(subject);
|
} else {
|
||||||
|
return subjectData.getParents(contexts).contains(subject) ||
|
||||||
|
getContainingCollection().getDefaults().getParents(contexts).contains(subject) ||
|
||||||
|
service.getDefaults().getParents(contexts).contains(subject);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Subject> getParents(@NonNull Set<Context> contexts) {
|
public List<Subject> getParents(@NonNull Set<Context> contexts) {
|
||||||
List<Subject> s = new ArrayList<>();
|
List<Subject> s = new ArrayList<>();
|
||||||
s.addAll(subjectData.getParents(contexts));
|
s.addAll(subjectData.getParents(contexts));
|
||||||
s.addAll(getContainingCollection().getDefaults().getParents(contexts));
|
|
||||||
s.addAll(service.getDefaults().getParents(contexts));
|
if (!getContainingCollection().getIdentifier().equalsIgnoreCase("defaults")){
|
||||||
|
s.addAll(getContainingCollection().getDefaults().getParents(contexts));
|
||||||
|
s.addAll(service.getDefaults().getParents(contexts));
|
||||||
|
}
|
||||||
|
|
||||||
return ImmutableList.copyOf(s);
|
return ImmutableList.copyOf(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,6 +133,10 @@ public class SimpleSubject implements Subject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (getContainingCollection().getIdentifier().equalsIgnoreCase("defaults")) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
res = getContainingCollection().getDefaults().getOption(set, key);
|
res = getContainingCollection().getDefaults().getOption(set, key);
|
||||||
if (res.isPresent()) {
|
if (res.isPresent()) {
|
||||||
return res;
|
return res;
|
||||||
|
Loading…
Reference in New Issue
Block a user