remove a bunch of unused classes

This commit is contained in:
Gavin King 2022-02-02 22:58:51 +01:00
parent 11f784e23b
commit 0f6295e6e1
17 changed files with 1 additions and 1173 deletions

View File

@ -1,144 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.internal.util;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.security.AccessController;
import java.security.PrivilegedAction;
import org.hibernate.HibernateException;
import org.hibernate.internal.util.collections.ArrayHelper;
/**
* An object that is shallow-cloneable
*
* @author Steve Ebersole
*/
public class Cloneable {
private static final Object[] READER_METHOD_ARGS = ArrayHelper.EMPTY_OBJECT_ARRAY;
/**
* Essentially performs a shallow copy of this SessionEventListenerConfig
* instance; meaning the SessionEventListenerConfig itself is cloned, but
* the individual listeners are <b>not</b> cloned.
*
* @return The SessionEventListenerConfig shallow copy.
*/
public Object shallowCopy() {
return AccessController.doPrivileged(
new PrivilegedAction() {
@Override
public Object run() {
return copyListeners();
}
}
);
}
/**
* Checks to ensure the SessionEventListenerConfig is fully
* configured (basically, that none of the listeners is null).
*
* @throws HibernateException If the SessionEventListenerConfig
* is not fully configured.
*/
public void validate() throws HibernateException {
AccessController.doPrivileged(
new PrivilegedAction() {
@Override
public Object run() {
checkListeners();
return null;
}
}
);
}
private Object copyListeners() {
Object copy = null;
BeanInfo beanInfo = null;
try {
beanInfo = Introspector.getBeanInfo( getClass(), Object.class );
internalCheckListeners( beanInfo );
copy = getClass().newInstance();
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
for ( PropertyDescriptor pd : pds ) {
try {
pd.getWriteMethod().invoke(
copy,
pd.getReadMethod().invoke( this, READER_METHOD_ARGS )
);
}
catch (Throwable t) {
throw new HibernateException( "Unable to copy listener [" + pd.getName() + "]" );
}
}
}
catch (Exception t) {
throw new HibernateException( "Unable to copy listeners", t );
}
finally {
if ( beanInfo != null ) {
// release the jdk internal caches every time to ensure this
// plays nicely with destroyable class-loaders
Introspector.flushFromCaches( getClass() );
}
}
return copy;
}
private void checkListeners() {
BeanInfo beanInfo = null;
try {
beanInfo = Introspector.getBeanInfo( getClass(), Object.class );
internalCheckListeners( beanInfo );
}
catch (IntrospectionException t) {
throw new HibernateException( "Unable to validate listener config", t );
}
finally {
if ( beanInfo != null ) {
// release the jdk internal caches every time to ensure this
// plays nicely with destroyable class-loaders
Introspector.flushFromCaches( getClass() );
}
}
}
private void internalCheckListeners(BeanInfo beanInfo) {
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
try {
for ( PropertyDescriptor pd : pds ) {
final Object listener = pd.getReadMethod().invoke( this, READER_METHOD_ARGS );
if ( listener == null ) {
throw new HibernateException( "Listener [" + pd.getName() + "] was null" );
}
if ( listener.getClass().isArray() ) {
Object[] listenerArray = (Object[]) listener;
for ( Object aListenerArray : listenerArray ) {
if ( aListenerArray == null ) {
throw new HibernateException( "Listener in [" + pd.getName() + "] was null" );
}
}
}
}
}
catch (HibernateException e) {
throw e;
}
catch (Throwable t) {
throw new HibernateException( "Unable to validate listener config" );
}
}
}

View File

@ -1,86 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
*/
package org.hibernate.internal.util.collections;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Set;
import java.util.Spliterator;
import java.util.Spliterators;
/**
* A collection of values that is simultaneously a List (ordered) and a Set (unique)
*
* @author Steve Ebersole
*/
public class UniqueList<E> extends AbstractList<E> implements Set<E>, List<E> {
private final List<E> elements;
public UniqueList() {
this( new ArrayList<>() );
}
public UniqueList(List<E> elements) {
this.elements = elements;
}
public UniqueList(int size) {
this.elements = CollectionHelper.arrayList( size );
}
@Override
public E get(int index) {
return elements.get( index );
}
@Override
public void add(int index, E element) {
if ( elements.contains( element ) ) {
return;
}
elements.add( index, element );
}
@Override
public int size() {
return elements.size();
}
@Override
public Iterator<E> iterator() {
return elements.iterator();
}
@Override
public ListIterator<E> listIterator() {
return elements.listIterator();
}
@Override
public ListIterator<E> listIterator(int index) {
return elements.listIterator( index );
}
@Override
public Object[] toArray() {
return elements.toArray();
}
@Override
@SuppressWarnings("SuspiciousToArrayCall")
public <T> T[] toArray(T[] a) {
return elements.toArray( a );
}
@Override
public Spliterator<E> spliterator() {
return Spliterators.spliterator( this, Spliterator.ORDERED );
}
}

