Changeset 39730c4


Ignore:
Timestamp:
Jul 14, 2010, 11:05:40 PM (8 years ago)
Author:
Michael Seifert <mseifert@…>
Branches:
master
Children:
05b3ea1
Parents:
70b8949
Message:

Sped up indexing by introducing a cache

Location:
src/main/java/de/erichseifert/warp
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/de/erichseifert/warp/DefaultChatMessage.java

    r70b8949 r39730c4  
    2121
    2222package de.erichseifert.warp;
     23
     24import de.erichseifert.warp.io.search.Indexable;
     25import de.erichseifert.warp.io.search.indices.FullTextIndex;
    2326
    2427/**
     
    5356
    5457        @Override
     58        @Indexable(indexClass=FullTextIndex.class, indexName="replay.player.chatmessage.message")
    5559        public String getMessage() {
    5660                return message;
  • src/main/java/de/erichseifert/warp/DefaultPlayer.java

    r70b8949 r39730c4  
    2828
    2929import de.erichseifert.warp.io.search.Indexable;
     30import de.erichseifert.warp.io.search.IndexableChildren;
    3031import de.erichseifert.warp.io.search.indices.FullTextIndex;
    3132
     
    6869
    6970        @Override
     71        @IndexableChildren
    7072        public List<? extends ChatMessage> getMessages() {
    7173                return Collections.unmodifiableList(messages);
  • src/main/java/de/erichseifert/warp/io/search/AbstractReplayIndexer.java

    r70b8949 r39730c4  
    4343 */
    4444public abstract class AbstractReplayIndexer implements ReplayIndexer {
     45        private transient static Map<Class<?>, Map<IndexedProperty, Set<Indexable>>> indexableCache;
    4546
    4647        /**
     
    5758         */
    5859        protected static Map<IndexedProperty, Set<Indexable>> getIndexables(Object obj) throws IntrospectionException {
    59                 Map<IndexedProperty, Set<Indexable>> indexables = new HashMap<IndexedProperty, Set<Indexable>>();
    6060                Class<?> clazz = obj.getClass();
     61                // Initialize cache
     62                if (indexableCache == null) {
     63                        indexableCache = new HashMap<Class<?>, Map<IndexedProperty,Set<Indexable>>>();
     64                }
     65                // Retrieve indexed properties
     66                Map<IndexedProperty, Set<Indexable>> indexablesByProp = indexableCache.get(clazz);
     67                if (indexablesByProp == null) {
     68                        indexablesByProp = new HashMap<IndexedProperty, Set<Indexable>>();
     69                }
     70                else {
     71                        return indexablesByProp;
     72                }
    6173                BeanInfo beanInfo = Introspector.getBeanInfo(clazz);
    6274                for (PropertyDescriptor descriptor : beanInfo.getPropertyDescriptors()) {
     
    7991                                if (!indexableAnnotations.isEmpty() || childrenIndexed) {
    8092                                        IndexedProperty indexedProperty = new IndexedProperty(clazz, getter.getName(), childrenIndexed);
    81                                         indexables.put(indexedProperty, indexableAnnotations);
     93                                        indexablesByProp.put(indexedProperty, indexableAnnotations);
    8294                                }
    8395                        }
    8496                }
    85                 return indexables;
     97                indexableCache.put(clazz, indexablesByProp);
     98                return indexablesByProp;
    8699        }
    87100
Note: See TracChangeset for help on using the changeset viewer.