Search in sources :

Example 1 with Call

use of angularBeans.io.Call in project AngularBeans by bessemHmidi.

the class ModuleGenerator method generateBean.

/**
	 * this method concern is the generation of the AngularJS service from the @AngularBean CDI bean.
	 * 
	 * @param bean
	 *            the bean wrapper for an @AngularBean CDI bean.
	 * @return a StringBuffer containing the generated angular service code.
	 */
public StringBuffer generateBean(NGBean bean) {
    Object reference = locator.lookup(bean.getName(), sessionID);
    StringBuffer buffer = new StringBuffer();
    Class<? extends Object> clazz = bean.getTargetClass();
    Method[] methods = bean.getMethods();
    buffer.append(";app.factory('" + bean.getName() + "',function " + bean.getName() + "(");
    // writer.write("['$rootScope','$scope','$http','$location','logger','responseHandler','realtimeManager'',function");
    buffer.append("$rootScope, $http, $location,logger,responseHandler,$q");
    buffer.append(",realtimeManager");
    buffer.append("){\n");
    // writer.write("var deffered = $q.defer();");
    // ,scopes:[]};");
    buffer.append("var " + bean.getName() + "={serviceID:'" + bean.getName() + "'};");
    buffer.append(// + contextPath
    "\nvar rpath=$rootScope.baseUrl+'" + "http/invoke/service/';\n");
    for (Method m : bean.getMethods()) {
        if (m.isAnnotationPresent(Eval.class)) {
            Callback callback = m.getAnnotation(Eval.class).value();
            try {
                String execution = (String) m.invoke(reference);
                String js = "";
                if (callback.equals(BEFORE_SESSION_READY)) {
                    js = execution;
                }
                if (callback.equals(AFTER_SESSION_READY)) {
                    js = "setTimeout(listen,500);" + "function listen(){" + "   if(realtimeManager.ready){" + execution + "   }" + "   else" + "      setTimeout(listen,500);" + "}";
                }
                buffer.append(js);
            } catch (ClassCastException e) {
                throw new RuntimeException("for bean name: " + bean.getName() + " --> an @Eval bloc must return a String");
            } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
                e.printStackTrace();
            }
        }
    }
    for (Method get : bean.getters()) {
        Object result = null;
        String getter = get.getName();
        String modelName = CommonUtils.obtainFieldNameFromAccessor(getter);
        if (get.getReturnType().equals(LobWrapper.class)) {
            String uid = String.valueOf(UUID.randomUUID());
            cache.getCache().put(uid, new Call(reference, get));
            result = contextPath + "lob/" + uid;
            buffer.append(bean.getName() + "." + modelName + "='" + result + "';");
            continue;
        }
        validationAdapter.processBeanValidationParsing(get);
        Method m;
        try {
            m = bean.getTargetClass().getMethod((getter));
            result = m.invoke(reference);
            if ((result == null && (m.getReturnType().equals(String.class))))
                result = "";
            if (result == null)
                continue;
            Class<? extends Object> resultClazz = result.getClass();
            if (!resultClazz.isPrimitive()) {
                result = util.getJson(result);
            }
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        buffer.append(bean.getName() + "." + modelName + "=" + result + ";");
    }
    for (Method m : bean.getMethods()) {
        if (m.isAnnotationPresent(FileUpload.class)) {
            String uploadPath = m.getAnnotation(FileUpload.class).path();
            Call call = new Call(reference, m);
            uploadHandler.getUploadsActions().put(uploadPath, call);
        }
    }
    buffer.append(generateStaticPart(bean).toString());
    buffer.append(");\n");
    return buffer;
}
Also used : Call(angularBeans.io.Call) HttpMethod(angularBeans.api.http.HttpMethod) Method(java.lang.reflect.Method) InvocationTargetException(java.lang.reflect.InvocationTargetException) Callback(angularBeans.events.Callback) Eval(angularBeans.api.Eval) FileUpload(angularBeans.io.FileUpload)

Example 2 with Call

use of angularBeans.io.Call in project AngularBeans by bessemHmidi.

the class ByteArrayJsonAdapter method serialize.

@Override
public JsonElement serialize(LobWrapper src, Type typeOfSrc, JsonSerializationContext context) {
    LobWrapper lobWrapper = src;
    container = lobWrapper.getOwner();
    String id = "";
    Class clazz = container.getClass();
    for (Method m : clazz.getMethods()) {
        // TODO to many nested statement
        if (CommonUtils.isGetter(m) && m.getReturnType().equals(LobWrapper.class) && !Modifier.isVolatile(m.getModifiers())) {
            try {
                Call lobSource = new Call(container, m);
                if (!cache.getCache().containsValue(lobSource)) {
                    id = String.valueOf(UUID.randomUUID());
                    cache.getCache().put(id, lobSource);
                } else {
                    for (String idf : cache.getCache().keySet()) {
                        Call ls = cache.getCache().get(idf);
                        if (ls.equals(lobSource)) {
                            id = idf;
                            break;
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    return new JsonPrimitive("lob/" + id + "?" + Calendar.getInstance().getTimeInMillis());
}
Also used : Call(angularBeans.io.Call) JsonPrimitive(com.google.gson.JsonPrimitive) LobWrapper(angularBeans.io.LobWrapper) Method(java.lang.reflect.Method)

Aggregations

Call (angularBeans.io.Call)2 Method (java.lang.reflect.Method)2 Eval (angularBeans.api.Eval)1 HttpMethod (angularBeans.api.http.HttpMethod)1 Callback (angularBeans.events.Callback)1 FileUpload (angularBeans.io.FileUpload)1 LobWrapper (angularBeans.io.LobWrapper)1 JsonPrimitive (com.google.gson.JsonPrimitive)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1