~vcs-imports/xena/trunk

« back to all changes in this revision

Viewing changes to ext/src/xerces-2_9_1/src/org/apache/xerces/jaxp/validation/WeakReferenceXMLSchema.java

  • Committer: matthewoliver
  • Date: 2009-12-10 03:18:07 UTC
  • Revision ID: vcs-imports@canonical.com-20091210031807-l086qguzdlljtkl9
Merged Xena Testing into Xena Stable for the Xena 5 release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
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
 
8
 * 
 
9
 *      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,v 1.2 2009/12/10 03:18:25 matthewoliver Exp $
 
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
     * XSGrammarPoolContainer methods
 
43
     */
 
44
 
 
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);
 
52
        }
 
53
        return grammarPool;
 
54
    }
 
55
 
 
56
    public boolean isFullyComposed() {
 
57
        return false;
 
58
    }
 
59
 
 
60
} // WeakReferenceXMLSchema