/** * Finds a specific import from the path of the instance that exports it. * @param imports a collection of imports (that can be null) * @param exportingInstancePath the path of the exporting instance * @return an import, or null if none was found */ public static Import findImportByExportingInstance( Collection<Import> imports, String exportingInstancePath ) { Import result = null; if( imports != null && exportingInstancePath != null ) { for( Import imp : imports ) { if( exportingInstancePath.equals( imp.getInstancePath())) { result = imp; break; } } } return result; } }
private String formatImport(Import imp) { StringBuilder sb = new StringBuilder(); sb.append( "'" ); sb.append(imp.getInstancePath()); sb.append( "' => { " ); sb.append( formatExportedVariables( imp.getExportedVars())); sb.append(" }"); return sb.toString(); }
private void removeCachedExternalImport( MsgCmdRemoveImport msg ) { Collection<Import> imports = this.applicationNameToExternalExports.get( msg.getApplicationOrContextName()); if( imports != null ) { Import toRemove = null; for( Iterator<Import> it = imports.iterator(); it.hasNext() && toRemove == null; ) { Import cur = it.next(); if( cur.getInstancePath().equals( msg.getRemovedInstancePath())) toRemove = cur; } if( toRemove != null ) imports.remove( toRemove ); if( imports.isEmpty()) this.applicationNameToExternalExports.remove( msg.getApplicationOrContextName()); } }
instancePaths.add( imp.getInstancePath()); MsgCmdAddImport fakeMsg = new MsgCmdAddImport( addedAppName, imp.getComponentName(), imp.getInstancePath(), imp.getExportedVars()); try { processMsgAddImport( fakeMsg );
@Test public void testUpdateImports() { Map<String,Collection<Import>> prefixToImports = new HashMap<String,Collection<Import>> (); prefixToImports.put( "comp", Arrays.asList( new Import( "/root1", "comp1" ), new Import( "/root2", "comp1" ))); Instance inst = new Instance( "inst" ); Assert.assertEquals( 0, inst.getImports().size()); ImportHelpers.updateImports( inst, prefixToImports ); Assert.assertEquals( 1, inst.getImports().size()); Iterator<Import> iterator = inst.getImports().get( "comp" ).iterator(); Assert.assertEquals( "/root1", iterator.next().getInstancePath()); Assert.assertEquals( "/root2", iterator.next().getInstancePath()); Assert.assertFalse( iterator.hasNext()); prefixToImports.put( "comp", Arrays.asList( new Import( "/root1", "comp1" ))); ImportHelpers.updateImports( inst, prefixToImports ); Assert.assertEquals( 1, inst.getImports().size()); iterator = inst.getImports().get( "comp" ).iterator(); Assert.assertEquals( "/root1", iterator.next().getInstancePath()); Assert.assertFalse( iterator.hasNext()); ImportHelpers.updateImports( inst, null ); Assert.assertEquals( 0, inst.getImports().size()); }
@Test public void testFindImportByExportingInstance() { Collection<Import> imports = new HashSet<Import> (); imports.add( new Import( "/some/path", "comp1" )); imports.add( new Import( "/some/path/deeper", "comp1" )); imports.add( new Import( "/some/other-path", "comp1" )); Assert.assertNull( ImportHelpers.findImportByExportingInstance( null, null )); Assert.assertNull( ImportHelpers.findImportByExportingInstance( null, "/some/path" )); Assert.assertNull( ImportHelpers.findImportByExportingInstance( imports, null )); Assert.assertNull( ImportHelpers.findImportByExportingInstance( imports, "/wrong/path" )); Assert.assertEquals( "/some/path", ImportHelpers.findImportByExportingInstance( imports, "/some/path" ).getInstancePath()); Assert.assertEquals( "/some/path/deeper", ImportHelpers.findImportByExportingInstance( imports, "/some/path/deeper" ).getInstancePath()); } }
@Test public void testBuildTailoredImport() { String instancePath = "/whatever/this/is/a-test"; Component comp = new Component( "comp" ); comp.addImportedVariable( new ImportedVariable( "comp1.port", false, false )); comp.addImportedVariable( new ImportedVariable( "comp1.ip", false, false )); comp.addImportedVariable( new ImportedVariable( "comp2.option", true, false )); Instance inst = new Instance( "inst" ).component( comp ); // Null map Import imp = ImportHelpers.buildTailoredImport( inst, instancePath, "comp", null ); Assert.assertEquals( instancePath, imp.getInstancePath()); Assert.assertEquals( 0, imp.getExportedVars().size()); // Empty map imp = ImportHelpers.buildTailoredImport( inst, instancePath, "comp", new HashMap<String,String> ()); Assert.assertEquals( 0, imp.getExportedVars().size()); // Map with various variable Map<String,String> map = new HashMap<String,String> (); map.put( "comp1.ip", "127.0.0.1" ); map.put( "comp2.option", "ciao!" ); map.put( "not.a.valid.variable", "yeah" ); map.put( null, "null" ); map.put( "", "hop" ); imp = ImportHelpers.buildTailoredImport( inst, instancePath, "comp", map ); Assert.assertEquals( instancePath, imp.getInstancePath()); Assert.assertEquals( 2, imp.getExportedVars().size()); Assert.assertEquals( "comp", imp.getComponentName()); Assert.assertEquals( "127.0.0.1", imp.getExportedVars().get( "comp1.ip" )); Assert.assertEquals( "ciao!", imp.getExportedVars().get( "comp2.option" )); }
@Test public void testBuildTailoredImport_withWildcard() { String instancePath = "/whatever/this/is/a-test"; Component comp = new Component( "comp" ); comp.addImportedVariable( new ImportedVariable( "comp1.*", false, false )); comp.addImportedVariable( new ImportedVariable( "comp2.option", true, false )); Instance inst = new Instance( "inst" ).component( comp ); // Null map Import imp = ImportHelpers.buildTailoredImport( inst, instancePath, "comp", null ); Assert.assertEquals( instancePath, imp.getInstancePath()); Assert.assertEquals( 0, imp.getExportedVars().size()); // Empty map imp = ImportHelpers.buildTailoredImport( inst, instancePath, "comp", new HashMap<String,String> ()); Assert.assertEquals( 0, imp.getExportedVars().size()); // Map with various variable Map<String,String> map = new HashMap<String,String> (); map.put( "comp1.ip", "127.0.0.1" ); map.put( "comp2.option", "ciao!" ); map.put( "not.a.valid.variable", "yeah" ); map.put( null, "null" ); map.put( "", "hop" ); imp = ImportHelpers.buildTailoredImport( inst, instancePath, "comp", map ); Assert.assertEquals( instancePath, imp.getInstancePath()); Assert.assertEquals( 2, imp.getExportedVars().size()); Assert.assertEquals( "comp", imp.getComponentName()); Assert.assertEquals( "127.0.0.1", imp.getExportedVars().get( "comp1.ip" )); Assert.assertEquals( "ciao!", imp.getExportedVars().get( "comp2.option" )); }
@Test public void testToString() { Map<String,String> exportedVars = null; Import imp = new Import( "/root/node", "comp1", exportedVars ); Assert.assertNotNull( imp.toString()); exportedVars = new HashMap<String,String> (); imp = new Import( "/root/node", "comp1", exportedVars ); Assert.assertNotNull( imp.toString()); exportedVars.put( "comp.ip", "127.0.0.1" ); exportedVars.put( "comp.data", null ); imp = new Import( "/root/node", "comp1", exportedVars ); Assert.assertNotNull( imp.toString()); imp = new Import( new Instance( "my VM" )); Assert.assertEquals( "/my VM", imp.getInstancePath()); }