From: Tom Pantelis Date: Tue, 8 Jul 2014 18:19:55 +0000 (+0000) Subject: Merge "BUG 1204 - exception if multiple container node occures" X-Git-Tag: release/helium~511 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=d80c9663968b16cac94ae50f49f573358a4da6c5;hp=d791a261edf5d47ba1860acb25c82b4919e2d3a5 Merge "BUG 1204 - exception if multiple container node occures" --- diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/RuntimeCodeGenerator.xtend b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/RuntimeCodeGenerator.xtend index 00c9f1eb91..834eb4f5fb 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/RuntimeCodeGenerator.xtend +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/RuntimeCodeGenerator.xtend @@ -82,6 +82,12 @@ class RuntimeCodeGenerator extends AbstractRuntimeCodeGenerator { val rpcMeta = metadata.getRpcMethod(name); val bodyTmp = ''' { + if($1 == null) { + throw new IllegalArgumentException("RPC input must not be null and must contain a value for field «rpcMeta.inputRouteGetter.name»"); + } + if($1.«rpcMeta.inputRouteGetter.name»() == null) { + throw new IllegalArgumentException("Field «rpcMeta.inputRouteGetter.name» must not be null"); + } final «InstanceIdentifier.name» identifier = $1.«rpcMeta.inputRouteGetter.name»()«IF rpcMeta. routeEncapsulated».getValue()«ENDIF»; «supertype.name» instance = («supertype.name») «rpcMeta.context.routingTableField».get(identifier); diff --git a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/RuntimeCodeGeneratorTest.java b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/RuntimeCodeGeneratorTest.java index e6cd1aa1ad..9ba6533971 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/RuntimeCodeGeneratorTest.java +++ b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/RuntimeCodeGeneratorTest.java @@ -10,6 +10,7 @@ package org.opendaylight.controller.sal.binding.test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; +import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -154,6 +155,31 @@ public class RuntimeCodeGeneratorTest { // We should have call to instance 1 verify(service[1]).simple(instance_1_input[0]); + + /* + * Generated RPC service should throw illegalArgumentException + * with message if rpc input is null. + */ + try { + product.getInvocationProxy().simple(null); + fail("Generated RPC router should throw IllegalArgumentException on null input"); + } catch (IllegalArgumentException e){ + assertNotNull(e.getMessage()); + } + + + /* + * Generated RPC service should throw illegalArgumentException + * with message if rpc route is null. + */ + try { + SimpleInput withoutValue = new SimpleInputImpl(null); + product.getInvocationProxy().simple(withoutValue); + fail("Generated RPC router should throw IllegalArgumentException on null value for route"); + } catch (IllegalArgumentException e){ + assertNotNull(e.getMessage()); + } + } private InstanceIdentifier[][] identifiers(final int serviceSize, final int instancesPerService) {