accessor name convention
[fedora-idea.git] / platform / util / src / com / intellij / openapi / util / LazyInitializer.java
blob42d9809e491759190b4871926d281f1e674e7928
1 /*
2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com.intellij.openapi.util;
18 public abstract class LazyInitializer<Value, Exc extends Throwable> implements ThrowableComputable<Value, Exc> {
19 private Value myValue;
21 public Value compute() throws Exc {
22 if (myValue == null) {
23 myValue = compute();
25 return myValue;
28 protected abstract Value computeInternal() throws Exc;