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