@Override
  public Object getDefaultProperty(String propertyName) {
    if (SOURCE_FOLDER.equals(propertyName)) {
      return this.hookModel.getProperty(SOURCE_FOLDER);
    } else if (JAVA_PACKAGE.equals(propertyName)) {
      int lastDot = this.qualifiedClassname.lastIndexOf('.');

      if (lastDot > -1) {
        return this.qualifiedClassname.substring(0, lastDot);
      } else {
        return StringPool.EMPTY;
      }
    } else if (JAVA_PACKAGE_FRAGMENT_ROOT.equals(propertyName)) {
      return this.hookModel.getProperty(JAVA_PACKAGE_FRAGMENT_ROOT);
    } else if (CLASS_NAME.equals(propertyName)) {
      return this.qualifiedClassname.substring(
          this.qualifiedClassname.lastIndexOf('.') + 1, this.qualifiedClassname.length());
    } else if (SUPERCLASS.equals(propertyName)) {
      return this.qualifiedSuperclassname;
    } else if (PROJECT_NAME.equals(propertyName)) {
      return this.hookModel.getProperty(PROJECT_NAME);
    }

    return super.getDefaultProperty(propertyName);
  }
 private static String replacePlaceHolders(String template, Project project) {
   String processedTemplate = template;
   String projectName = "";
   String projectBaseDir = "";
   String projectBaseDirName = "";
   if (null != project) {
     projectName = project.getName();
     projectBaseDir = project.getBasePath();
     projectBaseDirName = project.getBaseDir().getName();
   }
   processedTemplate = processedTemplate.replace(PROJECT_NAME.getVariableName(), projectName);
   processedTemplate =
       processedTemplate.replace(PROJECT_BASE_DIR_NAME.getVariableName(), projectBaseDirName);
   processedTemplate =
       processedTemplate.replace(PROJECT_BASE_DIR.getVariableName(), projectBaseDir);
   return processedTemplate;
 }