/** * Creates package name from specified <code>basePackageName</code> (package name for module) and * <code>schemaPath</code>. * * <p>Resulting package name is concatenation of <code>basePackageName</code> and all local names * of YANG nodes which are parents of some node for which <code>schemaPath</code> is specified. * * @param basePackageName string with package name of the module * @param schemaPath list of names of YANG nodes which are parents of some node + name of this * node * @param isUsesAugment boolean true if using augment * @return string with valid JAVA package name * @deprecated Use {@link #packageNameForGeneratedType(String, SchemaPath)} or {@link * #packageNameForAugmentedGeneratedType(String, SchemaPath)} instead. */ @Deprecated public static String packageNameForGeneratedType( final String basePackageName, final SchemaPath schemaPath, final boolean isUsesAugment) { if (basePackageName == null) { throw new IllegalArgumentException("Base Package Name cannot be NULL!"); } if (schemaPath == null) { throw new IllegalArgumentException("Schema Path cannot be NULL!"); } final Iterable<QName> iterable = schemaPath.getPathFromRoot(); final int size = Iterables.size(iterable); final int traversalSteps; if (isUsesAugment) { traversalSteps = size; } else { traversalSteps = size - 1; } if (traversalSteps == 0) { return BindingMapping.normalizePackageName(basePackageName); } return generateNormalizedPackageName(basePackageName, iterable, traversalSteps); }
/** * Generates the package name for type definition from <code>typeDefinition</code> and <code> * basePackageName</code>. * * @param basePackageName string with the package name of the module * @param typeDefinition type definition for which the package name will be generated * * @return string with valid JAVA package name * @throws IllegalArgumentException * <ul> * <li>if <code>basePackageName</code> equals <code>null</code> * <li>if <code>typeDefinition</code> equals <code>null</code> * </ul> * * @deprecated This method ignores typeDefinition argument and its result is only <code> * BindingMapping.normalizePackageName(basePackageName)</code>. Aside from tests, there is not * a single user in OpenDaylight codebase, hence it can be considered buggy and defunct. It is * scheduled for removal in Boron release. */ @Deprecated public static String packageNameForTypeDefinition( final String basePackageName, final TypeDefinition<?> typeDefinition) { if (basePackageName == null) { throw new IllegalArgumentException("Base Package Name cannot be NULL!"); } if (typeDefinition == null) { throw new IllegalArgumentException("Type Definition reference cannot be NULL!"); } return BindingMapping.normalizePackageName(basePackageName); }
private static String generateNormalizedPackageName( final String base, final Iterable<QName> path, final int size) { final StringBuilder builder = new StringBuilder(base); final Iterator<QName> iterator = path.iterator(); for (int i = 0; i < size; ++i) { builder.append('.'); String nodeLocalName = iterator.next().getLocalName(); // FIXME: Collon ":" is invalid in node local name as per RFC6020, identifier statement. builder.append(DASH_COLON_MATCHER.replaceFrom(nodeLocalName, '.')); } return BindingMapping.normalizePackageName(builder.toString()); }
/** * Converts module name to valid JAVA package name. * * <p>The package name consists of: * * <ul> * <li>prefix - <i>org.opendaylight.yang.gen.v</i> * <li>module YANG version - <i>org.opendaylight.yang.gen.v</i> * <li>module namespace - invalid characters are replaced with dots * <li>revision prefix - <i>.rev</i> * <li>revision - YYYYMMDD (MM and DD aren't spread to the whole length) * </ul> * * @param module module which contains data about namespace and revision date * @return string with the valid JAVA package name * @throws IllegalArgumentException if the revision date of the <code>module</code> equals <code> * null</code> * @deprecated USe {@link BindingMapping#getRootPackageName(QNameModule)} with {@link * Module#getQNameModule()}. */ @Deprecated public static String moduleNamespaceToPackageName(final Module module) { return BindingMapping.getRootPackageName(module.getQNameModule()); }