Search in sources :

Example 11 with StartElement

use of javax.xml.stream.events.StartElement in project uPortal by Jasig.

the class ChunkingEventReader method internalNextEvent.

@Override
protected XMLEvent internalNextEvent() throws XMLStreamException {
    XMLEvent event = null;
    //Read from the buffer if there was a peek
    if (this.peekedEvent != null) {
        event = this.peekedEvent;
        this.peekedEvent = null;
        return event;
    }
    final XMLEvent previousEvent = this.getPreviousEvent();
    if (previousEvent != null && previousEvent.isStartDocument()) {
        this.xmlEventWriter.flush();
        this.clearWriter();
    }
    if (this.captureEvent != null) {
        event = this.tryChunking(this.captureEvent);
        this.captureEvent = null;
    } else {
        event = this.getParent().nextEvent();
        if (event.isStartElement()) {
            final StartElement startElement = event.asStartElement();
            event = this.tryChunking(startElement);
        }
    }
    return event;
}
Also used : StartElement(javax.xml.stream.events.StartElement) XMLEvent(javax.xml.stream.events.XMLEvent)

Example 12 with StartElement

use of javax.xml.stream.events.StartElement in project uPortal by Jasig.

the class BasePlaceholderEventSource method readToEndElement.

/**
     * Read {@link XMLEvent}s off the {@link XMLEventReader} until the corresponding {@link
     * EndElement} is found.
     */
protected final void readToEndElement(XMLEventReader eventReader, StartElement event) throws XMLStreamException {
    final Deque<QName> elementStack = new LinkedList<QName>();
    elementStack.push(event.getName());
    while (!elementStack.isEmpty()) {
        final XMLEvent nextEvent = eventReader.nextEvent();
        if (nextEvent.isStartElement()) {
            final StartElement startElement = nextEvent.asStartElement();
            elementStack.push(startElement.getName());
        } else if (nextEvent.isEndElement()) {
            final QName lastStart = elementStack.pop();
            final EndElement endElement = nextEvent.asEndElement();
            if (!lastStart.equals(endElement.getName())) {
                throw new XMLStreamException("Invalid XML Structure, expected EndElement " + lastStart + " but found EndElment " + endElement.getName());
            }
        }
    }
}
Also used : StartElement(javax.xml.stream.events.StartElement) XMLStreamException(javax.xml.stream.XMLStreamException) EndElement(javax.xml.stream.events.EndElement) QName(javax.xml.namespace.QName) XMLEvent(javax.xml.stream.events.XMLEvent) LinkedList(java.util.LinkedList)

Example 13 with StartElement

use of javax.xml.stream.events.StartElement in project uPortal by Jasig.

the class RenderingPipelineIntegrationTest method testRenderingPipeline.

@Test
public void testRenderingPipeline() throws Exception {
    final DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
    final DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();
    final Document doc = builder.newDocument();
    final DocumentFragment headFragment = doc.createDocumentFragment();
    final MockHttpServletRequest request = new MockHttpServletRequest();
    final MockHttpServletResponse response = new MockHttpServletResponse();
    final IPortalUrlBuilder portalUrlBuilder = mock(IPortalUrlBuilder.class);
    final IPortletUrlBuilder portletUrlBuilder = mock(IPortletUrlBuilder.class);
    when(portalUrlBuilder.getUrlString()).thenReturn("URL_PLACEHOLDER");
    when(portletUrlBuilder.getPortalUrlBuilder()).thenReturn(portalUrlBuilder);
    when(portalUrlBuilder.getTargetedPortletUrlBuilder()).thenReturn(portletUrlBuilder);
    when(portalUrlBuilder.getPortletUrlBuilder(any(IPortletWindowId.class))).thenReturn(portletUrlBuilder);
    when(this.resourcesElementsProvider.getResourcesXmlFragment(any(HttpServletRequest.class), eq("/media/skins/respondr/defaultSkin/skin.xml"))).thenReturn(headFragment.getChildNodes());
    when(this.portalUrlProvider.getDefaultUrl(any(HttpServletRequest.class))).thenReturn(portalUrlBuilder);
    when(this.portalUrlProvider.getPortalUrlBuilderByLayoutNode(any(HttpServletRequest.class), any(String.class), any(UrlType.class))).thenReturn(portalUrlBuilder);
    when(this.portalUrlProvider.getPortalUrlBuilderByPortletFName(any(HttpServletRequest.class), any(String.class), any(UrlType.class))).thenReturn(portalUrlBuilder);
    final IPortletWindow portletWindow = mock(IPortletWindow.class);
    when(portletWindowRegistry.getPortletWindow(any(HttpServletRequest.class), any(StartElement.class))).thenReturn(new Tuple<IPortletWindow, StartElement>(portletWindow, null));
    when(portletWindowRegistry.getOrCreateDefaultPortletWindowByLayoutNodeId(any(HttpServletRequest.class), any(String.class))).thenReturn(portletWindow);
    when(portletWindowRegistry.getOrCreateDefaultPortletWindowByFname(any(HttpServletRequest.class), anyString())).thenReturn(portletWindow);
    when(portletWindow.getPortletWindowId()).thenReturn(new MockPortletWindowId("1"));
    final PipelineEventReader<?, ?> eventReader = this.component.getEventReader(request, response);
    for (final Object event : eventReader) {
        logger.debug(toString(event));
    }
    final String mediaType = eventReader.getOutputProperty(OutputKeys.MEDIA_TYPE);
    assertEquals("text/html", mediaType);
}
Also used : DocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory) IPortletUrlBuilder(org.apereo.portal.url.IPortletUrlBuilder) MockHttpServletRequest(org.springframework.mock.web.MockHttpServletRequest) MockPortletWindowId(org.apereo.portal.mock.portlet.om.MockPortletWindowId) Matchers.anyString(org.mockito.Matchers.anyString) Document(org.w3c.dom.Document) IPortalUrlBuilder(org.apereo.portal.url.IPortalUrlBuilder) IPortletWindow(org.apereo.portal.portlet.om.IPortletWindow) HttpServletRequest(javax.servlet.http.HttpServletRequest) MockHttpServletRequest(org.springframework.mock.web.MockHttpServletRequest) StartElement(javax.xml.stream.events.StartElement) DocumentBuilder(javax.xml.parsers.DocumentBuilder) UrlType(org.apereo.portal.url.UrlType) DocumentFragment(org.w3c.dom.DocumentFragment) MockHttpServletResponse(org.springframework.mock.web.MockHttpServletResponse) IPortletWindowId(org.apereo.portal.portlet.om.IPortletWindowId) Test(org.junit.Test)

