Dan Haywood created ISIS-1562:
---------------------------------
Summary: Metamodel validator if forget to annotate
@DomainObject(nature=ENTITY) with @PersistenceCapable
Key: ISIS-1562
URL: https://issues.apache.org/jira/browse/ISIS-1562
Project: Isis
Issue Type: Improvement
Components: Core
Affects Versions: 1.13.2
Reporter: Dan Haywood
Priority: Minor
Fix For: 1.13.3
Also, RepositoryService#persist(...) is a no-op if the domain object passed in
is not an entity; this should probably fail-fast.
This was originally prompted by an obscure message being thrown in
Memento#updateFieldsAndResolveState(...), as the result of an entity being
treated as transient, because (a) the @PersistenceCapable annotation was
accidentally omitted, and (b) a call to RepositoryService#persist(...) just did
nothing.
So, this ticket would be a fail-fast for that scenario.
{code}
private void updateFieldsAndResolveState(final ObjectAdapter objectAdapter,
final Data data) {
boolean dataIsTransient = data.getOid().isTransient();
if (!dataIsTransient) {
...
} else if (objectAdapter.isTransient() && dataIsTransient) {
...
} else if (objectAdapter.isParentedCollection()) {
...
} else {
// THIS IS THE BRANCH THAT'S TRIGGERED IF @PersistenceCapable IS
ACCIDENTALLY OMITTED.
final ObjectData od = (ObjectData) data;
if (od.containsField()) {
throw new IsisException("Resolve state (for " + objectAdapter +
") inconsistent with fact that data exists for fields");
}
}
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)