yangtools.git
8 years agoProvide better error messages when parsing JSON. 71/20171/4
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>
8 years agoIntroduce YangInstanceIdentifier.toOptimized() 44/22544/2
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>
8 years agoRemove use of deprecated parser method 83/22483/1
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>
8 years agoBUG-3674: delete of non-existing data is a no-op 71/22471/3
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>
8 years agoLower the size of ModifiedNode children maps 28/22428/4
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>
8 years agoBug 3687 - StreamWriterGenerator emits UNKNOWN_SIZE 52/22452/4
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>
8 years agoUse an ImmutableMap for empty case 19/22419/1
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>
8 years agoBUG-2402: introduce CloneableChildrenMap 09/22409/1
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>
8 years agoCleanup NodeIdentifierWithPredicates references 08/22408/1
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>
8 years agoTypeDefinition is a generic type 51/22351/1
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>
8 years agoMake methods static 47/22347/2
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>
8 years agoMake BaseYangTypes.TYPE_MAP immutable 46/22346/1
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>
8 years agoImprove stored map memory efficiency 62/22262/3
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>
8 years agoThrow an exception from private constructor 42/22242/4
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>
8 years agoBUG-3641: cache hashCode value 41/22241/4
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>
8 years agoBug 3191: Optimisation of serialisation of IdentityrefTypeDefinition 10/21610/10
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>
8 years agoBug 1485: Invoke lengthCheck only on non-null object. 89/22189/1
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>
8 years agoBUG-706 Ignore anyxml nodes in binding serializer 97/22097/2
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>
8 years agoIntroduce NormalizedNodes.findDuplicates() 14/21614/5
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>
8 years agoBUG-3051: Fix error reporting string 16/22116/1
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>
8 years agoBUG-1485: convert BuilderTemplate to use LengthGenerator 14/21514/4
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>
8 years agoBUG-1485: Switch ClassTemplate length checker 10/21510/7
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>
8 years agoBUG-1485: Create LengthGenerator 09/21509/8
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>
8 years agoBug 3051: Fixed pattern checks in generated DTOs 73/18973/6
Tony Tkacik [Thu, 23 Apr 2015 15:13:36 +0000 (17:13 +0200)]
Bug 3051: Fixed pattern checks in generated DTOs

Pattern checks in generated DTOs were generated as
OR checks in case model type specified multiple
patterns, but correct behaviour is to do AND.

So in order string needs to verified against
all patterns and match all of them.

Change-Id: If82e282312c82dd71de79534c7fa599fcdcefab4
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
8 years agoBug 3336 - Binding DTOs: fix binary-derived constructor 60/21560/3
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>
8 years agoBug 3224 - Parsing data with choice in case via augmentation results in 14/19814/7
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>
8 years agoStop calling get on a possible absent value. 46/21646/2
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>
8 years agoImprove deltaChildren() 49/21849/2
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>
8 years agoBindingReflections' cache should use cached references 08/21808/2
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>
8 years agoAdd YangInstanceIdentifierBuilder.node(PathArgument) 07/21807/1
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>
8 years agoRemove code duplication in YangInstanceIdentifierBuilder 06/21806/1
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>
8 years agoAdd a quick identity check for map comparison 63/21763/2
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>
8 years agoBug 3344: Make sure StackedPathArgument stack is non empty. 95/21795/3
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>
8 years agoFix performance of RecursiveReplaceCandidateNode.getModifiedChild() 25/21725/1
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>
8 years agoBUG-1485: remove holder for deprecated Class ranges 70/21370/9
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>
8 years agoBUG-1485: remove holder for deprecated Builder field ranges 69/21369/9
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>
8 years agoBUG-1485: switch BuilderTemplate to new range enforcement 68/21368/9
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>
8 years agoInvoke equals() on a constant reference 35/21335/2
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>
8 years agoBUG-1485: switch ClassTemplate to new range enformcement 74/21274/13
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>
8 years agoBUG-1485: optimize primitive range checks 80/21380/4
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>
8 years agoBUG-1485: make AbstractRangeGenerator deal with GTOs 49/21349/6
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>
8 years agoClarify GeneratedTransferObject.getSuperType() 48/21348/1
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>
8 years agoBUG-1485: deprecate public static range/length methods 85/21285/4
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>
8 years agoMake sure we cache QNameModule instances 09/21309/3
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>
8 years agoBaseTypes' QNameModule should be cached 08/21308/2
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>
8 years agoBUG-1485: move generateLengthMethod to BuilderTemplate 84/21284/3
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>
8 years agoBUG-1485: move *Range* methods to BuilderTemplate 83/21283/3
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>
8 years agoMake test utilities static 91/21291/2
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>
8 years agoBUG-1485: Move restriction generation 73/21273/2
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>
8 years agoBUG-3399: fix BaseYangTypes' range constraints 72/21272/2
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>
8 years agoBUG-1485: Introduce AbstractRangeGenerator and friends 64/21164/3
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>
8 years agoBUG-1485: store patterns in an array 63/21163/4
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>
8 years agoBUG 2970 : Throw a specific exception when schema validation fails 18/21018/4
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>
8 years agoDo not instantiate augmentation HashMap in DTO builders 62/21162/2
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>
8 years agoAllow instantiation of more efficient RpcServiceInvokers 20/21220/4
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>
8 years agoOptimize binding InstanceIdentifier methods 31/21131/2
Robert Varga [Tue, 26 May 2015 13:09:00 +0000 (15:09 +0200)]
Optimize binding InstanceIdentifier methods

