otarza / serv-cst

CST web III porject
6 stars 0 forks source link

HTTP მეთოდების ჩამონათვალი #2

Closed ioseb closed 11 years ago

ioseb commented 11 years ago

აუცილებელია HTTP მეთოდების ჩამონათვალის გაკეთება. აღნიშნული ჩამონათვალის გამოყენება მოხდება მთელი აპლიკაციის მასშტაბით. მეთოდების ჩამონათვალი იხილეთ შემდეგ მისამართზე: http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-22#section-4.3

პროტოტიპის სახით გიგზავნით კლასს რომელიც უნდა დაასრულოთ დამოუკიდებლად:

public class HttpMethod {
    public static final Type TYPE_GET = Type.GET;

    public static final String METHOD_GET = "GET";
    private static final Map<String, Type> methods;

    static {
        methods = new HashMap<String, Type>();
        methods.put(METHOD_GET, TYPE_GET);
    }

    public static Type getMethodByName(String methodName) {
        return methods.get(methodName);
    }

    public static enum Type {
        GET(METHOD_GET, false, true);

        private String methodName;
        private boolean requestBodyAllowed;
        private boolean responseBodyAllowed;

        private Type(String methodName, boolean requestBodyAllowed, boolean responseBodyAllowed) {
            this.methodName = methodName;
            this.requestBodyAllowed = requestBodyAllowed;
            this.requestBodyAllowed = responseBodyAllowed;
        }

        public String getMethodName() {
            return methodName;
        }

        public void setMethodName(String methodName) {
            this.methodName = methodName;
        }

        public boolean isRequestBodyAllowed() {
            return requestBodyAllowed;
        }

        public void setRequestBodyAllowed(boolean requestBodyAllowed) {
            this.requestBodyAllowed = requestBodyAllowed;
        }

        public boolean isResponseBodyAllowed() {
            return responseBodyAllowed;
        }

        public void setResponseBodyAllowed(boolean responseBodyAllowed) {
            this.responseBodyAllowed = responseBodyAllowed;
        }
    }
}

გამოყენების ნიმუშში ნაჩვენებია თუ რისთვის შეიძლება დაგვჭირდეს მეთოდების ასეთი ჩამონათვალი:

public class Test {
    public static void main(String[] args) {
        HttpMethod.Type method = HttpMethod.TYPE_GET;
        System.out.println("Method: " + method.getMethodName());
        System.out.println("Request body allowed: " + method.isRequestBodyAllowed());
        System.out.println("Response body allowed: " + method.isResponseBodyAllowed());
    }
}
ioseb commented 11 years ago

@demonno ამის რეალიზაციასაც მიხედე უნიტ ტესტებითურთ.

demonno commented 11 years ago

@ioseb გავაკეთე, გუშინ აღარ დავფუშე , request response Body ვეღარ გავიაზრე , დღეს დოკუმენტაციას ჩავხედავ და ჩავასწორებ თუ შეცდომით მაქ ..

ioseb commented 11 years ago

@demonno ტესტებიც დაწერე? თუ არ დაგიწერია ყველა მეთოდისთვის დაწერე.

demonno commented 11 years ago

@ioseb method.getMethodName() ამისთვის ყველა მეთოდის სახელზე. method.isRequestBodyAllowed() method.isResponseBodyAllowed() ამ მეთოდებისთვის კიდე გადავამოწმებ true, false მნიშვნელობებს , იმედია არ შემეშლება

ioseb commented 11 years ago

@demonno ასეთი სტილით დააჯგუფე ტესტ კეისები:

package edu.cst.webserver.http;

import junit.framework.Assert;
import org.junit.Test;

public class HttpMethodTest {
    @Test
    public void testHttpMethodGET() {
        HttpMethod.Type method = HttpMethod.TYPE_GET;
        Assert.assertEquals("GET", method.getMethodName());
        Assert.assertFalse(method.isRequestBodyAllowed());
        Assert.assertTrue(method.isResponseBodyAllowed());
    }
}
demonno commented 11 years ago

@ioseb :ok:

ioseb commented 11 years ago

@demonno ძალიან ხომ არ გეწელება დროში?

demonno commented 11 years ago

@ioseb შეცდომის გარეშე ვაკომიტებ ამას , ცოტაც მაცადე :dancers: