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.
17 package com
.intellij
.javaee
;
19 import com
.intellij
.openapi
.util
.io
.FileUtil
;
20 import com
.intellij
.util
.containers
.HashMap
;
21 import org
.jetbrains
.annotations
.NonNls
;
22 import org
.jetbrains
.annotations
.Nullable
;
25 import java
.util
.List
;
27 import java
.util
.ArrayList
;
30 * @author Dmitry Avdeev
32 public class ResourceRegistrarImpl
implements ResourceRegistrar
{
34 private final Map
<String
, Map
<String
, String
>> myResources
= new HashMap
<String
, Map
<String
, String
>>();
35 private List
<String
> myIgnored
= new ArrayList
<String
>();
37 public void addStdResource(@NonNls String resource
, @NonNls String fileName
) {
38 addStdResource(resource
, null, fileName
, getClass());
41 public void addStdResource(@NonNls String resource
, @NonNls String fileName
, Class klass
) {
42 addStdResource(resource
, null, fileName
, klass
);
45 public void addStdResource(@NonNls String resource
, @NonNls String version
, @NonNls String fileName
, Class klass
) {
46 final String file
= getFile(fileName
, klass
);
48 final Map
<String
, String
> map
= ExternalResourceManagerImpl
.getMap(myResources
, version
, true);
50 map
.put(resource
, file
);
53 ExternalResourceManagerImpl
.LOG
.info("Cannot find standard resource. filename:" + fileName
+ " klass=" + klass
);
57 public void addIgnoredResource(@NonNls String url
) {
61 public void addInternalResource(@NonNls String resource
, @NonNls String fileName
) {
62 addInternalResource(resource
, null, fileName
, getClass());
65 public void addInternalResource(@NonNls String resource
, @NonNls String fileName
, Class clazz
) {
66 addInternalResource(resource
, null, fileName
, clazz
);
69 public void addInternalResource(@NonNls String resource
, @NonNls String version
, @NonNls String fileName
) {
70 addInternalResource(resource
, version
, fileName
, getClass());
73 public void addInternalResource(@NonNls String resource
, @NonNls String version
, @NonNls String fileName
, Class clazz
) {
74 addStdResource(resource
, version
, ExternalResourceManagerImpl
.STANDARD_SCHEMAS
+ fileName
, clazz
);
78 private static String
getFile(String name
, Class klass
) {
79 final URL resource
= klass
.getResource(name
);
80 if (resource
== null) return null;
82 String path
= FileUtil
.unquote(resource
.toString());
83 // this is done by FileUtil for windows
84 path
= path
.replace('\\','/');
88 public Map
<String
, Map
<String
, String
>> getResources() {
92 public List
<String
> getIgnored() {