code: @Override
      public String getClassNameFromResourceName(String resourceName) {
          int endingOffset = resourceName.length() - ClassSource.CLASS_EXTENSION.length();
          int startingOffset = (resourceName.charAt(0) == '/') ? 1 : 0;
          String className = resourceName.substring(startingOffset, endingOffset);
          className = className.replace(RESOURCE_SEPARATOR_CHAR, ClassSource.CLASS_SEPARATOR_CHAR);
          return className;
      }
docs: <p>Generate a class name from a resource name.</p>
  
  <p>Override: Simple class sources process bundle based resources.
  Bundle based resource names are generated with leading slashes
  for loosely mapped elements of the bundle. In addition to the
  replacement of "/" characters with ".", strip off any leading "/"
  before performing the replacement.</p>
  
  <p>This implementation means the class name to resource name mapping
  is no longer simply invertible. As a consequence, code which handles
  resource names (for example, com.ibm.ws.eba.jpa.annotation.scanning.BundleBasedSimpleSourceProvider.openResource),
  must handle a resource name which has a leading "/" the same as one
  which does not have a leading "/".
  
  <p>See {@link ClassSourceImpl#getResourceNameFromClassName(String)}.</p>
  
  <p>See also {@link #isProviderResource(String)} and {@link #openResourceStream(String, String)}.</p>
  
  @param resourceName The resource for which to obtain a class name.
  
  @return The class name for the resource.