func NewQualifiedName()

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
}