code: @Override
  	public void setIdName(final String idName) {
  		// Not allow empty or null
  		if (Util.empty(idName)) {
  			throw new IllegalArgumentException("idName cannot be null or empty");
  		}
  
  		// Must start with a letter and followed by letters, digits and or underscores
  		Matcher matcher = ID_PATTERN.matcher(idName);
  		if (!matcher.matches()) {
  			throw new IllegalArgumentException(
  					"idName "
  					+ idName
  					+ " must start with a letter and followed by letters, digits and or underscores.");
  		}
  		String currIdName = getIdName();
  		if (!Objects.equals(idName, currIdName)) {
  			ComponentModel model = getOrCreateComponentModel();
  			model.setIdName(idName);
  		}
  	}
docs: {@inheritDoc}