private void addRelated(AmwResourceTemplateModel model, AppServerRelationProperties relation, AmwResourceTemplateModel parent) { Map<String, Map<String, AmwResourceTemplateModel>> transformConsumedProperties = transformRelated(relation.getConsumed(), parent); model.setConsumedResTypes(transformConsumedProperties); Map<String, Map<String, AmwResourceTemplateModel>> transformProvidedProperties = transformRelatedAndStop(relation.getProvided(), parent); model.setProvidedResTypes(transformProvidedProperties); }
@Test public void testMergeMergesAllConsumedInBothDirections() { AMWTemplateExceptionHandler templateExceptionHandler = new AMWTemplateExceptionHandler(); ResourceEntity owner = builder.resourceFor(APP); ResourceEntity slave = builder.resourceFor(AD); AppServerRelationProperties props1 = new AppServerRelationProperties(context, owner, templateExceptionHandler); AppServerRelationProperties props2 = new AppServerRelationProperties(context, owner, templateExceptionHandler); props1.addConsumedRelation("foo", slave, null); props1.merge(props2); assertEquals(1, props1.getConsumed().size()); assertEquals(1, props2.getConsumed().size()); AppServerRelationProperties props3 = new AppServerRelationProperties(context, owner, templateExceptionHandler); props3.merge(props2); assertEquals(1, props3.getConsumed().size()); assertEquals(1, props2.getConsumed().size()); assertEquals(1, props1.getConsumed().size()); assertTrue(templateExceptionHandler.isSuccess()); }
@Test public void testWsAppearsTwiceButConsumedAreMerged() throws TemplatePropertyException, IOException { ResourceEntity app = builder.resourceFor(EntityBuilderType.APP); ResourceEntity ws = builder.resourceFor(EntityBuilderType.WS); ResourceEntity lb = builder.resourceFor(EntityBuilderType.LB); builder.buildConsumedRelation(app, ws, ForeignableOwner.AMW); builder.buildConsumedRelation(ws, lb, ForeignableOwner.AMW); initialize(); List<GenerationUnit> wsUnits = unitsFor(work.getAsSet(), EntityBuilderType.WS); assertEquals(2, wsUnits.size()); // merges consumed properties list AppServerRelationProperties asProps1 = wsUnits.get(0).getAppServerRelationProperties(); AppServerRelationProperties asProps2 = wsUnits.get(1).getAppServerRelationProperties(); assertEquals(asProps1.getConsumed(), asProps2.getConsumed()); }
@Test public void testSingleAsAppRelation() { AMWTemplateExceptionHandler templateExceptionHandler = new AMWTemplateExceptionHandler(); AppServerRelationProperties properties = new AppServerRelationProperties(builder.context, builder.as, templateExceptionHandler); for (ConsumedResourceRelationEntity relation : builder.as.getConsumedMasterRelations()) { ResourceEntity slaveResource = relation.getSlaveResource(); properties.addConsumedRelation(slaveResource.getName(), slaveResource, relation); } assertEquals(1, properties.getConsumed().size()); assertEquals(0, properties.getProvided().size()); assertTrue(templateExceptionHandler.isSuccess()); }
@Test public void testTemplatesInRelatedResources() throws TemplateModelException { AMWTemplateExceptionHandler templateExceptionHandler = new AMWTemplateExceptionHandler(); ResourceEntity owner = builder.resourceFor(APP); ResourceEntity ad = builder.resourceFor(AD); ConsumedResourceRelationEntity relation = builder.relationFor(owner.getName(), ad.getName()); AppServerRelationProperties appServerRelationProperties = new AppServerRelationProperties(context, owner, templateExceptionHandler); appServerRelationProperties.addConsumedRelation("active_directory", ad, relation); SetMultimap<ResourceEntity, GeneratedTemplate> templatesCache = LinkedHashMultimap.create(); templatesCache.put(ad, new GeneratedTemplate("name", "path", "content")); appServerRelationProperties.getConsumed().get(0).setTemplatesCache(templatesCache); appServerRelationProperties.setTemplatesCache(templatesCache); TemplateHashModel model = TestUtils.asHashModel(appServerRelationProperties.transformModel(), "active_directory", "templates", "name"); assertEquals("content", model.get("content").toString()); assertTrue(templateExceptionHandler.isSuccess()); }
@Test public void testTwoRelatedResourcesOfSameType() throws TemplateModelException { AMWTemplateExceptionHandler templateExceptionHandler = new AMWTemplateExceptionHandler(); ResourceEntity app2 = builder.buildResource(builder.typeFor(APP.type), "app2"); builder.buildConsumedRelation(builder.as, app2, ForeignableOwner.AMW); AppServerRelationProperties properties = new AppServerRelationProperties(builder.context, builder.as, templateExceptionHandler); for (ConsumedResourceRelationEntity relation : builder.as.getConsumedMasterRelations()) { ResourceEntity slaveResource = relation.getSlaveResource(); properties.addConsumedRelation(slaveResource.getName(), slaveResource, relation); } assertEquals(2, properties.getConsumed().size()); AmwResourceTemplateModel hash = properties.transformModel(); assertEquals("as", hash.get("label").toString()); TemplateHashModel appModel = TestUtils.asHashModel(hash, "consumedResTypes", "APPLICATION", "app"); assertEquals("app", appModel.get("label").toString()); TemplateHashModel appModel2 = TestUtils.asHashModel(hash, "consumedResTypes", "APPLICATION", "app2"); assertEquals("app2", appModel2.get("label").toString()); TemplateHashModel propertyTypes = TestUtils.asHashModel(hash, "providedResTypes", "APPLICATION", "propertyTypes"); assertTrue(propertyTypes.isEmpty()); hash = properties.transformModel(); assertTrue(templateExceptionHandler.isSuccess()); }