/**
*
* 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.openejb.server.webservices;
import org.apache.openejb.assembler.classic.ServletInfo;
import org.apache.openejb.server.httpd.BasicAuthHttpListenerWrapper;
import org.apache.openejb.server.httpd.HttpListener;
import org.apache.openejb.server.httpd.OpenEJBHttpRegistry;
import java.util.List;
public class OpenEJBHttpWsRegistry extends OpenEJBHttpRegistry implements WsRegistry {
@Override
public List<String> setWsContainer(final HttpListener httpListener,
final ClassLoader classLoader,
final String context, final String virtualHost, final ServletInfo servletInfo,
final String realmName, final String transportGuarantee, final String authMethod,
final String moduleId) throws Exception {
final String path = servletInfo.mappings.iterator().next();
return addWsContainer(httpListener, classLoader, context, virtualHost, path, realmName, transportGuarantee, authMethod, moduleId);
}
@Override
public void clearWsContainer(final String context, final String virtualHost, final ServletInfo servletInfo, final String moduleId) {
final String path = servletInfo.mappings.iterator().next();
removeWsContainer(path, moduleId);
}
@Override
public List<String> addWsContainer(final HttpListener inputListener,
final ClassLoader classLoader,
final String context,
final String virtualHost,
final String path,
final String realmName,
final String transportGuarantee, // ignored
final String authMethod,
final String moduleId) throws Exception {
if (path == null) throw new NullPointerException("contextRoot is null");
HttpListener httpListener = inputListener;
if (httpListener == null) throw new NullPointerException("httpListener is null");
if ("BASIC".equals(authMethod)) {
httpListener = new BasicAuthHttpListenerWrapper(httpListener, realmName);
}
final StringBuilder deployedPath = new StringBuilder("");
if (context != null) {
if (!context.startsWith("/")) {
deployedPath.append("/");
}
deployedPath.append(context);
if (!context.endsWith("/")) {
deployedPath.append("/");
}
} else {
deployedPath.append("/");
}
if (path.startsWith("/") && path.length() > 1) {
deployedPath.append(path.substring(1));
} else if (path.length() > 1) {
deployedPath.append(path);
}
addWrappedHttpListener(httpListener, classLoader, deployedPath.toString());
// register wsdl locations for service-ref resolution
return getResolvedAddresses(deployedPath.toString());
}
@Override
public void removeWsContainer(final String path, final String moduleId) {
registry.removeHttpListener(path);
}
}