01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17:
18: package org.apache.xerces.jaxp.validation;
19:
20: import java.lang.ref.WeakReference;
21:
22: import org.apache.xerces.xni.grammars.XMLGrammarPool;
23:
24: /**
25: * <p>An implementation of Schema for W3C XML Schemas
26: * that keeps a weak reference to its grammar pool. If
27: * no validators currently have a reference to the
28: * grammar pool, the garbage collector is free to reclaim
29: * its memory.</p>
30: *
31: * @author Michael Glavassevich, IBM
32: * @version $Id: WeakReferenceXMLSchema.java 447235 2006-09-18 05:01:44Z mrglavas $
33: */
34: final class WeakReferenceXMLSchema extends AbstractXMLSchema {
35:
36: /** Weak reference to grammar pool. */
37: private WeakReference fGrammarPool = new WeakReference(null);
38:
39: public WeakReferenceXMLSchema() {
40: }
41:
42: /*
43: * XSGrammarPoolContainer methods
44: */
45:
46: public synchronized XMLGrammarPool getGrammarPool() {
47: XMLGrammarPool grammarPool = (XMLGrammarPool) fGrammarPool
48: .get();
49: // If there's no grammar pool then either we haven't created one
50: // yet or the garbage collector has already cleaned out the previous one.
51: if (grammarPool == null) {
52: grammarPool = new SoftReferenceGrammarPool();
53: fGrammarPool = new WeakReference(grammarPool);
54: }
55: return grammarPool;
56: }
57:
58: public boolean isFullyComposed() {
59: return false;
60: }
61:
62: } // WeakReferenceXMLSchema
|