001/**
002 *
003 * Copyright (c) 2014, the Railo Company Ltd. All rights reserved.
004 *
005 * This library is free software; you can redistribute it and/or
006 * modify it under the terms of the GNU Lesser General Public
007 * License as published by the Free Software Foundation; either 
008 * version 2.1 of the License, or (at your option) any later version.
009 * 
010 * This library is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013 * Lesser General Public License for more details.
014 * 
015 * You should have received a copy of the GNU Lesser General Public 
016 * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
017 * 
018 **/
019package lucee.runtime;
020
021import java.util.Iterator;
022import java.util.Set;
023
024import lucee.runtime.component.Member;
025import lucee.runtime.component.Property;
026import lucee.runtime.dump.DumpData;
027import lucee.runtime.dump.DumpProperties;
028import lucee.runtime.exp.PageException;
029import lucee.runtime.type.Collection;
030import lucee.runtime.type.Struct;
031
032public interface ComponentPro extends Component {
033        public Property[] getProperties(boolean onlyPeristent, boolean includeBaseProperties, boolean preferBaseProperties, boolean inheritedMappedSuperClassOnly);
034        
035        public boolean isPersistent();
036        public boolean isAccessors();
037        public void setEntity(boolean entity);
038        public boolean isEntity();
039        public Component getBaseComponent();
040        public Object getMetaStructItem(Collection.Key name);
041    
042        // access
043    Set<Key> keySet(int access);
044    Object call(PageContext pc, int access, Collection.Key name, Object[] args) throws PageException;
045        Object callWithNamedValues(PageContext pc, int access, Collection.Key name, Struct args) throws PageException;
046        int size(int access);
047        Collection.Key[] keys(int access);
048
049        Iterator<Collection.Key> keyIterator(int access);
050        Iterator<String> keysAsStringIterator(int access);
051        
052
053        Iterator<Entry<Key, Object>> entryIterator(int access);
054        Iterator<Object> valueIterator(int access);
055        
056        Object get(int access, Collection.Key key) throws PageException;
057        Object get(int access, Collection.Key key, Object defaultValue);
058        DumpData toDumpData(PageContext pageContext, int maxlevel, DumpProperties dp, int access);
059        boolean contains(int access,Key name);
060        Member getMember(int access,Collection.Key key, boolean dataMember,boolean superAccess);
061}