Hi together,
we had an beanshell script for an older version 5.1.8 that works fine.
Now we have migrated to 6.3.0 and there are errors because of deprecated classes. The first change I did, was to change the class JcrSessionManager through the class DbSessionManager. Now the class Util could not be loaded!?
Maybe some of you have an idea or an answer for this issue. Here is the code and down below the error from the catalina.log Thank you for every answer!
catalina.log
we had an beanshell script for an older version 5.1.8 that works fine.
Now we have migrated to 6.3.0 and there are errors because of deprecated classes. The first change I did, was to change the class JcrSessionManager through the class DbSessionManager. Now the class Util could not be loaded!?
Maybe some of you have an idea or an answer for this issue. Here is the code and down below the error from the catalina.log Thank you for every answer!
Code: Select all
import java.util.List;
import java.util.Calendar;
import java.util.ArrayList;
import java.util.Map;
import java.util.Comparator;
import java.util.Collections;
import java.net.URLEncoder;
import com.openkm.api.OKMSearch;
import com.openkm.api.OKMAuth;
import com.openkm.dao.bean.QueryParams;
import com.openkm.bean.Document;
import com.openkm.bean.QueryResult;
import com.openkm.frontend.client.util.Util;
import com.openkm.dao.ConfigDAO;
import com.openkm.dao.AuthDAO;
import com.openkm.dao.bean.User;
import com.openkm.util.MailUtils;
//import com.openkm.core.JcrSessionManager;
import com.openkm.util.GWTUtil;
// NEW SINCE 6.2
import com.openkm.module.db.stuff.DbSessionManager;
// ROLE
// INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('test.report.role', 'string', 'test_reportuser');
class DocumentComparator implements Comparator {
public int compare(Object arg0, Object arg1) {
Document doc0 = (Document) arg0;
Document doc1 = (Document) arg1;
String parent0 = Util.getParent(doc0.getPath()).toLowerCase();
String parent1 = Util.getParent(doc1.getPath()).toLowerCase();
// First ordering by author name
if (!doc0.getAuthor().equals(doc1.getAuthor())) {
return doc0.getAuthor().toLowerCase().compareTo(doc1.getAuthor().toLowerCase());
} else {
// Compare first with parent path, and second with document path
if (!parent0.equals(parent1)) {
return parent0.compareTo(parent1);
} else {
return doc0.getPath().toLowerCase().compareTo(doc1.getPath().toLowerCase());
}
}
}
}
String printCalendar(Calendar cal) {
String value = cal.get(Calendar.YEAR)+"."+(cal.get(Calendar.MONTH)+1)+"."+cal.get(Calendar.DAY_OF_MONTH);
if (cal.get(Calendar.HOUR) > 9) {
value += " / " + cal.get(Calendar.HOUR);
} else {
value += " / 0" + cal.get(Calendar.HOUR);
}
if (cal.get(Calendar.MINUTE) > 9) {
value += ":" + cal.get(Calendar.HOUR);
} else {
value += ":0" + cal.get(Calendar.HOUR);
}
if (cal.get(Calendar.SECOND) > 9) {
value += ":" + cal.get(Calendar.SECOND);
} else {
value += ":0" + cal.get(Calendar.SECOND);
}
return value;
}
StringBuilder sb = new StringBuilder();
List docs = new ArrayList();
String role = ConfigDAO.getString("test.report.role", "test_reportuser");
String applicationUrl= ConfigDAO.getString("application.url", "http://localhost/OpenKM");
// *** DEPRECATED since 6.2 *** String sysToken = JcrSessionManager.getInstance().getSystemToken();
String sysToken = DbSessionManager.getInstance().getSystemToken();
// Generating Lastday Date
Calendar now = Calendar.getInstance();
int myYear = now.get(Calendar.YEAR);
int myMonth = now.get(Calendar.MONTH)+1; // Note: zero based!
int myDay = now.get(Calendar.DAY_OF_MONTH)-1;
// Building query
QueryParams queryParams = new QueryParams();
Calendar to = Calendar.getInstance();
to.set(Calendar.HOUR, 0);
to.set(Calendar.MINUTE, 0);
to.set(Calendar.SECOND, 0);
to.set(Calendar.MILLISECOND, 0);
Calendar from = to.clone();
from.add(Calendar.DATE, -1);
Calendar date = Calendar.getInstance();
date.add(Calendar.MONTH, 1);
date.add(Calendar.DAY_OF_MONTH, -1);
queryParams.setName("***");
queryParams.setDomain(QueryParams.DOCUMENT); // Only documents
queryParams.setLastModifiedFrom(from);
queryParams.setLastModifiedTo(to);
for (QueryResult result : OKMSearch.getInstance().findPaginated(sysToken, queryParams, 0, Integer.MAX_VALUE).getResults()) {
if (result.getDocument() != null) {
Document doc = result.getDocument();
// Parent must have role
Map hm = OKMAuth.getInstance().getGrantedRoles(sysToken, Util.getParent(doc.getPath()));
if (hm.keySet().contains(role)) {
docs.add(doc);
}
} else {
sb.append("Error has been selected some results than is not a document" + "\n");
}
}
Collections.sort(docs, new DocumentComparator());
// Creating content
String role = ConfigDAO.getString("test.report.role", "test_reportuser");
String actualAuthor = "";
sb.append("<html>\n");
sb.append("<head>\n");
sb.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n");
sb.append("<title>Daily Report</title>\n");
sb.append("</head>\n");
sb.append("<body style=\"background-color:#ffffff;font-family:verdana;padding:0;margin:0;\">\n");
sb.append("<!-- Start wrapper --><div id=\"wrapper\" style=\"width:800px;padding:0px;margin:0 auto;\"><!-- End wrapper -->");
// General info table
sb.append("<div id=\"header\" style=\"background-color:#ffffff;padding:0px;min-height:150px;\">");
sb.append("<div id=\"left-header\" style=\"width:45%;float:left;padding:15px;\">");
sb.append("<span style=\"font-size:32px;color:#08537a;\">DAILY REPORT</span><br/>");
sb.append("<span style=\"font-size:18px;color:#08537a;text-transform:uppercase;\">Datum: " + myDay + "." + myMonth + "." + myYear + "</span><br/>");
sb.append("</div>");
sb.append("<div id=\"right-header\" style=\"width:45%;float:right;padding:15px;\">");
sb.append("</div>");
sb.append("</div><!-- End header --><br/>");
// Documents table
if (docs.size()>0) {
sb.append("<table border=\"1\" cellpadding=\"4\" cellspacing=\"0\" style=\"border-style:solid; border-width:1px;\">\n");
// Documents rows
for (Document doc : docs)
{
if (!actualAuthor.equals(doc.getAuthor()))
{
actualAuthor = doc.getAuthor();
sb.append("<tr height=\"60\">\n");
sb.append("<td colspan=\"5\" bgcolor=\"#cccccc\">\n");
sb.append("<span style=\"color:#333333;\">All Documents updated by <b>" + doc.getAuthor() + "</b></span>");
sb.append("</td>\n");
sb.append("</tr>\n");
sb.append("<tr>\n");
// 1. Row: Date
//sb.append("<td><b>Date</b></td>\n");
// 2. Row: Person
//sb.append("<td><b>Person</b></td>\n");
// 3. Row: Directory
sb.append("<td><b>Directory</b></td>");
// 4. Row: Document
sb.append("<td><b>Document</b></td>");
sb.append("</tr>\n");
}
sb.append("<tr bgcolor=\"#ffffff\">\n");
// 1. Row: Date
//sb.append("<td>\n");
//sb.append(printCalendar(doc.getActualVersion().getCreated()));
//sb.append("</td>\n");
// 2. Row: Person
//sb.append("<td>\n");
//sb.append(doc.getActualVersion().getAuthor());
//sb.append("</td>\n");
// 3. Row: Directory
sb.append("<td>\n");
//sb.append(GWTUtil.getParent(doc.getPath()));
String str = GWTUtil.getParent(doc.getPath());
String[] temp;
String delimiter = "/okm:root";
temp = str.split(delimiter);
try {
sb.append(temp[1]);
}
catch (ArrayIndexOutOfBoundsException e) {
sb.append("/");
}
sb.append("</td>\n");
// 4. Row: Document
sb.append("<td>\n");
sb.append("<a href=\""+applicationUrl+"?docPath="+URLEncoder.encode(doc.path, "UTF-8")+"\">");
sb.append(GWTUtil.getName(doc.getPath()));
sb.append("</a>");
sb.append("</td>\n");
sb.append("</tr>\n");
}
sb.append("</table>\n");
}
sb.append("<br/>");
sb.append("<!-- End wrapper --></div>");
sb.append("</body>\n");
sb.append("</html>\n");
// Getting users mail list
List mails = new ArrayList();
for (User user : AuthDAO.findUsersByRole(role,true)) {
if (user.getEmail() != null && !user.getEmail().equals("")) {
mails.add(user.getEmail());
}
}
if (mails.size() > 0 && docs.size() > 0) {
MailUtils.sendMessage(mails, "Daily Report", sb.toString());
}
print(sb.toString());
catalina.log
Code: Select all
2014-12-01 23:57:59,523 [ajp-bio-127.0.0.1-8009-exec-284] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/OpenKM].[CronTabServlet]- Servlet.service() for servlet [CronTabServlet] in context with path [/OpenKM] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoClassDefFoundError: A class required by class: com.openkm.frontend.client.util.Util could not be loaded:
java.lang.NoClassDefFoundError: Could not initialize class com.openkm.frontend.client.util.Util
at bsh.BshClassManager.noClassDefFound(BshClassManager.java:568)
at bsh.BshClassManager.plainClassForName(BshClassManager.java:244)
at bsh.classpath.BshClassLoader.findClass(BshClassLoader.java:178)
at bsh.classpath.BshClassLoader.loadClass(BshClassLoader.java:111)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
at bsh.classpath.ClassManagerImpl.classForName(ClassManagerImpl.java:195)
at bsh.NameSpace.classForName(NameSpace.java:1253)
at bsh.NameSpace.getImportedClassImpl(NameSpace.java:1189)
at bsh.NameSpace.getClassImpl(NameSpace.java:1143)
at bsh.NameSpace.getClass(NameSpace.java:1094)
at bsh.NameSpace.getClass(NameSpace.java:1100)
at bsh.NameSpace.getClass(NameSpace.java:1100)
at bsh.NameSpace.getClass(NameSpace.java:1100)
at bsh.Name.consumeNextObjectField(Name.java:301)
at bsh.Name.toObject(Name.java:202)
at bsh.Name.toObject(Name.java:185)
at bsh.Name.invokeMethod(Name.java:832)
at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
at bsh.BSHArguments.getArguments(BSHArguments.java:65)
at bsh.BSHPrimarySuffix.doName(BSHPrimarySuffix.java:167)
at bsh.BSHPrimarySuffix.doSuffix(BSHPrimarySuffix.java:120)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:80)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
at bsh.BSHVariableDeclarator.eval(BSHVariableDeclarator.java:86)
at bsh.BSHTypedVariableDeclaration.eval(BSHTypedVariableDeclaration.java:84)
at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
at bsh.BSHBlock.eval(BSHBlock.java:80)
at bsh.BSHBlock.eval(BSHBlock.java:46)
at bsh.BSHIfStatement.eval(BSHIfStatement.java:48)
at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
at bsh.BSHBlock.eval(BSHBlock.java:80)
at bsh.BSHBlock.eval(BSHBlock.java:46)
at bsh.BSHEnhancedForStatement.eval(BSHEnhancedForStatement.java:79)
at bsh.Interpreter.eval(Interpreter.java:645)
at bsh.Interpreter.eval(Interpreter.java:739)
at bsh.Interpreter.eval(Interpreter.java:728)
at com.openkm.util.ExecutionUtils.runScript(ExecutionUtils.java:112)
at com.openkm.core.Cron$RunnerBsh.run(Cron.java:103)
at com.openkm.servlet.admin.CronTabServlet.execute(CronTabServlet.java:230)
at com.openkm.servlet.admin.CronTabServlet.doGet(CronTabServlet.java:116)
at com.openkm.servlet.admin.CronTabServlet.service(CronTabServlet.java:72)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:193)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:701)