/**
  * @see TypeDescription::parseTypeName()
  */
 function parseTypeName($typeName)
 {
     // Configure the parent class type description
     // with the expected meta-data class.
     parent::parseTypeName('lib.pkp.classes.metadata.MetadataDescription');
     // Split the type name into class name and assoc type.
     $typeNameParts = explode('(', $typeName);
     if (!count($typeNameParts) == 2) {
         return false;
     }
     // The meta-data schema class must be
     // a fully qualified class name.
     $splitMetadataSchemaClass = $this->splitClassName($typeNameParts[0]);
     if ($splitMetadataSchemaClass === false) {
         return false;
     }
     list($this->_metadataSchemaPackageName, $this->_metadataSchemaClassName) = $splitMetadataSchemaClass;
     // Identify the assoc type.
     $assocTypeString = trim($typeNameParts[1], ')');
     if ($assocTypeString == '*') {
         $this->_assocType = ASSOC_TYPE_ANY;
     } else {
         // Make sure that the given assoc type exists.
         $assocTypeString = 'ASSOC_TYPE_' . $assocTypeString;
         if (!defined($assocTypeString)) {
             return false;
         }
         $this->_assocType = constant($assocTypeString);
     }
     return true;
 }