Author: gnodet
Date: Wed Jul  2 07:49:20 2008
New Revision: 673410

URL: http://svn.apache.org/viewvc?rev=673410&view=rev
Log:
Fix osgi manifest, use the internal security layer

Added:
    
servicemix/components/shared-libraries/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/util/IntrospectionSupport.java
    
servicemix/components/shared-libraries/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/util/URISupport.java
Modified:
    
servicemix/components/shared-libraries/trunk/servicemix-soap/src/main/java/org/apache/servicemix/soap/handlers/security/KeystoreInstanceCrypto.java
    
servicemix/components/shared-libraries/trunk/servicemix-soap/src/main/java/org/apache/servicemix/soap/handlers/security/WSSecurityHandler.java
    
servicemix/components/shared-libraries/trunk/servicemix-soap/src/test/java/org/apache/servicemix/soap/handlers/security/WSSecurityHandlerTest.java
    servicemix/components/shared-libraries/trunk/servicemix-soap2/pom.xml

Added: 
servicemix/components/shared-libraries/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/util/IntrospectionSupport.java
URL: 
http://svn.apache.org/viewvc/servicemix/components/shared-libraries/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/util/IntrospectionSupport.java?rev=673410&view=auto
==============================================================================
--- 
servicemix/components/shared-libraries/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/util/IntrospectionSupport.java
 (added)
+++ 
servicemix/components/shared-libraries/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/util/IntrospectionSupport.java
 Wed Jul  2 07:49:20 2008
