001
014
015 package com.liferay.portlet;
016
017 import com.liferay.portal.kernel.atom.AtomCollectionAdapter;
018 import com.liferay.portal.kernel.lar.PortletDataHandler;
019 import com.liferay.portal.kernel.lar.StagedModelDataHandler;
020 import com.liferay.portal.kernel.notifications.UserNotificationHandler;
021 import com.liferay.portal.kernel.poller.PollerProcessor;
022 import com.liferay.portal.kernel.pop.MessageListener;
023 import com.liferay.portal.kernel.portlet.ConfigurationAction;
024 import com.liferay.portal.kernel.portlet.FriendlyURLMapperTracker;
025 import com.liferay.portal.kernel.portlet.PortletBag;
026 import com.liferay.portal.kernel.portlet.PortletLayoutListener;
027 import com.liferay.portal.kernel.portlet.ResourceBundleTracker;
028 import com.liferay.portal.kernel.scheduler.SchedulerEntry;
029 import com.liferay.portal.kernel.search.Indexer;
030 import com.liferay.portal.kernel.search.OpenSearch;
031 import com.liferay.portal.kernel.servlet.URLEncoder;
032 import com.liferay.portal.kernel.template.TemplateHandler;
033 import com.liferay.portal.kernel.trash.TrashHandler;
034 import com.liferay.portal.kernel.util.ClassUtil;
035 import com.liferay.portal.kernel.util.LocaleUtil;
036 import com.liferay.portal.kernel.webdav.WebDAVStorage;
037 import com.liferay.portal.kernel.workflow.WorkflowHandler;
038 import com.liferay.portal.kernel.xmlrpc.Method;
039 import com.liferay.portal.security.permission.PermissionPropagator;
040 import com.liferay.portlet.asset.model.AssetRendererFactory;
041 import com.liferay.portlet.dynamicdatamapping.util.DDMDisplay;
042 import com.liferay.portlet.expando.model.CustomAttributesDisplay;
043 import com.liferay.portlet.social.model.SocialActivityInterpreter;
044 import com.liferay.portlet.social.model.SocialRequestInterpreter;
045
046 import java.io.Closeable;
047
048 import java.util.List;
049 import java.util.Locale;
050 import java.util.ResourceBundle;
051
052 import javax.portlet.Portlet;
053 import javax.portlet.PreferencesValidator;
054
055 import javax.servlet.ServletContext;
056
057
061 public class PortletBagImpl implements PortletBag {
062
063 public PortletBagImpl(
064 String portletName, ServletContext servletContext,
065 Portlet portletInstance, ResourceBundleTracker resourceBundleTracker,
066 List<ConfigurationAction> configurationActionInstances,
067 List<Indexer> indexerInstances, List<OpenSearch> openSearchInstances,
068 List<SchedulerEntry> schedulerEntryInstances,
069 FriendlyURLMapperTracker friendlyURLMapperTracker,
070 List<URLEncoder> urlEncoderInstances,
071 List<PortletDataHandler> portletDataHandlerInstances,
072 List<StagedModelDataHandler<?>> stagedModelDataHandlerInstances,
073 List<TemplateHandler> templateHandlerInstances,
074 List<PortletLayoutListener> portletLayoutListenerInstances,
075 List<PollerProcessor> pollerProcessorInstances,
076 List<MessageListener> popMessageListenerInstances,
077 List<SocialActivityInterpreter> socialActivityInterpreterInstances,
078 List<SocialRequestInterpreter> socialRequestInterpreterInstances,
079 List<UserNotificationHandler> userNotificationHandlerInstances,
080 List<WebDAVStorage> webDAVStorageInstances,
081 List<Method> xmlRpcMethodInstances,
082 List<ControlPanelEntry> controlPanelEntryInstances,
083 List<AssetRendererFactory> assetRendererFactoryInstances,
084 List<AtomCollectionAdapter<?>> atomCollectionAdapters,
085 List<CustomAttributesDisplay> customAttributesDisplayInstances,
086 List<DDMDisplay> ddmDisplayInstances,
087 List<PermissionPropagator> permissionPropagatorInstances,
088 List<TrashHandler> trashHandlerInstances,
089 List<WorkflowHandler<?>> workflowHandlerInstances,
090 List<PreferencesValidator> preferencesValidatorInstances) {
091
092 _portletName = portletName;
093 _servletContext = servletContext;
094 _portletInstance = portletInstance;
095 _resourceBundleTracker = resourceBundleTracker;
096 _configurationActionInstances = configurationActionInstances;
097 _indexerInstances = indexerInstances;
098 _openSearchInstances = openSearchInstances;
099 _schedulerEntryInstances = schedulerEntryInstances;
100 _friendlyURLMapperTracker = friendlyURLMapperTracker;
101 _urlEncoderInstances = urlEncoderInstances;
102 _portletDataHandlerInstances = portletDataHandlerInstances;
103 _stagedModelDataHandlerInstances = stagedModelDataHandlerInstances;
104 _templateHandlerInstances = templateHandlerInstances;
105 _portletLayoutListenerInstances = portletLayoutListenerInstances;
106 _pollerProcessorInstances = pollerProcessorInstances;
107 _popMessageListenerInstances = popMessageListenerInstances;
108 _socialActivityInterpreterInstances =
109 socialActivityInterpreterInstances;
110 _socialRequestInterpreterInstances = socialRequestInterpreterInstances;
111 _userNotificationHandlerInstances = userNotificationHandlerInstances;
112 _webDAVStorageInstances = webDAVStorageInstances;
113 _xmlRpcMethodInstances = xmlRpcMethodInstances;
114 _controlPanelEntryInstances = controlPanelEntryInstances;
115 _assetRendererFactoryInstances = assetRendererFactoryInstances;
116 _atomCollectionAdapterInstances = atomCollectionAdapters;
117 _customAttributesDisplayInstances = customAttributesDisplayInstances;
118 _ddmDisplayInstances = ddmDisplayInstances;
119 _permissionPropagatorInstances = permissionPropagatorInstances;
120 _trashHandlerInstances = trashHandlerInstances;
121 _workflowHandlerInstances = workflowHandlerInstances;
122 _preferencesValidatorInstances = preferencesValidatorInstances;
123 }
124
125 @Override
126 public Object clone() {
127 return new PortletBagImpl(
128 getPortletName(), getServletContext(), getPortletInstance(),
129 getResourceBundleTracker(), getConfigurationActionInstances(),
130 getIndexerInstances(), getOpenSearchInstances(),
131 getSchedulerEntryInstances(), getFriendlyURLMapperTracker(),
132 getURLEncoderInstances(), getPortletDataHandlerInstances(),
133 getStagedModelDataHandlerInstances(), getTemplateHandlerInstances(),
134 getPortletLayoutListenerInstances(), getPollerProcessorInstances(),
135 getPopMessageListenerInstances(),
136 getSocialActivityInterpreterInstances(),
137 getSocialRequestInterpreterInstances(),
138 getUserNotificationHandlerInstances(), getWebDAVStorageInstances(),
139 getXmlRpcMethodInstances(), getControlPanelEntryInstances(),
140 getAssetRendererFactoryInstances(),
141 getAtomCollectionAdapterInstances(),
142 getCustomAttributesDisplayInstances(), getDdmDisplayInstances(),
143 getPermissionPropagatorInstances(), getTrashHandlerInstances(),
144 getWorkflowHandlerInstances(), getPreferencesValidatorInstances());
145 }
146
147 @Override
148 public void destroy() {
149 close(_assetRendererFactoryInstances);
150 close(_atomCollectionAdapterInstances);
151 close(_configurationActionInstances);
152 close(_controlPanelEntryInstances);
153 close(_customAttributesDisplayInstances);
154 close(_ddmDisplayInstances);
155 close(_friendlyURLMapperTracker);
156 close(_indexerInstances);
157 close(_openSearchInstances);
158 close(_permissionPropagatorInstances);
159 close(_pollerProcessorInstances);
160 close(_popMessageListenerInstances);
161 close(_portletDataHandlerInstances);
162 close(_portletLayoutListenerInstances);
163 close(_preferencesValidatorInstances);
164 close(_resourceBundleTracker);
165 close(_schedulerEntryInstances);
166 close(_socialActivityInterpreterInstances);
167 close(_socialRequestInterpreterInstances);
168 close(_templateHandlerInstances);
169 close(_trashHandlerInstances);
170 close(_urlEncoderInstances);
171 close(_userNotificationHandlerInstances);
172 close(_webDAVStorageInstances);
173 close(_workflowHandlerInstances);
174 close(_xmlRpcMethodInstances);
175 }
176
177 @Override
178 public List<AssetRendererFactory> getAssetRendererFactoryInstances() {
179 return _assetRendererFactoryInstances;
180 }
181
182 @Override
183 public List<AtomCollectionAdapter<?>> getAtomCollectionAdapterInstances() {
184 return _atomCollectionAdapterInstances;
185 }
186
187 @Override
188 public List<ConfigurationAction> getConfigurationActionInstances() {
189 return _configurationActionInstances;
190 }
191
192 @Override
193 public List<ControlPanelEntry> getControlPanelEntryInstances() {
194 return _controlPanelEntryInstances;
195 }
196
197 @Override
198 public List<CustomAttributesDisplay> getCustomAttributesDisplayInstances() {
199 return _customAttributesDisplayInstances;
200 }
201
202 @Override
203 public List<DDMDisplay> getDdmDisplayInstances() {
204 return _ddmDisplayInstances;
205 }
206
207 @Override
208 public FriendlyURLMapperTracker getFriendlyURLMapperTracker() {
209 return _friendlyURLMapperTracker;
210 }
211
212 @Override
213 public List<Indexer> getIndexerInstances() {
214 return _indexerInstances;
215 }
216
217 @Override
218 public List<OpenSearch> getOpenSearchInstances() {
219 return _openSearchInstances;
220 }
221
222 @Override
223 public List<PermissionPropagator> getPermissionPropagatorInstances() {
224 return _permissionPropagatorInstances;
225 }
226
227 @Override
228 public List<PollerProcessor> getPollerProcessorInstances() {
229 return _pollerProcessorInstances;
230 }
231
232 @Override
233 public List<MessageListener> getPopMessageListenerInstances() {
234 return _popMessageListenerInstances;
235 }
236
237 @Override
238 public List<PortletDataHandler> getPortletDataHandlerInstances() {
239 return _portletDataHandlerInstances;
240 }
241
242 @Override
243 public Portlet getPortletInstance() {
244 return _portletInstance;
245 }
246
247 @Override
248 public List<PortletLayoutListener> getPortletLayoutListenerInstances() {
249 return _portletLayoutListenerInstances;
250 }
251
252 @Override
253 public String getPortletName() {
254 return _portletName;
255 }
256
257 @Override
258 public List<PreferencesValidator> getPreferencesValidatorInstances() {
259 return _preferencesValidatorInstances;
260 }
261
262 @Override
263 public ResourceBundle getResourceBundle(Locale locale) {
264 ResourceBundle resourceBundle = _resourceBundleTracker.getResouceBundle(
265 LocaleUtil.toLanguageId(locale));
266
267 if (resourceBundle == null) {
268 resourceBundle = _resourceBundleTracker.getResouceBundle(
269 locale.getLanguage());
270
271 if (resourceBundle == null) {
272 resourceBundle = _resourceBundleTracker.getResouceBundle(
273 LocaleUtil.toLanguageId(LocaleUtil.getDefault()));
274 }
275 }
276
277 return resourceBundle;
278 }
279
280 @Override
281 public ResourceBundleTracker getResourceBundleTracker() {
282 return _resourceBundleTracker;
283 }
284
285 @Override
286 public List<SchedulerEntry> getSchedulerEntryInstances() {
287 return _schedulerEntryInstances;
288 }
289
290 @Override
291 public ServletContext getServletContext() {
292 return _servletContext;
293 }
294
295 @Override
296 public List<SocialActivityInterpreter>
297 getSocialActivityInterpreterInstances() {
298
299 return _socialActivityInterpreterInstances;
300 }
301
302 @Override
303 public List<SocialRequestInterpreter>
304 getSocialRequestInterpreterInstances() {
305
306 return _socialRequestInterpreterInstances;
307 }
308
309 @Override
310 public List<StagedModelDataHandler<?>>
311 getStagedModelDataHandlerInstances() {
312
313 return _stagedModelDataHandlerInstances;
314 }
315
316 @Override
317 public List<TemplateHandler> getTemplateHandlerInstances() {
318 return _templateHandlerInstances;
319 }
320
321 @Override
322 public List<TrashHandler> getTrashHandlerInstances() {
323 return _trashHandlerInstances;
324 }
325
326 @Override
327 public List<URLEncoder> getURLEncoderInstances() {
328 return _urlEncoderInstances;
329 }
330
331 @Override
332 public List<UserNotificationHandler>
333 getUserNotificationHandlerInstances() {
334
335 return _userNotificationHandlerInstances;
336 }
337
338 @Override
339 public List<WebDAVStorage> getWebDAVStorageInstances() {
340 return _webDAVStorageInstances;
341 }
342
343 @Override
344 public List<WorkflowHandler<?>> getWorkflowHandlerInstances() {
345 return _workflowHandlerInstances;
346 }
347
348 @Override
349 public List<Method> getXmlRpcMethodInstances() {
350 return _xmlRpcMethodInstances;
351 }
352
353 @Override
354 public void setPortletInstance(Portlet portletInstance) {
355 _portletInstance = portletInstance;
356 }
357
358 @Override
359 public void setPortletName(String portletName) {
360 _portletName = portletName;
361 }
362
363 protected void close(Object object) {
364 try {
365 Closeable closeable = (Closeable)object;
366
367 closeable.close();
368 }
369 catch (Exception e) {
370 throw new RuntimeException(
371 "Unable to close " + ClassUtil.getClassName(object), e);
372 }
373 }
374
375 private final List<AssetRendererFactory> _assetRendererFactoryInstances;
376 private final List<AtomCollectionAdapter<?>>
377 _atomCollectionAdapterInstances;
378 private final List<ConfigurationAction> _configurationActionInstances;
379 private final List<ControlPanelEntry> _controlPanelEntryInstances;
380 private final List<CustomAttributesDisplay>
381 _customAttributesDisplayInstances;
382 private final List<DDMDisplay> _ddmDisplayInstances;
383 private final FriendlyURLMapperTracker _friendlyURLMapperTracker;
384 private final List<Indexer> _indexerInstances;
385 private final List<OpenSearch> _openSearchInstances;
386 private final List<PermissionPropagator> _permissionPropagatorInstances;
387 private final List<PollerProcessor> _pollerProcessorInstances;
388 private final List<MessageListener> _popMessageListenerInstances;
389 private final List<PortletDataHandler> _portletDataHandlerInstances;
390 private Portlet _portletInstance;
391 private final List<PortletLayoutListener> _portletLayoutListenerInstances;
392 private String _portletName;
393 private final List<PreferencesValidator> _preferencesValidatorInstances;
394 private final ResourceBundleTracker _resourceBundleTracker;
395 private final List<SchedulerEntry> _schedulerEntryInstances;
396 private final ServletContext _servletContext;
397 private final List<SocialActivityInterpreter>
398 _socialActivityInterpreterInstances;
399 private final List<SocialRequestInterpreter>
400 _socialRequestInterpreterInstances;
401 private final List<StagedModelDataHandler<?>>
402 _stagedModelDataHandlerInstances;
403 private final List<TemplateHandler> _templateHandlerInstances;
404 private final List<TrashHandler> _trashHandlerInstances;
405 private final List<URLEncoder> _urlEncoderInstances;
406 private final List<UserNotificationHandler>
407 _userNotificationHandlerInstances;
408 private final List<WebDAVStorage> _webDAVStorageInstances;
409 private final List<WorkflowHandler<?>> _workflowHandlerInstances;
410 private final List<Method> _xmlRpcMethodInstances;
411
412 }