Hallo,
ist es irgendwie möglich den Source auf der eine XMLEventReader-Implementation läuft herauszufinden, also bspw. die Datei? Im Interface ist ja nichts vorgesehen und ansonsten finde ich auch keine Möglichkeit, leider.
Ansonsten muss ich das im Konstruktor einem Callable als Parameter mitgeben, aber irgendwo wär das doppelt gemoppelt:
und das Dumme ist auch, dass ich aus der call()-Methode des Callables die jeweils passende static-Methode aufrufen muss und static Variablen ja auch nichts in einem Callable zu tun haben sollten, d.h. ich müsste die Methoden kopieren und einmal mit und einmal ohne static modifizierer angebe!? Scheint mir sehr gewagt:
D.h. ich will einmal von ausen für den Konstruktor die static Methoden aufrufen können und einmal intern Duplikate der Methoden als nicht static. Und der Methodenaufruf soll halt mit den darunterliegenden Datenstrukturen erfolgen (Datei oder ein varargs XMLEvent-Parameter) und jeweils die richtige aufgerufen werden.
Viele Grüße,
Johannes
ist es irgendwie möglich den Source auf der eine XMLEventReader-Implementation läuft herauszufinden, also bspw. die Datei? Im Interface ist ja nichts vorgesehen und ansonsten finde ich auch keine Möglichkeit, leider.
Ansonsten muss ich das im Konstruktor einem Callable als Parameter mitgeben, aber irgendwo wär das doppelt gemoppelt:
Java:
public XMLShredder(final IWriteTransaction paramWtx, final XMLEventReader paramReader,
final boolean paramAddAsFirstChild, final Object paramData, final boolean paramCommit) throws TreetankUsageException {
mWtx = paramWtx;
mReader = paramReader;
mFirstChildAppend = paramAddAsFirstChild;
mCommit = paramCommit;
if (paramData instanceof File) {
mFile = (File)paramData;
} else if (paramData instanceof XMLEvent[]) {
mEvents = (XMLEvent[])paramData;
}
}
und das Dumme ist auch, dass ich aus der call()-Methode des Callables die jeweils passende static-Methode aufrufen muss und static Variablen ja auch nichts in einem Callable zu tun haben sollten, d.h. ich müsste die Methoden kopieren und einmal mit und einmal ohne static modifizierer angebe!? Scheint mir sehr gewagt:
Java:
/**
* Create a new StAX reader on a file.
*
* @param paramFile
* The XML file to parse.
* @return an {@link XMLEventReader}.
* @throws IOException
* In case of any I/O error.
* @throws XMLStreamException
* In case of any XML parser error.
*/
public static synchronized XMLEventReader createReader(final File paramFile) throws IOException,
XMLStreamException {
final XMLInputFactory factory = XMLInputFactory.newInstance();
factory.setProperty(XMLInputFactory.SUPPORT_DTD, false);
final InputStream in = new FileInputStream(paramFile);
return factory.createXMLEventReader(in);
}
/**
* Create a new StAX reader based on a List of {@link XMLEvent}s.
*
* @param paramEvents
* {@link XMLEvent}s.
* @return an {@link XMLEventReader}.
* @throws IOException
* In case of any I/O error.
* @throws XMLStreamException
* In case of any XML parser error.
*/
public static synchronized XMLEventReader createListReader(final XMLEvent... paramEvents)
throws IOException, XMLStreamException {
return new ListEventReader(Arrays.asList(paramEvents));
}
D.h. ich will einmal von ausen für den Konstruktor die static Methoden aufrufen können und einmal intern Duplikate der Methoden als nicht static. Und der Methodenaufruf soll halt mit den darunterliegenden Datenstrukturen erfolgen (Datei oder ein varargs XMLEvent-Parameter) und jeweils die richtige aufgerufen werden.
Viele Grüße,
Johannes