use of angularBeans.api.http.HttpMethod in project AngularBeans by bessemHmidi.
the class ModuleGenerator method generateStaticPart.
/**
*
* @param bean
* the CDI bean wrapper
* @return StringBuffer containing the javaScript code of the static (non properties values dependent) code. by
* static parts we mean the JS code that can be generated from the java class of the bean (to initialize the
* angularJs service we need to call getters on the CDI bean instance and that is considered as the dynamic
* part of the angularBean javascript generation)
*/
private StringBuffer generateStaticPart(NGBean bean) {
StringBuffer cachedStaticPart = new StringBuffer();
if (StaticJsCache.CACHED_BEAN_STATIC_PART.containsKey(bean.getTargetClass())) {
return StaticJsCache.CACHED_BEAN_STATIC_PART.get(bean.getTargetClass());
}
Method[] nativesMethods = Object.class.getMethods();
for (Method m : bean.getMethods()) {
boolean corsEnabled = false;
boolean isNative = false;
for (Method nativeMethod : nativesMethods) {
if (nativeMethod.equals(m) && !Modifier.isVolatile(m.getModifiers()))
isNative = true;
}
if (isNative)
continue;
if ((!CommonUtils.isSetter(m)) && (!CommonUtils.isGetter(m))) {
String[] csUpdates = null;
Set<Method> setters = new HashSet<>();
HttpMethod httpMethod = GET;
if (m.isAnnotationPresent(Eval.class))
continue;
if (m.isAnnotationPresent(CORS.class)) {
corsEnabled = true;
}
if (m.isAnnotationPresent(Get.class)) {
httpMethod = GET;
}
if (m.isAnnotationPresent(Post.class)) {
httpMethod = POST;
}
if (m.isAnnotationPresent(Delete.class)) {
httpMethod = DELETE_TO_REPLACE;
}
if (m.isAnnotationPresent(Put.class)) {
httpMethod = PUT;
}
if (m.isAnnotationPresent(NGReturn.class)) {
NGReturn returns = m.getAnnotation(NGReturn.class);
csUpdates = returns.updates();
}
if (m.isAnnotationPresent(NGSubmit.class)) {
String[] models = m.getAnnotation(NGSubmit.class).backEndModels();
if (models.length == 1 && models[0].equals("*")) {
pushScope(bean.getMethods(), setters);
} else {
for (String model : models) {
for (Method md : bean.getMethods()) {
if (CommonUtils.isSetter(md)) {
String methodName = md.getName();
String modelName = CommonUtils.obtainFieldNameFromAccessor(methodName);
if (modelName.equals(model)) {
setters.add(md);
}
}
}
}
}
}
cachedStaticPart.append("angularBeans.addMethod(" + bean.getName() + ",'" + m.getName() + "',function(");
// ---------------------------------------------
// Handle args
// ---------------------------------------------
Type[] parameters = m.getParameterTypes();
if ((!m.isAnnotationPresent(FileUpload.class))) {
if (parameters.length > 0) {
String argsString = "";
for (int i = 0; i < parameters.length; i++) {
argsString += ("arg" + i + ",");
}
cachedStaticPart.append(argsString.substring(0, argsString.length() - 1));
}
}
cachedStaticPart.append(") {").append("var mainReturn={data:{}};").append(// sessionUID:$rootScope.sessionUID
"var params={};");
//--
cachedStaticPart.append(addParams(bean, setters, m, parameters));
if (m.isAnnotationPresent(RealTime.class)) {
cachedStaticPart.append("return realtimeManager.call(" + bean.getName() + ",'" + bean.getName() + "." + m.getName() + "',params");
cachedStaticPart.append(").then(function(response) {\n");
cachedStaticPart.append("var msg=(response);");
cachedStaticPart.append("mainReturn.data= responseHandler.handleResponse(msg," + bean.getName() + ",true);");
// }");
cachedStaticPart.append("return mainReturn.data;");
cachedStaticPart.append("} ,function(response){return $q.reject(response.data);});");
} else {
cachedStaticPart.append("\n return $http." + httpMethod.method() + "(rpath+'" + bean.getName() + "/" + m.getName());
if (corsEnabled) {
cachedStaticPart.append("/CORS");
corsEnabled = false;
} else {
cachedStaticPart.append("/JSON");
}
if (httpMethod.equals(POST)) {
cachedStaticPart.append("',params");
} else {
// encodeURI
String paramsQuery = ("?params='+encodeURIComponent(angular.toJson(params))");
cachedStaticPart.append(paramsQuery);
}
cachedStaticPart.append(").then(function(response) {\n");
cachedStaticPart.append("var msg=response.data;");
cachedStaticPart.append("mainReturn.data= responseHandler.handleResponse(msg," + bean.getName() + ",true);");
cachedStaticPart.append("return mainReturn.data;");
cachedStaticPart.append("} ,function(response){return $q.reject(response.data);});");
}
cachedStaticPart.append("});");
if ((!CommonUtils.isSetter(m)) && (!CommonUtils.isGetter(m))) {
if (m.isAnnotationPresent(NGPostConstruct.class)) {
cachedStaticPart.append("realtimeManager.onReadyState(function(){");
cachedStaticPart.append(bean.getName() + "." + m.getName() + "();\n");
cachedStaticPart.append("});");
}
}
}
}
cachedStaticPart.append("return " + bean.getName() + ";} \n");
StaticJsCache.CACHED_BEAN_STATIC_PART.put(bean.getClass(), cachedStaticPart);
return cachedStaticPart;
}