001
014
015 package com.liferay.portal.servlet.filters.weblogic;
016
017 import com.liferay.portal.kernel.servlet.WrapHttpServletResponseFilter;
018 import com.liferay.portal.servlet.filters.BasePortalFilter;
019 import com.liferay.registry.Registry;
020 import com.liferay.registry.RegistryUtil;
021 import com.liferay.registry.ServiceReference;
022 import com.liferay.registry.ServiceTracker;
023 import com.liferay.registry.ServiceTrackerCustomizer;
024
025 import javax.servlet.http.HttpServletRequest;
026 import javax.servlet.http.HttpServletResponse;
027
028
031 public class WebLogicIncludeFilter
032 extends BasePortalFilter implements WrapHttpServletResponseFilter {
033
034 public WebLogicIncludeFilter() {
035 Registry registry = RegistryUtil.getRegistry();
036
037 _serviceTracker = registry.trackServices(
038 WebLogicIncludeServletResponseFactory.class,
039 new WebLogicIncludeServletResponseFactoryTrackerCustomizer());
040
041 _serviceTracker.open();
042 }
043
044 @Override
045 public HttpServletResponse getWrappedHttpServletResponse(
046 HttpServletRequest request, HttpServletResponse response) {
047
048 WebLogicIncludeServletResponseFactory
049 webLogicIncludeServletResponseFactory =
050 _webLogicIncludeServletResponseFactory;
051
052 if (webLogicIncludeServletResponseFactory != null) {
053 return webLogicIncludeServletResponseFactory.create(response);
054 }
055
056 return response;
057 }
058
059 @Override
060 public boolean isFilterEnabled() {
061 return _webLogicIncludeServletResponseFactory != null;
062 }
063
064 private final ServiceTracker
065 <WebLogicIncludeServletResponseFactory,
066 WebLogicIncludeServletResponseFactory> _serviceTracker;
067 private volatile WebLogicIncludeServletResponseFactory
068 _webLogicIncludeServletResponseFactory;
069
070 private class WebLogicIncludeServletResponseFactoryTrackerCustomizer
071 implements ServiceTrackerCustomizer
072 <WebLogicIncludeServletResponseFactory,
073 WebLogicIncludeServletResponseFactory> {
074
075 @Override
076 public WebLogicIncludeServletResponseFactory addingService(
077 ServiceReference<WebLogicIncludeServletResponseFactory>
078 serviceReference) {
079
080 Registry registry = RegistryUtil.getRegistry();
081
082 WebLogicIncludeServletResponseFactory
083 webLogicIncludeServletResponseFactory = registry.getService(
084 serviceReference);
085
086 _webLogicIncludeServletResponseFactory =
087 webLogicIncludeServletResponseFactory;
088
089 return webLogicIncludeServletResponseFactory;
090 }
091
092 @Override
093 public void modifiedService(
094 ServiceReference<WebLogicIncludeServletResponseFactory>
095 serviceReference,
096 WebLogicIncludeServletResponseFactory service) {
097
098 removedService(serviceReference, service);
099 addingService(serviceReference);
100 }
101
102 @Override
103 public void removedService(
104 ServiceReference<WebLogicIncludeServletResponseFactory>
105 serviceReference,
106 WebLogicIncludeServletResponseFactory service) {
107
108 _webLogicIncludeServletResponseFactory = null;
109 }
110
111 }
112
113 }