001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.wicket.spring;
018
019import org.apache.wicket.util.io.IClusterable;
020import org.springframework.context.ApplicationContext;
021
022
023/**
024 * Interface representing object that can locate a spring context. The implementation should take up
025 * little room when serialized.
026 * 
027 * SpringObjectLocator uses this interface to locate the spring context so that it in turn can
028 * locate a bean.
029 * 
030 * Ideal implementations use a static lookup to locate the context.
031 * 
032 * For Example:
033 * 
034 * <pre>
035 * class SpringContextLocator implements ISpringContextLocator
036 * {
037 *      public ApplicationContext getSpringContext()
038 *      {
039 *              // MyApplication is the subclass of WebApplication used by the application
040 *              return ((MyApplication)Application.get()).getContext();
041 *      }
042 * }
043 * </pre>
044 * 
045 * @see SpringBeanLocator
046 * 
047 * @author Igor Vaynberg (ivaynberg)
048 * 
049 */
050public interface ISpringContextLocator extends IClusterable
051{
052        /**
053         * Getter for spring application context
054         * 
055         * @return spring application context
056         */
057        ApplicationContext getSpringContext();
058}