in impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java [660:718]
public static String getDefaultPackageName(String targetNamespace)
{
if (targetNamespace == null)
return null;
URI uri = URI.createURI(targetNamespace);
List parsedName;
if (uri.isHierarchical())
{
String host = uri.host();
if (host != null && host.startsWith("www."))
{
host = host.substring(4);
}
parsedName = parseNameStatic(host, '.');
Collections.reverse(parsedName);
if (!parsedName.isEmpty())
{
parsedName.set(0, ((String)parsedName.get(0)).toLowerCase());
}
parsedName.addAll(parseNameStatic(uri.trimFileExtension().path(), '/'));
}
else
{
String opaquePart = uri.opaquePart();
int index = opaquePart.indexOf(":");
if (index != -1 && "urn".equalsIgnoreCase(uri.scheme()))
{
parsedName = parseNameStatic(opaquePart.substring(0, index), '-');
if (parsedName.size() > 0 && DOMAINS.contains(parsedName.get(parsedName.size() - 1)))
{
Collections.reverse(parsedName);
parsedName.set(0, ((String)parsedName.get(0)).toLowerCase());
}
parsedName.addAll(parseNameStatic(opaquePart.substring(index + 1), '/'));
}
else
{
parsedName = parseNameStatic(opaquePart, '/');
}
}
StringBuffer qualifiedPackageName = new StringBuffer();
for (Iterator i = parsedName.iterator(); i.hasNext(); )
{
String packageName = (String)i.next();
if (packageName.length() > 0)
{
if (qualifiedPackageName.length() > 0)
{
qualifiedPackageName.append('.');
}
qualifiedPackageName.append(validNameStatic(packageName, LOWER_CASE,"_"));
}
}
return qualifiedPackageName.toString().toLowerCase(); //make sure it's lower case .. we can't work with Axis if not.
}