+ public static ChildContribution createCached(ReadGraph g, Resource childContributionResource) throws DatabaseException, InvalidContribution {
+ try {
+ return g.syncRequest(new ResourceRead<ChildContribution>(childContributionResource) {
+ @Override
+ public ChildContribution perform(ReadGraph graph) throws DatabaseException {
+ try {
+ return create(g, resource);
+ } catch (InvalidContribution e) {
+ throw new DatabaseException(e);
+ }
+ }
+ }, TransientCacheAsyncListener.instance());
+ } catch (DatabaseException e) {
+ Throwable c = e.getCause();
+ if (c instanceof InvalidContribution)
+ throw (InvalidContribution) c;
+ throw e;
+ }
+ }
+