update copyright
[fedora-idea.git] / xml / impl / src / com / intellij / javaee / ResourceRegistrarImpl.java
blobd32f87b032b3f228f13ef34ed51db6e0e544170b
1 /*
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;
24 import java.net.URL;
25 import java.util.List;
26 import java.util.Map;
27 import java.util.ArrayList;
29 /**
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);
47 if (file != null) {
48 final Map<String, String> map = ExternalResourceManagerImpl.getMap(myResources, version, true);
49 assert map != null;
50 map.put(resource, file);
52 else {
53 ExternalResourceManagerImpl.LOG.info("Cannot find standard resource. filename:" + fileName + " klass=" + klass);
57 public void addIgnoredResource(@NonNls String url) {
58 myIgnored.add(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);
77 @Nullable
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('\\','/');
85 return path;
88 public Map<String, Map<String, String>> getResources() {
89 return myResources;
92 public List<String> getIgnored() {
93 return myIgnored;