import static org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil.encodeAngleBrackets;
import com.google.common.annotations.Beta;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import org.opendaylight.mdsal.binding.model.api.JavaTypeName;
import org.opendaylight.mdsal.binding.model.api.type.builder.EnumBuilder;
+import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder;
+import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilderBase;
-import org.opendaylight.yangtools.yang.binding.BindingMapping;
+import org.opendaylight.mdsal.binding.model.util.generated.type.builder.AbstractEnumerationBuilder;
+import org.opendaylight.mdsal.binding.model.util.generated.type.builder.CodegenEnumerationBuilder;
+import org.opendaylight.mdsal.binding.model.util.generated.type.builder.CodegenGeneratedTOBuilder;
+import org.opendaylight.mdsal.binding.model.util.generated.type.builder.CodegenGeneratedTypeBuilder;
+import org.opendaylight.yangtools.yang.binding.RegexPatterns;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.ModifierKind;
import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
-import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
* Creates new instance of class <code>TypeProviderImpl</code>.
*
* @param schemaContext contains the schema data read from YANG files
+ * @param renames
* @throws IllegalArgumentException if <code>schemaContext</code> is null.
*/
- public CodegenTypeProvider(final SchemaContext schemaContext) {
- super(schemaContext);
+ public CodegenTypeProvider(final SchemaContext schemaContext, final Map<SchemaNode, JavaTypeName> renames) {
+ super(schemaContext, renames);
+ }
+
+ @VisibleForTesting
+ CodegenTypeProvider(final SchemaContext schemaContext) {
+ this(schemaContext, ImmutableMap.of());
}
@Override
typeDef.getReference().ifPresent(genTOBuilder::setReference);
}
+ /**
+ * Converts the pattern constraints to the list of
+ * the strings which represents these constraints.
+ *
+ * @param patternConstraints
+ * list of pattern constraints
+ * @return list of strings which represents the constraint patterns
+ */
@Override
- Map<String, String> resolveRegExpressionsFromTypedef(final TypeDefinition<?> typedef) {
- if (!(typedef instanceof StringTypeDefinition)) {
+ public Map<String, String> resolveRegExpressions(final List<PatternConstraint> patternConstraints) {
+ if (patternConstraints.isEmpty()) {
return ImmutableMap.of();
}
- // TODO: run diff against base ?
- final List<PatternConstraint> patternConstraints = ((StringTypeDefinition) typedef).getPatternConstraints();
final Map<String, String> regExps = Maps.newHashMapWithExpectedSize(patternConstraints.size());
for (PatternConstraint patternConstraint : patternConstraints) {
String regEx = patternConstraint.getJavaPatternString();
private static String applyModifier(final ModifierKind modifier, final String pattern) {
switch (modifier) {
case INVERT_MATCH:
- return BindingMapping.negatePatternString(pattern);
+ return RegexPatterns.negatePatternString(pattern);
default:
LOG.warn("Ignoring unhandled modifier {}", modifier);
return pattern;
}
}
+
+ @Override
+ public GeneratedTOBuilder newGeneratedTOBuilder(final JavaTypeName identifier) {
+ return new CodegenGeneratedTOBuilder(identifier);
+ }
+
+ @Override
+ public GeneratedTypeBuilder newGeneratedTypeBuilder(final JavaTypeName identifier) {
+ return new CodegenGeneratedTypeBuilder(identifier);
+ }
+
+ @Override
+ public AbstractEnumerationBuilder newEnumerationBuilder(final JavaTypeName identifier) {
+ return new CodegenEnumerationBuilder(identifier);
+ }
}