Package com.alibaba.citrus.service.requestcontext.session.impl

Source Code of com.alibaba.citrus.service.requestcontext.session.impl.SessionAttribute

/*
* Copyright 2010 Alibaba Group Holding Limited.
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*    http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.alibaba.citrus.service.requestcontext.session.impl;

import com.alibaba.citrus.service.requestcontext.session.SessionStore;
import com.alibaba.citrus.service.requestcontext.session.SessionStore.StoreContext;
import com.alibaba.citrus.util.internal.ToStringBuilder;
import com.alibaba.citrus.util.internal.ToStringBuilder.MapBuilder;

/**
* ����session�е�һ�����ԡ�
*
* @author Michael Zhou
*/
public class SessionAttribute {
    private String storeName;
    private SessionStore store;
    private StoreContext storeContext;
    private SessionImpl session;
    private String name;
    private Object value;
    private boolean loaded;
    private boolean modified;

    /**
     * ����һ��attribute��
     *
     * @param name attribute������
     */
    public SessionAttribute(String name, SessionImpl session, String storeName, StoreContext storeContext) {
        this.name = name;
        this.session = session;
        this.storeName = storeName;
        this.store = session.getSessionRequestContext().getSessionConfig().getStores().getStore(storeName);
        this.storeContext = storeContext;
    }

    /**
     * ȡ��attribute�����֡�
     *
     * @return attribute������
     */
    public String getName() {
        return name;
    }

    /**
     * ȡ��attribute��ֵ��
     *
     * @return attribute��ֵ
     */
    public Object getValue() {
        if (!loaded && !modified) {
            value = store.loadAttribute(getName(), session.getId(), storeContext);
            loaded = true;
        }

        return value;
    }

    /**
     * ����attribute��ֵ��
     * <p>
     * ��ֵΪ<code>null</code>ʱ����ʾ�����Խ���ɾ����
     * </p>
     *
     * @param value attribute��ֵ
     */
    public void setValue(Object value) {
        this.value = value;
        this.modified = true;
    }

    /**
     * ��������attributeֵ�������ı���modified��־��
     * <p>
     * ��������session model��
     * </p>
     */
    void updateValue(Object value) {
        this.value = value;
    }

    /**
     * ֵ�Ƿ񱻸ı䡣
     *
     * @return ������ı䣬�򷵻�<code>true</code>
     */
    public boolean isModified() {
        return modified;
    }

    /**
     * ȡ��store���ơ�
     *
     * @return store������
     */
    public String getStoreName() {
        return storeName;
    }

    /**
     * ȡ��store��
     *
     * @return <code>SessionStore</code>ʵ��
     */
    public SessionStore getStore() {
        return store;
    }

    @Override
    public String toString() {
        MapBuilder mb = new MapBuilder();

        mb.append("name", name);
        mb.append("value", value);
        mb.append("storeName", storeName);
        mb.append("loaded", loaded);
        mb.append("modified", modified);

        return new ToStringBuilder().append("SessionAttribute").append(mb).toString();
    }

}
TOP

Related Classes of com.alibaba.citrus.service.requestcontext.session.impl.SessionAttribute

TOP
Copyright © 2018 www.massapi.com. 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.