@@ -0,0 +1,214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.common.util;
+
+import java.beans.PropertyEditor;
+import java.beans.PropertyEditorManager;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+public final class IntrospectionSupport {
+
+    private IntrospectionSupport() {
+    }
+
+    public static boolean setProperties(Object target, Map props, String 
optionPrefix) {
+        boolean rc = false;
+        if (target == null) {
+            throw new IllegalArgumentException("target was null.");
+        }
+        if (props == null) {
+            throw new IllegalArgumentException("props was null.");
+        }
+        for (Iterator iter = props.keySet().iterator(); iter.hasNext();) {
+            String name = (String) iter.next();
+            if (name.startsWith(optionPrefix)) {
+                Object value = props.get(name);
+                name = name.substring(optionPrefix.length());
+                if (setProperty(target, name, value)) {
+                    iter.remove();
+                    rc = true;
+                }
+            }
+        }
+        return rc;
+    }
+
+    public static Map extractProperties(Map props, String optionPrefix) {
+        if (props == null) {
+            throw new IllegalArgumentException("props was null.");
+        }
+        Map rc = new HashMap(props.size());
+        for (Iterator iter = props.keySet().iterator(); iter.hasNext();) {
+            String name = (String) iter.next();
+            if (name.startsWith(optionPrefix)) {
+                Object value = props.get(name);
+                name = name.substring(optionPrefix.length());
+                rc.put(name, value);
+                iter.remove();
+            }
+        }
+        return rc;
+    }
+
+    public static void setProperties(Object target, Map props) {
+        if (target == null) {
+            throw new IllegalArgumentException("target was null.");
+        }
+        if (props == null) {
+            throw new IllegalArgumentException("props was null.");
+        }
+        for (Iterator iter = props.entrySet().iterator(); iter.hasNext();) {
+            Map.Entry entry = (Entry) iter.next();
+            if (setProperty(target, (String) entry.getKey(), 
entry.getValue())) {
+                iter.remove();
+            }
+        }
+    }
+
+    private static boolean setProperty(Object target, String name, Object 
value) {
+        try {
+            Class clazz = target.getClass();
+            Method setter = findSetterMethod(clazz, name);
+            if (setter == null) {
+                return false;
+            }
+            // If the type is null or it matches the needed type, just use the
+            // value directly
+            if (value == null || value.getClass() == 
setter.getParameterTypes()[0]) {
+                setter.invoke(target, new Object[] {value });
+            } else {
+                // We need to convert it
+                setter.invoke(target, new Object[] {convert(value, 
setter.getParameterTypes()[0]) });
+            }
+            return true;
+        } catch (Throwable ignore) {
+            return false;
+        }
+    }
+
+    private static Object convert(Object value, Class type) throws 
URISyntaxException {
+        PropertyEditor editor = PropertyEditorManager.findEditor(type);
+        if (editor != null) {
+            editor.setAsText(value.toString());
+            return editor.getValue();
+        }
+        if (type == URI.class) {
+            return new URI(value.toString());
+        }
+        return null;
+    }
+
+    private static Method findSetterMethod(Class clazz, String name) {
+        // Build the method name.
+        name = "set" + name.substring(0, 1).toUpperCase() + name.substring(1);
+        Method[] methods = clazz.getMethods();
+        for (int i = 0; i < methods.length; i++) {
+            Method method = methods[i];
+            Class params[] = method.getParameterTypes();
+            if (method.getName().equals(name) && params.length == 1 && 
isSettableType(params[0])) {
+                return method;
+            }
+        }
+        return null;
+    }
+
+    private static boolean isSettableType(Class clazz) {
+        if (PropertyEditorManager.findEditor(clazz) != null) {
+            return true;
+        }
+        if (clazz == URI.class) {
+            return true;
+        }
+        return false;
+    }
+
+    public static String toString(Object target) {
+        return toString(target, Object.class);
+    }
+
+    public static String toString(Object target, Class stopClass) {
+        Map map = new LinkedHashMap();
+        addFields(target, target.getClass(), stopClass, map);
+        StringBuffer buffer = new StringBuffer(simpleName(target.getClass()));
+        buffer.append(" {");
+        Set entrySet = map.entrySet();
+        boolean first = true;
+        for (Iterator iter = entrySet.iterator(); iter.hasNext();) {
+            Map.Entry entry = (Map.Entry) iter.next();
+            if (first) {
+                first = false;
+            } else {
+                buffer.append(", ");
+            }
+            buffer.append(entry.getKey());
+            buffer.append(" = ");
+            buffer.append(entry.getValue());
+        }
+        buffer.append("}");
+        return buffer.toString();
+    }
+
+    public static String simpleName(Class clazz) {
+        String name = clazz.getName();
+        int p = name.lastIndexOf(".");
+        if (p >= 0) {
+            name = name.substring(p + 1);
+        }
+        return name;
+    }
+
+    private static void addFields(Object target, Class startClass, Class 
stopClass, Map map) {
+        if (startClass != stopClass) {
+            addFields(target, startClass.getSuperclass(), stopClass, map);
+        }
+        Field[] fields = startClass.getDeclaredFields();
+        for (int i = 0; i < fields.length; i++) {
+            Field field = fields[i];
+            if (Modifier.isStatic(field.getModifiers()) || 
Modifier.isTransient(field.getModifiers())
+                            || Modifier.isPrivate(field.getModifiers())) {
+                continue;
+            }
+            try {
+                field.setAccessible(true);
+                Object o = field.get(target);
+                if (o != null && o.getClass().isArray()) {
+                    try {
+                        o = Arrays.asList((Object[]) o);
+                    } catch (Throwable e) {
+                        // Ignore
+                    }
+                }
+                map.put(field.getName(), o);
+            } catch (Throwable e) {
+                e.printStackTrace();
+            }
+        }
+
+    }
+
+}

Added: 
servicemix/components/shared-libraries/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/util/URISupport.java
URL: 
http://svn.apache.org/viewvc/servicemix/components/shared-libraries/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/util/URISupport.java?rev=673410&view=auto
==============================================================================
--- 
servicemix/components/shared-libraries/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/util/URISupport.java
 (added)
+++ 
servicemix/components/shared-libraries/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/util/URISupport.java
 Wed Jul  2 07:49:20 2008
@@ -0,0 +1,336 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.common.util;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @version $Revision$
+ */
+public class URISupport {
+
+    public static class CompositeData {
+        String scheme;
+
+        String path;
+
+        URI components[];
+
+        Map parameters;
+
+        String fragment;
+
+        String host;
+
+        public URI[] getComponents() {
+            return components;
+        }
+
+        public String getFragment() {
+            return fragment;
+        }
+
+        public Map getParameters() {
+            return parameters;
+        }
+
+        public String getScheme() {
+            return scheme;
+        }
+
+        public String getPath() {
+            return path;
+        }
+
+        public String getHost() {
+            return host;
+        }
+
+        public URI toURI() throws URISyntaxException {
+            StringBuffer sb = new StringBuffer();
+            if (scheme != null) {
+                sb.append(scheme);
+                sb.append(':');
+            }
+
+            if (host != null && host.length() != 0) {
+                sb.append(host);
+            } else {
+                sb.append('(');
+                for (int i = 0; i < components.length; i++) {
+                    if (i != 0) {
+                        sb.append(',');
+                    }
+                    sb.append(components[i].toString());
+                }
+                sb.append(')');
+            }
+
+            if (path != null) {
+                sb.append('/');
+                sb.append(path);
+            }
+            if (!parameters.isEmpty()) {
+                sb.append("?");
+                sb.append(createQueryString(parameters));
+            }
+            if (fragment != null) {
+                sb.append("#");
+                sb.append(fragment);
+            }
+            return new URI(sb.toString());
+        }
+    }
+
+    public static Map parseQuery(String uri) throws URISyntaxException {
+        try {
+            Map rc = new HashMap();
+            if (uri != null) {
+                String[] parameters = uri.split("&");
+                for (int i = 0; i < parameters.length; i++) {
+                    int p = parameters[i].indexOf("=");
+                    if (p >= 0) {
+                        String name = 
URLDecoder.decode(parameters[i].substring(0, p), "UTF-8");
+                        String value = 
URLDecoder.decode(parameters[i].substring(p + 1), "UTF-8");
+                        rc.put(name, value);
+                    } else {
+                        rc.put(parameters[i], null);
+                    }
+                }
+            }
+            return rc;
+        } catch (UnsupportedEncodingException e) {
+            throw (URISyntaxException) new URISyntaxException(e.toString(), 
"Invalid encoding").initCause(e);
+        }
+    }
+
+    public static Map parseParamters(URI uri) throws URISyntaxException {
+        return uri.getQuery() == null ? Collections.EMPTY_MAP : 
parseQuery(stripPrefix(uri.getQuery(), "?"));
+    }
+
+    /**
+     * Removes any URI query from the given uri
+     */
+    public static URI removeQuery(URI uri) throws URISyntaxException {
+        return createURIWithQuery(uri, null);
+    }
+
+    /**
+     * Creates a URI with the given query
+     */
+    public static URI createURIWithQuery(URI uri, String query) throws 
URISyntaxException {
+        return new URI(uri.getScheme(), uri.getUserInfo(), uri.getHost(), 
uri.getPort(), uri.getPath(), query, uri.getFragment());
+    }
+
+    public static CompositeData parseComposite(URI uri) throws 
URISyntaxException {
+
+        CompositeData rc = new CompositeData();
+        rc.scheme = uri.getScheme();
+        String ssp = stripPrefix(uri.getSchemeSpecificPart().trim(), 
"//").trim();
+
+        parseComposite(uri, rc, ssp);
+
+        rc.fragment = uri.getFragment();
+        return rc;
+    }
+
+    /**
+     * @param uri
+     * @param rc
+     * @param ssp
+     * @param p
+     * @throws URISyntaxException
+     */
+    private static void parseComposite(URI uri, CompositeData rc, String ssp) 
throws URISyntaxException {
+        String componentString;
+        String params;
+
+        if (!checkParenthesis(ssp)) {
+            throw new URISyntaxException(uri.toString(), "Not a matching 
number of '(' and ')' parenthesis");
+        }
+
+        int p;
+        int intialParen = ssp.indexOf("(");
+        if (intialParen == 0) {
+            rc.host = ssp.substring(0, intialParen);
+            p = rc.host.indexOf("/");
+            if (p >= 0) {
+                rc.path = rc.host.substring(p);
+                rc.host = rc.host.substring(0, p);
+            }
+            p = ssp.lastIndexOf(")");
+            componentString = ssp.substring(intialParen + 1, p);
+            params = ssp.substring(p + 1).trim();
+
+        } else {
+            componentString = ssp;
+            params = "";
+        }
+
+        String components[] = splitComponents(componentString);
+        rc.components = new URI[components.length];
+        for (int i = 0; i < components.length; i++) {
+            rc.components[i] = new URI(components[i].trim());
+        }
+
+        p = params.indexOf("?");
+        if (p >= 0) {
+            if (p > 0) {
+                rc.path = stripPrefix(params.substring(0, p), "/");
+            }
+            rc.parameters = parseQuery(params.substring(p + 1));
+        } else {
+            if (params.length() > 0) {
+                rc.path = stripPrefix(params, "/");
+            }
+            rc.parameters = Collections.EMPTY_MAP;
+        }
+    }
+
+    /**
+     * @param componentString
+     * @return
+     */
+    private static String[] splitComponents(String str) {
+        List<String> l = new ArrayList<String>();
+
+        int last = 0;
+        int depth = 0;
+        char chars[] = str.toCharArray();
+        for (int i = 0; i < chars.length; i++) {
+            switch (chars[i]) {
+            case '(':
+                depth++;
+                break;
+            case ')':
+                depth--;
+                break;
+            case ',':
+                if (depth == 0) {
+                    String s = str.substring(last, i);
+                    l.add(s);
+                    last = i + 1;
+                }
+                break;
+            default:
+                break;
+            }
+        }
+
+        String s = str.substring(last);
+        if (s.length() != 0) {
+            l.add(s);
+        }
+
+        String rc[] = new String[l.size()];
+        l.toArray(rc);
+        return rc;
+    }
+
+    public static String stripPrefix(String value, String prefix) {
+        if (value.startsWith(prefix)) {
+            return value.substring(prefix.length());
+        }
+        return value;
+    }
+
+    public static URI stripScheme(URI uri) throws URISyntaxException {
+        return new URI(stripPrefix(uri.getSchemeSpecificPart().trim(), "//"));
+    }
+
+    public static String createQueryString(Map options) throws 
URISyntaxException {
+        try {
+            if (options.size() > 0) {
+                StringBuffer rc = new StringBuffer();
+                boolean first = true;
+                for (Iterator iter = options.keySet().iterator(); 
iter.hasNext();) {
+                    if (first) {
+                        first = false;
+                    } else {
+                        rc.append("&");
+                    }
+                    String key = (String) iter.next();
+                    String value = (String) options.get(key);
+                    rc.append(URLEncoder.encode(key, "UTF-8"));
+                    rc.append("=");
+                    rc.append(URLEncoder.encode(value, "UTF-8"));
+                }
+                return rc.toString();
+            } else {
+                return "";
+            }
+        } catch (UnsupportedEncodingException e) {
+            throw (URISyntaxException) new URISyntaxException(e.toString(), 
"Invalid encoding").initCause(e);
+        }
+    }
+
+    /**
+     * Creates a URI from the original URI and the remaining paramaters
+     *
+     * @throws URISyntaxException
+     */
+    public static URI createRemainingURI(URI originalURI, Map params) throws 
URISyntaxException {
+        String s = createQueryString(params);
+        if (s.length() == 0) {
+            s = null;
+        }
+        return createURIWithQuery(originalURI, s);
+    }
+
+    public static URI changeScheme(URI bindAddr, String scheme) throws 
URISyntaxException {
+        return new URI(scheme, bindAddr.getUserInfo(), bindAddr.getHost(), 
bindAddr.getPort(),
+                       bindAddr.getPath(), bindAddr.getQuery(), 
bindAddr.getFragment());
+    }
+
+    public static boolean checkParenthesis(String str) {
+        boolean result = true;
+        if (str != null) {
+            int open = 0;
+            int closed = 0;
+
+            int i = str.indexOf('(');
+            while (i >= 0) {
+                open++;
+                i = str.indexOf('(', i + 1);
+            }
+            i = str.indexOf(')');
+            while (i >= 0) {
+                closed++;
+                i = str.indexOf(')', i + 1);
+            }
+            result = open == closed;
+        }
+        return result;
+    }
+
+    public int indexOfParenthesisMatch(String str) {
+        int result = -1;
+
+        return result;
+    }
+
+}

Modified: 
servicemix/components/shared-libraries/trunk/servicemix-soap/src/main/java/org/apache/servicemix/soap/handlers/security/KeystoreInstanceCrypto.java
URL: 
http://svn.apache.org/viewvc/servicemix/components/shared-libraries/trunk/servicemix-soap/src/main/java/org/apache/servicemix/soap/handlers/security/KeystoreInstanceCrypto.java?rev=673410&r1=673409&r2=673410&view=diff
==============================================================================
--- 
servicemix/components/shared-libraries/trunk/servicemix-soap/src/main/java/org/apache/servicemix/soap/handlers/security/KeystoreInstanceCrypto.java
 (original)
+++ 
servicemix/components/shared-libraries/trunk/servicemix-soap/src/main/java/org/apache/servicemix/soap/handlers/security/KeystoreInstanceCrypto.java
 Wed Jul  2 07:49:20 2008
@@ -23,8 +23,8 @@
 import java.util.Arrays;
 import java.util.List;
 
-import org.apache.servicemix.jbi.security.keystore.KeystoreInstance;
-import org.apache.servicemix.jbi.security.keystore.KeystoreManager;
+import org.apache.servicemix.common.security.KeystoreInstance;
+import org.apache.servicemix.common.security.KeystoreManager;
 
 public class KeystoreInstanceCrypto extends BaseCrypto {
 

Modified: 
servicemix/components/shared-libraries/trunk/servicemix-soap/src/main/java/org/apache/servicemix/soap/handlers/security/WSSecurityHandler.java
URL: 
http://svn.apache.org/viewvc/servicemix/components/shared-libraries/trunk/servicemix-soap/src/main/java/org/apache/servicemix/soap/handlers/security/WSSecurityHandler.java?rev=673410&r1=673409&r2=673410&view=diff
==============================================================================
--- 
servicemix/components/shared-libraries/trunk/servicemix-soap/src/main/java/org/apache/servicemix/soap/handlers/security/WSSecurityHandler.java
 (original)
+++ 
servicemix/components/shared-libraries/trunk/servicemix-soap/src/main/java/org/apache/servicemix/soap/handlers/security/WSSecurityHandler.java
 Wed Jul  2 07:49:20 2008
@@ -32,8 +32,8 @@
 import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.xml.namespace.QName;
 
-import org.apache.servicemix.jbi.security.auth.AuthenticationService;
-import org.apache.servicemix.jbi.security.keystore.KeystoreManager;
+import org.apache.servicemix.common.security.AuthenticationService;
+import org.apache.servicemix.common.security.KeystoreManager;
 import org.apache.servicemix.soap.Context;
 import org.apache.servicemix.soap.Handler;
 import org.apache.servicemix.soap.SoapFault;

Modified: 
servicemix/components/shared-libraries/trunk/servicemix-soap/src/test/java/org/apache/servicemix/soap/handlers/security/WSSecurityHandlerTest.java
URL: 
http://svn.apache.org/viewvc/servicemix/components/shared-libraries/trunk/servicemix-soap/src/test/java/org/apache/servicemix/soap/handlers/security/WSSecurityHandlerTest.java?rev=673410&r1=673409&r2=673410&view=diff
==============================================================================
--- 
servicemix/components/shared-libraries/trunk/servicemix-soap/src/test/java/org/apache/servicemix/soap/handlers/security/WSSecurityHandlerTest.java
 (original)
+++ 
servicemix/components/shared-libraries/trunk/servicemix-soap/src/test/java/org/apache/servicemix/soap/handlers/security/WSSecurityHandlerTest.java
 Wed Jul  2 07:49:20 2008
@@ -37,6 +37,7 @@
 import org.apache.servicemix.soap.marshalers.SoapMessage;
 import org.apache.servicemix.soap.marshalers.SoapReader;
 import org.apache.servicemix.soap.marshalers.SoapWriter;
+import org.apache.servicemix.common.security.AuthenticationService;
 import org.apache.ws.security.WSSecurityEngineResult;
 import org.apache.ws.security.WSUsernameTokenPrincipal;
 import org.apache.ws.security.handler.WSHandlerConstants;
@@ -68,7 +69,7 @@
         ctx.setInMessage(msg);
         
         WSSecurityHandler handler = new WSSecurityHandler();
-        handler.setAuthenticationService(new JAASAuthenticationService());
+        
handler.setAuthenticationService(AuthenticationService.Proxy.create(new 
JAASAuthenticationService()));
         handler.setReceiveAction(WSHandlerConstants.USERNAME_TOKEN);
         handler.onReceive(ctx);
         List l = (List) ctx.getProperty(WSHandlerConstants.RECV_RESULTS);
@@ -105,7 +106,7 @@
         crypto.setKeyStoreUrl(new ClassPathResource("privatestore.jks"));
         crypto.setKeyStorePassword("keyStorePassword");
         WSSecurityHandler handler = new WSSecurityHandler();
-        handler.setAuthenticationService(new JAASAuthenticationService());
+        
handler.setAuthenticationService(AuthenticationService.Proxy.create(new 
JAASAuthenticationService()));
         handler.setCrypto(crypto);
         handler.setUsername("myalias");
         crypto.setKeyPassword("myAliasPassword");
@@ -146,7 +147,7 @@
         crypto.setKeyStoreUrl(new ClassPathResource("privatestore.jks"));
         crypto.setKeyStorePassword("keyStorePassword");
         WSSecurityHandler handler = new WSSecurityHandler();
-        handler.setAuthenticationService(new JAASAuthenticationService());
+        
handler.setAuthenticationService(AuthenticationService.Proxy.create(new 
JAASAuthenticationService()));
         handler.setCrypto(crypto);
         handler.setUsername("myalias");
         crypto.setKeyPassword("myAliasPassword");

Modified: servicemix/components/shared-libraries/trunk/servicemix-soap2/pom.xml
URL: 
http://svn.apache.org/viewvc/servicemix/components/shared-libraries/trunk/servicemix-soap2/pom.xml?rev=673410&r1=673409&r2=673410&view=diff
==============================================================================
--- servicemix/components/shared-libraries/trunk/servicemix-soap2/pom.xml 
(original)
+++ servicemix/components/shared-libraries/trunk/servicemix-soap2/pom.xml Wed 
Jul  2 07:49:20 2008
@@ -39,6 +39,7 @@
         org.apache.servicemix;resolution:=optional,
         org.apache.servicemix.jbi*;resolution:=optional,
         org.apache.servicemix.components*;resolution:=optional,
+        org.apache.woden*;resolution:=optional,
         *
     </servicemix.osgi.import>
     <servicemix.osgi.export.pkg>


Reply via email to