0

play フレームワーク 1.2.4 を使用してアプリケーションに WURFL Cloud API を実装しようとしています。残念ながら、play には HttpServletRequest と HttpServletResponse がありませんが、HttpServeletRequest と HttpServletResponse にキャストできる Request オブジェクトと Response オブジェクトがありますが、これを試したところ、NullPointerException が発生しました。または、実装に関して私を案内してください。このモジュール ( https://github.com/revbingo/play-wurfl ) も調べましたが、その実装に関する情報はほとんどありません..

以下は私のコードスニペットです

package controllers;

import play.*;
import play.mvc.*;
import play.mvc.Http.Request;
import play.mvc.Http.Response;
import play.mvc.Http.Header;
import play.server.ServletWrapper;

import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.scientiamobile.wurflcloud.CloudClientLoader;
import com.scientiamobile.wurflcloud.CloudClientManager;
import com.scientiamobile.wurflcloud.device.AbstractDevice;
import com.sun.xml.internal.ws.client.RequestContext;

import net.sourceforge.wurfl.core.Device;
import net.sourceforge.wurfl.core.WURFLHolder;
import net.sourceforge.wurfl.core.WURFLManager;

import models.*;

public class Application extends Controller {
    private static final String API_KEY = "xxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

    public static void index() throws Exception {       
        HttpServletRequest request = (HttpServletRequest) Request.current().args.get(ServletWrapper.SERVLET_REQ);       
        HttpServletResponse response = (HttpServletResponse) Request.current().args.get(ServletWrapper.SERVLET_RES);

        CloudClientLoader loader = new CloudClientLoader(API_KEY);
        CloudClientManager manager = (CloudClientManager) loader.getClientManager();

        try{
            AbstractDevice device = manager.getDeviceFromRequest(request,response);
            Object deviceCapability = device.getCapabilities();

            render(request, response, deviceCapability);
        }catch(NullPointerException ex){
            render(request, response);
        }
    }
}
4

1 に答える 1