001
014
015 package com.liferay.portal.asset;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.util.ListUtil;
020 import com.liferay.portlet.asset.AssetRendererFactoryRegistry;
021 import com.liferay.portlet.asset.model.AssetRendererFactory;
022
023 import java.util.List;
024 import java.util.Map;
025 import java.util.concurrent.ConcurrentHashMap;
026
027
031 public class AssetRendererFactoryRegistryImpl
032 implements AssetRendererFactoryRegistry {
033
034
038 @Override
039 public List<AssetRendererFactory> getAssetRendererFactories() {
040 return ListUtil.fromMapValues(_assetRenderFactoriesMapByClassName);
041 }
042
043 @Override
044 public List<AssetRendererFactory> getAssetRendererFactories(
045 long companyId) {
046
047 return ListUtil.fromMapValues(
048 filterAssetRendererFactories(
049 companyId, _assetRenderFactoriesMapByClassName));
050 }
051
052 @Override
053 public AssetRendererFactory getAssetRendererFactoryByClassName(
054 String className) {
055
056 return _assetRenderFactoriesMapByClassName.get(className);
057 }
058
059 @Override
060 public AssetRendererFactory getAssetRendererFactoryByType(String type) {
061 return _assetRenderFactoriesMapByClassType.get(type);
062 }
063
064
067 @Override
068 public long[] getClassNameIds() {
069 return getClassNameIds(0);
070 }
071
072 @Override
073 public long[] getClassNameIds(long companyId) {
074 Map<String, AssetRendererFactory> assetRenderFactories =
075 _assetRenderFactoriesMapByClassName;
076
077 if (companyId > 0) {
078 assetRenderFactories = filterAssetRendererFactories(
079 companyId, _assetRenderFactoriesMapByClassName);
080 }
081
082 long[] classNameIds = new long[assetRenderFactories.size()];
083
084 int i = 0;
085
086 for (AssetRendererFactory assetRendererFactory :
087 assetRenderFactories.values()) {
088
089 classNameIds[i] = assetRendererFactory.getClassNameId();
090
091 i++;
092 }
093
094 return classNameIds;
095 }
096
097 @Override
098 public void register(AssetRendererFactory assetRendererFactory) {
099 String className = assetRendererFactory.getClassName();
100
101 AssetRendererFactory classNameAssetRendererFactory =
102 _assetRenderFactoriesMapByClassName.put(
103 className, assetRendererFactory);
104
105 if (_log.isWarnEnabled() && (classNameAssetRendererFactory != null)) {
106 _log.warn(
107 "Replacing " + classNameAssetRendererFactory +
108 " for class name " + className + " with " +
109 assetRendererFactory);
110 }
111
112 String type = assetRendererFactory.getType();
113
114 AssetRendererFactory typeAssetRendererFactory =
115 _assetRenderFactoriesMapByClassType.put(type, assetRendererFactory);
116
117 if (_log.isWarnEnabled() && (typeAssetRendererFactory != null)) {
118 _log.warn(
119 "Replacing " + typeAssetRendererFactory + " for type " + type +
120 " with " + assetRendererFactory);
121 }
122 }
123
124 @Override
125 public void unregister(AssetRendererFactory assetRendererFactory) {
126 _assetRenderFactoriesMapByClassName.remove(
127 assetRendererFactory.getClassName());
128 _assetRenderFactoriesMapByClassType.remove(
129 assetRendererFactory.getType());
130 }
131
132 private Map<String, AssetRendererFactory> filterAssetRendererFactories(
133 long companyId,
134 Map<String, AssetRendererFactory> assetRendererFactories) {
135
136 Map<String, AssetRendererFactory> filteredAssetRendererFactories =
137 new ConcurrentHashMap<String, AssetRendererFactory>();
138
139 for (String className : assetRendererFactories.keySet()) {
140 AssetRendererFactory assetRendererFactory =
141 assetRendererFactories.get(className);
142
143 if (assetRendererFactory.isActive(companyId)) {
144 filteredAssetRendererFactories.put(
145 className, assetRendererFactory);
146 }
147 }
148
149 return filteredAssetRendererFactories;
150 }
151
152 private static Log _log = LogFactoryUtil.getLog(
153 AssetRendererFactoryRegistryImpl.class);
154
155 private Map<String, AssetRendererFactory>
156 _assetRenderFactoriesMapByClassName =
157 new ConcurrentHashMap<String, AssetRendererFactory>();
158 private Map<String, AssetRendererFactory>
159 _assetRenderFactoriesMapByClassType =
160 new ConcurrentHashMap<String, AssetRendererFactory>();
161
162 }