import com.google.common.base.Optional;
import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;
-import java.text.ParseException;
+import java.time.format.DateTimeParseException;
+import java.util.AbstractMap.SimpleImmutableEntry;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
+import java.util.Map.Entry;
import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
import org.opendaylight.mdsal.dom.api.DOMYangTextSourceProvider;
import org.opendaylight.restconf.nb.rfc8040.utils.RestconfConstants;
import org.opendaylight.restconf.nb.rfc8040.utils.validations.RestconfValidation;
import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode;
import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
final QName rpcQName = pathYangInstanceIdentifier.getLastPathArgument().getNodeType();
RpcDefinition def = null;
for (final RpcDefinition rpcDefinition : mountSchemaContext
- .findModuleByNamespaceAndRevision(rpcQName.getNamespace(), rpcQName.getRevision()).getRpcs()) {
+ .findModule(rpcQName.getModule()).get().getRpcs()) {
if (rpcDefinition.getQName().getLocalName().equals(rpcQName.getLocalName())) {
def = rpcDefinition;
break;
}
final QName rpcQName = deserialize.getLastPathArgument().getNodeType();
RpcDefinition def = null;
- for (final RpcDefinition rpcDefinition
- : schemaContext.findModuleByNamespaceAndRevision(rpcQName.getNamespace(),
- rpcQName.getRevision()).getRpcs()) {
+ for (final RpcDefinition rpcDefinition : schemaContext.findModule(rpcQName.getModule()).get().getRpcs()) {
if (rpcDefinition.getQName().getLocalName().equals(rpcQName.getLocalName())) {
def = rpcDefinition;
break;
}
/**
- * Make a {@link QName} from identifier.
+ * Make a moduleName/Revision pair from identifier.
*
* @param identifier
* path parameter
* @return {@link QName}
*/
- public static QName makeQNameFromIdentifier(final String identifier) {
+ public static Entry<String, Revision> makeQNameFromIdentifier(final String identifier) {
// check if more than one slash is not used as path separator
if (identifier.contains(
String.valueOf(RestconfConstants.SLASH).concat(String.valueOf(RestconfConstants.SLASH)))) {
ErrorTag.INVALID_VALUE);
}
- final Date moduleRevision;
+ final Revision moduleRevision;
try {
- moduleRevision = SimpleDateFormatUtil.getRevisionFormat().parse(pathArgs.get(1));
- } catch (final ParseException e) {
+ moduleRevision = Revision.of(pathArgs.get(1));
+ } catch (final DateTimeParseException e) {
LOG.debug("URI has bad format: '{}'. It should be 'moduleName/yyyy-MM-dd'", identifier);
throw new RestconfDocumentedException("URI has bad format. It should be \'moduleName/yyyy-MM-dd\'",
- ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
+ ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE, e);
}
- return QName.create(null, moduleRevision, pathArgs.get(0));
+ return new SimpleImmutableEntry<>(pathArgs.get(0), moduleRevision);
}
/**
final Iterator<String> componentIter = pathComponents.iterator();
if (!Iterables.contains(pathComponents, RestconfConstants.MOUNT)) {
final String moduleName = RestconfValidation.validateAndGetModulName(componentIter);
- final Date revision = RestconfValidation.validateAndGetRevision(componentIter);
- final Module module = schemaContext.findModuleByName(moduleName, revision);
-
+ final Revision revision = RestconfValidation.validateAndGetRevision(componentIter);
+ final Module module = schemaContext.findModule(moduleName, revision).orElse(null);
return new SchemaExportContext(schemaContext, module, sourceProvider);
} else {
final StringBuilder pathBuilder = new StringBuilder();
final InstanceIdentifierContext<?> point = ParserIdentifier
.toInstanceIdentifier(pathBuilder.toString(), schemaContext, Optional.of(domMountPointService));
final String moduleName = RestconfValidation.validateAndGetModulName(componentIter);
- final Date revision = RestconfValidation.validateAndGetRevision(componentIter);
- final Module module = point.getMountPoint().getSchemaContext().findModuleByName(moduleName, revision);
+ final Revision revision = RestconfValidation.validateAndGetRevision(componentIter);
+ final Module module = point.getMountPoint().getSchemaContext().findModule(moduleName, revision)
+ .orElse(null);
return new SchemaExportContext(point.getMountPoint().getSchemaContext(), module, sourceProvider);
}
}