Openflow traces show some overhead from UnmodifiableIterable. As it
turns out, we are instantiating them needlessly for internal iteration.
This stems from accessing getPathArguments() instead of pathArguments,
which are exposed precisely for this optimization.

Make sure to access pathArguments directly, eliminating this overhead.

Change-Id: I3ef053baa35c80f555b6b9f0b8813692236afa48
Signed-off-by: Robert Varga <rovarga@cisco.com>
8 years agoBug 2988 - DTO equality appears to be broken by proxy 01/21101/1
Martin Bobak [Mon, 25 May 2015 13:09:01 +0000 (15:09 +0200)]
Bug 2988 - DTO equality appears to be broken by proxy

Change-Id: Ib068be34371e8863ef6f2ef8d936d3d6918aba37
Signed-off-by: Martin Bobak <mbobak@cisco.com>
8 years agoBug 3325 - RPC returns 500. 75/20975/2
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>
8 years agoSpeed up getModifiedChild() 46/20846/6
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>
8 years agoTake advantage of YangInstanceIdentifier methods 05/21005/2
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>
8 years agoAdd stable/lithium as the default branch in gitreview 17/21017/1
Moiz Raja [Sat, 23 May 2015 00:51:22 +0000 (17:51 -0700)]
Add stable/lithium as the default branch in gitreview

This patch should not be merged to master

Change-Id: Id27cc60559712e373382c27d43702fe9284afbb8
Signed-off-by: Moiz Raja <moraja@cisco.com>
8 years agoMark mAbstractModifiedNodeBasedCandidateNode final 48/20848/2
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>
8 years agoMake optionalData() static 47/20847/4
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>
8 years agoGuard against null data in AbstractLeafCandidateNode 45/20845/2
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>
9 years agoBug 3189 Special case of checking root node QName. 72/20772/4
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>
9 years agoBUG-3189: Check consistency of Instance Identifier and Data 25/20225/4
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>
9 years agoBUG-3263: remove bridge Collection-based methods 05/20705/1
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>
9 years agoBUG-3263: return a List of PathArguments 86/20686/11
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>
9 years agoBUG-3263: return a Collection for path arguments 85/20685/10
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>
9 years agoBUG-3263: Split off Fixed/Stacked YangInstanceIdentifier 84/20684/6
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>
9 years agoBUG-3263: Split out YangInstanceIdentifierBuilder 83/20683/2
Robert Varga [Mon, 18 May 2015 18:29:20 +0000 (20:29 +0200)]
BUG-3263: Split out YangInstanceIdentifierBuilder

The builder is not visible, so increase clarity by splitting it out into
its own file. This reduces clutter in YangInstanceIdentifier.

Change-Id: I9c3bcd141e54129777f0c8dd8efd7ce02ae5e8cc
Signed-off-by: Robert Varga <rovarga@cisco.com>
9 years agoDo not instantiate objects for hash values 43/20543/2
Robert Varga [Fri, 15 May 2015 17:06:17 +0000 (19:06 +0200)]
Do not instantiate objects for hash values

While having a reference saves us from having an additional field, it will
cost us an additional object overhead once it is materialized. Opt for a
primitive type with a volatile guard.

Change-Id: Ib3a71eb9d00555f3929d8bc104a5065d0252561e
Signed-off-by: Robert Varga <rovarga@cisco.com>
9 years agoBUG-2453 Add enum yang <-> Java mapping support to BindingRuntimeContext 26/20026/3
Maros Marsalek [Mon, 11 May 2015 14:40:26 +0000 (16:40 +0200)]
BUG-2453 Add enum yang <-> Java mapping support to BindingRuntimeContext

