Search in sources :

Example 11 with PortletApplicationDefinition

use of org.apache.pluto.container.om.portlet.PortletApplicationDefinition in project uPortal by Jasig.

the class RequestAttributeServiceImpl method getExpectedUserAttributes.

/**
 * Get the list of user attributes the portlet expects.
 *
 * @param request The current request.
 * @param portletWindow The window to get the expected user attributes for.
 * @return The List of expected user attributes for the portlet
 */
protected List<? extends UserAttribute> getExpectedUserAttributes(HttpServletRequest request, final IPortletWindow portletWindow) {
    final IPortletEntity portletEntity = portletWindow.getPortletEntity();
    final IPortletDefinition portletDefinition = portletEntity.getPortletDefinition();
    final PortletApplicationDefinition portletApplicationDescriptor = this.portletDefinitionRegistry.getParentPortletApplicationDescriptor(portletDefinition.getPortletDefinitionId());
    return portletApplicationDescriptor.getUserAttributes();
}
Also used : PortletApplicationDefinition(org.apache.pluto.container.om.portlet.PortletApplicationDefinition) IPortletEntity(org.apereo.portal.portlet.om.IPortletEntity) IPortletDefinition(org.apereo.portal.portlet.om.IPortletDefinition)

Example 12 with PortletApplicationDefinition

use of org.apache.pluto.container.om.portlet.PortletApplicationDefinition in project uPortal by Jasig.

the class CasTicketUserInfoService method isCasProxyTicketRequested.

/**
 * Determine whether the portlet has expects a CAS proxy ticket as one of the user attributes.
 *
 * @param request portlet request
 * @param plutoPortletWindow portlet window
 * @return <code>true</code> if a CAS proxy ticket is expected, <code>false</code> otherwise
 * @throws PortletContainerException if expeced attributes cannot be determined
 */
public boolean isCasProxyTicketRequested(PortletRequest request, PortletWindow plutoPortletWindow) throws PortletContainerException {
    // get the list of requested user attributes
    final HttpServletRequest httpServletRequest = this.portalRequestUtils.getPortletHttpRequest(request);
    final IPortletWindow portletWindow = this.portletWindowRegistry.convertPortletWindow(httpServletRequest, plutoPortletWindow);
    final IPortletEntity portletEntity = portletWindow.getPortletEntity();
    final IPortletDefinition portletDefinition = portletEntity.getPortletDefinition();
    final PortletApplicationDefinition portletApplicationDescriptor = this.portletDefinitionRegistry.getParentPortletApplicationDescriptor(portletDefinition.getPortletDefinitionId());
    // check to see if the proxy ticket key is one of the requested user attributes
    List<? extends UserAttribute> requestedUserAttributes = portletApplicationDescriptor.getUserAttributes();
    for (final UserAttribute userAttributeDD : requestedUserAttributes) {
        final String attributeName = userAttributeDD.getName();
        if (attributeName.equals(this.proxyTicketKey))
            return true;
    }
    // if the proxy ticket key wasn't found in the list of requested attributes
    return false;
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) PortletApplicationDefinition(org.apache.pluto.container.om.portlet.PortletApplicationDefinition) IPortletEntity(org.apereo.portal.portlet.om.IPortletEntity) UserAttribute(org.apache.pluto.container.om.portlet.UserAttribute) IPortletWindow(org.apereo.portal.portlet.om.IPortletWindow) IPortletDefinition(org.apereo.portal.portlet.om.IPortletDefinition)

Example 13 with PortletApplicationDefinition

use of org.apache.pluto.container.om.portlet.PortletApplicationDefinition in project uPortal by Jasig.

the class LocalPortletContextManager method createDefinition.

// Private Methods ---------------------------------------------------------
/**
 * Creates the portlet.xml deployment descriptor representation.
 *
 * @param servletContext the servlet context for which the DD is requested.
 * @return the Portlet Application Deployment Descriptor.
 * @throws PortletContainerException
 */
private PortletApplicationDefinition createDefinition(ServletContext servletContext, String name, String contextPath) throws PortletContainerException {
    PortletApplicationDefinition portletApp = null;
    try {
        InputStream paIn = servletContext.getResourceAsStream(PORTLET_XML);
        InputStream webIn = servletContext.getResourceAsStream(WEB_XML);
        if (paIn == null) {
            throw new PortletContainerException("Cannot find '" + PORTLET_XML + "'. Are you sure it is in the deployed package?");
        }
        if (webIn == null) {
            throw new PortletContainerException("Cannot find '" + WEB_XML + "'. Are you sure it is in the deployed package?");
        }
        portletApp = this.portletAppDescriptorService.read(name, contextPath, paIn);
        this.portletAppDescriptorService.mergeWebDescriptor(portletApp, webIn);
    } catch (Exception ex) {
        throw new PortletContainerException("Exception loading portlet descriptor for: " + servletContext.getServletContextName(), ex);
    }
    return portletApp;
}
Also used : PortletApplicationDefinition(org.apache.pluto.container.om.portlet.PortletApplicationDefinition) InputStream(java.io.InputStream) PortletContainerException(org.apache.pluto.container.PortletContainerException) PortletContainerException(org.apache.pluto.container.PortletContainerException)

