@Override public Component deserialize( JsonParser parser, DeserializationContext context ) throws IOException { ObjectCodec oc = parser.getCodec(); JsonNode node = oc.readTree( parser ); Component component = new Component(); JsonNode n; if(( n = node.get( NAME )) != null ) component.setName( n.textValue()); if(( n = node.get( COMP_INSTALLER )) != null ) component.setInstallerName( n.textValue()); return component; } }
private void processComponent( BlockComponent block ) { ComponentData data = this.componentNameToComponentData.get( block.getName()); if( data != null ) { data.blocks.add( block ); } else { data = new ComponentData(); data.object = new Component( block.getName()); data.object.exportedVariables.putAll( ModelUtils.getExportedVariables( block )); data.object.setInstallerName( ModelUtils.getPropertyValue( block, ParsingConstants.PROPERTY_COMPONENT_INSTALLER )); for( String s : ModelUtils.getPropertyValues( block, ParsingConstants.PROPERTY_COMPONENT_IMPORTS )) { Boolean optional = s.toLowerCase().endsWith( ParsingConstants.PROPERTY_COMPONENT_OPTIONAL_IMPORT ); if( optional ) s = s.substring( 0, s.length() - ParsingConstants.PROPERTY_COMPONENT_OPTIONAL_IMPORT.length()).trim(); Boolean external = s.toLowerCase().startsWith( ParsingConstants.PROPERTY_COMPONENT_EXTERNAL_IMPORT ); if( external ) s = s.substring( ParsingConstants.PROPERTY_COMPONENT_EXTERNAL_IMPORT.length()).trim(); data.object.addImportedVariable( new ImportedVariable( s, optional, external )); } data.extendedComponentName = ModelUtils.getPropertyValue( block, ParsingConstants.PROPERTY_GRAPH_EXTENDS ); data.childrenNames.addAll( ModelUtils.getPropertyValues( block, ParsingConstants.PROPERTY_GRAPH_CHILDREN )); data.facetNames.addAll( ModelUtils.getPropertyValues( block, ParsingConstants.PROPERTY_COMPONENT_FACETS )); data.blocks.add( block ); this.componentNameToComponentData.put( block.getName(), data ); } }
Assert.assertFalse( iterator.hasNext()); comp.setInstallerName( "my installer !!" ); iterator = RuntimeModelValidator.validate( comp ).iterator(); Assert.assertEquals( ErrorCode.RM_INVALID_COMPONENT_INSTALLER, iterator.next().getErrorCode()); Assert.assertFalse( iterator.hasNext()); comp.setInstallerName( "my installer" ); iterator = RuntimeModelValidator.validate( comp ).iterator(); Assert.assertEquals( ErrorCode.RM_ROOT_INSTALLER_MUST_BE_TARGET, iterator.next().getErrorCode()); Assert.assertFalse( iterator.hasNext()); comp.setInstallerName( Constants.TARGET_INSTALLER ); iterator = RuntimeModelValidator.validate( comp ).iterator(); Assert.assertEquals( 0, RuntimeModelValidator.validate( comp ).size());
@Test public void testIsTarget() { Instance inst = new Instance( "i" ); Assert.assertFalse( InstanceHelpers.isTarget( inst )); inst.setComponent( new Component( "comp" ).installerName( "whatever" )); Assert.assertFalse( InstanceHelpers.isTarget( inst )); inst.getComponent().setInstallerName( Constants.TARGET_INSTALLER ); Assert.assertTrue( InstanceHelpers.isTarget( inst )); }