Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 797057
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T22:44:25+00:00 2026-05-14T22:44:25+00:00

I am in the process of rewriting a bottle neck in the code of

  • 0

I am in the process of rewriting a bottle neck in the code of the project I am on, and in doing so I am creating a top level item that contains a self populating Ehcache. I am attempting to write a test to make sure that the basic call chain is established, but when the test executes it hands when retrieving the item from the cache.

Here are the Setup and the test, for reference mocking is being done with Mockito:

@Before
public void SetUp()
{
    testCache = new Cache(getTestCacheConfiguration());
    recordingFactory = new EntryCreationRecordingCache();
    service = new Service<Request, Response>(testCache, recordingFactory); 
}

@Test
public void retrievesResultsFromSuppliedCache()
{
    ResultType resultType = mock(ResultType.class);
    Response expectedResponse = mock(Response.class);
    addToExpectedResults(resultType, expectedResponse);
    Request request = mock(Request.class);
    when(request.getResultType()).thenReturn(resultType);

    assertThat(service.getResponse(request), sameInstance(expectedResponse));
    assertTrue(recordingFactory.requestList.contains(request));
}

private void addToExpectedResults(ResultType resultType,
        Response response) {
    recordingFactory.responseMap.put(resultType, response);

}

private CacheConfiguration getTestCacheConfiguration() {
    CacheConfiguration cacheConfiguration = new CacheConfiguration("TEST_CACHE", 10);
    cacheConfiguration.setLoggingEnabled(false);
    return cacheConfiguration;
}

private class EntryCreationRecordingCache extends ResponseFactory{

    public final Map<ResultType, Response> responseMap = new ConcurrentHashMap<ResultType, Response>();
    public final List<Request> requestList = new ArrayList<Request>();

    @Override
    protected Map<ResultType, Response> generateResponse(Request request) {
        requestList.add(request);
        return responseMap;
    }
}

Here is the ServiceClass

public class Service<K extends Request, V extends Response> {

    private Ehcache cache;

    public Service(Ehcache cache, ResponseFactory factory) {
        this.cache = new SelfPopulatingCache(cache, factory);
    }

    @SuppressWarnings("unchecked")
    public V getResponse(K request)
    {
        ResultType resultType = request.getResultType();
        Element cacheEntry = cache.get(request);
        V response = null;
        if(cacheEntry != null){
            Map<ResultType, Response> resultTypeMap = (Map<ResultType, Response>) cacheEntry.getValue();
            try{
                response = (V) resultTypeMap.get(resultType);
            }catch(NullPointerException e){
                throw new RuntimeException("Result type not found for Result Type: " + resultType);
            }catch(ClassCastException e){
                throw new RuntimeException("Incorrect Response Type for Result Type: " + resultType);
            }
        }
        return response;
    }
}

And here is the ResponseFactory:

public abstract class ResponseFactory implements CacheEntryFactory{

    @Override
    public final Object createEntry(Object request) throws Exception {
        return generateResponse((Request)request);
    }

    protected abstract Map<ResultType,Response> generateResponse(Request request);
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T22:44:26+00:00Added an answer on May 14, 2026 at 10:44 pm

    After wrestling with it for a while, I discovered that the cache wasn’t being initialized. Creating a CacheManager and adding the cache to it resolved the problem.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

We are in the process of rewriting a large legacy system that makes extensive
For some part of my project I need a process-local scheduling system that will
I'm maintaining an ancient RoR site that we're in the process of rewriting in
I'm in the process of rewriting all the URLs on my site that end
I am in the process of rewriting jQuery code to Backbone, but am stuck
I'm in the process of rewriting a jQuery plugin to be used in an
I process a lot of text/data that I exchange between Python, R, and sometimes
I am in the process of rewriting a website in Coffeescript and I am
I'm in the process of rewriting the error handling of PEAR's Text_LanguageDetect to exceptions
I have a custom-built MVC PHP framework that I am in the process of

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.