Example 14 with StartElement

use of javax.xml.stream.events.StartElement in project uPortal by Jasig.

the class ImportExportController method getPortalDataKey.

protected PortalDataKey getPortalDataKey(final BufferedXMLEventReader bufferedXmlEventReader) {
    final StartElement rootElement = StaxUtils.getRootElement(bufferedXmlEventReader);
    final PortalDataKey portalDataKey = new PortalDataKey(rootElement);
    bufferedXmlEventReader.reset();
    return portalDataKey;
}
Also used : StartElement(javax.xml.stream.events.StartElement) PortalDataKey(org.apereo.portal.io.xml.PortalDataKey)

Example 15 with StartElement

use of javax.xml.stream.events.StartElement in project uPortal by Jasig.

the class PortalDataKeyFileProcessor method apply.

@Override
public Object apply(Resource input) {
    final InputStream fis;
    try {
        fis = input.getInputStream();
    } catch (IOException e) {
        if (this.options == null || this.options.isFailOnError()) {
            throw new RuntimeException("Failed to create InputStream for: " + input, e);
        }
        logger.warn("Failed to create InputStream, resource will be ignored: {}", input);
        return null;
    }
    final PortalDataKey portalDataKey;
    final BufferedXMLEventReader xmlEventReader;
    try {
        xmlEventReader = new BufferedXMLEventReader(this.xmlInputFactory.createXMLEventReader(fis), -1);
        final StartElement rootElement = StaxUtils.getRootElement(xmlEventReader);
        portalDataKey = new PortalDataKey(rootElement);
    } catch (Exception e) {
        if (this.options != null && !this.options.isIngoreNonDataFiles()) {
            throw new RuntimeException("Failed to parse: " + input, e);
        }
        logger.warn("Failed to parse resource, it will be ignored: {}", input);
        return null;
    } finally {
        IOUtils.closeQuietly(fis);
    }
    xmlEventReader.reset();
    final IPortalDataType portalDataType = this.dataKeyTypes.get(portalDataKey);
    if (portalDataType == null) {
        Iterator<PortalDataKey> iter = dataKeyTypes.keySet().iterator();
        StringBuffer potentialKeys = new StringBuffer();
        potentialKeys.append("---------------- Potential Keys To Match -------------------");
        while (iter.hasNext()) {
            PortalDataKey key = iter.next();
            potentialKeys.append(key + "\n");
        }
        logger.warn("{}No IPortalDataType configured for {}, the resource will be ignored: {}", potentialKeys, portalDataKey, input);
        return null;
    }
    //Allow the PortalDataType to do any necessary post-processing of the input, needed as some types require extra work
    final String resourceUri = ResourceUtils.getResourceUri(input);
    final Set<PortalDataKey> processedPortalDataKeys = portalDataType.postProcessPortalDataKey(resourceUri, portalDataKey, xmlEventReader);
    xmlEventReader.reset();
    for (final PortalDataKey processedPortalDataKey : processedPortalDataKeys) {
        //Add the PortalDataKey and File into the map
        Queue<Resource> queue = this.dataToImport.get(processedPortalDataKey);
        if (queue == null) {
            queue = ConcurrentMapUtils.putIfAbsent(this.dataToImport, processedPortalDataKey, new ConcurrentLinkedQueue<Resource>());
        }
        queue.offer(input);
        count.incrementAndGet();
    }
    return null;
}
Also used : InputStream(java.io.InputStream) Resource(org.springframework.core.io.Resource) IOException(java.io.IOException) IOException(java.io.IOException) BufferedXMLEventReader(org.apereo.portal.xml.stream.BufferedXMLEventReader) StartElement(javax.xml.stream.events.StartElement) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue)

Aggregations

StartElement (javax.xml.stream.events.StartElement)30 XMLEvent (javax.xml.stream.events.XMLEvent)20 QName (javax.xml.namespace.QName)11 XMLEventReader (javax.xml.stream.XMLEventReader)10 XMLStreamException (javax.xml.stream.XMLStreamException)9 Attribute (javax.xml.stream.events.Attribute)8 EndElement (javax.xml.stream.events.EndElement)8 XMLInputFactory (javax.xml.stream.XMLInputFactory)7 IOException (java.io.IOException)4 ArrayList (java.util.ArrayList)4 InputStream (java.io.InputStream)3 LinkedList (java.util.LinkedList)3 JAXBContext (javax.xml.bind.JAXBContext)3 Unmarshaller (javax.xml.bind.Unmarshaller)3 EventFilter (javax.xml.stream.EventFilter)3 Characters (javax.xml.stream.events.Characters)3 IPortletWindow (org.apereo.portal.portlet.om.IPortletWindow)3 AbstractGCEvent (com.tagtraum.perf.gcviewer.model.AbstractGCEvent)2 GCEvent (com.tagtraum.perf.gcviewer.model.GCEvent)2 BufferedInputStream (java.io.BufferedInputStream)2