Tony Tkacik [Wed, 8 Jul 2015 11:23:00 +0000 (13:23 +0200)]
Bug 2882: Fix off-by-one usage of cursor.
DataTreeCandidates#applyToModification
when dealing with cursor-aware transaction
entered writen / element twice - once with enter
and once with write which resulted in exception.
Change-Id: Ifd4023c7ad54f2be1672c42725dd37f4e3ff8282
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
Robert Varga [Wed, 17 Jun 2015 07:59:30 +0000 (09:59 +0200)]
Introduce isMixin()
Instead of using a marker interface, expose an explicit method.
Change-Id: I59ea238634fecfee7acc745700850c84fc7ca348
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
ecb5cc29ccac889a79c0c1fbaeac0d8e7bddf7ff)
Robert Varga [Wed, 17 Jun 2015 11:40:58 +0000 (13:40 +0200)]
BUG-2882: implement DataTreeModificationCursor
This patch makes InMemoryDataTree's snapshots and modifications
implement CursorAware, allowing more efficient traversal.
Change-Id: I279fd6b7d2e14fdfa1827c500a6d323a53207ab5
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
3eed7efd259a1285df1d9206a65579b2171a4007)
Robert Varga [Tue, 16 Jun 2015 23:08:50 +0000 (01:08 +0200)]
Allow instantiation of rooted DataTrees
We are not restricted to instantiation of data trees only at the root,
but can also bind them to a particular SchemaPath. Accessing such a data
tree uses relative instance identifiers, thus increasing performance.
Change-Id: I065d224e851c723d775f2b5711f818747592fc74
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
6aced154f28787c22cf002e2faba4b5535695026)
Robert Varga [Tue, 16 Jun 2015 09:12:03 +0000 (11:12 +0200)]
Enforce sealed DataTreeModification
DataTree needs to enforce the modification being sealed before
validation or preparation can proceed.
Change-Id: If0f26002f393f6cae469d755076da283c06c89f0
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
369acc82f1d32abae66a80c1479aa04b07d336a1)
Tony Tkacik [Wed, 29 Apr 2015 09:25:26 +0000 (11:25 +0200)]
Fixed sonar issues in o.o.y.util package.
Change-Id: I577d3b3795340c33e2407bbecd821e5f1ff6cae7
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
Tom Pantelis [Sat, 20 Jun 2015 09:20:07 +0000 (05:20 -0400)]
Fix bug in ImmutableMapEntryNodeBuilder
In ImmutableMapEntryNodeBuilder#build, for the call to
getChild(childrenQNamesToPaths.get(key.getValue()));
it should use key.getKey(). As a result, key childs nodes are never
found and thus user-provided nodes are always replaced.
NOTE: https://git.opendaylight.org/gerrit/#/c/23044/ should be merged
first to avoid unit test failure in the controller project.
Change-Id: I736756ce8fc3e15a05641565f2f505a2db32e9fc
Signed-off-by: Tom Pantelis <tpanteli@brocade.com>
(cherry picked from commit
f965264bb05b1dc5dc921eb1f8e80461e6a1cbb9)
Robert Varga [Wed, 17 Jun 2015 07:22:56 +0000 (09:22 +0200)]
Remove unused import
YangInstanceIdentifier is only used as base reference to its nested
class, which we already import.
Change-Id: I4ca53b63cbec0cc240f2687fd3ecb5e34011f701
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
de6b83606f858fc0c220dde944cc0a9231e3d67e)
Robert Varga [Wed, 17 Jun 2015 06:57:43 +0000 (08:57 +0200)]
Import YangInstanceIdentifier nested classes
Rather than being verbose in referencing them, import and use them using
a short name.
Change-Id: If469f83c79beb339800b9593393a4ec027aa7d7c
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
eed5c49556b74e6fc1e0b1b6bd525e0442f9e983)
Jan Hajnar [Mon, 22 Jun 2015 12:53:04 +0000 (14:53 +0200)]
Bug 3834 - Unhelpful error messages when parsing
incorrect instance identifier in payload
* added custom exception when xpath argument ends with slash (before it
threw string out of bounds exception)
* added null check in DataSchemaContextNode so unknown qname for child
node does not crash on null pointer exception
Change-Id: Ie8db9c3cc1726dd73306437cb4eebb24f88eb5d9
Signed-off-by: Jan Hajnar <jhajnar@cisco.com>
Robert Varga [Tue, 30 Jun 2015 09:58:48 +0000 (11:58 +0200)]
Remove maven.bundle.version
Plugin is already declared in odlparent, no need to specify version.
Change-Id: I1d09c934fd26e3aec2da1cda54d842373ce1f7fd
Signed-off-by: Robert Varga <rovarga@cisco.com>
Robert Varga [Mon, 29 Jun 2015 20:22:54 +0000 (22:22 +0200)]
Make more mathods static
Private methods not touching object state can be made static, make it
so. Also remove an open-coded version of Strings.isNullOrEmpty().
Change-Id: I6e62ce1a4eb4b1556654172554eb69542df60403
Signed-off-by: Robert Varga <rovarga@cisco.com>
Robert Varga [Mon, 29 Jun 2015 20:22:15 +0000 (22:22 +0200)]
Remove unneeded cast
This cast is reported as unneeded by eclipse, remove it.
Change-Id: I45b9c91fb0576859b48aba9a68b429cd79b9097e
Signed-off-by: Robert Varga <rovarga@cisco.com>
Robert Varga [Sun, 21 Jun 2015 20:56:35 +0000 (22:56 +0200)]
Fix some minor sonar warnings
Mostly misplaced 'final' modifiers.
Change-Id: I5197b844e73db00467f7ebb852677c39176e5c94
Signed-off-by: Robert Varga <rovarga@cisco.com>
Tony Tkacik [Tue, 16 Jun 2015 08:46:53 +0000 (10:46 +0200)]
BUG-1014: Moved recursive verify of written data to ready()
Moved recursive verify of written data to ready(), recursive
verify of written data needs only to be run for write and/or
merge.
For other operations validity of data was tested in previous
transactions or doing the walk of SchemaApplyOperation
to resolve necessary information.
Change-Id: I1958ff747225f87913e8eb603212228910e38df0
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
(cherry picked from commit
eebec9b8c818d4c3b8437805809fdec67d2a6616)
Tony Tkacik [Fri, 19 Jun 2015 09:29:40 +0000 (11:29 +0200)]
Bug 3821 - Augmentation codecs may be loaded after codec creation.
In some scenarios - where schema context already contained
schema for introduced augmentation, but class was not known
at time codec creation was triggered - codec for augmenation
was not created and any subsequent uses of codec (class is
already known) failed with IncorrectNestingException.
This patch introduces
- new exception MissingClassInLoadingStrategy
which is subclass used by MD-SAL to retry after context update
or timeout
- supports loading of augmentation codec after parent codec
was created and augmentation is part of schema codec
Change-Id: If85f8e2be614a139947abc5daaa1e141b3c9b22c
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
(cherry picked from commit
acf8e80b0747bd0aa724e978288bb83f6ca338ad)
Martin Ciglan [Thu, 11 Jun 2015 11:55:22 +0000 (13:55 +0200)]
Bug3659: UnknownSchemaNodeImpl retains empty ArrayLists FIX
Change-Id: I291eb3f87a3bc1655d0966513e1c74154558cbce
Signed-off-by: Martin Ciglan <mciglan@cisco.com>
Robert Varga [Sun, 14 Jun 2015 08:58:46 +0000 (10:58 +0200)]
Remove deprecated YangInstanceIdentifier methods
this patch removes the internal bridge methods to Iterable path
arguments as well as the long-deprecated getPath() method.
Change-Id: I28168741a5ad852a108b1aa6f711d44bc4748b6a
Signed-off-by: Robert Varga <rovarga@cisco.com>
Robert Varga [Thu, 11 Jun 2015 11:15:54 +0000 (13:15 +0200)]
TypeDefinition is a generic type
Do not use it in raw format, eliminating warnings.
Change-Id: I6012f812ce7a5aba75f163a8910fb0583fefd6cc
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
35e731b1818688f2aee43f525873087aca25110e)
Shaleen Saxena [Wed, 17 Jun 2015 22:16:22 +0000 (15:16 -0700)]
BUG-3793
Manually patching in changes from Bug 2291 as it does not cherry-pick cleanly.
Change-Id: I17f1c2347d7aa3a120fac0171253e88c46e99fae
Signed-off-by: Shaleen Saxena <ssaxena@brocade.com>
(cherry picked from commit
9e4ce88404e59aed92fdf8d4242587720d8650ab)
Jan Hajnar [Tue, 16 Jun 2015 07:14:40 +0000 (09:14 +0200)]
Bug 3645 - instance-identifier parsing error
* added method deserializeKeyValue in AbstractStringInstanceIdentifierCodec
* added implementations for deserializeKeyValue for XML and JSON codecs
Change-Id: I97f68534d4ecc7b0cbb8e67ba899c9b4bfe91650
Signed-off-by: Jan Hajnar <jhajnar@cisco.com>
(cherry picked from commit
0c092cbca774271a87578432212fb398f61543a4)
Peter Kajsa [Fri, 16 Jan 2015 12:48:44 +0000 (13:48 +0100)]
Bug 2583 - illegal escape character if generated files
When a module file name starts with 'u' character, YangTools generates
comments in file containing '\u...' character sequences which java compiler
interprets as illegal escape character.
Problem is related most probably to windows builds only.
Change-Id: I81329b754710a68ada4e9c034c8980a1acd8a1b7
Signed-off-by: Peter Kajsa <pkajsa@cisco.com>
Maros Marsalek [Tue, 9 Jun 2015 14:16:30 +0000 (16:16 +0200)]
Bug 3191: Optimisation of serialisation of IdentityrefTypeDefinition
Workaround for the case when prefix and namespace within element
and its value is same as parent namespace.
Change-Id: I1c8f8b503dc38385aa8cd23a517e067531081661
Signed-off-by: Marian Dubai <mdubai@cisco.com>
Signed-off-by: Tomas Cere <tcere@cisco.com>
Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
Martin Ciglan [Tue, 16 Jun 2015 14:12:51 +0000 (16:12 +0200)]
Bug 2721: StackOverflowError for leafref FIX
Leafref XPath needs to be checked whether it references itself
in order to detect incoming StackOverflowError
and throw appropriate exception if necessary.
Change-Id: Iacfa1a9f9d85f947e590b1d6412c9c482b417dbf
Signed-off-by: Martin Ciglan <mciglan@cisco.com>
Robert Varga [Tue, 16 Jun 2015 18:59:27 +0000 (20:59 +0200)]
Sonar: remove unused modifiers
public/static/final modifies are implied by the context, e.g. by being
declared in an interface.
Change-Id: Ic2f97172595d7cdb2119510c077eabac55fa0798
Signed-off-by: Robert Varga <rovarga@cisco.com>
Robert Varga [Mon, 15 Jun 2015 22:28:54 +0000 (00:28 +0200)]
Introduce MapAdaptor.initialSnapshot()
In some circumstances we have an idea about how many entries will there
be in a map. This could cost us perform one additional copy, so expose a
method to create the appropriate map, behaving just as the one returned
by takeSnapshot(Collections.emptyMap()).
Also use ImmutableMaps for empty map, as it being immutable is recognized
by Guava, leading to quick reuse.
Change-Id: I40925e5d643c074277e9d11365a3b10fb9f22c1d
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
92fc5cc4436a65c3a63e1fc7afbff2ac42a70880)
Robert Varga [Mon, 15 Jun 2015 23:25:03 +0000 (01:25 +0200)]
BUG-1014: TreeType should be Beta
It is not a finalized concept yet, so users should we vary before
relying on it.
Change-Id: I6af61e2cc402b34126c4631cfaec1791180c8ce0
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
d122c09b076187b1719d1670fb3ecff4344c1907)
Robert Varga [Fri, 12 Jun 2015 01:09:13 +0000 (03:09 +0200)]
Use sizeHints in ImmutableNode builders
Instead of ignoring the size hint, use it.
Change-Id: I516fbb2a8c18bb6276b5863292f8b0e956ceb6da
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
43a86587a3fa6402a4eee19ecffb119b178994f5)
Jan Hajnar [Thu, 14 May 2015 12:30:49 +0000 (14:30 +0200)]
Bug 1014 - Non-configuration items in the model appear in the config
namespace
* added TreeType enum for tree type identification
* modified factory methods and constructor for InMemoryDataTree
* Modified factory of SchemaApplyOperation to filter subtree by tree type
* reworked verifyStructure() to recursivelly walk data tree
* added tests for config statement check
Change-Id: I3f4ebe84e4387965ff43714a1f45f75c738d4475
Signed-off-by: Jan Hajnar <jhajnar@cisco.com>
(cherry picked from commit
54271a74d07bfd0b4b7e9ed2a061a3ceb23b12f6)
Robert Varga [Sun, 14 Jun 2015 09:12:29 +0000 (11:12 +0200)]
Introduce YangInstanceIdentifier.toOptimized()
Users often need to retain a YangInstanceIdentifier for use in either
addressing the same element in the data tree, or to create child
instance identifiers. Create a new method, toOptimized(), which returns
an equivalent FixedYangInstanceIdentifier instance.
Change-Id: I057db1d539520195cd38c1bfc77a8be1384108e2
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
696e5e72e58b1e227b509c8307ddddf9f70beecf)
Robert Varga [Fri, 12 Jun 2015 17:04:39 +0000 (19:04 +0200)]
Remove use of deprecated parser method
This simplifies SchemaContext construction in test.
Change-Id: I784075dd28a36aae9e679abbdb8370d9ea415388
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
51cea429d220de41d4383e789512043b2bad1707)
Robert Varga [Fri, 12 Jun 2015 01:17:20 +0000 (03:17 +0200)]
Lower the size of ModifiedNode children maps
This lowers the default allocation of 16 to 8, hopefully lowering memory
pressure.
Change-Id: I72218f71a4407e0cdd802984b2edaf8fdfe8d3b2
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
e7aa2724f81a2eaae2b56d3e0e2d7f4a11a93b67)
Robert Varga [Thu, 11 Jun 2015 22:25:34 +0000 (00:25 +0200)]
Use an ImmutableMap for empty case
Instead of using Collections.emptyMap(), use ImmutableMap.of(). This
will result in an immutable map, taking the immutable shortcut in the
previous check.
Change-Id: I83a58b0dcd5f075d0ac7a7b5073b801ce8a47d08
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
03add667832ab33d50eabd046d5c9a93c75a62ab)
Robert Varga [Thu, 11 Jun 2015 20:28:38 +0000 (22:28 +0200)]
BUG-2402: introduce CloneableChildrenMap
This exposes the appropriate interface to create a copy of the
underlying map in the most efficient manner. Makes
AbstractImmutableDataContainerNodeBuilder check for presence of the
interface and use it to create an efficient copy.
Change-Id: I8ad8159076fa199f315857e339fc83363ce73289
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
05442d7e5fb59112453c5096851f2cd0a2b26a7f)
Robert Varga [Thu, 11 Jun 2015 21:05:01 +0000 (23:05 +0200)]
Cleanup NodeIdentifierWithPredicates references
Import NodeIdentifierWithPredicates directly, so we do not have to
qualify it with YangInstanceIdentifier.
Change-Id: Ibfaf62bf808b683bae57b120749db23fed3683eb
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
032463a27c486136db139d000f472c981e0633cf)
Robert Varga [Thu, 11 Jun 2015 10:40:28 +0000 (12:40 +0200)]
Make methods static
All these can be made static, so improve their efficiency.
Change-Id: Ie6aa238eab7fef728dd22af12a64a155a9db776e
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
12beaed7c9f1953562f79ef9699273d0ea53926c)
Robert Varga [Thu, 11 Jun 2015 10:32:44 +0000 (12:32 +0200)]
Make BaseYangTypes.TYPE_MAP immutable
The lookup map is expected to be immutable.
Change-Id: I0ed6c263d34e585dcca2445ec963ea785c934ab8
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
c8e3e8de1506e8571651f430024c14157cdb61bb)
Robert Varga [Wed, 10 Jun 2015 09:25:01 +0000 (11:25 +0200)]
Improve stored map memory efficiency
When we deal with small maps, we can improve our memory efficiency by
turning it into an ImmutableMap instead of wrapping it in another
instance.
For 1M fake BGP routes, this lowers the memory footprint by ~300MB,
which is about 10%.
Change-Id: I7fbac729f635ea089ac144e8a264df884d94c512
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
877489ac0ab40d8a0d71fe041f9c8ea66a7e3446)
Robert Varga [Tue, 9 Jun 2015 22:58:12 +0000 (00:58 +0200)]
Throw an exception from private constructor
This is a utility class, it should never be instantiated.
Change-Id: Ic2edd90d0cf084a3a38e5a6c068172b9d774799e
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
2e0878d894f821db411c87f2ffff094e9b32b5ee)
Jan Hajnar [Mon, 1 Jun 2015 14:40:16 +0000 (16:40 +0200)]
Bug 3336 - Binding DTOs: fix binary-derived constructor
* added condition to only check for null in value assignmet if class has
one property (because then CheckNull is generated before assgnment)
Change-Id: I3bd18ec60347b3d1d5dec32e7bcafa432c56b5ad
Signed-off-by: Jan Hajnar <jhajnar@cisco.com>
(cherry picked from commit
0c58b4c45c1caedd1e3ecdfa056c0c4f98185c63)
Peter Kajsa [Mon, 15 Jun 2015 09:36:29 +0000 (11:36 +0200)]
Bug 3669 - ietf-restconf binding is incomplete
- added implementation of ModuleRevisionBuilder.java
Change-Id: If50041c1b0befcb5fb8678cf95f915ef4b079bfb
Signed-off-by: Peter Kajsa <pkajsa@cisco.com>
Colin Dixon [Fri, 10 Apr 2015 00:36:49 +0000 (20:36 -0400)]
Provide better error messages when parsing JSON.
Change-Id: Ia3a613964ce74a6179a568098b83f9d3755fb9a4
Signed-off-by: Colin Dixon <colin@colindixon.com>
Robert Varga [Fri, 12 Jun 2015 13:59:56 +0000 (15:59 +0200)]
BUG-3674: delete of non-existing data is a no-op
As noted in the comments, a delete on non-existing data is a no-op. That
means the user should see an UNMODIFIED modification, not a DELETE.
Change-Id: Ic9f79b99eefa352549b363c4754566da66ed0d55
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
130683fbb867372bfa1a1d63fd491b182081aa1b)
Tony Tkacik [Fri, 12 Jun 2015 10:28:04 +0000 (12:28 +0200)]
Bug 3687 - StreamWriterGenerator emits UNKNOWN_SIZE
StreamWriterGenerator always emitted sizing hint
for fully-completed data and sometimes even
counting all availble augmentations, which actually
lead-up to larger sizes of collections then needed.
Fix changes the SIZE HINT for "constant" max-sized
types (containers, augmentations, list entries)
to -1 so underlaying implementation could size
them based on actual data.
Change-Id: Ibd446f71c4b066f4dab4a7d73b1bc851d9e62c99
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
b6fdf49d349662ffa82ae6477f99bac405799a3f)
Robert Varga [Sat, 6 Jun 2015 13:57:12 +0000 (15:57 +0200)]
Fix inefficient String buffering
Instead of using string concatenation before adding to stribuilder, add
the componets directly.
Change-Id: Ibbd9131f1a1ec5df5f32c84e86c140e52c5ec84d
Signed-off-by: Robert Varga <rovarga@cisco.com>
Robert Varga [Sat, 6 Jun 2015 13:53:10 +0000 (15:53 +0200)]
Fix sonar warnings
Declaring specific implementation class is a no-no, fix that up.
Change-Id: I55f6048fc737046ffd08518eddc0419ee61b276a
Signed-off-by: Robert Varga <rovarga@cisco.com>
Robert Varga [Sat, 6 Jun 2015 13:34:44 +0000 (15:34 +0200)]
Make methods static
These methods can be made static, make them such. Also fix raw types.
Change-Id: I4b697026857aae8579f0545e7e1284a7b8d00d04
Signed-off-by: Robert Varga <rovarga@cisco.com>
Robert Varga [Tue, 9 Jun 2015 23:09:51 +0000 (01:09 +0200)]
BUG-3641: cache hashCode value
Builder-derived classes can be used as HashMap keys, which means they
can see their hashcode computed multiple times. Since this is a
recursive operation, the cost of it can be quite high, so dedicate two
fields for caching the hashcode result.
Change-Id: I0d95fd94187a421e4018b2f6992dfeaf2e126732
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
0158f45b9078cdb867d3ce3c44a4ed4746f311fe)
Tony Tkacik [Tue, 9 Jun 2015 12:59:25 +0000 (14:59 +0200)]
Bug 1485: Invoke lengthCheck only on non-null object.
Change-Id: Iec3cf2fe08fbdac4e5139acab7865cd4c4b6224f
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
(cherry picked from commit
8dfd02dec37d796ce7a51866416675b021e85b7c)
Maros Marsalek [Mon, 8 Jun 2015 12:39:02 +0000 (14:39 +0200)]
BUG-706 Ignore anyxml nodes in binding serializer
AnyXml is not supported on that level and currently leads to null pointer ex.
Change-Id: I5c2a64ab9502e4bba02efd822d2b5294ef456cef
Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
(cherry picked from commit
8c4ddc66b0b1ef31a65b8cabf55173a16615bab2)
Robert Varga [Mon, 8 Jun 2015 16:43:05 +0000 (18:43 +0200)]
BUG-3051: Fix error reporting string
The exception thrown does not accurately describe what has happened. Be
more user-friendly and report the exact pattern which failed to match.
Change-Id: I0818c92c4a8cdf8c180234635c1efe059ff1c4e2
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
3680886f73ef87fb2818c57b12d3bc76525c3669)
Robert Varga [Sun, 31 May 2015 17:51:43 +0000 (19:51 +0200)]
BUG-1485: convert BuilderTemplate to use LengthGenerator
This converts BuilderTemplate to use the LengthGenerator class as
appropriate, speeding operations up. Also removes caching fields.
Change-Id: I1a0bfc56df8ab36880ae8e14c111cb9aca68c626
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
7998081d8e1761bf4798c1642e8e6107fc4666fc)
Robert Varga [Sun, 31 May 2015 12:05:02 +0000 (14:05 +0200)]
BUG-1485: Switch ClassTemplate length checker
Switch ClassTemplate to use LengthGenerator. Also removes the static field
used to hold ranges, as that is only used by deprecated length() method.
Change-Id: I2a084a71d21c8c63a2d9733fc767aa7ecd3cff67
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
65cf5ea01d87cbe65633a8e13fcbb6713e334ec2)
Robert Varga [Sun, 31 May 2015 11:33:03 +0000 (13:33 +0200)]
BUG-1485: Create LengthGenerator
LengthGenerator is akin to AbstractRangeGenerator, only simpler. Since
the type of the checked property can only be an integer, we can live
without subclasses. One weirdness is that it needs to support both
String and byte[] fields, but that is easily catered with two distinct
methods.
Change-Id: I6b714b4094c332c18ee210451b3bd1672ca74129
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
b8e6be6a350b8dd39de74ca33fa039e92b198b17)
Robert Varga [Tue, 2 Jun 2015 08:29:20 +0000 (10:29 +0200)]
Introduce NormalizedNodes.findDuplicates()
This is an analytics utility method to find duplicate entries within a
NormalizedNode subtree.
Change-Id: Iedb3c9f71848c546f6e303b66e3f129b5f4da54f
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
6397b5c1773f5ea825e592a0c27259b5e8631c06)
Jan Hajnar [Thu, 7 May 2015 15:09:37 +0000 (17:09 +0200)]
Bug 3224 - Parsing data with choice in case via augmentation results in
incorrect parsing
* added tests for multiple choices from augmentation parsing
for json, xml and bindinging aware context
* modified json parsing tests
* fixed choice augmentation resolution in ChoiceNodeCodecContext
and CompositeNodeDataWithSchema
* moved findCorrespondingAugment to SchemaUtils since it is useful for
multiple Classes
* replaced getNodeIdentifierForAugmentation code in SchemaUtils with
the one from CompositeNodeDataWithSchema.
Change-Id: Ibf57a771b92de14ecb70dcbbe250d7c559066882
Signed-off-by: Jan Hajnar <jhajnar@cisco.com>
(cherry picked from commit
a8f512b80e661dac1ff85db6c16c72bfbf7f5891)
Jan Hajnar [Fri, 22 May 2015 11:02:03 +0000 (13:02 +0200)]
Bug 3325 - RPC returns 500.
* added original schema node resolution to getBaseTypeForLeafRef method
(we need to resolve leafref nodes added by grouping according
to original module)
Change-Id: I80bf350cc442e966986c57ab2a352939a9f687a9
Signed-off-by: Jan Hajnar <jhajnar@cisco.com>
(cherry picked from commit
dfdb6ad916fe5d9f5ad7b36858e85a6db3ac75c4)
Robert Varga [Wed, 3 Jun 2015 13:14:06 +0000 (15:14 +0200)]
Add a quick identity check for map comparison
This should speed up the case of copied values. Also add a TODO for
future improvement.
Change-Id: Ie5122bd9b4941f05b6a94d30ecacbaab8dab2923
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
9f42a2bded6bb3ac541ce37fcf07598659a87f03)
Robert Varga [Thu, 28 May 2015 14:54:54 +0000 (16:54 +0200)]
Invoke equals() on a constant reference
Inverting how we perform the equality check makes it obvious that the
invoked method is bound to a specific class object, helping compiler
just a tiny bit.
Change-Id: Ia8209f50143b0c3af71a962ab2a3ab167396836f
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
1e51b859a08cfdda436fb12d0cf55dd89f00213b)
Robert Varga [Thu, 28 May 2015 20:34:01 +0000 (22:34 +0200)]
BUG-1485: remove holder for deprecated Class ranges
With the switchover to new range checks, the static caching field is not
needed. We still retain compatibility with possible users out there, but
they are now responsible for caching the result.
Change-Id: I119615255559263f98fc382b324026c4f5d35cfc
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
924235feb5540c5a453c522e85d13fbd1d140c5a)
Robert Varga [Thu, 28 May 2015 20:05:51 +0000 (22:05 +0200)]
BUG-1485: remove holder for deprecated Builder field ranges
Caching the result was important as long as ranges were used internally,
now that they are not, do not retain them and re-generate them on each
call. Any callers out there are now responsible for caching them
themselves.
Change-Id: Idcba7fe54c59e33d6eedb6b596a2bf4f4a5ca10c
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
8d510398ba320a17ba932d27b98423e8bcad1a10)
Robert Varga [Thu, 28 May 2015 19:33:18 +0000 (21:33 +0200)]
BUG-1485: switch BuilderTemplate to new range enforcement
This switches the template for builders to the new range enforcement
code.
Change-Id: I1368a6a6922b2e982b9f4274dca32cf73b888d4b
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
5b7dc4042d5827c60bf9ca9daaaf369242c931f9)
Robert Varga [Wed, 27 May 2015 20:00:18 +0000 (22:00 +0200)]
BUG-1485: switch ClassTemplate to new range enformcement
Switch range checks for simple classes (typedefs and similar) to the new
range checker. Also move printRangeConstraint() from BaseTemplate to
BuilderTemplate, as it ends up being used only there.
Change-Id: I16e4c1faf239d838ff415c0173ef3d06acc61701
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
02e503a09314f2e3192b85ed9fccaff5efb4942c)
Robert Varga [Thu, 28 May 2015 23:50:23 +0000 (01:50 +0200)]
BUG-1485: optimize primitive range checks
When we are dealing with a primitive type, we can force unboxing of the
type by declaring the range checker method's argument as the primitive
type. This will result in the stack not containing references for the
fast path (e.g. successful check) as well as reduce the number of
virtual calls to one. Checks will then be performed using primitive
manipulation instructions, which should result in better fast-path
execution.
The slow path will take a hit, as for throwing the exception, we will
end up re-boxing the primitive type.
Change-Id: I7e6b0e25790f9a43dc99f2fc7426bb9fe25c505c
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
9b5366d775b93f0e2a37f028cda11832ba65ce6d)
Robert Varga [Thu, 28 May 2015 14:57:20 +0000 (16:57 +0200)]
BUG-1485: make AbstractRangeGenerator deal with GTOs
For enforcement of ranges in builders, we will need to deal with types
other than ConcreteType. Also clean up internal interfaces, add some
javadocs and remove some trailing whitespace.
Also perform Number class conversion silently if it does not result in
loss of precision. Emit a warning if it does.
Change-Id: I8f3ba96c104fb28f6d2cfc4b05b5d24bb7f80aa1
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
d8f544b093f024ff156873c66eebf976f6738382)
Robert Varga [Thu, 28 May 2015 00:46:35 +0000 (02:46 +0200)]
BUG-1485: deprecate public static range/length methods
These methods are not efficient and expose implementation internals.
Mark them as deprecated for removal. This mirrors the deprecation in
ClassTemplate, which was not instantiated before due to how the code is
structured.
Change-Id: I7fcb831f00fd3baab02e1f25e10655c8288c6d4e
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
da603ecd3b0e093bf00ff75d80c0957196d9856d)
Robert Varga [Thu, 28 May 2015 00:26:42 +0000 (02:26 +0200)]
BUG-1485: move generateLengthMethod to BuilderTemplate
While it looks this method is shared, it is not, as ClassTemplate
defines its own. Move it to BuilderTemplate and make it private,
reducing confusion.
Change-Id: I998f200a963dea39b1e2fedaf7a9fd1e394db58d
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
c2bf3960924fd870b8d3183f396c5e43b84e0aa3)
Robert Varga [Thu, 28 May 2015 00:14:29 +0000 (02:14 +0200)]
BUG-1485: move *Range* methods to BuilderTemplate
printRangeConstraint and generateRangeMethod are used by BuilderTemplate
only, move them there to preserve locality and stop them from spreading.
Change-Id: I5d5421b50bd5e4ac65182ad1a11e7bfad199df51
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
c49ff3a94cc0b0f98dc73647a7fdc308fdaa3052)
Robert Varga [Wed, 27 May 2015 19:24:59 +0000 (21:24 +0200)]
BUG-1485: Move restriction generation
It is only used in the class template, so move it and make it private to
increase clarity.
Change-Id: I751c4a5a0af06dd89a79ce43546ec9c12490f166
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
76c57ce16f7b1b90325214e05f916bc486ad792d)
Robert Varga [Wed, 27 May 2015 23:06:14 +0000 (01:06 +0200)]
BUG-3399: fix BaseYangTypes' range constraints
Constraints Number type should match the Java type a particular type is
bound to. Users dealing with values trying to correlate it to the
metadata available can then rely on things like
value.getClass.cast(rangeMin) just working instead of concocting
conversions to deal with all possible combinations of types.
Also changes BaseConstraints to enforce the two components of a
constraint being the same type, preventing things like min being Integer
while max is a Long.
Change-Id: I38e646b4c08b032248349f3e618354aa2114efd3
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
af2244fc083e788645ac689b543af447efdf5b70)
Robert Varga [Tue, 26 May 2015 20:49:36 +0000 (22:49 +0200)]
BUG-1485: Introduce AbstractRangeGenerator and friends
Adds utility classes for dealing with various range constraints in
generated code. These classes are implemented in pure Java and attempt
to make sure generated code runs as efficiently as possible.
Change-Id: Ie1d05b514937507e225b9bc7559b1949a7e6eb76
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
c5e1800bc2851c90273b6218295ffe2e59fccf91)
Robert Varga [Tue, 26 May 2015 18:32:20 +0000 (20:32 +0200)]
BUG-1485: store patterns in an array
Internal compiled patters are only ever iterated over, hence there is no
need to store them in a list. Convert the field into an array, improving
both CPU and memory efficiency very slightly. Also saves instantiation
of a temporary list.
Change-Id: I5140bc81d0a78d4f91d4ad2d6f81cbd6ed1f6d55
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
29c2d3351bdf371274433e71909236f133130bfb)
Robert Varga [Thu, 4 Jun 2015 00:48:40 +0000 (02:48 +0200)]
Improve deltaChildren()
Instead of instantiating and mutating an index map, we perform a full
search in both old and new data, building the result as we go.
Change-Id: I4aae9cdbf18080a63da3416728b3b5dbb8e312ab
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
32f3ca2fb7ab6cdf6e8df5cf83ba3d16f21ffb01)
Robert Varga [Wed, 3 Jun 2015 08:16:17 +0000 (10:16 +0200)]
Fix performance of RecursiveReplaceCandidateNode.getModifiedChild()
This implementation was accidentally left out of conversion which
introduced AbstractDataTreeCandidateNode.deltaChild(). Convert the
callsite, increasing its efficiency.
Change-Id: I3bf434fb5fa843ade0c64999e1cf75dd1374b393
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
8c542f8aad8b79cd2ecf5a721e725f9076a1ca0b)
Robert Varga [Wed, 20 May 2015 19:44:29 +0000 (21:44 +0200)]
Speed up getModifiedChild()
As it turns out, the original implementation transformed all children
before performing a lookup. Methods involved in that conversion can be
easily applied to transform a single child, so address the FIXME by
first performing a lookup and then running transformation, if
appropriate.
Change-Id: I11a87a69ce3e8552926017c51db7d4899af74a2a
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
73262077092195b800edbeb89f0eeb80006d621b)
Robert Varga [Wed, 20 May 2015 20:06:22 +0000 (22:06 +0200)]
Mark mAbstractModifiedNodeBasedCandidateNode final
These methods are not to be overridden, so mark them as final.
Change-Id: Ibce6eb5f54b0e1730767b8a9d7c142f784649516
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
f3b12934576efbb0a5fb296c4eac785929fbcd19)
Robert Varga [Wed, 20 May 2015 19:55:40 +0000 (21:55 +0200)]
Make optionalData() static
This private utility method does not touch the object, hence make it
static.
Change-Id: Ifc50b713792cd3e8096173dbdaf3cdb41b9f42e2
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
41bbe5b3632734e4a0486c7edd71901879cc9f88)
Tony Tkacik [Wed, 20 May 2015 08:23:14 +0000 (10:23 +0200)]
Bug 3189 Special case of checking root node QName.
Root instance identifier is special in that it does not have a path
argument.
Change-Id: I59d699b786b3ce117511785dc4f8227ca86057f2
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
1f29c046d27af10f5228396a94213ebc59aa0b9b)
Tony Tkacik [Wed, 13 May 2015 09:23:27 +0000 (11:23 +0200)]
BUG-3189: Check consistency of Instance Identifier and Data
DataTree allows for a NormalizedNode to be stored at a position which is
inconsistent with its identifier. This can lead to weird errors, as
child metadata nodes are created. Add an explicit check to ensure this
cannot occur.
Change-Id: I0fbbec13a5c4121b3441869d244666e218305d57
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
(cherry picked from commit
8bb72bff26c4f1d2da94af6463ba8ae212e2223a)
Tony Tkacik [Wed, 13 May 2015 09:23:27 +0000 (11:23 +0200)]
BUG-3189: Check consistency of Instance Identifier and Data
DataTree allows for a NormalizedNode to be stored at a position which is
inconsistent with its identifier. This can lead to weird errors, as
child metadata nodes are created. Add an explicit check to ensure this
cannot occur.
Change-Id: I25918f1f866beadb1ba7c9687ba1a880942a0d9e
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
(cherry picked from commit
8bb72bff26c4f1d2da94af6463ba8ae212e2223a)
Robert Varga [Wed, 6 May 2015 09:57:35 +0000 (11:57 +0200)]
Add an explicit guard for root presence
A modification could potentially remove the root node, which would
trigger a failure in Optional.get(). Add an explicit check to provide
better diagnostic in that case.
Change-Id: I0e27910497169a080aa8185c66f65c9639ccf2e7
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
5ef3b21212ef72fea2602adb8ca0719ffe4092e5)
Robert Varga [Wed, 3 Jun 2015 17:17:20 +0000 (19:17 +0200)]
Add YangInstanceIdentifierBuilder.node(PathArgument)
Forcing users of builder to not reuse PathArgument instances seems
wrong. Allow passing of pre-made PathArguments to a builder.
Change-Id: Iae7d2a8c8dd60542a11c946dc3ced18e09afb62b
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
4c7b873ec4c5e90819647e8dd167da05852635d9)
Robert Varga [Wed, 3 Jun 2015 17:13:03 +0000 (19:13 +0200)]
Remove code duplication in YangInstanceIdentifierBuilder
The various node() methods share a tail-end, concentrate in a private
method.
Change-Id: Ice0f1b8824b6c5a11a2fdec696a1453817493b5e
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
113de9e01137d9f3ef99cc1ac9450cb4c17ae08e)
Robert Varga [Fri, 22 May 2015 16:45:02 +0000 (18:45 +0200)]
Take advantage of YangInstanceIdentifier methods
getPathArguments() returns a list, so we can ditch Iterables.
Change-Id: I5f83a46505bdea0c0b89d634a8b5e708b95a96bd
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
2accf0476feb1078dd365970ab609be1ae17de58)
Tony Tkacik [Wed, 3 Jun 2015 15:26:32 +0000 (17:26 +0200)]
Bug 3344: Make sure StackedPathArgument stack is non empty.
The while cycle in StackedYangInstanceIdentifier did double
check of tryPathArguments for same instance identifier,
which led to shared state during creation. This may have
resulted in StackedPathArgumements with empty stack.
Changing it into do-while cycle makes sure stack is non empty
and also state during construction is not shared between
multiple invokers.
Change-Id: I834c1f22c477bb03a6bae9c4a366308a0988ce4e
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
(cherry picked from commit
73b8669288832cd1d573bde23666dd0ba05abb8a)
Robert Varga [Tue, 19 May 2015 08:57:24 +0000 (10:57 +0200)]
BUG-3263: remove bridge Collection-based methods
This class and its methods were used in transition on Lithium and are no
longer needed, so remove them.
Change-Id: I2e67d173f87b409803e46861b77aa165784444e0
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
12b6252d832dc4c7e0a965acc0136ca4a9574db4)
Robert Varga [Mon, 18 May 2015 23:05:42 +0000 (01:05 +0200)]
BUG-3263: return a List of PathArguments
This is a further improvement to the interface, we return a List of path
arguments for both getPathArguments() and getReversePathArguments().
This makes it possible for StackedYangInstanceIdentifier to not retain a
legacy list of path arguments.
Change-Id: I98ebc2bec139a0e02b4a428bc783ea23981e3658
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
607cac45417bc76143d56d230f60a0293f99276f)
Robert Varga [Mon, 18 May 2015 22:29:06 +0000 (00:29 +0200)]
BUG-3263: return a Collection for path arguments
With the rework in place, we can now return a Collection from both
getPathArguments() and getReversePathArguments() even in the stacked
case.
Change-Id: I51179320022f060d9fb2597f473d0919d391092c
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
5ad97de7baf1ea8575349e4c5625525101d7749a)
Robert Varga [Mon, 18 May 2015 19:03:09 +0000 (21:03 +0200)]
BUG-3263: Split off Fixed/Stacked YangInstanceIdentifier
This patch makes YangInstanceIdentifier an abstract class, with two
subclasses: FixedYangInstanceIdentifier and
StackedYangInstanceIdentifier.
The fixed version uses an internal ImmutableList and derives efficiency
from it to the maximum extent allowed.
The stacked version stores a reference to the parent identifier and the
last path argument. It caches the support classes which provide
getPathArguments and getReversePathArguments.
Also introduce a getParent() method, as it can now be implemented
efficiently.
Change-Id: I0c4a771e74d031cae0b53a7f97221213222729f6
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
d3d9f5ba02c0264f57083ccbde6e7f3c3548898e)
Robert Varga [Thu, 28 May 2015 10:24:08 +0000 (12:24 +0200)]
BaseTypes' QNameModule should be cached
This QNameModule may be incoming from multiple places, make sure we seed
it into the cache on load.
Change-Id: I764edf3520a37d853eff519ca4139dc2f60480b3
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
a434cb4c9cea4c4d65a4b764814b14d9a5f74a4e)
Robert Varga [Thu, 28 May 2015 10:21:55 +0000 (12:21 +0200)]
Make sure we cache QNameModule instances
Parser should be taking advantege of cached QNameModules, as multiple
generations/independent instances within a JVM should still be sharing
them.
Change-Id: I3c670519056456f8c93591b1e8e24f095131fb9a
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
9c29d20c9efaaac3f11b0ca54b484fca87afe719)
Robert Varga [Thu, 28 May 2015 01:59:22 +0000 (03:59 +0200)]
Make test utilities static
These two can be static, make them static.
Change-Id: I3fe54607edbadea4250928e99260906cbaef4629
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
0341b340283af8efa8c7604c1d65ac87aaeecfd1)
Robert Varga [Tue, 26 May 2015 22:18:57 +0000 (00:18 +0200)]
Do not instantiate augmentation HashMap in DTO builders
Tracing has revealed that the OpenFlowPlugin creates a lot of builders,
instantiation a million HashMaps, which accounts for 1% of CPU time.
Most of these maps are never touched, so we can easily optimize this
away by lazily instantiating a HashMap when the first augmentation is
added. Also prevents copying of empty augmentation in the copy
constructor.
Change-Id: I592fe6af65c9f3b65038def8bb4069666bfdc375
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
2cb012f4e814859e10726d02cb1c073321316ab3)
Robert Varga [Wed, 20 May 2015 19:56:22 +0000 (21:56 +0200)]
Guard against null data in AbstractLeafCandidateNode
An instance of this class is defunct if data is ever null, as accessors
will throw a NPE from Optional.of(). Make sure data passed down is never
null, catching any possible offenders.
This transitively fixes the transformation functions, as they will throw
NPE when they get a null input, as per Function API contract.
Change-Id: I8851e3c68dc9aa5abab4874f019fd214b20c0415
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
540b47bdefb25b8edb8481499efcd51d402bd57c)
Robert Varga [Thu, 28 May 2015 15:23:27 +0000 (17:23 +0200)]
Clarify GeneratedTransferObject.getSuperType()
The Javadoc for this method is confusing and actually misleading.
Clarify it a bit for future's sake.
Change-Id: I52f09e2e9cf864dc00fb4883099ca4df5219327f
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
a2a7dee2cc6a9e83f53acd08408b227416f29bff)
Robert Varga [Wed, 3 Jun 2015 17:32:11 +0000 (19:32 +0200)]
BindingReflections' cache should use cached references
Since we will be giving out these all over the place, it is a good idea
to make sure the returned reference is system-global.
Change-Id: I46c4f62c5ea8f8ee13e7745e6c9efd7d865bd6d4
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
47e801b7f26d9e8ce68738bdfd0d1b6e6c83ae0c)
Moiz Raja [Sat, 23 May 2015 00:46:00 +0000 (17:46 -0700)]
BUG 2970 : Throw a specific exception when schema validation fails
When resolving a modification if there is a failure in validating
a data node because it's schema is not present we should throw
a specific exception instead of just an IllegalArgument exception.
This specific exception can be used by CDS to determine if the failure
to add a node was due to a schema validation failure and then we will
attempt to prune data from the normalized node so that the invalid
data elements are removed.
Change-Id: Ieba347c29a9e92ea6aa7ccc2570935cd7a233b8e
Signed-off-by: Moiz Raja <moraja@cisco.com>
Debalina Ghosh [Thu, 14 May 2015 16:59:57 +0000 (09:59 -0700)]
Bug 2816: Changed BooleanStringCodec deserialization
Added validate() to deserialize that checks whether input string is true or false.
If some other string is given, IllegalArgumentException is thrown.
Unit test is changed accordingly.
Change-Id: I51e7da19bd4cce85aa707d7741ae3956cc3e8890
Signed-off-by: Debalina Ghosh <debalina.ghosh@hp.com>
Tomas Cere [Tue, 2 Jun 2015 12:03:58 +0000 (14:03 +0200)]
Stop calling get on a possible absent value.
Change-Id: I76cc4d6decd7cf65f988dcb87553b280aab21b24
Signed-off-by: Tomas Cere <tcere@cisco.com>
Robert Varga [Wed, 27 May 2015 10:54:03 +0000 (12:54 +0200)]
Allow instantiation of more efficient RpcServiceInvokers
Current invoker derived from binding class has the downside of
performing localName->methodName conversion on each invocation, which
costs us in the lookup path, as deriving the binding method name is a
costly operation.
Add a new static factory method for creating a RpcServiceInvoker
instance base on a QName->Method map. Provide two additional
implementations: a generic one, which performs a direct lookup in the
map and a specialized one, which performs lookup only on the localName
part of the qname. The latter is used after we have made sure all QNames
come from the same QNameModule.
Change-Id: I6a4b33f0487838b3ae6c15470823e4bc01114aa5
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit
aab5a09be514bc7622416bf2a6d4d6a7465f9d7c)