You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hivemind.apache.org by kn...@apache.org on 2005/04/27 14:23:46 UTC
cvs commit: jakarta-hivemind status.xml
knut 2005/04/27 05:23:46
Modified: framework/src/java/org/apache/hivemind/service/impl
BuilderPropertyFacet.java
. status.xml
Added: framework/src/test/org/apache/hivemind/service/impl
TestBuilderPropertyFacet.java
Log:
Cache translated values in BuilderPropertyFacet (see HIVEMIND-99)
Revision Changes Path
1.11 +25 -7 jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/BuilderPropertyFacet.java
Index: BuilderPropertyFacet.java
===================================================================
RCS file: /home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/BuilderPropertyFacet.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- BuilderPropertyFacet.java 10 Jan 2005 13:14:59 -0000 1.10
+++ BuilderPropertyFacet.java 27 Apr 2005 12:23:46 -0000 1.11
@@ -14,6 +14,9 @@
package org.apache.hivemind.service.impl;
+import java.util.HashMap;
+import java.util.Map;
+
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.ServiceImplementationFactoryParameters;
import org.apache.hivemind.schema.Translator;
@@ -32,17 +35,32 @@
private String _literalValue;
+ /**
+ * Cache for translated values to prevent calling
+ * {@link Translator#translate(Module, Class, String, Location)} twice.
+ */
+ private Map _valuesCache = new HashMap();
+
public Object getFacetValue(ServiceImplementationFactoryParameters factoryParameters,
Class targetType)
{
- Translator translator = factoryParameters.getInvokingModule()
- .getTranslator(_translatorName);
+ Object result = _valuesCache.get(targetType);
+
+ if (result == null)
+ {
+ Translator translator = factoryParameters.getInvokingModule().getTranslator(
+ _translatorName);
+
+ result = translator.translate(
+ factoryParameters.getInvokingModule(),
+ targetType,
+ _literalValue,
+ getLocation());
+
+ _valuesCache.put(targetType, result);
+ }
- return translator.translate(
- factoryParameters.getInvokingModule(),
- targetType,
- _literalValue,
- getLocation());
+ return result;
}
public boolean isAssignableToType(ServiceImplementationFactoryParameters factoryParameters,
1.1 jakarta-hivemind/framework/src/test/org/apache/hivemind/service/impl/TestBuilderPropertyFacet.java
Index: TestBuilderPropertyFacet.java
===================================================================
//Copyright 2005 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package org.apache.hivemind.service.impl;
import org.apache.hivemind.ServiceImplementationFactoryParameters;
import org.apache.hivemind.internal.Module;
import org.apache.hivemind.schema.Translator;
import org.apache.hivemind.test.HiveMindTestCase;
import org.easymock.MockControl;
public class TestBuilderPropertyFacet extends HiveMindTestCase
{
public void testCachingOfTranslatedValues() throws Exception
{
MockControl moduleControl = newControl(Module.class);
Module module = (Module) moduleControl.getMock();
MockControl translatorControl = newControl(Translator.class);
Translator translator = (Translator) translatorControl.getMock();
MockControl paramsControl = newControl(ServiceImplementationFactoryParameters.class);
ServiceImplementationFactoryParameters params = (ServiceImplementationFactoryParameters) paramsControl
.getMock();
BuilderPropertyFacet facet = new BuilderPropertyFacet();
facet.setTranslator("foo");
facet.setValue("bar");
params.getInvokingModule();
paramsControl.setDefaultReturnValue(module);
module.getTranslator("foo");
moduleControl.setDefaultReturnValue(translator);
translator.translate(module, Object.class, "bar", null);
translatorControl.setReturnValue("BAR");
replayControls();
facet.isAssignableToType(params, Object.class);
facet.getFacetValue(params, Object.class);
verifyControls();
}
}
1.125 +1 -0 jakarta-hivemind/status.xml
Index: status.xml
===================================================================
RCS file: /home/cvs/jakarta-hivemind/status.xml,v
retrieving revision 1.124
retrieving revision 1.125
diff -u -r1.124 -r1.125
--- status.xml 27 Apr 2005 10:49:40 -0000 1.124
+++ status.xml 27 Apr 2005 12:23:46 -0000 1.125
@@ -42,6 +42,7 @@
<action type="add" dev="HLS" due-to="Achim Hügen" fixes-bug="HIVEMIND-97"> Apply Achim Hügen's JMX patch. </action>
<action type="updated" dev="HLS"> Update to Javassist 3.0. </action>
<action type="fix" dev="KW" due-to="Michael Frericks" fixes-bug="HIVEMIND-100"> Translate unique attribute values before checking uniqueness. </action>
+ <action type="fix" dev="KW" fixes-bug="HIVEMIND-99"> Cache translated values in BuilderPropertyFacet. </action>
</release>
<release version="1.1-alpha-3" date="Mar 22 2005">
<action type="fix" dev="JC" fixes-bug="HIVEMIND-96" >Interceptors can now be ordered by name rather than interceptor factory id.</action>
---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-cvs-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-cvs-help@jakarta.apache.org