View File

@ -1,106 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
*/
package org.hibernate.internal.util.io;
import java.io.IOException;
import java.io.Reader;
/**
* @author Steve Ebersole
*/
public class CharSequenceReader extends Reader {
private CharSequence charSequence;
private int length;
private int position = 0;
private int mark = 0;
public CharSequenceReader(CharSequence charSequence) {
this.charSequence = charSequence;
this.length = charSequence.length();
}
@Override
public boolean markSupported() {
return true;
}
@Override
public void mark(int readAheadLimit) throws IOException {
this.mark = this.position;
}
public int read() throws IOException {
verifyOpen();
if ( this.position >= this.length ) {
return -1;
}
return this.charSequence.charAt( this.position++ );
}
protected void verifyOpen() throws IOException {
if ( charSequence == null ) {
throw new IOException( "Stream closed" );
}
}
@Override
public int read(char[] dest, int off, int len) throws IOException {
verifyOpen();
if ( this.position >= this.length ) {
return -1;
}
if ((off < 0) || (off > dest.length) || (len < 0) ||
((off + len) > dest.length) || ((off + len) < 0)) {
throw new IndexOutOfBoundsException();
}
else if (len == 0) {
return 0;
}
int n = Math.min( length - position, len );
for ( int i = 0; i < n; i++ ) {
dest[i] = charSequence.charAt( n );
}
position += n;
return n;
}
public void reset() {
this.position = this.mark;
}
public long skip(long n) {
if ( n < 0L ) {
throw new IllegalArgumentException( "Number of characters to skip must be greater than zero: " + n );
}
if ( this.position >= length ) {
return -1L;
}
else {
int dest = (int)Math.min(this.charSequence.length(), (long)this.position + n);
int count = dest - this.position;
this.position = dest;
return count;
}
}
@Override
public void close() throws IOException {
charSequence = null;
mark = 0;
position = 0;
}
}

View File

@ -1,62 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
*/
package org.hibernate.internal.util.streams;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.BinaryOperator;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collector;
/**
* @author Steve Ebersole
*/
public class GenericArrayCollector<T> implements Collector<T, List<T>, T[]> {
public static <T> GenericArrayCollector<T> forType(Class<T> type) {
return new GenericArrayCollector<>( type );
}
private final Class<T> collectedType;
public GenericArrayCollector(Class<T> collectedType) {
this.collectedType = collectedType;
}
@Override
public Supplier<List<T>> supplier() {
return ArrayList::new;
}
@Override
public BiConsumer<List<T>, T> accumulator() {
return List::add;
}
@Override
public BinaryOperator<List<T>> combiner() {
return (ts, ts2) -> {
ts.addAll( ts2 );
return ts;
};
}
@Override
@SuppressWarnings("unchecked")
public Function<List<T>, T[]> finisher() {
return ts -> ts.toArray( (T[]) Array.newInstance( collectedType, ts.size() ) );
}
@Override
public Set<Characteristics> characteristics() {
return EnumSet.of( Characteristics.CONCURRENT );
}
}

View File

@ -1,57 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
*/
package org.hibernate.internal.util.streams;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.BinaryOperator;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collector;
/**
* A Java 8 Stream Collector for collecting Strings into a String[].
*
* @author Steve Ebersole
*/
public class StingArrayCollector implements Collector<String, List<String>, String[]> {
/**
* Singleton access
*/
public static final StingArrayCollector INSTANCE = new StingArrayCollector();
@Override
public Supplier<List<String>> supplier() {
return ArrayList::new;
}
@Override
public BiConsumer<List<String>, String> accumulator() {
return List::add;
}
@Override
public BinaryOperator<List<String>> combiner() {
return (strings, strings2) -> {
strings.addAll( strings2 );
return strings;
};
}
@Override
public Function<List<String>, String[]> finisher() {
return strings -> strings.toArray( new String[strings.size()] );
}
@Override
public Set<Characteristics> characteristics() {
return EnumSet.of( Characteristics.CONCURRENT );
}
}

View File

