1
package com.eucalyptus.binding;
3
import java.io.ByteArrayInputStream;
4
import java.io.InputStream;
5
import java.util.concurrent.TimeUnit;
6
import java.util.concurrent.locks.Condition;
7
import java.util.concurrent.locks.Lock;
8
import javax.xml.stream.XMLInputFactory;
9
import javax.xml.stream.XMLOutputFactory;
10
import javax.xml.stream.XMLStreamException;
11
import javax.xml.stream.XMLStreamReader;
12
import org.apache.axiom.om.OMAbstractFactory;
13
import org.apache.axiom.om.OMException;
14
import org.apache.axiom.om.OMFactory;
15
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
16
import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
17
import org.apache.axiom.soap.SOAPFactory;
19
public class HoldMe implements Lock {
20
public static final String OM_FACTORY_NAME_PROPERTY = "om.factory";
21
public static final String SOAP11_FACTORY_NAME_PROPERTY = "soap11.factory";
22
public static final String SOAP12_FACTORY_NAME_PROPERTY = "soap12.factory";
23
private static final String DEFAULT_OM_FACTORY_CLASS_NAME = "org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory";
24
private static final String DEFAULT_SOAP11_FACTORY_CLASS_NAME = "org.apache.axiom.soap.impl.llom.soap11.SOAP11Factory";
25
private static final String DEFAULT_SOAP12_FACTORY_CLASS_NAME = "org.apache.axiom.soap.impl.llom.soap12.SOAP12Factory";
27
System.setProperty( "javax.xml.stream.XMLInputFactory", "com.ctc.wstx.stax.WstxInputFactory" );
28
System.setProperty( "javax.xml.stream.XMLOutputFactory", "com.ctc.wstx.stax.WstxOutputFactory" );
29
System.setProperty( "javax.xml.stream.XMLEventFactory", "com.ctc.wstx.stax.WstxEventFactory" );
30
System.setProperty( "org.jibx.runtime.impl.parser", "org.jibx.runtime.impl.StAXReaderFactory" );
31
// System.setProperty( "org.jibx.runtime.impl.parser", "org.jibx.runtime.impl.XMLPullReaderFactory" );
33
private static XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance( );
34
private static XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance( );
36
public static Lock canHas = maybeGetLock( );
37
public static boolean reuse = true;
40
public void lock( ) {}
42
private static Lock maybeGetLock( ) {
44
// return new ReentrantLock( );
52
public void lockInterruptibly( ) throws InterruptedException {}
55
public Condition newCondition( ) {
60
public boolean tryLock( ) {
65
public boolean tryLock( long arg0, TimeUnit arg1 ) throws InterruptedException {
70
public void unlock( ) {}
72
public static OMFactory getDOOMFactory( ) {
74
return DOOMAbstractFactory.getOMFactory( );
75
else return new org.apache.axiom.om.impl.dom.factory.OMDOMFactory( );
78
public static SOAPFactory getDOOMSOAP11Factory( ) {
80
return DOOMAbstractFactory.getSOAP11Factory( );
81
else return new org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory( );
84
public static SOAPFactory getDOOMSOAP12Factory( ) {
86
return DOOMAbstractFactory.getSOAP12Factory( );
87
else return new org.apache.axiom.soap.impl.dom.soap12.SOAP12Factory( );
90
public static SOAPFactory getOMSOAP11Factory( ) {
91
if ( reuse ) return OMAbstractFactory.getSOAP11Factory( );
94
omFactory = System.getProperty( SOAP11_FACTORY_NAME_PROPERTY );
95
if ( omFactory == null || "".equals( omFactory ) ) {
96
omFactory = DEFAULT_SOAP11_FACTORY_CLASS_NAME;
98
} catch ( SecurityException e ) {
99
omFactory = DEFAULT_SOAP11_FACTORY_CLASS_NAME;
101
SOAPFactory defaultSOAP11OMFactory;
103
defaultSOAP11OMFactory = ( SOAPFactory ) ClassLoader.getSystemClassLoader( ).loadClass( omFactory ).newInstance( );
104
} catch ( InstantiationException e ) {
105
throw new OMException( e );
106
} catch ( IllegalAccessException e ) {
107
throw new OMException( e );
108
} catch ( ClassNotFoundException e ) {
109
throw new OMException( e );
111
return defaultSOAP11OMFactory;
114
public static SOAPFactory getOMSOAP12Factory( ) {
115
if ( reuse ) return OMAbstractFactory.getSOAP12Factory( );
118
omFactory = System.getProperty( SOAP12_FACTORY_NAME_PROPERTY );
119
if ( omFactory == null || "".equals( omFactory ) ) {
120
omFactory = DEFAULT_SOAP12_FACTORY_CLASS_NAME;
122
} catch ( SecurityException e ) {
123
omFactory = DEFAULT_SOAP12_FACTORY_CLASS_NAME;
126
SOAPFactory defaultSOAP12OMFactory;
128
defaultSOAP12OMFactory = ( SOAPFactory ) ClassLoader.getSystemClassLoader( ).loadClass( omFactory ).newInstance( );
129
} catch ( InstantiationException e ) {
130
throw new OMException( e );
131
} catch ( IllegalAccessException e ) {
132
throw new OMException( e );
133
} catch ( ClassNotFoundException e ) {
134
throw new OMException( e );
136
return defaultSOAP12OMFactory;
139
public static OMFactory getOMFactory( ) {
140
if ( reuse ) return OMAbstractFactory.getOMFactory( );
143
omFactory = System.getProperty( OM_FACTORY_NAME_PROPERTY );
144
if ( omFactory == null || "".equals( omFactory ) ) {
145
omFactory = DEFAULT_OM_FACTORY_CLASS_NAME;
147
} catch ( SecurityException e ) {
148
omFactory = DEFAULT_OM_FACTORY_CLASS_NAME;
151
OMFactory defaultOMFactory;
153
defaultOMFactory = ( OMFactory ) ClassLoader.getSystemClassLoader( ).loadClass( omFactory ).newInstance( );
154
} catch ( InstantiationException e ) {
155
throw new OMException( e );
156
} catch ( IllegalAccessException e ) {
157
throw new OMException( e );
158
} catch ( ClassNotFoundException e ) {
159
throw new OMException( e );
161
return defaultOMFactory;
164
public static class ThrowAwayStAXOMBuilder extends StAXOMBuilder {
166
public ThrowAwayStAXOMBuilder( XMLStreamReader parser ) {
167
super( HoldMe.getOMFactory( ), parser );
170
public ThrowAwayStAXOMBuilder( OMFactory doomFactory, XMLStreamReader parser ) {
171
super( doomFactory, parser );
175
public static StAXOMBuilder getStAXOMBuilder( XMLStreamReader parser ) {
177
return new StAXOMBuilder( parser );
178
else return new ThrowAwayStAXOMBuilder( parser );
181
public static StAXOMBuilder getStAXOMBuilder( OMFactory doomFactory, XMLStreamReader xmlStreamReader ) {
183
return new StAXOMBuilder( doomFactory, xmlStreamReader );
184
else return new ThrowAwayStAXOMBuilder( doomFactory, xmlStreamReader );
187
public static XMLStreamReader getXMLStreamReader( InputStream in ) throws XMLStreamException {
188
return HoldMe.getXMLInputFactory( ).createXMLStreamReader( in );
191
public static XMLStreamReader getXMLStreamReader( String text ) throws XMLStreamException {
192
return HoldMe.getXMLInputFactory( ).createXMLStreamReader( new ByteArrayInputStream( text.getBytes( ) ) );
195
public static XMLInputFactory getXMLInputFactory( ) {
196
return reuse ? xmlInputFactory : XMLInputFactory.newInstance( );
199
public static XMLOutputFactory getXMLOutputFactory( ) {
200
return reuse ? xmlOutputFactory : XMLOutputFactory.newInstance( );