in commands/qualified_name.go [92:138]
func NewQualifiedName(name string) (*QualifiedName, error) {
qualifiedName := new(QualifiedName)
// If name has a preceding delimiter (/), or if it has two delimiters with a
// leading non-empty string, then it contains a namespace. Otherwise the name
// does not specify a namespace, so default the namespace to the namespace
// value set in the properties file; if that is not set, use "_"
name = addLeadSlash(name)
parts := strings.Split(name, "/")
if strings.HasPrefix(name, "/") {
qualifiedName.namespace = parts[1]
if len(parts) < 2 || len(parts) > 4 {
return qualifiedName, qualifiedNameNotSpecifiedErr()
}
for i := 1; i < len(parts); i++ {
if len(parts[i]) == 0 || parts[i] == "." {
return qualifiedName, qualifiedNameNotSpecifiedErr()
}
}
qualifiedName.EntityName = strings.Join(parts[2:], "/")
if len(parts) == 4 {
qualifiedName.packageName = parts[2]
}
qualifiedName.entity = parts[len(parts)-1]
} else {
if len(name) == 0 || name == "." {
return qualifiedName, qualifiedNameNotSpecifiedErr()
}
qualifiedName.entity = parts[len(parts)-1]
if len(parts) == 2 {
qualifiedName.packageName = parts[0]
}
qualifiedName.EntityName = name
qualifiedName.namespace = getNamespaceFromProp()
}
whisk.Debug(whisk.DbgInfo, "Qualified pkg+entity (EntityName): %s\n", qualifiedName.GetEntityName())
whisk.Debug(whisk.DbgInfo, "Qualified namespace: %s\n", qualifiedName.GetNamespace())
whisk.Debug(whisk.DbgInfo, "Qualified package: %s\n", qualifiedName.GetPackageName())
whisk.Debug(whisk.DbgInfo, "Qualified entity: %s\n", qualifiedName.GetEntity())
return qualifiedName, nil
}