⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eventproviderimpl.java

📁 portal越来越流行了
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
					if (isEventSupported(processingEvents, eventName, portletAppDD.getDefaultNamespace())) {
                        if (portletDD.getPortletName().equals(portlet.getPortletName())) {
                                                          resultSet.add(portlet.getId());
                        }
					} else {

						if (processingEvents != null) {
							for (EventDefinitionReference ref : processingEvents) {
							    QName name = ref.getQualifiedName(portletAppDD.getDefaultNamespace());
							    if (name == null)
							    {
							        continue;
							    }
								// add also grouped portlets, that ends with "."
								if (name.toString().endsWith(".")
										&& eventName.toString().startsWith(name.toString())
										&& portletDD.getPortletName().equals(portlet.getPortletName())) {
									resultSet.add(portlet.getId());
								}
								// also look for alias names:
								if (aliases != null) {
									for (QName alias : aliases) {
										if (alias.toString().equals(name.toString())
												&& portletDD.getPortletName().equals(portlet.getPortletName())) {
											resultSet.add(portlet.getId());
										}
									}
								}
								// also look for default namespaced events
								if (name.getNamespaceURI() == null || name.getNamespaceURI().equals("")) {
									String defaultNamespace = portletAppDD.getDefaultNamespace();
									QName qname = new QName(defaultNamespace, name.getLocalPart());
									if (eventName.toString().equals(qname.toString())
											&& portletDD.getPortletName().equals(portlet.getPortletName())) {
										resultSet.add(portlet.getId());
									}
								}
							}
						}
					}
				}
			} catch (PortletContainerException e) {
				LOG.warn(e);
			}
		}

		// make list
		for (String name : resultSet) {
			resultList.add(name);
		}
		return resultList;
	}
	
	private boolean isEventSupported(List<? extends EventDefinitionReference> supportedEvents, QName eventName, String defaultNamespace)
	{
	    if (supportedEvents != null)
	    {
	        for (EventDefinitionReference ref : supportedEvents)
	        {
	            QName refQName = ref.getQualifiedName(defaultNamespace);
	            if (refQName != null && refQName.equals(eventName))
	            {
	                return true;
	            }
	        }
	    }
	    return false;
	}

	private List<QName> getAllAliases(QName eventName, PortletApplicationDefinition portletAppDD) {
		if (portletAppDD.getEventDefinitions() != null) {
			
			for (EventDefinition def : portletAppDD.getEventDefinitions()){
			    QName defQName = def.getQualifiedName(portletAppDD.getDefaultNamespace());
				if (defQName != null && defQName.equals(eventName)){
						return def.getAliases();
				}
			}
		}
		return null;
	}

	/**
	 * gets the right PortletWindowThread or makes a new one, if theres none
	 * 
	 * @param eventContainer
	 * @param config
	 * @param window
	 * @return
	 */
	private PortletWindowThread getPortletWindowThread(
			EventContainer eventContainer, PortletWindowConfig config,
			PortletWindow window, ServletContext containerServletContext) {
		if (portletContextService == null) {
			portletContextService = container.getOptionalContainerServices().getPortletContextService();
		}
		if (portletContextService != null){
			String windowID = window.getId().getStringId();
			PortletWindowThread portletWindowThread = portletWindowThreads
					.get(windowID);
			if (portletWindowThread == null) {
				portletWindowThread = new PortletWindowThread(threadGroup, config
						.getId(), this, window, eventContainer,portletContextService);
				portletWindowThreads.put(windowID, portletWindowThread);
			} else {
				// a thread could be started twice, so we make a new one,
				// after the old thread stopped
				// try {
				try {
					portletWindowThread.join();
				} catch (InterruptedException e) {
					LOG.warn(e);
				}
				portletWindowThreads.remove(portletWindowThread);
				portletWindowThread = new PortletWindowThread(threadGroup, config
						.getId(), this, window, eventContainer,portletContextService);
				portletWindowThreads.put(windowID, portletWindowThread);
			}
			return portletWindowThread;
		}
		else 
			return null;
	}

	/**
	 * Wait for event execution.
	 */
	private void waitForEventExecution() {
		long counter = 0;
		while (threadGroup.activeCount() > 0) {
			try {
				counter = +WAITING_CYCLE;
				if (counter > 500) {
					threadGroup.stop();
				}
				Thread.sleep(WAITING_CYCLE);
			} catch (InterruptedException e) {
				LOG.warn(e);
			}
		}
	}

	/**
	 * gets an arbitrary event, which is not processed yet.
	 * 
	 * @return the arbitrary event
	 */
	private Event getArbitraryEvent() {
		Event eActual = null;
		for (Event event : this.savedEvents.getEvents()) {
			if (this.savedEvents.isNotProcessed(event)) {
				eActual = event;
			}
		}
		return eActual;
	}

	/**
	 * 
	 */
	private Collection<PortletWindowConfig> getAllPortlets(
			DriverConfiguration driverConfig) {
		Collection<PortletWindowConfig> portlets = new ArrayList<PortletWindowConfig>();
		ServletContext servletContext = PortalRequestContext
			.getContext(request).getServletContext();
//		if (portletRegistry == null) {
//			portletRegistry = ((PortletContainer) servletContext
//					.getAttribute(AttributeKeys.PORTLET_CONTAINER))
//					.getOptionalContainerServices().getPortletRegistryService();
//		}
//		if (portletRegistry != null){
			Collection pages = driverConfig.getPages();
			if (pages != null){
				Iterator iPages = pages.iterator();
				while(iPages.hasNext()){
					PageConfig pageConfig = (PageConfig) iPages.next();
					Collection portletIDs = pageConfig.getPortletIds();
					if (portletIDs != null){
						Iterator iPortletIDs = portletIDs.iterator();
						while(iPortletIDs.hasNext()){
							portlets.add(PortletWindowConfig.fromId(iPortletIDs.next().toString()));
						}
					}
				}
			}
			
//			PortletWindowConfig.fromId(((PageConfig)driverConfig.getPages().iterator().next()).getPortletIds().iterator().next().toString());
//			Iterator i = portletRegistry.getRegisteredPortletApplications();
//			while(i.hasNext()){
//				portlets.addAll(((PortletAppDD)portletRegistry.getRegisteredPortletApplications().next()).getPortlets());
//			}
//		}

		// Collection<PortletApplicationConfig> apps =
		// driverConfig.getPortletApplications();
		
		// for (PortletApplicationConfig app : apps) {
		// portlets.addAll(app.getPortlets());
		// }
		return portlets;
	}

	/**
	 * @return the request
	 */
	public HttpServletRequest getRequest() {
		return request;
	}

	/**
	 * @return the response
	 */
	public HttpServletResponse getResponse() {
		return response;
	}

	/**
	 * Gets the saved events.
	 * 
	 * @return the saved events
	 */
	public EventList getSavedEvents() {
		return savedEvents;
	}

	private boolean isDeclaredAsPublishingEvent(QName qname) {
		ServletContext servletContext = PortalRequestContext
				.getContext(request).getServletContext();
		String applicationId = PortletWindowConfig
				.parseContextPath(portletWindow.getId().getStringId());
        String applicationName = applicationId;
        if (applicationId.length() >0 )
        {
            applicationName = applicationId.substring(1);
        }

		String portletName = PortletWindowConfig
				.parsePortletName(portletWindow.getId().getStringId());
		if (portletRegistry == null) {
			portletRegistry = ((PortletContainer) servletContext
					.getAttribute(AttributeKeys.PORTLET_CONTAINER))
					.getOptionalContainerServices().getPortletRegistryService();
		}
		List<? extends EventDefinitionReference> events = null;
		try {
			events = portletRegistry.getPortlet(applicationName,
					portletName).getSupportedPublishingEvents();
		} catch (PortletContainerException e1) {
			e1.printStackTrace();
		}
		if (events != null) {
            String defaultNamespace = portletWindow.getPortletEntity().getPortletDefinition().getApplication().getDefaultNamespace();
            for (EventDefinitionReference ref : events) {
                QName name = ref.getQualifiedName(defaultNamespace);
                if (name == null)
                {
                    continue;
                }
                if (qname.equals(name)) {
                    return true;
                }
            }
		}
		return false;
	}

	private boolean isValueInstanceOfDefinedClass(QName qname,
			Serializable value) {
        PortletApplicationDefinition app = portletWindow.getPortletEntity().getPortletDefinition().getApplication();
        List<? extends EventDefinition> events = app.getEventDefinitions();
        if (events != null) {
            
            
            for (EventDefinition def : events){
                if (def.getQName() != null){
                    if (def.getQName().equals(qname))
                        return value.getClass().getName().equals(
                                def.getValueType());
                }
                else{
                    QName tmp = new QName(app.getDefaultNamespace(),def.getName());
                    if (tmp.equals(qname))
                        return value.getClass().getName().equals(
                                def.getValueType());
                }
            }
        }
		// event not declared
		return true;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -