@Override public void clear(Portlet portlet, boolean resetRemotePortletBag) { String rootPortletId = portlet.getRootPortletId(); Map<String, InvokerPortlet> portletInstances = _pool.remove(rootPortletId); if (portletInstances != null) { InvokerPortlet rootInvokerPortletInstance = portletInstances.remove(rootPortletId); if (rootInvokerPortletInstance != null) { rootInvokerPortletInstance.destroy(); } portletInstances.clear(); } PortletApp portletApp = portlet.getPortletApp(); if (resetRemotePortletBag && portletApp.isWARFile()) { PortletBag portletBag = PortletBagPool.remove(rootPortletId); if (portletBag != null) { portletBag.destroy(); } } }
@Test public void test7() throws Exception { try { PortletBagPool.remove("1_WAR_flashportlet"); } catch (SecurityException se) { Assert.fail(); } }
@Test public void test3() throws Exception { try { PortletBagPool.get("flash-portlet"); } catch (SecurityException se) { Assert.fail(); } }
@Test public void test2() throws Exception { try { PortletBagPool.get("fail"); Assert.fail(); } catch (SecurityException se) { } }
@Test public void test6() throws Exception { try { PortletBagPool.put( "flash-portlet", new PortletBagImpl( null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null)); } catch (SecurityException se) { Assert.fail(); } }
public static void importPortletsLanguages() throws Exception { List<Portlet> portlets = PortletLocalServiceUtil.getPortlets(); for (Portlet portlet : portlets) { if (StringUtils.isNotBlank(portlet.getContextPath())) { String portletId = portlet.getPortletId(); String bundleName = portlet.getPluginPackage().getName(); if (StringUtils.isBlank(bundleName)) { bundleName = portlet.getPortletName(); } com.liferay.portal.kernel.portlet.PortletBag portletBag = com.liferay.portal.kernel.portlet.PortletBagPool.get(portletId); if (portletBag != null) { ServletContext servletContext = portletBag.getServletContext(); importPortletLanguages(servletContext, bundleName); } } } }
@Override public void removedService( ServiceReference<Portlet> serviceReference, com.liferay.portal.model.Portlet portletModel) { portletModel.unsetReady(); ServiceRegistrations serviceRegistrations = _serviceRegistrations.get(serviceReference.getBundle()); if (serviceRegistrations == null) { return; } BundlePortletApp bundlePortletApp = serviceRegistrations.getBundlePortletApp(); bundlePortletApp.removePortlet(portletModel); serviceRegistrations.removeServiceReference(serviceReference); BundleContext bundleContext = _componentContext.getBundleContext(); bundleContext.ungetService(serviceReference); _portletInstanceFactory.destroy(portletModel); List<Company> companies = _companyLocalService.getCompanies(); for (Company company : companies) { PortletCategory portletCategory = (PortletCategory) WebAppPool.get(company.getCompanyId(), WebKeys.PORTLET_CATEGORY); portletCategory.separate(portletModel.getRootPortletId()); } PortletBag portletBag = PortletBagPool.remove(portletModel.getRootPortletId()); if (portletBag != null) { portletBag.destroy(); } }
@Override public InvokerPortlet create( Portlet portlet, ServletContext servletContext, boolean destroyPrevious) throws PortletException { if (destroyPrevious) { destroyRelated(portlet); } boolean instanceable = false; boolean deployed = !portlet.isUndeployedPortlet(); if (portlet.isInstanceable() && deployed && PortletConstants.hasInstanceId(portlet.getPortletId())) { instanceable = true; } String rootPortletId = portlet.getRootPortletId(); InvokerPortlet rootInvokerPortletInstance = null; Map<String, InvokerPortlet> portletInstances = null; if (deployed) { portletInstances = _pool.get(rootPortletId); if (portletInstances == null) { portletInstances = new ConcurrentHashMap<>(); _pool.put(rootPortletId, portletInstances); } else { if (instanceable) { InvokerPortlet instanceInvokerPortletInstance = portletInstances.get(portlet.getPortletId()); if (instanceInvokerPortletInstance != null) { return instanceInvokerPortletInstance; } } rootInvokerPortletInstance = portletInstances.get(rootPortletId); } } if (rootInvokerPortletInstance == null) { PortletBag portletBag = PortletBagPool.get(rootPortletId); // Portlet bag should never be null unless the portlet has been // undeployed if (portletBag == null) { PortletBagFactory portletBagFactory = new PortletBagFactory(); portletBagFactory.setClassLoader(ClassLoaderUtil.getPortalClassLoader()); portletBagFactory.setServletContext(servletContext); portletBagFactory.setWARFile(false); try { portletBag = portletBagFactory.create(portlet); } catch (Exception e) { throw new PortletException(e); } } PortletConfig portletConfig = PortletConfigFactoryUtil.create(portlet, servletContext); rootInvokerPortletInstance = init(portlet, portletConfig, portletBag.getPortletInstance()); if (deployed) { portletInstances.put(rootPortletId, rootInvokerPortletInstance); } } if (!instanceable) { return rootInvokerPortletInstance; } javax.portlet.Portlet portletInstance = rootInvokerPortletInstance.getPortletInstance(); PortletConfig portletConfig = PortletConfigFactoryUtil.create(portlet, servletContext); PortletContext portletContext = portletConfig.getPortletContext(); boolean checkAuthToken = rootInvokerPortletInstance.isCheckAuthToken(); boolean facesPortlet = rootInvokerPortletInstance.isFacesPortlet(); boolean strutsPortlet = rootInvokerPortletInstance.isStrutsPortlet(); boolean strutsBridgePortlet = rootInvokerPortletInstance.isStrutsBridgePortlet(); InvokerPortlet instanceInvokerPortletInstance = _invokerPortletFactory.create( portlet, portletInstance, portletConfig, portletContext, (InvokerFilterContainer) rootInvokerPortletInstance, checkAuthToken, facesPortlet, strutsPortlet, strutsBridgePortlet); if (deployed) { portletInstances.put(portlet.getPortletId(), instanceInvokerPortletInstance); } return instanceInvokerPortletInstance; }