2
* Licensed to the Apache Software Foundation (ASF) under one or more
3
* contributor license agreements. See the NOTICE file distributed with
4
* this work for additional information regarding copyright ownership.
5
* The ASF licenses this file to You under the Apache License, Version 2.0
6
* (the "License"); you may not use this file except in compliance with
7
* the License. You may obtain a copy of the License at
9
* http://www.apache.org/licenses/LICENSE-2.0
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.
18
package org.apache.xerces.jaxp.validation;
20
import java.lang.ref.WeakReference;
22
import org.apache.xerces.xni.grammars.XMLGrammarPool;
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
31
* @author Michael Glavassevich, IBM
32
* @version $Id: WeakReferenceXMLSchema.java,v 1.2 2009/12/10 03:18:25 matthewoliver Exp $
34
final class WeakReferenceXMLSchema extends AbstractXMLSchema {
36
/** Weak reference to grammar pool. */
37
private WeakReference fGrammarPool = new WeakReference(null);
39
public WeakReferenceXMLSchema() {}
42
* XSGrammarPoolContainer methods
45
public synchronized XMLGrammarPool getGrammarPool() {
46
XMLGrammarPool grammarPool = (XMLGrammarPool) fGrammarPool.get();
47
// If there's no grammar pool then either we haven't created one
48
// yet or the garbage collector has already cleaned out the previous one.
49
if (grammarPool == null) {
50
grammarPool = new SoftReferenceGrammarPool();
51
fGrammarPool = new WeakReference(grammarPool);
56
public boolean isFullyComposed() {
60
} // WeakReferenceXMLSchema