All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.castor.xml.JavaNaming Maven / Gradle / Ivy

/*
 * Copyright 2007 Joachim Grueneis
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
package org.castor.xml;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * JavaNaming is a service which collects all methods that are related to create (modify) Java
 * names. E.g. convert from XML name to Java name, get a Java member name or such. These rules can
 * be exchanged by a different implementation to get a different naming style for e.g. JAXB.
 * 
 * @author Joachim Grueneis
 * @version $Id$
 */
public interface JavaNaming {
  /** Add methods start with: add. */
  public static final String METHOD_PREFIX_ADD = "add";

  /** Get methods start with: get. */
  public static final String METHOD_PREFIX_GET = "get";

  /** Is methods start with: is. */
  public static final String METHOD_PREFIX_IS = "is";

  /** Set methods start with: set. */
  public static final String METHOD_PREFIX_SET = "set";

  /** Create methods start with: create. */
  public static final String METHOD_PREFIX_CREATE = "create";

  /** The underscore field prefix. */
  public static final char FIELD_UNDERSCORE_PREFIX = '_';

  /**
   * Returns true if the given String is a Java keyword which will cause a problem when used as a
   * variable name.
   * 
   * @param name The name to check.
   * @return true if it is a keyword.
   */
  boolean isKeyword(String name);

  /**
   * Returns true if the given String matches the production of a valid Java identifier.
   * 
   * @param string The String to check the production of.
   * @return true if the given String matches the production of a valid Java name, otherwise false.
   */
  boolean isValidJavaIdentifier(String string);

  /**
   * Cuts away a leading namespace prefix (if there is one in place).
   * 
   * @param name The XML name to convert to a Java name.
   * @return A name which follows Java naming conventions.
   */
  String toJavaClassName(String name);

  /**
   * Appends a leading '_' and converts the given name to a java name.
   * 
   * @param name the XML name to convert.
   * @return A Java member name starting with a leading '_'.
   */
  String toJavaMemberName(String name);

  /**
   * Appends a leading '_' and converts the given name to a java name.
   * 
   * @param name The XML name to convert.
   * @param useKeywordSubstitutions Set to true to turn on keyword substitution.
   * @return A Java member name starting with a leading '_'.
   */
  String toJavaMemberName(String name, boolean useKeywordSubstitutions);

  /**
   * Checks if the given package name is valid or not. Empty package names are considered valid!
   * 
   * @param packageName Name of package as String with periods.
   * @return true if package name is valid.
   */
  boolean isValidPackageName(String packageName);

  /**
   * Converts the given Package name to it's corresponding Path. The path will be a relative path.
   * 
   * @param packageName The package name to convert.
   * @return A String containing the resulting patch.
   */
  String packageToPath(String packageName);

  /**
   * Qualifies the given fileName with the given packageName and returns
   * the resulting file path.
* If packageName is null or a zero-length String, this method will * return fileName.
* * @param fileName The file name to be qualified. * @param packageName The package name to be used for qualifying. * @return The qualified file path. */ String getQualifiedFileName(String fileName, String packageName); /** * Gets the class name without package part. * * @param clazz The class to retrieve the name from * @return the class name without package part or null */ String getClassName(Class clazz); /** * Gets the package name of the given class name. * * @param className The class name to retrieve the package name from. * @return The package name or the empty String if className is null or * does not contain a package. */ String getPackageName(String className); /** * Extracts the filed name part from the methods name. Mostly it cuts away the method prefix. * * @param method The Method to process. * @return The extracted field name. */ String extractFieldNameFromMethod(Method method); /** * Extracts the field name part from the Field. Mostly it cuts away prefixes like '_'. * * @param field the Field to process * @return The extracted field name. */ String extractFieldNameFromField(Field field); /** * Checks if the given method is a set method. * * @param method The Method to check * @return true if it is a set method */ boolean isSetMethod(Method method); /** * Checks if the given method is a create method. * * @param method The Method to check. * @return true if it is a create method. */ boolean isCreateMethod(Method method); /** * Checks if the given method is a get method. * * @param method The Method to check. * @return true if it is a get method. */ boolean isGetMethod(Method method); /** * Checks if the given method is an is method. * * @param method The Method to check. * @return true if it is an is method. */ boolean isIsMethod(Method method); /** * Checks if the given method is an add method. * * @param method The Method to check. * @return true if it is an add method. */ boolean isAddMethod(Method method); /** * Generates the name of an add method for the given field name. * * @param fieldName The field name to generate a method name for. * @return The generated add method name. */ String getAddMethodNameForField(String fieldName); /** * Generates the name of a set method for the given field name. * * @param fieldName The field name to generate a method name for. * @return The generated set method name. */ String getSetMethodNameForField(String fieldName); /** * Generates the name of a get method for the given field name. * * @param fieldName The field name to generate a method name for. * @return The generated get method name. */ String getGetMethodNameForField(String fieldName); /** * Generates the name of an is method for the given field name. * * @param fieldName The field name to generate a method name for. * @return The generated is method name. */ String getIsMethodNameForField(String fieldName); /** * Generates the name of a create method for the given field name. * * @param fieldName The field name to generate a method name for. * @return The generated create method name. */ String getCreateMethodNameForField(String fieldName); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy