From 74423fd58d3af3c3fcafd179be4b174aeace2230 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 30 Jan 2023 19:44:57 +0100 Subject: [PATCH] Make CamelCaseWithNamespaceNamingStrategy reusable Appending a suffix is usable for other strategies as well, rename this class to AppendNamespaceNamingStrategy and extract the fact that a strategy has a namespace to AppendNamespaceNamingStrategy, which automatic fallback. JIRA: MDSAL-675 Change-Id: Ib1614b84591b4c0349f81785846f7216e0e87ec4 Signed-off-by: Robert Varga --- .../AbstractNamespacedNamingStrategy.java | 40 +++++++++++++++++++ ...ava => AppendNamespaceNamingStrategy.java} | 6 +-- .../impl/reactor/CamelCaseNamingStrategy.java | 17 ++------ 3 files changed, 46 insertions(+), 17 deletions(-) create mode 100644 binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractNamespacedNamingStrategy.java rename binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/{CamelCaseWithNamespaceNamingStrategy.java => AppendNamespaceNamingStrategy.java} (89%) diff --git a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractNamespacedNamingStrategy.java b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractNamespacedNamingStrategy.java new file mode 100644 index 0000000000..144c21c87a --- /dev/null +++ b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractNamespacedNamingStrategy.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2023 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.mdsal.binding.generator.impl.reactor; + +import static java.util.Objects.requireNonNull; + +import com.google.common.base.MoreObjects.ToStringHelper; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * A {@link ClassNamingStrategy} which considers a {@link StatementNamespace} when assigning names. + */ +@NonNullByDefault +abstract class AbstractNamespacedNamingStrategy extends ClassNamingStrategy { + private final StatementNamespace namespace; + + AbstractNamespacedNamingStrategy(final StatementNamespace namespace) { + this.namespace = requireNonNull(namespace); + } + + @Override + final @NonNull ClassNamingStrategy fallback() { + return new AppendNamespaceNamingStrategy(this); + } + + final StatementNamespace namespace() { + return namespace; + } + + @Override + ToStringHelper addToStringAttributes(final ToStringHelper helper) { + return helper.add("namespace", namespace); + } +} diff --git a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/CamelCaseWithNamespaceNamingStrategy.java b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AppendNamespaceNamingStrategy.java similarity index 89% rename from binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/CamelCaseWithNamespaceNamingStrategy.java rename to binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AppendNamespaceNamingStrategy.java index d17483c1f2..b21be7e4c7 100644 --- a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/CamelCaseWithNamespaceNamingStrategy.java +++ b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AppendNamespaceNamingStrategy.java @@ -12,10 +12,10 @@ import static java.util.Objects.requireNonNull; import com.google.common.base.MoreObjects.ToStringHelper; import org.opendaylight.yangtools.yang.common.AbstractQName; -final class CamelCaseWithNamespaceNamingStrategy extends ClassNamingStrategy { - private final CamelCaseNamingStrategy delegate; +final class AppendNamespaceNamingStrategy extends ClassNamingStrategy { + private final AbstractNamespacedNamingStrategy delegate; - CamelCaseWithNamespaceNamingStrategy(final CamelCaseNamingStrategy delegate) { + AppendNamespaceNamingStrategy(final AbstractNamespacedNamingStrategy delegate) { this.delegate = requireNonNull(delegate); } diff --git a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/CamelCaseNamingStrategy.java b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/CamelCaseNamingStrategy.java index c2f89b3634..b7b209dfdc 100644 --- a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/CamelCaseNamingStrategy.java +++ b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/CamelCaseNamingStrategy.java @@ -10,17 +10,15 @@ package org.opendaylight.mdsal.binding.generator.impl.reactor; import static java.util.Objects.requireNonNull; import com.google.common.base.MoreObjects.ToStringHelper; -import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.NonNullByDefault; import org.opendaylight.yangtools.yang.common.AbstractQName; @NonNullByDefault -final class CamelCaseNamingStrategy extends ClassNamingStrategy { - private final StatementNamespace namespace; +final class CamelCaseNamingStrategy extends AbstractNamespacedNamingStrategy { private final AbstractQName nodeIdentifier; CamelCaseNamingStrategy(final StatementNamespace namespace, final AbstractQName nodeIdentifier) { - this.namespace = requireNonNull(namespace); + super(namespace); this.nodeIdentifier = requireNonNull(nodeIdentifier); } @@ -29,17 +27,8 @@ final class CamelCaseNamingStrategy extends ClassNamingStrategy { return nodeIdentifier; } - StatementNamespace namespace() { - return namespace; - } - - @Override - @NonNull ClassNamingStrategy fallback() { - return new CamelCaseWithNamespaceNamingStrategy(this); - } - @Override ToStringHelper addToStringAttributes(final ToStringHelper helper) { - return helper.add("localName", nodeIdentifier.getLocalName()).add("namespace", namespace); + return super.addToStringAttributes(helper.add("localName", nodeIdentifier.getLocalName())); } } -- 2.36.6