/*******************************************************************************
* Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
* Licensed 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
*******************************************************************************/
package org.ebayopensource.turmeric.runtime.common.impl.internal.utils;
import javax.xml.namespace.QName;
import org.ebayopensource.turmeric.runtime.common.types.SOAConstants;
/**
* @author ichernyshev
*/
public final class ServiceNameUtils {
private ServiceNameUtils() {
// no instances
}
private static String getLocalNameForJava(String svcName) {
String nameLocal = svcName;
// make the first letter uppercase
if (nameLocal.length() > 0) {
char firstLetter = nameLocal.charAt(0);
if (Character.isLowerCase(firstLetter)) {
firstLetter = Character.toUpperCase(firstLetter);
String otherLetters = nameLocal.substring(1);
StringBuffer sb = new StringBuffer(nameLocal.length());
sb.append(firstLetter);
sb.append(otherLetters);
nameLocal = sb.toString();
}
}
return nameLocal;
}
private static String getServiceGenClassName(String svcName,
String serviceBaseClassName, String genPackage, String classNameSuffix)
{
String nameLocal = getLocalNameForJava(svcName);
String classNameSuffix2 = genPackage + "." + nameLocal + classNameSuffix;
String result;
int p = serviceBaseClassName.lastIndexOf('.');
if (p != -1) {
String packageName = serviceBaseClassName.substring(0, p);
result = packageName + "." + classNameSuffix2;
} else {
result = classNameSuffix2;
}
return result;
}
public static String getServiceProxyClassName(String svcName,
String serviceIntfClassName)
{
return getServiceGenClassName(svcName, serviceIntfClassName, "gen", "Proxy");
}
public static String getServiceDispatcherClassName(String svcName,
String serviceImplClassName)
{
return getServiceGenClassName(svcName, serviceImplClassName, "gen", "RequestDispatcher");
}
public static String getServiceImplSkeletonClassName(String svcName,
String serviceIntfClassName)
{
return getServiceGenClassName(svcName, serviceIntfClassName, "impl", "ImplSkeleton");
}
public static String getServiceTypeDefsBuilderClassName(String svcName,
String serviceIntfClassName)
{
return getServiceGenClassName(svcName, serviceIntfClassName, "gen", "TypeDefsBuilder");
}
public static QName normalizeQName(QName qname) {
if (qname == null) {
return null;
}
if (qname.getNamespaceURI() == null || qname.getNamespaceURI().length() == 0) {
return new QName(SOAConstants.DEFAULT_SERVICE_NAMESPACE, qname.getLocalPart());
}
return qname;
}
}