BindingRuntimeContext already posses the information about all generated classes
from yang (also enums). This commit makes it public.

Change-Id: I141d6206de80663a9f4f84e9260e107557f5650e
Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
9 years agoBUG-2453 Remove custom hashcode/equals from Enum type 98/19798/3
Maros Marsalek [Thu, 7 May 2015 12:12:17 +0000 (14:12 +0200)]
BUG-2453 Remove custom hashcode/equals from Enum type

Custom hashcode and equals made it impossible to match Enum types based on
packageName and name.

Change-Id: I0f5f326cba5073e08b6d2b1d5ff6d5c19f08bf68
Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
9 years agoAdd an explicit guard for root presence 93/19693/3
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>
9 years agoAdd an explicit guard to child modifications 92/19692/3
Robert Varga [Wed, 6 May 2015 09:45:46 +0000 (11:45 +0200)]
Add an explicit guard to child modifications

If we attempt to apply a merge operation to a non-existent child, we may
end up throwing an IllegalStateException stemming from unchecked
Optional.get().

Add an explicit argument check for child node presence to provide better
diagnostics.

Change-Id: I9e319aa994f01b97a14d5499fba6b1c33dad9a63
Signed-off-by: Robert Varga <rovarga@cisco.com>
9 years agoClarify the correctness of Optional.get() 91/19691/3
Robert Varga [Wed, 6 May 2015 09:37:58 +0000 (11:37 +0200)]
Clarify the correctness of Optional.get()

The check of Optional.isPresent() exists in all codepaths, but it is not
immediately obvious. Make it more explicit.

Change-Id: I73b6931299ee8cd8e40d0331acc6d6e753db8612
Signed-off-by: Robert Varga <rovarga@cisco.com>
9 years agoBUG 2973 - correction of output for empty yang type 04/20104/3
Jozef Gloncak [Thu, 18 Dec 2014 14:08:49 +0000 (15:08 +0100)]
BUG 2973 - correction of output for empty yang type

Empty" type supports (de)serializiation from
JSON array with null ( [null] ) as was specified in
Section 3.3.9 of draft-lhotka-netmod-yang-json-02

Change-Id: I6650893c00212828cd771e477b81811917000713
Signed-off-by: Jozef Gloncak <jgloncak@cisco.com>
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
9 years agoBug 2333 - Java code generation error, when yang model contains Choice node 84/19784/2
pkajsa [Thu, 13 Nov 2014 13:51:20 +0000 (14:51 +0100)]
Bug 2333 - Java code generation error, when yang model contains Choice node
in module body at top level

BindingGeneratorImpl fails (NoSuchElementException) during java source code
generation from yang model which contains Choice node directly in module body
at top level. The parent path of Choice node is empty (because the parent
is the module) and therefore iterator.next() on the path fails. For more
information see Bug 2333.

Change-Id: I6e617eca91bb5d8d2b91ad058a4df5c2793ec81d
Signed-off-by: pkajsa <pkajsa@cisco.com>
(cherry picked from commit 9af32f6d5f9da9f384d491e5066ea2423763e9c9)

9 years agoBug 3016 : This manual serialization of ImmutableList was done because in routed... 92/20092/1
Harman Singh [Thu, 30 Apr 2015 21:37:25 +0000 (14:37 -0700)]
Bug 3016 : This manual serialization of ImmutableList was done because in routed rpc,
remote server was not able to deserialize the object in AKKA messages properly.
Following exception was thrown:

ERROR Remoting - cannot assign instance of com.google.common.collect.RegularImmutableList
to field org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.legacyPath of type
com.google.common.collect.ImmutableList in instance of org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier

Change-Id: I74daf7ab5a6d4c164bb87b1bebc5f4e2dffb8753
Signed-off-by: Harman Singh <harmasin@cisco.com>
(cherry picked from commit 63c9eb4f3bd1a50b6841bbfebb53c1443e5e6ff4)

9 years agoBug 3151: Fix Not a Proxy Instance Exception 12/19812/1
Thomas Bachman [Thu, 7 May 2015 15:07:52 +0000 (11:07 -0400)]
Bug 3151: Fix Not a Proxy Instance Exception

This fixes a bug where a "Not a Proxy Instance"
exception (also IllegalArgumentException) is thrown
when hashCode is invoked in a yangtools generated
builder.

Change-Id: Icb96311f2c0c77dc8ba1377279de18b0db3886d1
Signed-off-by: Thomas Bachman <tbachman@yahoo.com>
9 years agoBug 2690 - Yang-Data-Impl: write and then merge on same list in 09/19709/2
Jan Hajnar [Mon, 27 Apr 2015 12:29:09 +0000 (14:29 +0200)]
Bug 2690 - Yang-Data-Impl: write and then merge on same list in
modification produces incorrect result

