001/** 002 * Copyright 2014 The Sculptor Project Team, including the original 003 * author or authors. 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.sculptor.generator.cartridge.mongodb; 018 019import javax.inject.Inject; 020import org.eclipse.xtend2.lib.StringConcatenation; 021import org.eclipse.xtext.xbase.lib.Extension; 022import org.sculptor.generator.cartridge.mongodb.MongoDbProperties; 023import org.sculptor.generator.chain.ChainOverride; 024import org.sculptor.generator.ext.Helper; 025import org.sculptor.generator.ext.Properties; 026import org.sculptor.generator.template.spring.SpringTmpl; 027import org.sculptor.generator.util.OutputSlot; 028import sculptormetamodel.Application; 029 030@ChainOverride 031@SuppressWarnings("all") 032public class SpringTmplExtension extends SpringTmpl { 033 @Inject 034 @Extension 035 private Helper helper; 036 037 @Inject 038 @Extension 039 private MongoDbProperties mongoDbProperties; 040 041 @Inject 042 @Extension 043 private Properties properties; 044 045 @Override 046 public String spring(final Application it) { 047 SpringTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.template.spring.SpringTmplMethodIndexes.SPRING_APPLICATION]; 048 return headObj._chained_spring(it); 049 } 050 051 private String mongodb(final Application it) { 052 String _resourceDir = this.properties.getResourceDir(it, "spring"); 053 String _plus = (_resourceDir + "mongodb.xml"); 054 StringConcatenation _builder = new StringConcatenation(); 055 String _header = this.header(it); 056 _builder.append(_header, ""); 057 _builder.newLineIfNotEmpty(); 058 _builder.append("\t"); 059 String _mongodbManager = this.mongodbManager(it); 060 _builder.append(_mongodbManager, "\t"); 061 _builder.newLineIfNotEmpty(); 062 _builder.append("\t"); 063 String _mongodbOptions = this.mongodbOptions(it); 064 _builder.append(_mongodbOptions, "\t"); 065 _builder.newLineIfNotEmpty(); 066 _builder.append("</beans>"); 067 _builder.newLine(); 068 return this.helper.fileOutput(_plus, OutputSlot.TO_GEN_RESOURCES, _builder.toString()); 069 } 070 071 private String mongodbManager(final Application it) { 072 StringConcatenation _builder = new StringConcatenation(); 073 _builder.append("<bean id=\"mongodbManager\" class=\""); 074 String _fw = this.properties.fw("accessimpl.mongodb.DbManager"); 075 _builder.append(_fw, ""); 076 _builder.append("\">"); 077 _builder.newLineIfNotEmpty(); 078 _builder.append("\t"); 079 _builder.append("<property name=\"dbname\" value=\"${mongodb.dbname}\" />"); 080 _builder.newLine(); 081 _builder.append("\t"); 082 _builder.append("<property name=\"dbUrl1\" value=\"${mongodb.url1}\" />"); 083 _builder.newLine(); 084 _builder.append("\t"); 085 _builder.append("<property name=\"dbUrl2\" value=\"${mongodb.url2}\" />"); 086 _builder.newLine(); 087 _builder.append("\t"); 088 _builder.append("<property name=\"options\" ref=\"mongodbOptions\" />"); 089 _builder.newLine(); 090 _builder.append("</bean>"); 091 _builder.newLine(); 092 return _builder.toString(); 093 } 094 095 private String mongodbOptions(final Application it) { 096 StringConcatenation _builder = new StringConcatenation(); 097 _builder.append("<bean id=\"mongodbOptions\" class=\""); 098 String _fw = this.properties.fw("accessimpl.mongodb.MongoOptionsWrapper"); 099 _builder.append(_fw, ""); 100 _builder.append("\">"); 101 _builder.newLineIfNotEmpty(); 102 _builder.append("\t"); 103 _builder.append("<property name=\"connectionsPerHost\" value=\"${mongodbOptions.connectionsPerHost}\" />"); 104 _builder.newLine(); 105 _builder.append("\t"); 106 _builder.append("<property name=\"threadsAllowedToBlockForConnectionMultiplier\" value=\"${mongodbOptions.threadsAllowedToBlockForConnectionMultiplier}\" />"); 107 _builder.newLine(); 108 _builder.append("\t"); 109 _builder.append("<property name=\"connectTimeout\" value=\"${mongodbOptions.connectTimeout}\" />"); 110 _builder.newLine(); 111 _builder.append("\t"); 112 _builder.append("<property name=\"socketTimeout\" value=\"${mongodbOptions.socketTimeout}\" />"); 113 _builder.newLine(); 114 _builder.append("\t"); 115 _builder.append("<property name=\"autoConnectRetry\" value=\"${mongodbOptions.autoConnectRetry}\" />"); 116 _builder.newLine(); 117 _builder.append("</bean>"); 118 _builder.newLine(); 119 return _builder.toString(); 120 } 121 122 private String mongodbTest(final Application it) { 123 String _resourceDir = this.properties.getResourceDir(it, "spring"); 124 String _plus = (_resourceDir + "mongodb-test.xml"); 125 StringConcatenation _builder = new StringConcatenation(); 126 String _header = this.header(it); 127 _builder.append(_header, ""); 128 _builder.newLineIfNotEmpty(); 129 _builder.append("\t"); 130 String _mongodbManagerTest = this.mongodbManagerTest(it); 131 _builder.append(_mongodbManagerTest, "\t"); 132 _builder.newLineIfNotEmpty(); 133 _builder.append("\t"); 134 String _mongodbOptions = this.mongodbOptions(it); 135 _builder.append(_mongodbOptions, "\t"); 136 _builder.newLineIfNotEmpty(); 137 _builder.append("</beans>"); 138 _builder.newLine(); 139 return this.helper.fileOutput(_plus, OutputSlot.TO_GEN_RESOURCES_TEST, _builder.toString()); 140 } 141 142 private String mongodbManagerTest(final Application it) { 143 StringConcatenation _builder = new StringConcatenation(); 144 _builder.append("<bean id=\"mongodbManager\" class=\""); 145 String _fw = this.properties.fw("accessimpl.mongodb.DbManager"); 146 _builder.append(_fw, ""); 147 _builder.append("\">"); 148 _builder.newLineIfNotEmpty(); 149 _builder.append("\t"); 150 _builder.append("<property name=\"dbname\" value=\""); 151 String _name = it.getName(); 152 _builder.append(_name, "\t"); 153 _builder.append("-test\" />"); 154 _builder.newLineIfNotEmpty(); 155 _builder.append("\t"); 156 _builder.append("<property name=\"dbUrl1\" value=\"${mongodb.url1}\" />"); 157 _builder.newLine(); 158 _builder.append("\t"); 159 _builder.append("<property name=\"dbUrl2\" value=\"${mongodb.url2}\" />"); 160 _builder.newLine(); 161 _builder.append("\t"); 162 _builder.append("<property name=\"options\" ref=\"mongodbOptions\" />"); 163 _builder.newLine(); 164 _builder.append("</bean>"); 165 _builder.newLine(); 166 return _builder.toString(); 167 } 168 169 @Override 170 public String applicationContextAdditions(final Application it) { 171 SpringTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.template.spring.SpringTmplMethodIndexes.APPLICATIONCONTEXTADDITIONS_APPLICATION]; 172 return headObj._chained_applicationContextAdditions(it); 173 } 174 175 @Override 176 public String applicationContextTestAdditions(final Application it) { 177 SpringTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.template.spring.SpringTmplMethodIndexes.APPLICATIONCONTEXTTESTADDITIONS_APPLICATION]; 178 return headObj._chained_applicationContextTestAdditions(it); 179 } 180 181 @Override 182 public String generatedSpringPropertiesAdditions(final Application it) { 183 SpringTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.template.spring.SpringTmplMethodIndexes.GENERATEDSPRINGPROPERTIESADDITIONS_APPLICATION]; 184 return headObj._chained_generatedSpringPropertiesAdditions(it); 185 } 186 187 @Override 188 public String interceptorAdditions(final Application it) { 189 SpringTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.template.spring.SpringTmplMethodIndexes.INTERCEPTORADDITIONS_APPLICATION]; 190 return headObj._chained_interceptorAdditions(it); 191 } 192 193 @Override 194 public String aopConfigAdditions(final Application it, final boolean test) { 195 SpringTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.template.spring.SpringTmplMethodIndexes.AOPCONFIGADDITIONS_APPLICATION_BOOLEAN]; 196 return headObj._chained_aopConfigAdditions(it, test); 197 } 198 199 public SpringTmplExtension(final SpringTmpl next, final SpringTmpl[] methodsDispatchNext) { 200 super(next); 201 } 202 203 public String _chained_spring(final Application it) { 204 StringConcatenation _builder = new StringConcatenation(); 205 SpringTmpl _next = this.getNext(); 206 String _spring = _next.spring(it); 207 _builder.append(_spring, ""); 208 _builder.newLineIfNotEmpty(); 209 { 210 boolean _mongoDb = this.mongoDbProperties.mongoDb(); 211 if (_mongoDb) { 212 String _mongodb = this.mongodb(it); 213 _builder.append(_mongodb, ""); 214 _builder.newLineIfNotEmpty(); 215 { 216 boolean _isTestToBeGenerated = this.properties.isTestToBeGenerated(); 217 if (_isTestToBeGenerated) { 218 String _mongodbTest = this.mongodbTest(it); 219 _builder.append(_mongodbTest, ""); 220 _builder.newLineIfNotEmpty(); 221 } 222 } 223 } 224 } 225 return _builder.toString(); 226 } 227 228 public String _chained_applicationContextAdditions(final Application it) { 229 StringConcatenation _builder = new StringConcatenation(); 230 { 231 boolean _mongoDb = this.mongoDbProperties.mongoDb(); 232 if (_mongoDb) { 233 _builder.append("<import resource=\"classpath:/"); 234 String _resourceDir = this.properties.getResourceDir(it, "spring"); 235 String _applicationContextFile = this.properties.getApplicationContextFile(it, "mongodb.xml"); 236 String _plus = (_resourceDir + _applicationContextFile); 237 _builder.append(_plus, ""); 238 _builder.append("\"/>"); 239 _builder.newLineIfNotEmpty(); 240 } 241 } 242 return _builder.toString(); 243 } 244 245 public String _chained_applicationContextTestAdditions(final Application it) { 246 StringConcatenation _builder = new StringConcatenation(); 247 { 248 boolean _mongoDb = this.mongoDbProperties.mongoDb(); 249 if (_mongoDb) { 250 _builder.append("<import resource=\"classpath:/"); 251 String _resourceDir = this.properties.getResourceDir(it, "spring"); 252 String _applicationContextFile = this.properties.getApplicationContextFile(it, "mongodb-test.xml"); 253 String _plus = (_resourceDir + _applicationContextFile); 254 _builder.append(_plus, ""); 255 _builder.append("\"/>"); 256 _builder.newLineIfNotEmpty(); 257 } 258 } 259 return _builder.toString(); 260 } 261 262 public String _chained_generatedSpringPropertiesAdditions(final Application it) { 263 StringConcatenation _builder = new StringConcatenation(); 264 { 265 boolean _mongoDb = this.mongoDbProperties.mongoDb(); 266 if (_mongoDb) { 267 _builder.append("mongodb.dbname="); 268 String _name = it.getName(); 269 _builder.append(_name, ""); 270 _builder.newLineIfNotEmpty(); 271 _builder.append("mongodb.url1=localhost:27017"); 272 _builder.newLine(); 273 _builder.append("mongodb.url2="); 274 _builder.newLine(); 275 _builder.append("mongodbOptions.connectionsPerHost=10"); 276 _builder.newLine(); 277 _builder.append("mongodbOptions.threadsAllowedToBlockForConnectionMultiplier=5"); 278 _builder.newLine(); 279 _builder.append("mongodbOptions.connectTimeout=0"); 280 _builder.newLine(); 281 _builder.append("mongodbOptions.socketTimeout=0"); 282 _builder.newLine(); 283 _builder.append("mongodbOptions.autoConnectRetry=false"); 284 _builder.newLine(); 285 } 286 } 287 return _builder.toString(); 288 } 289 290 public String _chained_interceptorAdditions(final Application it) { 291 StringConcatenation _builder = new StringConcatenation(); 292 { 293 boolean _mongoDb = this.mongoDbProperties.mongoDb(); 294 if (_mongoDb) { 295 _builder.append("<bean id=\"mongodbManagerAdvice\" class=\""); 296 String _fw = this.properties.fw("accessimpl.mongodb.DbManagerAdvice"); 297 _builder.append(_fw, ""); 298 _builder.append("\" >"); 299 _builder.newLineIfNotEmpty(); 300 _builder.append("\t"); 301 _builder.append("<property name=\"dbManager\" ref=\"mongodbManager\" />"); 302 _builder.newLine(); 303 _builder.append("</bean>"); 304 _builder.newLine(); 305 } 306 } 307 return _builder.toString(); 308 } 309 310 public String _chained_aopConfigAdditions(final Application it, final boolean test) { 311 StringConcatenation _builder = new StringConcatenation(); 312 { 313 boolean _mongoDb = this.mongoDbProperties.mongoDb(); 314 if (_mongoDb) { 315 { 316 if ((!test)) { 317 _builder.append("<aop:advisor pointcut-ref=\"businessService\" advice-ref=\"mongodbManagerAdvice\" order=\"5\" />"); 318 _builder.newLine(); 319 { 320 boolean _hasConsumers = this.helper.hasConsumers(it); 321 if (_hasConsumers) { 322 _builder.append("<aop:advisor pointcut-ref=\"messageConsumer\" advice-ref=\"mongodbManagerAdvice\" order=\"5\" />"); 323 _builder.newLine(); 324 } 325 } 326 } 327 } 328 } 329 } 330 return _builder.toString(); 331 } 332 333 public SpringTmpl[] _getOverridesDispatchArray() { 334 org.sculptor.generator.template.spring.SpringTmpl[] result = new org.sculptor.generator.template.spring.SpringTmpl[org.sculptor.generator.template.spring.SpringTmplMethodIndexes.NUM_METHODS]; 335 result[org.sculptor.generator.template.spring.SpringTmplMethodIndexes.SPRING_APPLICATION] = this; 336 result[org.sculptor.generator.template.spring.SpringTmplMethodIndexes.APPLICATIONCONTEXTADDITIONS_APPLICATION] = this; 337 result[org.sculptor.generator.template.spring.SpringTmplMethodIndexes.APPLICATIONCONTEXTTESTADDITIONS_APPLICATION] = this; 338 result[org.sculptor.generator.template.spring.SpringTmplMethodIndexes.GENERATEDSPRINGPROPERTIESADDITIONS_APPLICATION] = this; 339 result[org.sculptor.generator.template.spring.SpringTmplMethodIndexes.INTERCEPTORADDITIONS_APPLICATION] = this; 340 result[org.sculptor.generator.template.spring.SpringTmplMethodIndexes.AOPCONFIGADDITIONS_APPLICATION_BOOLEAN] = this; 341 return result; 342 } 343}