Package com.mozilla.bespin

Examples of com.mozilla.bespin.SessionTracker


        java.io.File templateDir = new java.io.File(template);

        FileSystem filesys = new FileSystem(baseDir, templateDir);
        getCtx().getServletContext().setAttribute(KEY_FILESYSTEM, filesys);

        SessionTracker sessions = new SessionTracker();
        getCtx().getServletContext().setAttribute(KEY_SESSION_TRACKER, sessions);
    }
View Full Code Here


        SessionTracker sessions = new SessionTracker();
        getCtx().getServletContext().setAttribute(KEY_SESSION_TRACKER, sessions);
    }

    protected synchronized SessionTracker getSessionTracker() throws IOException {
        SessionTracker sessions = (SessionTracker) getCtx().getServletContext().getAttribute(KEY_SESSION_TRACKER);
        if (sessions == null) {
            createFileSystemAndSessionTracker();
            sessions = (SessionTracker) getCtx().getServletContext().getAttribute(KEY_SESSION_TRACKER);
        }
        return sessions;
View Full Code Here

    public void get() throws IOException {
        getCtx().popParam(); // get rid of the /at/
        java.io.File requestedFile = getFilesystem().getFileHandle(getUser(), getPath());
        EditMode editMode = EditMode.ReadWrite;

        SessionTracker tracker = getSessionTracker();

        synchronized (tracker) {
            List<EditSession> editSessions = tracker.getSessions(requestedFile);

            // cover our error conditions
            if (editMode == EditMode.ReadWrite) {
                // check for other editors
                for (EditSession session : editSessions) {
                    if (!session.getUser().equals(getUser())) {
                        if (session.getEditMode() == EditMode.ReadWrite) {
                            getCtx().getResp().sendError(409, "User \"" + session.getUser().username + "\" is already editing the requested file");
                            return;
                        }
                    }
                }
            } else if (editMode == EditMode.Read) {
                // check for an existing read/write session from this user
                for (EditSession session : editSessions) {
                    if (session.getUser().equals(getUser())) {
                        getCtx().getResp().sendError(400, "File already opened by this user in read/write mode; cannot open in read-only mode");
                        return;
                    }
                }
            }

            boolean openSession = true;

            // check for an existing edit session from the current user
            EditSession session = tracker.getSession(requestedFile, getUser());
            if (session != null) {
                if (session.getEditMode() == editMode) openSession = false;
                if ((session.getEditMode() == EditMode.Read) && (editMode == EditMode.ReadWrite)) {
                    tracker.closeSession(requestedFile, getUser());
                }
            }

            if (openSession) {
                tracker.openSession(requestedFile, getUser(), editMode);
            }

            try {
                String contents = getFilesystem().read(getUser(), getPath());
                print(contents);
View Full Code Here

    @RequiresLogin
    public void put() throws IOException {
        java.io.File file = getFilesystem().getFileHandle(getUser(), getPath());

        SessionTracker tracker = getSessionTracker();
        synchronized (tracker) {
            EditSession session = tracker.getSession(file, getUser());

            // check if the lastEdit parameter was sent
            String lastEdit = getCtx().getReq().getParameter("lastEdit");
            if (StringUtils.isNumeric(lastEdit) && StringUtils.isNotBlank(lastEdit)) {
                // verify that the user has a session open
View Full Code Here

    @RequiresLogin
    public void delete() throws IOException {
        java.io.File file = getFilesystem().getFileHandle(getUser(), getPath());

        SessionTracker tracker = getSessionTracker();
        synchronized (tracker) {
            // make sure no one else has a session open on the file
            List<EditSession> sessions = tracker.getSessions(file);
            for (EditSession session : sessions) {
                if ((session.getEditMode() == EditMode.ReadWrite) || (!session.getUser().equals(getUser()))) {
                    getCtx().getResp().sendError(409, "Someone else has the file open for read/write access, or you are in read/write mode; cannot delete");
                    return;
                }
            }

            getFilesystem().delete(getUser(), getPath());

            // close any edit sessions open on the file
            for (EditSession session : sessions) tracker.closeSession(file, session.getUser());
        }
    }
View Full Code Here

    @RequiresLogin
    public void close() throws IOException {
        java.io.File file = getFilesystem().getFileHandle(getUser(), getPath());

        SessionTracker tracker = getSessionTracker();
        tracker.closeSession(file, getUser());
    }
View Full Code Here

    }

    @RequiresLogin
    public void listopen() throws IOException {
        FileSystem filesys = getFilesystem();
        SessionTracker tracker = getSessionTracker();
        List<EditSession> sessions = tracker.getSessions(getUser());

        JSONObject data = new JSONObject();

        // determine the "project" for the open file and sort by it based on the file name
        for (EditSession session : sessions) {
View Full Code Here

TOP

Related Classes of com.mozilla.bespin.SessionTracker

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.