View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    *
    9    *      http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   */
    17  package org.apache.mina.integration.ognl;
    18
    19  import java.util.Map;
    20  import java.util.TreeMap;
    21
    22  import ognl.OgnlContext;
    23  import ognl.OgnlException;
    24  import ognl.OgnlRuntime;
    25  import ognl.PropertyAccessor;
    26
    27  import org.apache.mina.core.session.IoSession;
    28
    29  /**
    30   * An OGNL {@link PropertyAccessor} for {@link IoSession}.
    31   *
    32   * @author <a href="http://mina.apache.org">Apache MINA Project</a>
    33   */
    34  public class IoSessionPropertyAccessor extends AbstractPropertyAccessor {
    35
    36      @Override
    37      protected Object getProperty0(OgnlContext context, Object target, String name) throws OgnlException {
    38          if (target instanceof IoSession && "attributes".equals(name)) {
    39              Map<String, Object> attributes = new TreeMap<String, Object>();
    40              IoSession s = (IoSession) target;
    41              for (Object key : s.getAttributeKeys()) {
    42                  Object value = s.getAttribute(key);
    43                  if (value == null) {
    44                      continue;
    45                  }
    46                  attributes.put(String.valueOf(key), value);
    47              }
    48              return attributes;
    49          }
    50
    51          return OgnlRuntime.NotFound;
    52      }
    53
    54      @Override
    55      protected boolean hasGetProperty0(OgnlContext context, Object target, String name) throws OgnlException {
    56          return target instanceof IoSession && "attributes".equals(name);
    57      }
    58
    59      @Override
    60      protected boolean hasSetProperty0(OgnlContext context, Object target, String name) throws OgnlException {
    61          return false;
    62      }
    63
    64      @Override
    65      protected Object setProperty0(OgnlContext context, Object target, String name, Object value) throws OgnlException {
    66          return OgnlRuntime.NotFound;
    67      }
    68  }