@ -1,21 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
*/
package org.hibernate.internal.util.streams;
/**
* @author Steve Ebersole
*/
public class StreamUtils {
public static StingArrayCollector toStringArray() {
return StingArrayCollector.INSTANCE;
}
public static <T> GenericArrayCollector<T> toArray(Class<T> collectedType) {
return new GenericArrayCollector<>( collectedType );
}
}

View File

@ -1,130 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.internal.util.xml;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.EntityDeclaration;
import javax.xml.stream.events.EntityReference;
import javax.xml.stream.events.XMLEvent;
import javax.xml.stream.util.EventReaderDelegate;
/**
* Base for XMLEventReader that implements the {@link #getElementText()} and {@link #nextTag()} APIs in a
* way that is agnostic from the rest of the XMLEventReader implementation. Both will use the subclasses
* {@link #internalNextEvent()} as the exclusive way to read events.
*
* Note, copied from the uPortal project by permission of author. See
* https://github.com/Jasig/uPortal/blob/master/uportal-war/src/main/java/org/jasig/portal/xml/stream/BaseXMLEventReader.java
*
* @author Eric Dalquist
*/
public abstract class BaseXMLEventReader extends EventReaderDelegate {
private XMLEvent previousEvent;
public BaseXMLEventReader(XMLEventReader reader) {
super(reader);
}
/**
* Subclass's version of {@link #nextEvent()}, called by {@link #next()}
*/
protected abstract XMLEvent internalNextEvent() throws XMLStreamException;
/**
* @return The XMLEvent returned by the last call to {@link #internalNextEvent()}
*/
protected final XMLEvent getPreviousEvent() {
return this.previousEvent;
}
@Override
public final XMLEvent nextEvent() throws XMLStreamException {
this.previousEvent = this.internalNextEvent();
return this.previousEvent;
}
/* (non-Javadoc)
* @see java.util.Iterator#next()
*/
@Override
public final Object next() {
try {
return this.nextEvent();
}
catch (XMLStreamException e) {
return null;
}
}
/* (non-Javadoc)
* @see javax.xml.stream.XMLEventReader#getElementText()
*/
@Override
public final String getElementText() throws XMLStreamException {
XMLEvent event = this.previousEvent;
if (event == null) {
throw new XMLStreamException("Must be on START_ELEMENT to read next text, element was null");
}
if (!event.isStartElement()) {
throw new XMLStreamException("Must be on START_ELEMENT to read next text", event.getLocation());
}
final StringBuilder text = new StringBuilder();
while (!event.isEndDocument()) {
switch (event.getEventType()) {
case XMLStreamConstants.CHARACTERS:
case XMLStreamConstants.SPACE:
case XMLStreamConstants.CDATA: {
final Characters characters = event.asCharacters();
text.append(characters.getData());
break;
}
case XMLStreamConstants.ENTITY_REFERENCE: {
final EntityReference entityReference = (EntityReference)event;
final EntityDeclaration declaration = entityReference.getDeclaration();
text.append(declaration.getReplacementText());
break;
}
case XMLStreamConstants.COMMENT:
case XMLStreamConstants.PROCESSING_INSTRUCTION: {
//Ignore
break;
}
default: {
throw new XMLStreamException("Unexpected event type '" + XMLStreamConstantsUtils.getEventName(event.getEventType()) + "' encountered. Found event: " + event, event.getLocation());
}
}
event = this.nextEvent();
}
return text.toString();
}
/* (non-Javadoc)
* @see javax.xml.stream.XMLEventReader#nextTag()
*/
@Override
public final XMLEvent nextTag() throws XMLStreamException {
XMLEvent event = this.nextEvent();
while ((event.isCharacters() && event.asCharacters().isWhiteSpace())
|| event.isProcessingInstruction()
|| event.getEventType() == XMLStreamConstants.COMMENT) {
event = this.nextEvent();
}
if (!event.isStartElement() && event.isEndElement()) {
throw new XMLStreamException("Unexpected event type '" + XMLStreamConstantsUtils.getEventName(event.getEventType()) + "' encountered. Found event: " + event, event.getLocation());
}
return event;
}
}

View File

@ -1,178 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.internal.util.xml;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.XMLEvent;
/**
* Buffers XML events for later re-reading
*
* Note, copied from the uPortal project by permission of author. See
* https://github.com/Jasig/uPortal/blob/master/uportal-war/src/main/java/org/jasig/portal/xml/stream/BufferedXMLEventReader.java
*
* @author Eric Dalquist
*/
public class BufferedXMLEventReader extends BaseXMLEventReader {
private final LinkedList<XMLEvent> eventBuffer = new LinkedList<>();
private int eventLimit;
private ListIterator<XMLEvent> bufferReader;
/**
* Create new buffering reader, no buffering is done until {@link #mark(int)} is called.
*/
public BufferedXMLEventReader(XMLEventReader reader) {
super(reader);
}
/**
* Create new buffering reader. Calls {@link #mark(int)} with the specified event limit
* @see #mark(int)
*/
public BufferedXMLEventReader(XMLEventReader reader, int eventLimit) {
super(reader);
this.eventLimit = eventLimit;
}
/**
* @return A copy of the current buffer
*/
public List<XMLEvent> getBuffer() {
return new ArrayList<>(this.eventBuffer);
}
/* (non-Javadoc)
* @see org.jasig.portal.xml.stream.BaseXMLEventReader#internalNextEvent()
*/
@Override
protected XMLEvent internalNextEvent() throws XMLStreamException {
//If there is an iterator to read from reset was called, use the iterator
//until it runs out of events.
if (this.bufferReader != null) {
final XMLEvent event = this.bufferReader.next();
//If nothing left in the iterator, remove the reference and fall through to direct reading
if (!this.bufferReader.hasNext()) {
this.bufferReader = null;
}
return event;
}
//Get the next event from the underlying reader
final XMLEvent event = this.getParent().nextEvent();
//if buffering add the event
if (this.eventLimit != 0) {
this.eventBuffer.offer(event);
//If limited buffer size and buffer is too big trim the buffer.
if (this.eventLimit > 0 && this.eventBuffer.size() > this.eventLimit) {
this.eventBuffer.poll();
}
}
return event;
}
@Override
public boolean hasNext() {
return this.bufferReader != null || super.hasNext();
}
@Override
public XMLEvent peek() throws XMLStreamException {
if (this.bufferReader != null) {
final XMLEvent event = this.bufferReader.next();
this.bufferReader.previous(); //move the iterator back
return event;
}
return super.peek();
}
/**
* Same as calling {@link #mark(int)} with -1.
*/
public void mark() {
this.mark(-1);
}
/**
* Start buffering events
* @param eventLimit the maximum number of events to buffer. -1 will buffer all events, 0 will buffer no events.
*/
public void mark(int eventLimit) {
this.eventLimit = eventLimit;
//Buffering no events now, clear the buffer and buffered reader
if (this.eventLimit == 0) {
this.eventBuffer.clear();
this.bufferReader = null;
}
//Buffering limited set of events, lets trim the buffer if needed
else if (this.eventLimit > 0) {
//If there is an iterator check its current position and calculate the new iterator start position
int iteratorIndex = 0;
if (this.bufferReader != null) {
final int nextIndex = this.bufferReader.nextIndex();
iteratorIndex = Math.max(0, nextIndex - (this.eventBuffer.size() - this.eventLimit));
}
//Trim the buffer until it is not larger than the limit
while (this.eventBuffer.size() > this.eventLimit) {
this.eventBuffer.poll();
}
//If there is an iterator re-create it using the newly calculated index
if (this.bufferReader != null) {
this.bufferReader = this.eventBuffer.listIterator(iteratorIndex);
}
}
}
/**
* Reset the reader to these start of the buffered events.
*/
public void reset() {
if (this.eventBuffer.isEmpty()) {
this.bufferReader = null;
}
else {
this.bufferReader = this.eventBuffer.listIterator();
}
}
@Override
public void close() throws XMLStreamException {
this.mark(0);
super.close();
}
/**
* @return The number of events in the buffer.
*/
public int bufferSize() {
return this.eventBuffer.size();
}
/**
* If reading from the buffer after a {@link #reset()} call an {@link IllegalStateException} will be thrown.
*/
@Override
public void remove() {
if (this.bufferReader != null && this.bufferReader.hasNext()) {
throw new IllegalStateException("Cannot remove a buffered element");
}
super.remove();
}
}

View File