Example 14 with PortletApplicationDefinition

use of org.apache.pluto.container.om.portlet.PortletApplicationDefinition in project uPortal by Jasig.

the class PortletEventCoordinatationService method unmarshall.

protected Event unmarshall(IPortletWindow portletWindow, Event event) {
    // TODO make two types of Event impls, one for marshalled data and one for unmarshalled data
    String value = (String) event.getValue();
    final XMLInputFactory xmlInputFactory = this.xmlUtilities.getXmlInputFactory();
    final XMLStreamReader xml;
    try {
        xml = xmlInputFactory.createXMLStreamReader(new StringReader(value));
    } catch (XMLStreamException e) {
        throw new IllegalStateException("Failed to create XMLStreamReader for portlet event: " + event, e);
    }
    // now test if object is jaxb
    final EventDefinition eventDefinitionDD = getEventDefintion(portletWindow, event.getQName());
    final PortletDefinition portletDefinition = portletWindow.getPlutoPortletWindow().getPortletDefinition();
    final PortletApplicationDefinition application = portletDefinition.getApplication();
    final String portletApplicationName = application.getName();
    final ClassLoader loader;
    try {
        loader = portletContextService.getClassLoader(portletApplicationName);
    } catch (PortletContainerException e) {
        throw new IllegalStateException("Failed to get ClassLoader for portlet application: " + portletApplicationName, e);
    }
    final String eventType = eventDefinitionDD.getValueType();
    final Class<? extends Serializable> clazz;
    try {
        clazz = loader.loadClass(eventType).asSubclass(Serializable.class);
    } catch (ClassNotFoundException e) {
        throw new IllegalArgumentException("Declared event type '" + eventType + "' cannot be found in portlet application: " + portletApplicationName, e);
    }
    // TODO cache JAXBContext in registered portlet application
    final JAXBElement<? extends Serializable> result;
    try {
        final JAXBContext jc = JAXBContext.newInstance(clazz);
        final Unmarshaller unmarshaller = jc.createUnmarshaller();
        result = unmarshaller.unmarshal(xml, clazz);
    } catch (JAXBException e) {
        throw new IllegalArgumentException("Cannot create JAXBContext for event type '" + eventType + "' from portlet application: " + portletApplicationName, e);
    }
    return new EventImpl(event.getQName(), result.getValue());
}
Also used : Serializable(java.io.Serializable) XMLStreamReader(javax.xml.stream.XMLStreamReader) PortletApplicationDefinition(org.apache.pluto.container.om.portlet.PortletApplicationDefinition) JAXBException(javax.xml.bind.JAXBException) JAXBContext(javax.xml.bind.JAXBContext) EventDefinition(org.apache.pluto.container.om.portlet.EventDefinition) PortletContainerException(org.apache.pluto.container.PortletContainerException) IPortletDefinition(org.apereo.portal.portlet.om.IPortletDefinition) PortletDefinition(org.apache.pluto.container.om.portlet.PortletDefinition) XMLStreamException(javax.xml.stream.XMLStreamException) EventImpl(org.apereo.portal.portlet.container.EventImpl) StringReader(java.io.StringReader) Unmarshaller(javax.xml.bind.Unmarshaller) XMLInputFactory(javax.xml.stream.XMLInputFactory)

Aggregations

PortletApplicationDefinition (org.apache.pluto.container.om.portlet.PortletApplicationDefinition)14 IPortletDefinition (org.apereo.portal.portlet.om.IPortletDefinition)8 PortletDefinition (org.apache.pluto.container.om.portlet.PortletDefinition)7 QName (javax.xml.namespace.QName)5 IPortletEntity (org.apereo.portal.portlet.om.IPortletEntity)5 PortletContainerException (org.apache.pluto.container.PortletContainerException)4 EventDefinition (org.apache.pluto.container.om.portlet.EventDefinition)3 EventDefinitionReference (org.apache.pluto.container.om.portlet.EventDefinitionReference)3 IPortletWindow (org.apereo.portal.portlet.om.IPortletWindow)3 HttpServletRequest (javax.servlet.http.HttpServletRequest)2 UserAttribute (org.apache.pluto.container.om.portlet.UserAttribute)2 IPortletDefinitionId (org.apereo.portal.portlet.om.IPortletDefinitionId)2 InputStream (java.io.InputStream)1 Serializable (java.io.Serializable)1 StringReader (java.io.StringReader)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Event (javax.portlet.Event)1 ServletContext (javax.servlet.ServletContext)1 JAXBContext (javax.xml.bind.JAXBContext)1