Author: sshafroi
Date: 2008-08-12 12:41:35 +0200 (Tue, 12 Aug 2008)
New Revision: 6759
Modified:
trunk/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/FastQueryMatchingEvaluatorFactory.java
trunk/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/JepEvaluatorFactory.java
trunk/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/RegExpEvaluatorFactory.java
trunk/site-spi/src/main/java/no/sesat/search/site/Site.java
Log:
Keep one SiteContext for each site, and use this instead of creating a new one
each time it is needed.
Modified:
trunk/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/FastQueryMatchingEvaluatorFactory.java
===================================================================
---
trunk/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/FastQueryMatchingEvaluatorFactory.java
2008-08-12 07:11:45 UTC (rev 6758)
+++
trunk/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/FastQueryMatchingEvaluatorFactory.java
2008-08-12 10:41:35 UTC (rev 6759)
@@ -78,11 +78,7 @@
result = instanceOf(ContextWrapper.wrap(
Context.class,
- new SiteContext(){
- public Site getSite(){
- return cxt.getSite().getParent();
- }
- },
+ cxt.getSite().getParent().getSiteContext(),
cxt
)).getEvaluator(token);
}
Modified:
trunk/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/JepEvaluatorFactory.java
===================================================================
---
trunk/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/JepEvaluatorFactory.java
2008-08-12 07:11:45 UTC (rev 6758)
+++
trunk/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/JepEvaluatorFactory.java
2008-08-12 10:41:35 UTC (rev 6759)
@@ -121,7 +121,6 @@
}
public TokenEvaluator getEvaluator(final TokenPredicate token) throws
EvaluationException {
-
final Context cxt = getContext();
TokenEvaluator result = jepEvaluators.get(token);
@@ -129,11 +128,7 @@
result = instanceOf(ContextWrapper.wrap(
Context.class,
- new SiteContext(){
- public Site getSite(){
- return cxt.getSite().getParent();
- }
- },
+ cxt.getSite().getParent().getSiteContext(),
cxt
)).getEvaluator(token);
}
Modified:
trunk/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/RegExpEvaluatorFactory.java
===================================================================
---
trunk/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/RegExpEvaluatorFactory.java
2008-08-12 07:11:45 UTC (rev 6758)
+++
trunk/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/RegExpEvaluatorFactory.java
2008-08-12 10:41:35 UTC (rev 6759)
@@ -63,7 +63,6 @@
throws SiteKeyedFactoryInstantiationException {
super(cxt);
-
try{
init();
@@ -152,11 +151,7 @@
result = instanceOf(ContextWrapper.wrap(
Context.class,
- new SiteContext(){
- public Site getSite(){
- return cxt.getSite().getParent();
- }
- },
+ cxt.getSite().getParent().getSiteContext(),
cxt
)).getEvaluator(token);
}
Modified: trunk/site-spi/src/main/java/no/sesat/search/site/Site.java
===================================================================
--- trunk/site-spi/src/main/java/no/sesat/search/site/Site.java 2008-08-12
07:11:45 UTC (rev 6758)
+++ trunk/site-spi/src/main/java/no/sesat/search/site/Site.java 2008-08-12
10:41:35 UTC (rev 6759)
@@ -35,7 +35,6 @@
import no.sesat.Interpreter;
import no.sesat.Interpreter.Function;
-import no.sesat.search.site.config.ResourceLoadException;
import org.apache.log4j.Logger;
/** A Site object identifies a Skin + Locale pairing.
@@ -116,6 +115,8 @@
*/
private final Site parent;
+ private transient final SiteContext siteContext;
+
/** No-argument constructor for deserialization. */
private Site() {
siteName = null;
@@ -123,6 +124,13 @@
locale = Locale.getDefault();
uniqueName = null;
parent = null;
+
+ final Site thisSite = this;
+ siteContext = new SiteContext() {
+ public Site getSite() {
+ return thisSite;
+ }
+ };
}
/** Creates a new instance of Site.
@@ -130,8 +138,6 @@
* @throws IllegalArgumentException when there exists no skin matching the
theSiteName argument.
*/
private Site(final Context cxt, final String theSiteName, final Locale
theLocale) {
-
-
try{
INSTANCES_LOCK.writeLock().lock();
@@ -147,14 +153,12 @@
uniqueName = getUniqueName(siteName, locale);
final Site thisSite = this;
-
- final SiteContext siteContext = new SiteContext() {
+ siteContext = new SiteContext() {
public Site getSite() {
return thisSite;
}
};
-
final String parentSiteName;
if(null != cxt){
// cxt.getParentSiteName(siteContext) is an expensive call due
to resource load every call.
@@ -201,6 +205,14 @@
}
}
+ /**
+ * Get a SiteContext for this site.
+ *
+ * @return SiteContext for this site.
+ */
+ public SiteContext getSiteContext() {
+ return siteContext;
+ }
/** the parent to this site.
* @return site null if we are the DEFAULT site.
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits