KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > j2ee > persistence > dd > PersistenceMetadata


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.j2ee.persistence.dd;
21
22 import java.util.Map JavaDoc;
23 import java.util.WeakHashMap JavaDoc;
24 import org.netbeans.modules.j2ee.persistence.dd.persistence.model_1_0.Persistence;
25 import org.openide.filesystems.FileObject;
26
27 /**
28  * Provider of model based on persistence.xsd schema.
29  * Provided model is representation of deployment descriptor
30  * as defined in persistence specification.
31  *
32  * @author Martin Adamek
33  */

34 public final class PersistenceMetadata {
35     private static final PersistenceMetadata instance = new PersistenceMetadata();
36     private Map JavaDoc ddMap;
37     
38     private PersistenceMetadata() {
39         ddMap = new WeakHashMap JavaDoc(5);
40     }
41     
42     /**
43      * Use this to get singleton instance of provider
44      *
45      * @return singleton instance
46      */

47     public static PersistenceMetadata getDefault() {
48         return instance;
49     }
50     
51     /**
52      * Provides root element as defined in persistence.xsd
53      *
54      * @param fo persistence.xml deployment descriptor.
55      * It can be retrieved from {@link PersistenceProvider} for any file
56      * @throws java.io.IOException
57      * @return root element of schema or null if it doesn't exist for provided
58      * persistence.xml deployment descriptor
59      * @see PersistenceProvider
60      */

61     public synchronized Persistence getRoot(FileObject fo) throws java.io.IOException JavaDoc {
62         if (fo == null) {
63             return null;
64         }
65         Persistence persistence = null;
66         synchronized (ddMap) {
67             persistence = (Persistence) ddMap.get(fo);
68             if (persistence == null) {
69                 persistence = Persistence.createGraph(fo.getInputStream());
70                 ddMap.put(fo, persistence);
71             }
72         }
73         return persistence;
74     }
75
76 }
Popular Tags