@ -1,87 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.internal.util.xml;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.internal.CoreMessageLogger;
import org.jboss.logging.Logger;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXParseException;
/**
* Implements an {@link ErrorHandler} that mainly just logs errors/warnings. However, it does track
* the errors it encounters and makes them available via {@link #getErrors}.
*
* @author Steve Ebersole
* @author Hardy Ferentschik
*/
public class ErrorLogger implements ErrorHandler, Serializable {
private static final CoreMessageLogger LOG = Logger.getMessageLogger(
CoreMessageLogger.class,
ErrorLogger.class.getName()
);
// lazily initialized
private List<SAXParseException> errors;
private String file;
public ErrorLogger() {
}
public ErrorLogger(String file) {
this.file = file;
}
@Override
public void error(SAXParseException error) {
if ( this.errors == null ) {
errors = new ArrayList<>();
}
errors.add( error );
}
@Override
public void fatalError(SAXParseException error) {
error( error );
}
@Override
public void warning(SAXParseException warn) {
LOG.parsingXmlWarning( warn.getLineNumber(), warn.getMessage() );
}
public List<SAXParseException> getErrors() {
return errors;
}
public void reset() {
errors = null;
}
public boolean hasErrors() {
return errors != null && errors.size() > 0;
}
public void logErrors() {
if ( errors != null ) {
for ( SAXParseException e : errors ) {
if ( file == null ) {
LOG.parsingXmlError( e.getLineNumber(), e.getMessage() );
}
else {
LOG.parsingXmlErrorForFile( file, e.getLineNumber(), e.getMessage() );
}
}
}
}
}

View File

@ -1,123 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.internal.util.xml;
import java.util.Deque;
import java.util.LinkedList;
import java.util.NoSuchElementException;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
/**
* Base class for {@link XMLEventReader}s that want to modify or remove events from the reader stream.
* If a {@link StartElement} event is removed the subclass's {@link #filterEvent(XMLEvent, boolean)} will
* not see any events until after the matching {@link EndElement} event.
*
* Note, copied from the uPortal project by permission of author. See
* https://github.com/Jasig/uPortal/blob/master/uportal-war/src/main/java/org/jasig/portal/xml/stream/FilteringXMLEventReader.java
*
* @author Eric Dalquist
*/
public abstract class FilteringXMLEventReader extends BaseXMLEventReader {
private final Deque<QName> prunedElements = new LinkedList<>();
private XMLEvent peekedEvent;
public FilteringXMLEventReader(XMLEventReader reader) {
super(reader);
}
@Override
protected final XMLEvent internalNextEvent() throws XMLStreamException {
return this.internalNext(false);
}
@Override
public boolean hasNext() {
try {
return peekedEvent != null || (super.hasNext() && this.peek() != null);
}
catch (XMLStreamException e) {
throw new RuntimeException(e.getMessage(), e);
}
catch (NoSuchElementException e) {
return false;
}
}
@Override
public final XMLEvent peek() throws XMLStreamException {
if (peekedEvent != null) {
return peekedEvent;
}
peekedEvent = internalNext(true);
return peekedEvent;
}
protected final XMLEvent internalNext(boolean peek) throws XMLStreamException {
XMLEvent event = null;
if (peekedEvent != null) {
event = peekedEvent;
peekedEvent = null;
return event;
}
do {
event = super.getParent().nextEvent();
//If there are pruned elements in the queue filtering events is still needed
if (!prunedElements.isEmpty()) {
//If another start element add it to the queue
if (event.isStartElement()) {
final StartElement startElement = event.asStartElement();
prunedElements.push(startElement.getName());
}
//If end element pop the newest name of the queue and double check that the start/end elements match up
else if (event.isEndElement()) {
final QName startElementName = prunedElements.pop();
final EndElement endElement = event.asEndElement();
final QName endElementName = endElement.getName();
if (!startElementName.equals(endElementName)) {
throw new IllegalArgumentException("Malformed XMLEvent stream. Expected end element for " + startElementName + " but found end element for " + endElementName);
}
}
event = null;
}
else {
final XMLEvent filteredEvent = this.filterEvent(event, peek);
//If the event is being removed and it is a start element all elements until the matching
//end element need to be removed as well
if (filteredEvent == null && event.isStartElement()) {
final StartElement startElement = event.asStartElement();
final QName name = startElement.getName();
prunedElements.push(name);
}
event = filteredEvent;
}
}
while (event == null);
return event;
}
/**
* @param event The current event
* @param peek If the event is from a {@link #peek()} call
* @return The event to return, if null is returned the event is dropped from the stream and the next event will be used.
*/
protected abstract XMLEvent filterEvent(XMLEvent event, boolean peek);
}

View File

@ -1,32 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.internal.util.xml;
import java.io.Serializable;
/**
* Describes the origin of an xml document
*
* @author Steve Ebersole
*/
public interface Origin extends Serializable {
/**
* Retrieve the type of origin. This is not a discrete set, but might be something like
* {@code file} for file protocol URLs, or {@code resource} for classpath resource lookups.
*
* @return The origin type.
*/
String getType();
/**
* The name of the document origin. Interpretation is relative to the type, but might be the
* resource name or file URL.
*
* @return The name.
*/
String getName();
}

View File

@ -1,34 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.internal.util.xml;
import java.io.Serializable;
/**
* Basic implementation of {@link Origin}
*
* @author Steve Ebersole
*/
public class OriginImpl implements Origin, Serializable {
private final String type;
private final String name;
public OriginImpl(String type, String name) {
this.type = type;
this.name = name;
}
@Override
public String getType() {
return type;
}
@Override
public String getName() {
return name;
}
}

View File

@ -1,29 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.internal.util.xml;
import org.hibernate.HibernateException;
/**
* @author Steve Ebersole
*
* @deprecated Migrating to boot package; all usages will eventually be replaced by
* {@link org.hibernate.boot.UnsupportedOrmXsdVersionException}
*/
@Deprecated
public class UnsupportedOrmXsdVersionException extends HibernateException {
public UnsupportedOrmXsdVersionException(String requestedVersion, Origin origin) {
super(
String.format(
"Encountered unsupported orm.xml xsd version [%s] in mapping document [type=%s, name=%s]",
requestedVersion,
origin.getType(),
origin.getName()
)
);
}
}

View File

@ -1,55 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.internal.util.xml;
import javax.xml.stream.XMLStreamConstants;
/**
*
*
*
*
* Note, copied from the uPortal project by permission of author. See
* https://github.com/Jasig/uPortal/blob/master/uportal-war/src/main/java/org/jasig/portal/xml/stream/XMLStreamConstantsUtils.java
*
* @author Eric Dalquist
*/
public final class XMLStreamConstantsUtils {
private XMLStreamConstantsUtils() {
}
/**
* Get the human readable event name for the numeric event id
*/
public static String getEventName(int eventId) {
switch (eventId) {
case XMLStreamConstants.START_ELEMENT:
return "StartElementEvent";
case XMLStreamConstants.END_ELEMENT:
return "EndElementEvent";
case XMLStreamConstants.PROCESSING_INSTRUCTION:
return "ProcessingInstructionEvent";
case XMLStreamConstants.CHARACTERS:
return "CharacterEvent";
case XMLStreamConstants.COMMENT:
return "CommentEvent";
case XMLStreamConstants.START_DOCUMENT:
return "StartDocumentEvent";
case XMLStreamConstants.END_DOCUMENT:
return "EndDocumentEvent";
case XMLStreamConstants.ENTITY_REFERENCE:
return "EntityReferenceEvent";
case XMLStreamConstants.ATTRIBUTE:
return "AttributeBase";
case XMLStreamConstants.DTD:
return "DTDEvent";
case XMLStreamConstants.CDATA:
return "CDATA";
}
return "UNKNOWN_EVENT_TYPE";
}
}

View File

@ -1,24 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.internal.util.xml;
import org.hibernate.HibernateException;
/**
* An error using XML infrastructure (jaxp, stax, etc).
*
* @author Steve Ebersole
*/
public class XmlInfrastructureException extends HibernateException {
public XmlInfrastructureException(String message) {
super( message );
}
public XmlInfrastructureException(String message, Throwable root) {
super( message, root );
}
}

View File

@ -10,7 +10,6 @@ import org.hibernate.InvalidMappingException;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.BootstrapServiceRegistry;
import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
import org.hibernate.internal.util.xml.UnsupportedOrmXsdVersionException;
import org.hibernate.testing.TestForIssue;
import org.hibernate.testing.junit4.BaseUnitTestCase;
@ -30,7 +29,5 @@ public class NonExistentOrmVersionTest extends BaseUnitTestCase {
}
catch ( InvalidMappingException expected ) {
}
catch ( UnsupportedOrmXsdVersionException expected ) {
}
}
}

View File

@ -10,7 +10,6 @@ import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
import org.hibernate.internal.CoreMessageLogger;
import org.hibernate.internal.util.xml.ErrorLogger;
import org.hibernate.testing.TestForIssue;
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
@ -36,7 +35,7 @@ public class OrmVersion1SupportedTest extends BaseCoreFunctionalTestCase {
public LoggerInspectionRule logInspection = new LoggerInspectionRule(
Logger.getMessageLogger(
CoreMessageLogger.class,
ErrorLogger.class.getName()
"org.hibernate.internal.util.xml.ErrorLogger"
)
);