Skip to content

Commit fea3b91

Browse files
committed
Merge pull request #196 from marklogic/177-UninstallHubResultsInError
177 uninstall hub results in error
2 parents a8b0681 + 88000b5 commit fea3b91

File tree

4 files changed

+216
-215
lines changed

4 files changed

+216
-215
lines changed

quick-start/src/main/java/com/marklogic/hub/web/controller/api/DataHubServerApiController.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import java.io.File;
44
import java.util.ArrayList;
5+
import java.util.Enumeration;
6+
import java.util.Iterator;
57

68
import javax.servlet.http.HttpServletRequest;
79
import javax.servlet.http.HttpSession;
@@ -129,7 +131,10 @@ public LoginForm postLogout(HttpSession session) {
129131
loginForm.setLoggedIn(false);
130132
this.retrieveEnvironmentConfiguration(loginForm);
131133

132-
session.invalidate();
134+
Enumeration<String> attrNames = session.getAttributeNames();
135+
while(attrNames.hasMoreElements()) {
136+
session.removeAttribute(attrNames.nextElement());
137+
}
133138

134139
return loginForm;
135140
}

quick-start/src/main/java/com/marklogic/hub/web/controller/api/EntityApiController.java

Lines changed: 113 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -32,117 +32,117 @@
3232
@RestController
3333
@RequestMapping("/api/entities")
3434
@Scope("session")
35-
public class EntityApiController implements InitializingBean, DisposableBean,
36-
FileSystemEventListener {
37-
38-
@Autowired
39-
private EnvironmentConfiguration environmentConfiguration;
40-
41-
@Autowired
42-
private DataHubService dataHubService;
43-
44-
@Autowired
45-
private EntityManagerService entityManagerService;
46-
47-
@Autowired
48-
private FileSystemWatcherService watcherService;
49-
50-
@Autowired
51-
private SyncStatusService syncStatusService;
52-
53-
@RequestMapping(method = RequestMethod.GET)
54-
@ResponseBody
55-
public List<EntityModel> getEntities(HttpSession session) {
56-
LoginForm loginForm = (LoginForm) session.getAttribute("loginForm");
57-
List<EntityModel> entities = entityManagerService.getEntities();
58-
loginForm.setEntities(entities);
59-
return entities;
60-
}
61-
62-
@RequestMapping(value = "display", method = RequestMethod.POST)
63-
@ResponseBody
64-
public EntityModel displayEntity(@RequestBody String entityName,
65-
HttpSession session) {
66-
LoginForm loginForm = (LoginForm) session.getAttribute("loginForm");
67-
loginForm.selectEntity(entityName);
68-
69-
return loginForm.getSelectedEntity();
70-
}
71-
72-
@RequestMapping(method = RequestMethod.POST, consumes = { MediaType.APPLICATION_JSON_UTF8_VALUE }, produces = { MediaType.APPLICATION_JSON_UTF8_VALUE })
73-
@ResponseBody
74-
public LoginForm saveEntity(@RequestBody EntityForm entityForm,
75-
BindingResult bindingResult, HttpSession session) {
76-
LoginForm loginForm = (LoginForm) session.getAttribute("loginForm");
77-
List<EntityModel> entities = loginForm.getEntities();
78-
79-
entityForm.validate(entities);
80-
81-
EntityModel entityModel = entityManagerService.createEntity(
82-
entityForm.getEntityName(), entityForm.getInputFlowName(),
83-
entityForm.getConformFlowName(), entityForm.getPluginFormat(),
84-
entityForm.getDataFormat());
85-
86-
entities.add(entityModel);
87-
loginForm.setSelectedEntity(entityModel);
88-
return loginForm;
89-
}
90-
91-
/**
92-
* Get a list of entities that has changed. This API does not return until a
93-
* change has occurred.
94-
*
95-
* @param session
96-
* @return
97-
*/
98-
@RequestMapping(value = "status-change", method = RequestMethod.GET)
99-
public LoginForm getStatusChange(HttpServletRequest request) {
100-
HttpSession session = request.getSession();
101-
102-
synchronized (syncStatusService) {
103-
try {
104-
syncStatusService.wait();
105-
} catch (InterruptedException e) {
106-
}
107-
108-
// refresh the list of entities saved in the session
109-
LoginForm loginForm = (LoginForm) session.getAttribute("loginForm");
110-
111-
// add checking if data hub is installed and the server is
112-
// acceptable. Something may have changed the server or removed the
113-
// data hub outside the app
114-
loginForm.setInstalled(dataHubService.isInstalled());
115-
loginForm.setServerVersionAccepted(dataHubService.isServerAcceptable());
116-
if (loginForm.isInstalled()) {
117-
List<EntityModel> entities = entityManagerService.getEntities();
118-
loginForm.setEntities(entities);
119-
loginForm.refreshSelectedEntity();
120-
}
121-
122-
// refresh the session loginForm
123-
session.setAttribute("loginForm", loginForm);
124-
125-
return loginForm;
126-
}
127-
}
128-
129-
@Override
130-
public void afterPropertiesSet() throws Exception {
131-
String pluginDir = environmentConfiguration.getUserPluginDir();
132-
watcherService.watch(pluginDir, this);
133-
}
134-
135-
@Override
136-
public void destroy() throws Exception {
137-
synchronized (syncStatusService) {
138-
syncStatusService.notifyAll();
139-
}
140-
}
141-
142-
@Override
143-
public void onWatchEvent(Path path, WatchEvent<Path> event) {
144-
synchronized (syncStatusService) {
145-
syncStatusService.notifyAll();
146-
}
147-
}
35+
public class EntityApiController implements InitializingBean, DisposableBean, FileSystemEventListener {
36+
37+
@Autowired
38+
private EnvironmentConfiguration environmentConfiguration;
39+
40+
@Autowired
41+
private DataHubService dataHubService;
42+
43+
@Autowired
44+
private EntityManagerService entityManagerService;
45+
46+
@Autowired
47+
private FileSystemWatcherService watcherService;
48+
49+
@Autowired
50+
private SyncStatusService syncStatusService;
51+
52+
@RequestMapping(method = RequestMethod.GET)
53+
@ResponseBody
54+
public List<EntityModel> getEntities(HttpSession session) {
55+
LoginForm loginForm = (LoginForm) session.getAttribute("loginForm");
56+
List<EntityModel> entities = entityManagerService.getEntities();
57+
loginForm.setEntities(entities);
58+
return entities;
59+
}
60+
61+
@RequestMapping(value = "display", method = RequestMethod.POST)
62+
@ResponseBody
63+
public EntityModel displayEntity(@RequestBody String entityName, HttpSession session) {
64+
LoginForm loginForm = (LoginForm) session.getAttribute("loginForm");
65+
loginForm.selectEntity(entityName);
66+
67+
return loginForm.getSelectedEntity();
68+
}
69+
70+
@RequestMapping(method = RequestMethod.POST, consumes = { MediaType.APPLICATION_JSON_UTF8_VALUE }, produces = {
71+
MediaType.APPLICATION_JSON_UTF8_VALUE })
72+
@ResponseBody
73+
public LoginForm saveEntity(@RequestBody EntityForm entityForm, BindingResult bindingResult, HttpSession session) {
74+
LoginForm loginForm = (LoginForm) session.getAttribute("loginForm");
75+
List<EntityModel> entities = loginForm.getEntities();
76+
77+
entityForm.validate(entities);
78+
79+
EntityModel entityModel = entityManagerService.createEntity(entityForm.getEntityName(),
80+
entityForm.getInputFlowName(), entityForm.getConformFlowName(), entityForm.getPluginFormat(),
81+
entityForm.getDataFormat());
82+
83+
entities.add(entityModel);
84+
loginForm.setSelectedEntity(entityModel);
85+
return loginForm;
86+
}
87+
88+
/**
89+
* Get a list of entities that has changed. This API does not return until a
90+
* change has occurred.
91+
*
92+
* @param session
93+
* @return
94+
*/
95+
@RequestMapping(value = "status-change", method = RequestMethod.GET)
96+
public LoginForm getStatusChange(HttpServletRequest request) {
97+
HttpSession session = request.getSession();
98+
99+
synchronized (syncStatusService) {
100+
try {
101+
syncStatusService.wait();
102+
} catch (InterruptedException e) {
103+
}
104+
105+
// refresh the list of entities saved in the session
106+
LoginForm loginForm = (LoginForm) session.getAttribute("loginForm");
107+
if (null == loginForm) {
108+
loginForm = new LoginForm();
109+
}
110+
111+
// add checking if data hub is installed and the server is
112+
// acceptable. Something may have changed the server or removed the
113+
// data hub outside the app
114+
loginForm.setInstalled(dataHubService.isInstalled());
115+
loginForm.setServerVersionAccepted(dataHubService.isServerAcceptable());
116+
if (loginForm.isInstalled()) {
117+
List<EntityModel> entities = entityManagerService.getEntities();
118+
loginForm.setEntities(entities);
119+
loginForm.refreshSelectedEntity();
120+
}
121+
122+
// refresh the session loginForm
123+
session.setAttribute("loginForm", loginForm);
124+
125+
return loginForm;
126+
}
127+
}
128+
129+
@Override
130+
public void afterPropertiesSet() throws Exception {
131+
String pluginDir = environmentConfiguration.getUserPluginDir();
132+
watcherService.watch(pluginDir, this);
133+
}
134+
135+
@Override
136+
public void destroy() throws Exception {
137+
synchronized (syncStatusService) {
138+
syncStatusService.notifyAll();
139+
}
140+
}
141+
142+
@Override
143+
public void onWatchEvent(Path path, WatchEvent<Path> event) {
144+
synchronized (syncStatusService) {
145+
syncStatusService.notifyAll();
146+
}
147+
}
148148
}

quick-start/src/main/resources/static/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<link rel="stylesheet" type="text/css" href="lib/angular-tree-control/css/tree-control-attribute.css">
2828

2929
<!-- Angular Dependencies -->
30-
<!-- script src="lib/jquery/js/jquery.min.js"></script -->
30+
<script src="lib/jquery/js/jquery.min.js"></script>
3131

3232
<!-- Bootstrap -->
3333
<script src="lib/bootstrap-3.3.6-dist/js/bootstrap.min.js"></script>

0 commit comments

Comments
 (0)