001
014
015 package com.liferay.portlet;
016
017 import com.liferay.portal.kernel.atom.AtomCollectionAdapter;
018 import com.liferay.portal.kernel.notifications.UserNotificationDefinition;
019 import com.liferay.portal.kernel.notifications.UserNotificationHandler;
020 import com.liferay.portal.kernel.poller.PollerProcessor;
021 import com.liferay.portal.kernel.pop.MessageListener;
022 import com.liferay.portal.kernel.portlet.ConfigurationAction;
023 import com.liferay.portal.kernel.portlet.FriendlyURLMapperTracker;
024 import com.liferay.portal.kernel.portlet.PortletBag;
025 import com.liferay.portal.kernel.portlet.PortletLayoutListener;
026 import com.liferay.portal.kernel.portlet.ResourceBundleTracker;
027 import com.liferay.portal.kernel.scheduler.SchedulerEntry;
028 import com.liferay.portal.kernel.search.Indexer;
029 import com.liferay.portal.kernel.search.OpenSearch;
030 import com.liferay.portal.kernel.servlet.URLEncoder;
031 import com.liferay.portal.kernel.template.TemplateHandler;
032 import com.liferay.portal.kernel.trash.TrashHandler;
033 import com.liferay.portal.kernel.util.ClassUtil;
034 import com.liferay.portal.kernel.util.LocaleUtil;
035 import com.liferay.portal.kernel.webdav.WebDAVStorage;
036 import com.liferay.portal.kernel.workflow.WorkflowHandler;
037 import com.liferay.portal.kernel.xmlrpc.Method;
038 import com.liferay.portal.security.permission.PermissionPropagator;
039 import com.liferay.portlet.asset.model.AssetRendererFactory;
040 import com.liferay.portlet.dynamicdatamapping.util.DDMDisplay;
041 import com.liferay.portlet.expando.model.CustomAttributesDisplay;
042 import com.liferay.portlet.exportimport.lar.PortletDataHandler;
043 import com.liferay.portlet.exportimport.lar.StagedModelDataHandler;
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(_stagedModelDataHandlerInstances);
174 close(_templateHandlerInstances);
175 close(_trashHandlerInstances);
176 close(_urlEncoderInstances);
177 close(_userNotificationDefinitionInstances);
178 close(_userNotificationHandlerInstances);
179 close(_webDAVStorageInstances);
180 close(_workflowHandlerInstances);
181 close(_xmlRpcMethodInstances);
182 }
183
184 @Override
185 public List<AssetRendererFactory> getAssetRendererFactoryInstances() {
186 return _assetRendererFactoryInstances;
187 }
188
189 @Override
190 public List<AtomCollectionAdapter<?>> getAtomCollectionAdapterInstances() {
191 return _atomCollectionAdapterInstances;
192 }
193
194 @Override
195 public List<ConfigurationAction> getConfigurationActionInstances() {
196 return _configurationActionInstances;
197 }
198
199 @Override
200 public List<ControlPanelEntry> getControlPanelEntryInstances() {
201 return _controlPanelEntryInstances;
202 }
203
204 @Override
205 public List<CustomAttributesDisplay> getCustomAttributesDisplayInstances() {
206 return _customAttributesDisplayInstances;
207 }
208
209 @Override
210 public List<DDMDisplay> getDdmDisplayInstances() {
211 return _ddmDisplayInstances;
212 }
213
214 @Override
215 public FriendlyURLMapperTracker getFriendlyURLMapperTracker() {
216 return _friendlyURLMapperTracker;
217 }
218
219 @Override
220 public List<Indexer> getIndexerInstances() {
221 return _indexerInstances;
222 }
223
224 @Override
225 public List<OpenSearch> getOpenSearchInstances() {
226 return _openSearchInstances;
227 }
228
229 @Override
230 public List<PermissionPropagator> getPermissionPropagatorInstances() {
231 return _permissionPropagatorInstances;
232 }
233
234 @Override
235 public List<PollerProcessor> getPollerProcessorInstances() {
236 return _pollerProcessorInstances;
237 }
238
239 @Override
240 public List<MessageListener> getPopMessageListenerInstances() {
241 return _popMessageListenerInstances;
242 }
243
244 @Override
245 public List<PortletDataHandler> getPortletDataHandlerInstances() {
246 return _portletDataHandlerInstances;
247 }
248
249 @Override
250 public Portlet getPortletInstance() {
251 return _portletInstance;
252 }
253
254 @Override
255 public List<PortletLayoutListener> getPortletLayoutListenerInstances() {
256 return _portletLayoutListenerInstances;
257 }
258
259 @Override
260 public String getPortletName() {
261 return _portletName;
262 }
263
264 @Override
265 public List<PreferencesValidator> getPreferencesValidatorInstances() {
266 return _preferencesValidatorInstances;
267 }
268
269 @Override
270 public ResourceBundle getResourceBundle(Locale locale) {
271 ResourceBundle resourceBundle =
272 _resourceBundleTracker.getResourceBundle(
273 LocaleUtil.toLanguageId(locale));
274
275 if (resourceBundle == null) {
276 resourceBundle = _resourceBundleTracker.getResourceBundle(
277 locale.getLanguage());
278
279 if (resourceBundle == null) {
280 resourceBundle = _resourceBundleTracker.getResourceBundle(
281 LocaleUtil.toLanguageId(LocaleUtil.getDefault()));
282 }
283 }
284
285 return resourceBundle;
286 }
287
288 @Override
289 public ResourceBundleTracker getResourceBundleTracker() {
290 return _resourceBundleTracker;
291 }
292
293 @Override
294 public List<SchedulerEntry> getSchedulerEntryInstances() {
295 return _schedulerEntryInstances;
296 }
297
298 @Override
299 public ServletContext getServletContext() {
300 return _servletContext;
301 }
302
303 @Override
304 public List<SocialActivityInterpreter>
305 getSocialActivityInterpreterInstances() {
306
307 return _socialActivityInterpreterInstances;
308 }
309
310 @Override
311 public List<SocialRequestInterpreter>
312 getSocialRequestInterpreterInstances() {
313
314 return _socialRequestInterpreterInstances;
315 }
316
317 @Override
318 public List<StagedModelDataHandler<?>>
319 getStagedModelDataHandlerInstances() {
320
321 return _stagedModelDataHandlerInstances;
322 }
323
324 @Override
325 public List<TemplateHandler> getTemplateHandlerInstances() {
326 return _templateHandlerInstances;
327 }
328
329 @Override
330 public List<TrashHandler> getTrashHandlerInstances() {
331 return _trashHandlerInstances;
332 }
333
334 @Override
335 public List<URLEncoder> getURLEncoderInstances() {
336 return _urlEncoderInstances;
337 }
338
339 @Override
340 public List<UserNotificationDefinition>
341 getUserNotificationDefinitionInstances() {
342
343 return _userNotificationDefinitionInstances;
344 }
345
346 @Override
347 public List<UserNotificationHandler>
348 getUserNotificationHandlerInstances() {
349
350 return _userNotificationHandlerInstances;
351 }
352
353 @Override
354 public List<WebDAVStorage> getWebDAVStorageInstances() {
355 return _webDAVStorageInstances;
356 }
357
358 @Override
359 public List<WorkflowHandler<?>> getWorkflowHandlerInstances() {
360 return _workflowHandlerInstances;
361 }
362
363 @Override
364 public List<Method> getXmlRpcMethodInstances() {
365 return _xmlRpcMethodInstances;
366 }
367
368 @Override
369 public void setPortletInstance(Portlet portletInstance) {
370 _portletInstance = portletInstance;
371 }
372
373 @Override
374 public void setPortletName(String portletName) {
375 _portletName = portletName;
376 }
377
378 protected void close(Object object) {
379 try {
380 Closeable closeable = (Closeable)object;
381
382 closeable.close();
383 }
384 catch (Exception e) {
385 throw new RuntimeException(
386 "Unable to close " + ClassUtil.getClassName(object), e);
387 }
388 }
389
390 private final List<AssetRendererFactory> _assetRendererFactoryInstances;
391 private final List<AtomCollectionAdapter<?>>
392 _atomCollectionAdapterInstances;
393 private final List<ConfigurationAction> _configurationActionInstances;
394 private final List<ControlPanelEntry> _controlPanelEntryInstances;
395 private final List<CustomAttributesDisplay>
396 _customAttributesDisplayInstances;
397 private final List<DDMDisplay> _ddmDisplayInstances;
398 private final FriendlyURLMapperTracker _friendlyURLMapperTracker;
399 private final List<Indexer> _indexerInstances;
400 private final List<OpenSearch> _openSearchInstances;
401 private final List<PermissionPropagator> _permissionPropagatorInstances;
402 private final List<PollerProcessor> _pollerProcessorInstances;
403 private final List<MessageListener> _popMessageListenerInstances;
404 private final List<PortletDataHandler> _portletDataHandlerInstances;
405 private Portlet _portletInstance;
406 private final List<PortletLayoutListener> _portletLayoutListenerInstances;
407 private String _portletName;
408 private final List<PreferencesValidator> _preferencesValidatorInstances;
409 private final ResourceBundleTracker _resourceBundleTracker;
410 private final List<SchedulerEntry> _schedulerEntryInstances;
411 private final ServletContext _servletContext;
412 private final List<SocialActivityInterpreter>
413 _socialActivityInterpreterInstances;
414 private final List<SocialRequestInterpreter>
415 _socialRequestInterpreterInstances;
416 private final List<StagedModelDataHandler<?>>
417 _stagedModelDataHandlerInstances;
418 private final List<TemplateHandler> _templateHandlerInstances;
419 private final List<TrashHandler> _trashHandlerInstances;
420 private final List<URLEncoder> _urlEncoderInstances;
421 private final List<UserNotificationDefinition>
422 _userNotificationDefinitionInstances;
423 private final List<UserNotificationHandler>
424 _userNotificationHandlerInstances;
425 private final List<WebDAVStorage> _webDAVStorageInstances;
426 private final List<WorkflowHandler<?>> _workflowHandlerInstances;
427 private final List<Method> _xmlRpcMethodInstances;
428
429 }