61 lines
1.7 KiB
Java
61 lines
1.7 KiB
Java
package org.gcube.data.access.storagehub.services.admin;
|
|
|
|
import java.io.InputStream;
|
|
import java.io.InputStreamReader;
|
|
import java.nio.charset.Charset;
|
|
|
|
import javax.jcr.Session;
|
|
import javax.jcr.nodetype.NodeType;
|
|
|
|
import org.apache.jackrabbit.api.JackrabbitSession;
|
|
import org.apache.jackrabbit.api.JackrabbitWorkspace;
|
|
import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
|
|
import org.apache.jackrabbit.commons.cnd.CndImporter;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
public class InitScript {
|
|
|
|
private static Logger log = LoggerFactory.getLogger(InitScript.class);
|
|
|
|
|
|
public void init(JackrabbitSession ses) throws Exception{
|
|
log.info("init started");
|
|
try {
|
|
initNodeTypes(ses);
|
|
ses.getRootNode().addNode("Home");
|
|
ses.getRootNode().addNode("Share");
|
|
PrivilegeManager pm = ((JackrabbitWorkspace) ses.getWorkspace()).getPrivilegeManager();
|
|
pm.registerPrivilege("hl:writeAll", false, new String[0]);
|
|
ses.save();
|
|
}catch (Exception e) {
|
|
log.error("init error", e);
|
|
throw e;
|
|
}
|
|
log.info("init finished");
|
|
}
|
|
|
|
void initNodeTypes(Session ses) throws Exception{
|
|
InputStream stream = InitScript.class.getResourceAsStream("/init/NodeType.cnd");
|
|
|
|
if (stream == null)
|
|
throw new Exception("NodeType.cnd inputStream is null");
|
|
|
|
InputStreamReader inputstream = new InputStreamReader(stream, Charset.forName("UTF-8"));
|
|
// Register the custom node types defined in the CND file, using JCR Commons CndImporter
|
|
|
|
log.info("start to register the custom node types defined in the CND file...");
|
|
|
|
|
|
NodeType[] nodeTypes = CndImporter.registerNodeTypes(inputstream, ses, true);
|
|
|
|
for (NodeType nt : nodeTypes)
|
|
log.info("Registered: {} ", nt.getName());
|
|
|
|
|
|
log.info("custom node types registered");
|
|
|
|
}
|
|
}
|