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;
}
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());
}
}
}
}
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);
}
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;
}
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;
}
Aggregations