You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2009/10/26 20:15:12 UTC
svn commit: r829906 - in /cxf/trunk:
api/src/main/java/org/apache/cxf/transport/
common/common/src/main/java/org/apache/cxf/resource/
rt/core/src/main/java/org/apache/cxf/bus/extension/
Author: dkulp
Date: Mon Oct 26 19:15:12 2009
New Revision: 829906
URL: http://svn.apache.org/viewvc?rev=829906&view=rev
Log:
[CXF-2497] Use conduits for all the http wsdl retrieval
to allow configuration of timeouts, auth stuff, etc...
Modified:
cxf/trunk/api/src/main/java/org/apache/cxf/transport/TransportURIResolver.java
cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/URIResolver.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/DeferredMap.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/Extension.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManager.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/transport/TransportURIResolver.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/transport/TransportURIResolver.java?rev=829906&r1=829905&r2=829906&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/transport/TransportURIResolver.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/transport/TransportURIResolver.java Mon Oct 26 19:15:12 2009
@@ -23,6 +23,8 @@
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.HashSet;
+import java.util.Set;
import org.xml.sax.InputSource;
@@ -40,6 +42,17 @@
*
*/
public class TransportURIResolver extends ExtendedURIResolver {
+ private static final Set<String> DEFAULT_URI_RESOLVER_HANDLES = new HashSet<String>();
+ static {
+ //bunch we really don't want to have the conduits checked for
+ //as we know the conduits don't handle. No point
+ //wasting the time checking/loading conduits and such
+ DEFAULT_URI_RESOLVER_HANDLES.add("file");
+ DEFAULT_URI_RESOLVER_HANDLES.add("classpath");
+ DEFAULT_URI_RESOLVER_HANDLES.add("wsjar");
+ DEFAULT_URI_RESOLVER_HANDLES.add("jar");
+ DEFAULT_URI_RESOLVER_HANDLES.add("zip");
+ }
protected Bus bus;
public TransportURIResolver(Bus b) {
@@ -62,51 +75,55 @@
base = null;
}
try {
- if (base == null || !"https".equals(base.getScheme())) {
+ if (base == null
+ || DEFAULT_URI_RESOLVER_HANDLES.contains(base.getScheme())) {
is = super.resolve(curUri, baseUri);
}
} catch (Exception ex) {
//nothing
}
- if (is == null && base != null && base.getScheme() != null) {
+ if (is == null && base != null
+ && base.getScheme() != null) {
try {
ConduitInitiator ci = bus.getExtension(ConduitInitiatorManager.class)
.getConduitInitiatorForUri(base.toString());
- EndpointInfo info = new EndpointInfo();
- info.setAddress(base.toString());
- final Conduit c = ci.getConduit(info);
- Message message = new MessageImpl();
- Exchange exch = new ExchangeImpl();
- message.setExchange(exch);
-
- message.put(Message.HTTP_REQUEST_METHOD, "GET");
- c.setMessageObserver(new MessageObserver() {
- public void onMessage(Message message) {
- LoadingByteArrayOutputStream bout = new LoadingByteArrayOutputStream();
- try {
- IOUtils.copy(message.getContent(InputStream.class), bout);
- message.getExchange().put(InputStream.class, bout.createInputStream());
- c.close(message);
- } catch (IOException e) {
- //ignore
+ if (ci != null) {
+ EndpointInfo info = new EndpointInfo();
+ info.setAddress(base.toString());
+ final Conduit c = ci.getConduit(info);
+ Message message = new MessageImpl();
+ Exchange exch = new ExchangeImpl();
+ message.setExchange(exch);
+
+ message.put(Message.HTTP_REQUEST_METHOD, "GET");
+ c.setMessageObserver(new MessageObserver() {
+ public void onMessage(Message message) {
+ LoadingByteArrayOutputStream bout = new LoadingByteArrayOutputStream();
+ try {
+ IOUtils.copy(message.getContent(InputStream.class), bout);
+ message.getExchange().put(InputStream.class, bout.createInputStream());
+ c.close(message);
+ } catch (IOException e) {
+ //ignore
+ }
}
- }
- });
- c.prepare(message);
- c.close(message);
- InputStream ins = exch.get(InputStream.class);
- resourceOpened.addElement(ins);
- InputSource src = new InputSource(ins);
- src.setPublicId(base.toString());
- src.setSystemId(base.toString());
- lastestImportUri = base.toString();
- currentResolver.unresolve();
- return src;
+ });
+ c.prepare(message);
+ c.close(message);
+ InputStream ins = exch.get(InputStream.class);
+ resourceOpened.addElement(ins);
+ InputSource src = new InputSource(ins);
+ src.setPublicId(base.toString());
+ src.setSystemId(base.toString());
+ lastestImportUri = base.toString();
+ currentResolver.unresolve();
+ return src;
+ }
} catch (Exception e) {
//ignore
}
}
- if (is == null && "https".equals(base.getScheme())) {
+ if (is == null && !DEFAULT_URI_RESOLVER_HANDLES.contains(base.getScheme())) {
is = super.resolve(curUri, baseUri);
}
return is;
Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/URIResolver.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/URIResolver.java?rev=829906&r1=829905&r2=829906&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/URIResolver.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/URIResolver.java Mon Oct 26 19:15:12 2009
@@ -158,6 +158,8 @@
huc.setRequestProperty("Proxy-Authorization", "Basic " + encoded);
}
}
+ huc.setConnectTimeout(30000);
+ huc.setReadTimeout(60000);
is = huc.getInputStream();
} catch (ClassCastException ex) {
is = url.openStream();
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/DeferredMap.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/DeferredMap.java?rev=829906&r1=829905&r2=829906&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/DeferredMap.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/DeferredMap.java Mon Oct 26 19:15:12 2009
@@ -33,7 +33,7 @@
}
public void undefer() {
- em.activateAll();
+ em.activateAllByType(type);
}
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/Extension.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/Extension.java?rev=829906&r1=829905&r2=829906&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/Extension.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/Extension.java Mon Oct 26 19:15:12 2009
@@ -29,6 +29,7 @@
public class Extension {
private String className;
+ private Class<?> clazz;
private String interfaceName;
private boolean deferred;
private Collection<String> namespaces = new ArrayList<String>();
@@ -54,11 +55,22 @@
return buf.toString();
}
+ Class<?> getClassObject(ClassLoader cl) {
+ if (clazz == null) {
+ try {
+ clazz = cl.loadClass(className);
+ } catch (ClassNotFoundException ex) {
+ throw new ExtensionException(ex);
+ }
+ }
+ return clazz;
+ }
String getClassname() {
return className;
}
void setClassname(String i) {
+ clazz = null;
className = i;
}
@@ -85,7 +97,7 @@
Object load(ClassLoader cl, Bus b) {
Object obj = null;
try {
- Class<?> cls = cl.loadClass(className);
+ Class<?> cls = getClassObject(cl);
try {
//if there is a Bus constructor, use it.
if (b != null) {
@@ -96,8 +108,6 @@
//ignore
}
obj = cls.newInstance();
- } catch (ClassNotFoundException ex) {
- throw new ExtensionException(ex);
} catch (IllegalAccessException ex) {
throw new ExtensionException(ex);
} catch (InstantiationException ex) {
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManager.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManager.java?rev=829906&r1=829905&r2=829906&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManager.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManager.java Mon Oct 26 19:15:12 2009
@@ -22,6 +22,8 @@
public interface ExtensionManager {
void activateAll();
+ <T> void activateAllByType(Class<T> type);
+
void activateViaNS(String namespace);
<T> T getExtension(String ns, Class<T> type);
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java?rev=829906&r1=829905&r2=829906&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java Mon Oct 26 19:15:12 2009
@@ -26,6 +26,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -115,7 +116,19 @@
activateViaNS(deferred.keySet().iterator().next());
}
}
-
+ public <T> void activateAllByType(Class<T> type) {
+ for (Map.Entry<String, Collection<Extension>> e : deferred.entrySet()) {
+ Iterator<Extension> it = e.getValue().iterator();
+ while (it.hasNext()) {
+ Extension ex = it.next();
+ if (type.isAssignableFrom(ex.getClassObject(loader))) {
+ loadAndRegister(ex);
+ it.remove();
+ }
+ }
+ }
+ }
+
final void load(String resource) throws IOException {
Enumeration<URL> urls = Thread.currentThread().getContextClassLoader().getResources(resource);
while (urls.hasMoreElements()) {