Skip to content

Commit 8fa4a4f

Browse files
author
nickchecan
committed
chore: create ollama endpoint memory object
1 parent c170a0d commit 8fa4a4f

File tree

5 files changed

+371
-1
lines changed

5 files changed

+371
-1
lines changed

com.developer.nefarious.zjoule.plugin/src/com/developer/nefarious/zjoule/plugin/login/api/OllamaLoginClient.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
package com.developer.nefarious.zjoule.plugin.login.api;
22

3+
import java.net.http.HttpClient;
4+
35
public class OllamaLoginClient implements IOllamaLoginClient {
6+
7+
private HttpClient httpClient;
8+
9+
private IOllamaLoginClientHelper ollamaLoginClientHelper;
10+
11+
public OllamaLoginClient(final IOllamaLoginClientHelper ollamaLoginClientHelper) {
12+
httpClient = HttpClient.newHttpClient();
13+
this.ollamaLoginClientHelper = ollamaLoginClientHelper;
14+
}
415

516
@Override
617
public GetOllamaModelsResponse getModels() {
7-
// TODO Auto-generated method stub
818
return null;
919
}
1020

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.developer.nefarious.zjoule.plugin.login.memory;
2+
3+
import com.developer.nefarious.zjoule.plugin.memory.IEclipseMemory;
4+
import com.developer.nefarious.zjoule.plugin.memory.IMemoryObject;
5+
import com.developer.nefarious.zjoule.plugin.memory.MemoryOllamaEndpoint;
6+
7+
public class TemporaryMemoryOllamaEndpoint implements IMemoryObject<String>, ITemporaryMemoryObject {
8+
9+
private static TemporaryMemoryOllamaEndpoint instance;
10+
11+
public static final String KEY = "tmp-" + MemoryOllamaEndpoint.KEY;
12+
13+
private IEclipseMemory eclipseMemory;
14+
15+
public static TemporaryMemoryOllamaEndpoint getInstance() {
16+
if (instance == null) {
17+
throw new IllegalStateException("TemporaryMemoryOllamaEndpoint not initialized. Call initialize() first.");
18+
}
19+
return instance;
20+
}
21+
22+
public static void initialize(final IEclipseMemory eclipseMemory) {
23+
if (instance == null) {
24+
instance = new TemporaryMemoryOllamaEndpoint(eclipseMemory);
25+
}
26+
}
27+
28+
public static void resetInstance() {
29+
instance = null;
30+
}
31+
32+
private TemporaryMemoryOllamaEndpoint(final IEclipseMemory eclipseMemory) {
33+
this.eclipseMemory = eclipseMemory;
34+
}
35+
36+
@Override
37+
public Boolean isEmpty() {
38+
String ollamaEndpoint = load();
39+
if ((ollamaEndpoint == null) || ollamaEndpoint.isEmpty() || ollamaEndpoint.isBlank()) {
40+
return true;
41+
}
42+
return false;
43+
}
44+
45+
@Override
46+
public String load() {
47+
return eclipseMemory.loadFromEclipsePreferences(KEY);
48+
}
49+
50+
@Override
51+
public void persist() {
52+
String ollamaEndpoint = eclipseMemory.loadFromEclipsePreferences(KEY);
53+
eclipseMemory.saveOnEclipsePreferences(MemoryOllamaEndpoint.KEY, ollamaEndpoint);
54+
}
55+
56+
@Override
57+
public void save(final String ollamaEndpoint) {
58+
eclipseMemory.saveOnEclipsePreferences(KEY, ollamaEndpoint);
59+
}
60+
61+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.developer.nefarious.zjoule.plugin.memory;
2+
3+
public class MemoryOllamaEndpoint implements IMemoryObject<String> {
4+
5+
public static final String KEY = "ollama-endpoint";
6+
7+
private static MemoryOllamaEndpoint instance;
8+
9+
private IEclipseMemory eclipseMemory;
10+
11+
public static MemoryOllamaEndpoint getInstance() {
12+
if (instance == null) {
13+
throw new IllegalStateException("MemoryOllamaEndpoint not initialized. Call initialize() first.");
14+
}
15+
return instance;
16+
}
17+
18+
public static void initialize(final IEclipseMemory eclipseMemory) {
19+
if (instance == null) {
20+
instance = new MemoryOllamaEndpoint(eclipseMemory);
21+
}
22+
}
23+
24+
public static void resetInstance() {
25+
instance = null;
26+
}
27+
28+
private MemoryOllamaEndpoint(final IEclipseMemory eclipseMemory) {
29+
this.eclipseMemory = eclipseMemory;
30+
}
31+
32+
@Override
33+
public Boolean isEmpty() {
34+
String ollamaEndpoint = load();
35+
if ((ollamaEndpoint == null) || ollamaEndpoint.isEmpty() || ollamaEndpoint.isBlank()) {
36+
return true;
37+
}
38+
return false;
39+
}
40+
41+
@Override
42+
public String load() {
43+
return eclipseMemory.loadFromEclipsePreferences(KEY);
44+
}
45+
46+
@Override
47+
public void save(final String ollamaEndpoint) {
48+
eclipseMemory.saveOnEclipsePreferences(KEY, ollamaEndpoint);
49+
}
50+
51+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
package com.developer.nefarious.zjoule.test.login.memory;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertFalse;
5+
import static org.junit.jupiter.api.Assertions.assertTrue;
6+
import static org.mockito.Mockito.doReturn;
7+
import static org.mockito.Mockito.spy;
8+
import static org.mockito.Mockito.verify;
9+
import static org.mockito.Mockito.when;
10+
11+
import org.junit.jupiter.api.BeforeEach;
12+
import org.junit.jupiter.api.Test;
13+
import org.mockito.Mock;
14+
import org.mockito.MockitoAnnotations;
15+
16+
import com.developer.nefarious.zjoule.plugin.login.memory.TemporaryMemoryOllamaEndpoint;
17+
import com.developer.nefarious.zjoule.plugin.memory.IEclipseMemory;
18+
19+
public class TemporaryMemoryOllamaEndpointTest {
20+
21+
public static final String FINAL_KEY = "ollama-endpoint";
22+
23+
public static final String TEMPORARY_KEY = "tmp-ollama-endpoint";
24+
25+
private TemporaryMemoryOllamaEndpoint cut;
26+
27+
@Mock
28+
IEclipseMemory mockEclipseMemory;
29+
30+
@BeforeEach
31+
public void setUp() {
32+
MockitoAnnotations.openMocks(this);
33+
34+
TemporaryMemoryOllamaEndpoint.resetInstance();
35+
TemporaryMemoryOllamaEndpoint.initialize(mockEclipseMemory);
36+
cut = spy(TemporaryMemoryOllamaEndpoint.getInstance());
37+
}
38+
39+
@Test
40+
public void shouldBeEmptyWhenNoMemory() {
41+
// Arrange
42+
doReturn(null).when(cut).load();
43+
// Act
44+
Boolean returnValue = cut.isEmpty();
45+
// Assert
46+
verify(cut).load();
47+
assertTrue(returnValue);
48+
}
49+
50+
@Test
51+
public void shouldBeEmptyWhenOllamaEndpointIsBlank() {
52+
// Arrange
53+
String mockMockOllamaEndpoint = " ";
54+
doReturn(mockMockOllamaEndpoint).when(cut).load();
55+
// Act
56+
Boolean returnValue = cut.isEmpty();
57+
// Assert
58+
verify(cut).load();
59+
assertTrue(returnValue);
60+
}
61+
62+
@Test
63+
public void shouldBeEmptyWhenOllamaEndpointIsEmpty() {
64+
// Arrange
65+
String mockMockOllamaEndpoint = "";
66+
doReturn(mockMockOllamaEndpoint).when(cut).load();
67+
// Act
68+
Boolean returnValue = cut.isEmpty();
69+
// Assert
70+
verify(cut).load();
71+
assertTrue(returnValue);
72+
}
73+
74+
@Test
75+
public void shouldBeEmptyWheOllamaEndpointIsNull() {
76+
// Arrange
77+
String mockMockOllamaEndpoint = null;
78+
doReturn(mockMockOllamaEndpoint).when(cut).load();
79+
// Act
80+
Boolean returnValue = cut.isEmpty();
81+
// Assert
82+
verify(cut).load();
83+
assertTrue(returnValue);
84+
}
85+
86+
@Test
87+
public void shouldLoadOllamaEndpoint() {
88+
// Arrange
89+
String expectedValue = "stored ollama endpoint";
90+
when(mockEclipseMemory.loadFromEclipsePreferences(TEMPORARY_KEY)).thenReturn(expectedValue);
91+
// Act
92+
String returnValue = cut.load();
93+
// Assert
94+
assertEquals(returnValue, expectedValue);
95+
}
96+
97+
@Test
98+
public void shouldNotBeEmptyWhenOllamaEndpointIsSave() {
99+
// Arrange
100+
String mockMockOllamaEndpoint = "ollama-endpoint";
101+
doReturn(mockMockOllamaEndpoint).when(cut).load();
102+
// Act
103+
Boolean returnValue = cut.isEmpty();
104+
// Assert
105+
verify(cut).load();
106+
assertFalse(returnValue);
107+
}
108+
109+
@Test
110+
public void shouldPersistOllamaEndpoint() {
111+
// Arrange
112+
String mockOllamaEndpoint = "temporary ollama endpoint";
113+
when(mockEclipseMemory.loadFromEclipsePreferences(TEMPORARY_KEY)).thenReturn(mockOllamaEndpoint);
114+
// Act
115+
cut.persist();
116+
// Assert
117+
verify(mockEclipseMemory).saveOnEclipsePreferences(FINAL_KEY, mockOllamaEndpoint);
118+
}
119+
120+
@Test
121+
public void shouldSaveOllamaEndpoint() {
122+
// Arrange
123+
String mockOllamaEndpoint = "selected ollama endpoint";
124+
// Act
125+
cut.save(mockOllamaEndpoint);
126+
// Assert
127+
verify(mockEclipseMemory).saveOnEclipsePreferences(TEMPORARY_KEY, mockOllamaEndpoint);
128+
}
129+
130+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package com.developer.nefarious.zjoule.test.memory;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertFalse;
5+
import static org.junit.jupiter.api.Assertions.assertTrue;
6+
import static org.mockito.Mockito.doReturn;
7+
import static org.mockito.Mockito.spy;
8+
import static org.mockito.Mockito.verify;
9+
import static org.mockito.Mockito.when;
10+
11+
import org.junit.jupiter.api.BeforeEach;
12+
import org.junit.jupiter.api.Test;
13+
import org.mockito.Mock;
14+
import org.mockito.MockitoAnnotations;
15+
16+
import com.developer.nefarious.zjoule.plugin.memory.IEclipseMemory;
17+
import com.developer.nefarious.zjoule.plugin.memory.IMemoryObject;
18+
import com.developer.nefarious.zjoule.plugin.memory.MemoryOllamaEndpoint;
19+
20+
public class MemoryOllamaEndpointTest {
21+
22+
public static final String KEY = "ollama-endpoint";
23+
24+
private IMemoryObject<String> cut;
25+
26+
@Mock
27+
private IEclipseMemory mockEclipseMemory;
28+
29+
@BeforeEach
30+
public void setUp() {
31+
MockitoAnnotations.openMocks(this);
32+
33+
MemoryOllamaEndpoint.resetInstance();
34+
MemoryOllamaEndpoint.initialize(mockEclipseMemory);
35+
cut = spy(MemoryOllamaEndpoint.getInstance());
36+
}
37+
38+
@Test
39+
public void shouldBeEmptyWhenNoMemory() {
40+
// Arrange
41+
doReturn(null).when(cut).load();
42+
// Act
43+
Boolean returnValue = cut.isEmpty();
44+
// Assert
45+
verify(cut).load();
46+
assertTrue(returnValue);
47+
}
48+
49+
@Test
50+
public void shouldBeEmptyWhenOllamaEndpointIsBlank() {
51+
// Arrange
52+
String mockMockOllamaEndpoint = " ";
53+
doReturn(mockMockOllamaEndpoint).when(cut).load();
54+
// Act
55+
Boolean returnValue = cut.isEmpty();
56+
// Assert
57+
verify(cut).load();
58+
assertTrue(returnValue);
59+
}
60+
61+
@Test
62+
public void shouldBeEmptyWhenOllamaEndpointIsEmpty() {
63+
// Arrange
64+
String mockMockOllamaEndpoint = "";
65+
doReturn(mockMockOllamaEndpoint).when(cut).load();
66+
// Act
67+
Boolean returnValue = cut.isEmpty();
68+
// Assert
69+
verify(cut).load();
70+
assertTrue(returnValue);
71+
}
72+
73+
@Test
74+
public void shouldBeEmptyWheOllamaEndpointIsNull() {
75+
// Arrange
76+
String mockMockOllamaEndpoint = null;
77+
doReturn(mockMockOllamaEndpoint).when(cut).load();
78+
// Act
79+
Boolean returnValue = cut.isEmpty();
80+
// Assert
81+
verify(cut).load();
82+
assertTrue(returnValue);
83+
}
84+
85+
@Test
86+
public void shouldLoadOllamaEndpoint() {
87+
// Arrange
88+
String expectedValue = "stored ollama endpoint";
89+
when(mockEclipseMemory.loadFromEclipsePreferences(KEY)).thenReturn(expectedValue);
90+
// Act
91+
String returnValue = cut.load();
92+
// Assert
93+
assertEquals(returnValue, expectedValue);
94+
}
95+
96+
@Test
97+
public void shouldNotBeEmptyWhenOllamaEndpointIsSave() {
98+
// Arrange
99+
String mockMockOllamaEndpoint = "ollama-endpoint";
100+
doReturn(mockMockOllamaEndpoint).when(cut).load();
101+
// Act
102+
Boolean returnValue = cut.isEmpty();
103+
// Assert
104+
verify(cut).load();
105+
assertFalse(returnValue);
106+
}
107+
108+
@Test
109+
public void shouldSaveOllamaEndpoint() {
110+
// Arrange
111+
String mockOllamaEndpoint = "selected ollama endpoint";
112+
// Act
113+
cut.save(mockOllamaEndpoint);
114+
// Assert
115+
verify(mockEclipseMemory).saveOnEclipsePreferences(KEY, mockOllamaEndpoint);
116+
}
117+
118+
}

0 commit comments

Comments
 (0)