/** * Adds and collects properties for related Resource * * constructor */ private AppServerRelationProperties addRelation(String identifier, ResourceEntity resource, AbstractResourceRelationEntity resourceRelation, List<AppServerRelationProperties> list) { Map<String, FreeMarkerProperty> properties = collectResourceProperties(context, resource); // relation overrides properties properties.putAll(collectRelationProperties(context, resource, resourceRelation)); AppServerRelationProperties asrProperties = new AppServerRelationProperties(resource, properties, identifier, templateExceptionHandler); list.add(asrProperties); return asrProperties; }
private AppServerRelationProperties propertiesFor(GenerationOptions options, ResourceEntity resource, AMWTemplateExceptionHandler templateExceptionHandler) { return new AppServerRelationProperties(options.getContext().getContext(), resource, templateExceptionHandler); }
public void transform(AMWTemplateExceptionHandler templateExceptionHandler, AmwAppServerNodeModel model) { AppServerRelationProperties app = new AppServerRelationProperties(options.getContext().getContext(), getApplication(), templateExceptionHandler); AppServerRelationProperties appServer = new AppServerRelationProperties(options.getContext().getContext(), getApplicationServer(), templateExceptionHandler); model.setAppProperties(app.getProperties()); model.setAppServerProperties(appServer.getProperties()); List<Map<String, FreeMarkerProperty>> nodePropertyList = Lists.newArrayList(); model.setNodePropertyList(nodePropertyList); } }
@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 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 testOnlyProvidedResource() throws TemplateModelException { AMWTemplateExceptionHandler templateExceptionHandler = new AMWTemplateExceptionHandler(); ResourceEntity ad = builder.resourceFor(AD); ResourceEntity mail = builder.resourceFor(MAIL); ProvidedResourceRelationEntity relation = builder.buildProvidedRelation(ad, mail, ForeignableOwner.AMW); AppServerRelationProperties properties = new AppServerRelationProperties(context, ad, templateExceptionHandler); properties.addProvidedRelation("mailrelay", mail, relation); TemplateHashModel model = TestUtils.asHashModel(properties.transformModel(), "providedResTypes", "Mail", "mailrelay"); assertEquals("mailrelay", model.get("name").toString()); assertTrue(templateExceptionHandler.isSuccess()); }
@Test public void testTwoRelatedProvidedResourcesOfSameType() throws TemplateModelException { AMWTemplateExceptionHandler templateExceptionHandler = new AMWTemplateExceptionHandler(); ResourceEntity ws2 = builder.buildResource(builder.typeFor(WS.type), "ws2"); builder.buildProvidedRelation(builder.app, builder.ws, ForeignableOwner.AMW); builder.buildProvidedRelation(builder.app, ws2, ForeignableOwner.AMW); AppServerRelationProperties properties = new AppServerRelationProperties(builder.context, builder.app, templateExceptionHandler); for (ProvidedResourceRelationEntity relation : builder.app.getProvidedMasterRelations()) { ResourceEntity slaveResource = relation.getSlaveResource(); properties.addProvidedRelation(slaveResource.getName(), slaveResource, relation); } assertEquals(2, properties.getProvided().size()); AmwResourceTemplateModel hash = properties.transformModel(); assertEquals("app", hash.get("label").toString()); assertNull(hash.get("propertyTypes")); assertEquals(TestUtils.asHashModel(hash, "providedResTypes", "Webservice", "ws").get("label").toString(), "ws"); assertNull(TestUtils.asHashModel(hash, "providedResTypes", "Webservice", "ws").get("propertyTypes")); assertEquals(TestUtils.asHashModel(hash, "providedResTypes", "Webservice", "ws2").get("label").toString(), "ws2"); assertNull(TestUtils.asHashModel(hash, "providedResTypes", "Webservice", "ws2").get("propertyTypes")); hash = properties.transformModel(); assertTrue(templateExceptionHandler.isSuccess()); }
@Test public void testOnlyConsumedResource() throws TemplateModelException { AMWTemplateExceptionHandler templateExceptionHandler = new AMWTemplateExceptionHandler(); ResourceEntity ad = builder.resourceFor(AD); ResourceEntity mail = builder.resourceFor(MAIL); builder.buildResourceProperty(ad, "foo", "bar"); ConsumedResourceRelationEntity relation = builder.buildConsumedRelation(ad, mail, ForeignableOwner.AMW); AppServerRelationProperties properties = new AppServerRelationProperties(context, ad, templateExceptionHandler); properties.addConsumedRelation("mailrelay", mail, relation); TemplateHashModel model = TestUtils.asHashModel(properties.transformModel(), "consumedResTypes", "Mail", "mailrelay"); assertEquals("mailrelay", model.get("name").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()); }
@Test public void test() 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("adIntern", ad, relation); AmwResourceTemplateModel properties = appServerRelationProperties.transformModel(); assertEquals("1", properties.get("id").toString()); assertEquals("ch_puzzle_itc_mobi_amw", properties.get("name").toString()); assertNull(properties.get("propertyTypes")); assertTrue(((TemplateHashModel) properties.get("providedResTypes")).isEmpty()); assertFalse(((TemplateHashModel) properties.get("consumedResTypes")).isEmpty()); assertEquals("4", TestUtils.asHashModel(properties, "consumedResTypes", "ActiveDirectory", "adIntern").get("id").toString()); assertEquals("adIntern", TestUtils.asHashModel(properties, "consumedResTypes", "ActiveDirectory", "adIntern").get("name").toString()); assertEquals("4", TestUtils.asHashModel(properties, "adIntern").get("id").toString()); assertEquals("adIntern", TestUtils.asHashModel(properties, "adIntern").get("name").toString()); assertTrue(templateExceptionHandler.isSuccess()); }