* added check for previous WRITE operation in recursiveMerge().
If there is some WRITE operation before MERGE we create new WRITE
operations for children => our data created by WRITE won't be
overwritten by merge on container/list.
* These children WRITE transactions will be recursively pushed down in the tree
while there are merge operations on them

Change-Id: Ie346c61c52cb000ee950d137f39d42e1ead3e1ff
Signed-off-by: Jan Hajnar <jhajnar@cisco.com>
(cherry picked from commit 2d7548bb1ebb925625358da86fba0831cd9b73ad)

9 years agoBug 2988: Fixed incorrect hashCode computation. 08/19708/1
Tony Tkacik [Wed, 6 May 2015 12:33:43 +0000 (14:33 +0200)]
Bug 2988: Fixed incorrect hashCode computation.

Change-Id: I550d59beece68e4d059d701b9022f9229dcfddc0
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
9 years agoRevert Merge "Bug 2366: new parser - Types & TypeDefs" 76/19676/1
Tony Tkacik [Wed, 6 May 2015 07:28:34 +0000 (09:28 +0200)]
Revert Merge "Bug 2366: new parser - Types & TypeDefs"

Merge was accicendal merge to stable/lithium of patchset
which was parented of bumped master branch.

This reverts commit 8e74c9eb051ac2a8fba46f4be4244c2fd94bff8d,
reversing changes made to e7cc8bba266afa3ce1934f8f2b64e5ae662434d0.

Change-Id: If8caf19b5ba8a3de4a1a06843211821d0e7a102d
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
9 years agoBug 3067: Fixed missing argument in message. 82/19582/1
Tony Tkacik [Tue, 5 May 2015 09:25:19 +0000 (09:25 +0000)]
Bug 3067: Fixed missing argument in message.

Change-Id: I60b39cb286635fb51d747f15ca9d416823269bae
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
9 years agoMerge "Bug 2366: new parser - Types & TypeDefs support & resolution implemented Ident...
Tony Tkacik [Mon, 4 May 2015 13:03:41 +0000 (13:03 +0000)]
Merge "Bug 2366: new parser - Types & TypeDefs support & resolution implemented Identity, IdentityRef support & resolution preparation Minor sonar issues fixed Some of effective statements related to types implemented" into stable/lithium

9 years agoFix benchmark to compile on JDK8 06/19506/1
Robert Varga [Sun, 3 May 2015 07:43:18 +0000 (09:43 +0200)]
Fix benchmark to compile on JDK8

Since we do not compile benchmarks by default, this part was skipped
when we fixed javadocs.

Change-Id: I22768608bae94f0ab8cecdbd86b661c8a58010ea
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit 37afff4ffbc6aa13b69a3d0f133a63194845fbdf)

9 years agoMerge "Bug 2983 - Throws ResultAlreadySet instead of IllegalStateException" into...
Robert Varga [Mon, 4 May 2015 07:37:58 +0000 (07:37 +0000)]
Merge "Bug 2983 - Throws ResultAlreadySet instead of IllegalStateException" into stable/lithium

9 years agoMerge "BUG-2882: introduce cursor-based modification API" into stable/lithium
Robert Varga [Mon, 4 May 2015 07:37:16 +0000 (07:37 +0000)]
Merge "BUG-2882: introduce cursor-based modification API" into stable/lithium

9 years agoMerge "Bug 3067: Improved error reporting in Binding Data Codec" into stable/lithium
Robert Varga [Thu, 30 Apr 2015 23:38:47 +0000 (23:38 +0000)]
Merge "Bug 3067: Improved error reporting in Binding Data Codec" into stable/lithium

9 years agoBug 2366: new parser - Types & TypeDefs support & resolution implemented 86/19386/1
Martin Ciglan [Fri, 24 Apr 2015 09:24:54 +0000 (11:24 +0200)]
Bug 2366: new parser - Types & TypeDefs support & resolution implemented
Identity, IdentityRef support & resolution preparation
Minor sonar issues fixed
Some of effective statements related to types implemented

Change-Id: I7efeb36e5eb103014fc07ba20ab245332eb53c7b
Signed-off-by: Martin Ciglan <mciglan@cisco.com>
9 years agoBug 2983 - Throws ResultAlreadySet instead of IllegalStateException 82/19382/1
Jan Hajnar [Wed, 22 Apr 2015 14:11:32 +0000 (16:11 +0200)]
Bug 2983 - Throws ResultAlreadySet instead of IllegalStateException

