+ private static BrowseContext loadCachedVisuals(ReadGraph g, Resource visualsContributionResource) throws DatabaseException, InvalidContribution {
+ try {
+ return g.syncRequest(new ResourceRead<BrowseContext>(visualsContributionResource) {
+ @Override
+ public BrowseContext perform(ReadGraph graph) throws DatabaseException {
+ try {
+ BrowseContext bc = new BrowseContext();
+ VisualsContribution.load(g, visualsContributionResource,
+ bc.labelContributions,
+ bc.imageContributions,
+ bc.checkedStateContributions,
+ bc.labelDecorationContributions,
+ bc.imageDecorationContributions,
+ bc.modifierContributions,
+ bc.sorterContributions,
+ bc.flatNodeContributions,
+ bc.tooltipContributions
+ );
+ return bc;
+ } 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;
+ }
+ }
+