You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by as...@apache.org on 2012/12/19 17:14:49 UTC
svn commit: r1423914 - in /cxf/trunk/rt/core/src/main/java/org/apache/cxf:
bus/extension/TextExtensionFragmentParser.java
service/factory/ReflectionServiceFactoryBean.java
Author: asoldano
Date: Wed Dec 19 16:14:49 2012
New Revision: 1423914
URL: http://svn.apache.org/viewvc?rev=1423914&view=rev
Log:
[CXF-4712] A couple of perf improvements
Modified:
cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/TextExtensionFragmentParser.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/TextExtensionFragmentParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/TextExtensionFragmentParser.java?rev=1423914&r1=1423913&r2=1423914&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/TextExtensionFragmentParser.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/extension/TextExtensionFragmentParser.java Wed Dec 19 16:14:49 2012
@@ -28,11 +28,13 @@ import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
+import java.util.regex.Pattern;
import org.apache.cxf.common.logging.LogUtils;
public class TextExtensionFragmentParser {
private static final Logger LOG = LogUtils.getL7dLogger(TextExtensionFragmentParser.class);
+ private static Pattern colonPattern = Pattern.compile(":");
public List<Extension> getExtensions(final URL url) {
InputStream is = null;
@@ -82,7 +84,7 @@ public class TextExtensionFragmentParser
return null;
}
final Extension ext = new Extension();
- String[] parts = line.split(":");
+ String[] parts = colonPattern.split(line, 0);
ext.setClassname(parts[0]);
if (ext.getClassname() == null) {
return null;
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?rev=1423914&r1=1423913&r2=1423914&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java Wed Dec 19 16:14:49 2012
@@ -39,6 +39,7 @@ import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executor;
@@ -900,6 +901,17 @@ public class ReflectionServiceFactoryBea
}
private void setFaultClassInfo(OperationInfo o, Method selected) {
Class<?>[] types = selected.getExceptionTypes();
+ Map<FaultInfo, List<MessagePartInfo>> mpiMap = null;
+ if (types.length > 0) {
+ //early iterate over FaultInfo before cycling on exception types
+ //as fi.getMessageParts() is very time-consuming due to elements
+ //copy in ArrayList constructor
+ mpiMap = new HashMap<FaultInfo, List<MessagePartInfo>>();
+ for (FaultInfo fi : o.getFaults()) {
+ mpiMap.put(fi, fi.getMessageParts());
+ }
+ }
+
for (int i = 0; i < types.length; i++) {
Class<?> exClass = types[i];
Class<?> beanClass = getBeanClass(exClass);
@@ -909,8 +921,9 @@ public class ReflectionServiceFactoryBea
QName name = getFaultName(o.getInterface(), o, exClass, beanClass);
- for (FaultInfo fi : o.getFaults()) {
- List<MessagePartInfo> mpis = fi.getMessageParts();
+ for (Entry<FaultInfo, List<MessagePartInfo>> entry : mpiMap.entrySet()) {
+ FaultInfo fi = entry.getKey();
+ List<MessagePartInfo> mpis = entry.getValue();
if (mpis.size() != 1) {
Message message = new Message("NO_FAULT_PART", LOG, fi.getFaultName());
LOG.log(Level.WARNING, message.toString());