* added custom exception when trying to set NormalizedNodeResult
* added more descriptive error when getting NormalizedNodeResult already
set exception

Change-Id: I35beffc79a4951134ba64c07ad1ed627b431031b
Signed-off-by: Jan Hajnar <jhajnar@cisco.com>
(cherry picked from commit 7974d0f2bc2e3182cc521bbab543450dbdb7af83)

9 years agoBug 3067: Improved error reporting in Binding Data Codec 01/19301/3
Tony Tkacik [Wed, 29 Apr 2015 13:35:08 +0000 (15:35 +0200)]
Bug 3067: Improved error reporting in Binding Data Codec

Error reporting in Binding Data Codec was reworked
to throw three additional subclasses of IllegalArgumentException
for specific case of failure:

MissingSchema and MissingSchemaForClass - exception thrown
when schema context associated with codec does not contain
models for supplied class or DOM argument.

IncorrectNesting is thrown when schema is available an user
constructed data with invalid nesting (bypassed generic
compile-time checks).

The checks to determine type of exception are done only
if error condition is detected, so non-error fast path
should not be affected by advanced checks.

Added test which tests these types of exceptions.

Change-Id: Iad020a42317ab46df4d2240568fd6e8205383857
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
9 years agoMerge "Cleanup some major sonar warning in yang/*"
Robert Varga [Tue, 28 Apr 2015 19:22:56 +0000 (19:22 +0000)]
Merge "Cleanup some major sonar warning in yang/*"

9 years agoMerge "Bumped Checkstyle to 6.1.1 to be in sync with Maven plugin."
Robert Varga [Tue, 28 Apr 2015 19:08:26 +0000 (19:08 +0000)]
Merge "Bumped Checkstyle to 6.1.1 to be in sync with Maven plugin."

9 years agoAdd hooking into NormalizedNodeParsers. 25/19225/2
Tomas Cere [Tue, 28 Apr 2015 12:35:13 +0000 (14:35 +0200)]
Add hooking into NormalizedNodeParsers.

Makes it possible to add a ParsingStrategy into the parsers,
to allow for callbacks/custom processing while parsing.
DefaultParsingStrategy has the same behaviour as the already present parsers.

Change-Id: I5998af4befaf31d3af3f4cf5e2f46ddc32b1e05b
Signed-off-by: Tomas Cere <tcere@cisco.com>
Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
9 years agoBumped Checkstyle to 6.1.1 to be in sync with Maven plugin. 07/19207/1
Tony Tkacik [Tue, 28 Apr 2015 12:31:22 +0000 (14:31 +0200)]
Bumped Checkstyle to 6.1.1 to be in sync with Maven plugin.

Checkstyle checks needs to be in sync with Checkstyle maven
plugin due to static final constants, which were not
preserved between 2.14 and 2.15 which resulted in
NullPointerExceptions.

Change-Id: I043a9b8bf196b44636f3496e5fd65efce9eccc80
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
9 years agoCleanup some major sonar warning in yang/* 35/19135/1
Tony Tkacik [Mon, 27 Apr 2015 09:11:03 +0000 (09:11 +0000)]
Cleanup some major sonar warning in yang/*

Change-Id: I7d300fbb5521a3fcad6dea8ceea96eb9a5419fa9
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
9 years agoBUG-2882: introduce cursor-based modification API 29/19129/1
Robert Varga [Sun, 19 Apr 2015 02:36:43 +0000 (04:36 +0200)]
BUG-2882: introduce cursor-based modification API

This patch introduces the notion of a DataTreeSnapshotCursor and a
DataTreeModificationCurser as its mutating variant. The use of cursors
can lean to potential savings when applying multiple operations which
share a common root nested deeper in the data tree.

Change-Id: Iaed2c3d2d0260c97f4dfa36410b1c0944ba37c6c
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit ccb71b5a08b7a6d5d03b21492c1e8f968c434a22)

9 years agoBUG-2882: introduce cursor-based modification API 95/18595/15
Robert Varga [Sun, 19 Apr 2015 02:36:43 +0000 (04:36 +0200)]
BUG-2882: introduce cursor-based modification API

This patch introduces the notion of a DataTreeSnapshotCursor and a
DataTreeModificationCurser as its mutating variant. The use of cursors
can lean to potential savings when applying multiple operations which
share a common root nested deeper in the data tree.

Change-Id: Iaed2c3d2d0260c97f4dfa36410b1c0944ba37c6c
Signed-off-by: Robert Varga <rovarga@cisco.com>