protected T doGetResult()

in tx-control-providers/tx-control-provider-common/src/main/java/org/apache/aries/tx/control/resource/common/impl/TrackingResourceProviderFactory.java [39:69]


	protected T doGetResult(Callable<T> getter) {
		synchronized (getter) {
			if (closed) {
				throw new IllegalStateException("This ResourceProvider has been reclaimed because the factory service that provided it was released");
			}
		}
		T t;
		try {
			t = getter.call();
		} catch (Exception e) {
			LOG.warn("A failure occurred obtaining the resource provider", e);
			throw new ServiceException("A failure occurred obtaining the resource provider", e);
		}
		boolean destroy = false;
		synchronized (toClose) {
			if (closed) {
				destroy = true;
			} else {
			    toClose.add(t);
			}
		}
		if(destroy) {
			try {
				t.close();
			} catch (Exception e) {
				LOG.warn("A failure occurred closing the resource provider", e);
			}
			throw new IllegalStateException("This ResourceProvider has been reclaimed because the factory service that provided it was released");
		}
		return t;
	}