Page 1 of 1

5.0 RC1 source code

PostPosted:Wed Nov 10, 2010 8:09 am
by raviskiran
Hi,

I would like to know where I can get 5.0 rc1 code as you said download issues on checkout has been fixed in that version. I want to look at it and resolve it on my openkm 4

Thanks
Ravi Kiran

Re: 5.0 RC1 source code

PostPosted:Wed Nov 10, 2010 1:04 pm
by jllort
Here http://wiki.openkm.com/index.php/Developer_Guide it's well explained how configuring developement ide and checkout project

Re: 5.0 RC1 source code

PostPosted:Wed Nov 10, 2010 1:49 pm
by raviskiran
I know how to check out . So are you saying that the download issue has been fixed on the code that is available on SVN?

Re: 5.0 RC1 source code

PostPosted:Wed Nov 10, 2010 4:14 pm
by jllort
Yes it's so easy to solve, take a look at index.html and Util.java file looking for :
Code: Select all
<div style="display:none;visibility:hidden;">
			<iframe src="" id="__download" style="width:0;height:0;border:0"></iframe>
		</div> 
And then must replace Util.DownloadFile with
Code: Select all
/**
	 * Download file
	 * 
	 * @param path
	 * @param params
	 */
	public static void downloadFile(String path, String params) {

		if (!params.equals("") && !params.endsWith("&")) {
			params += "&";
		}
		final Element downloadIframe = RootPanel.get("__download").getElement(); 
		String url = Config.OKMDownloadServlet + "?" + params + "id=" + URL.encodeComponent(path);
		DOM.setElementAttribute(downloadIframe, "src", url); 
	}

Re: 5.0 RC1 source code

PostPosted:Wed Nov 17, 2010 8:01 am
by epalite
Hi,

1. If I do a right click on a file, and select download, the browser spins forever.

2. If I select History -> View, I can download the file.

Following is the extract from log file which I think is relevant to the download problem.

Environment: OpenKM 5 on Win Server 2003 SE R2, with wide LAN but no Internet access. Drag instal, with ws folder removed to address lack of Internet access problem.
Code: Select all
2010-11-17 15:57:00,659 ERROR [com.openkm.frontend.server.OKMDownloadServlet] 
ClientAbortException:  java.net.SocketException: Software caused connection abort: socket write error
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358)
	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
	at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349)
	at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:381)
	at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:370)
	at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
	at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1026)
	at org.apache.commons.io.IOUtils.copy(IOUtils.java:999)
	at com.openkm.frontend.server.OKMDownloadServlet.sendFile(OKMDownloadServlet.java:245)
	at com.openkm.frontend.server.OKMDownloadServlet.service(OKMDownloadServlet.java:182)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.SocketException: Software caused connection abort: socket write error
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
	at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:737)
	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
	at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349)
	at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:761)
	at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:118)
	at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:570)
	at org.apache.coyote.Response.doWrite(Response.java:560)
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:353)
	... 29 more
2010-11-17 15:57:00,659 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/OpenKM].[OKMDownloadServlet]] Servlet.service() for servlet OKMDownloadServlet threw exception
com.openkm.frontend.client.OKMException
	at com.openkm.frontend.server.OKMDownloadServlet.service(OKMDownloadServlet.java:193)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Thread.java:662)
2010-11-17 15:57:00,659 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost]] Exception Processing ErrorPage[exceptionType=java.lang.Exception, location=/error.jsp]
java.lang.IllegalStateException
	at org.apache.coyote.Response.reset(Response.java:297)
	at org.apache.catalina.connector.Response.reset(Response.java:652)
	at org.apache.catalina.connector.Response.reset(Response.java:916)
	at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:416)
	at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:270)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Thread.java:662)

Re: 5.0 RC1 source code

PostPosted:Wed Nov 17, 2010 7:31 pm
by raviskiran
jllort wrote:Yes it's so easy to solve, take a look at index.html and Util.java file looking for :
Code: Select all
<div style="display:none;visibility:hidden;">
			<iframe src="" id="__download" style="width:0;height:0;border:0"></iframe>
		</div> 
And then must replace Util.DownloadFile with
Code: Select all
/**
	 * Download file
	 * 
	 * @param path
	 * @param params
	 */
	public static void downloadFile(String path, String params) {

		if (!params.equals("") && !params.endsWith("&")) {
			params += "&";
		}
		final Element downloadIframe = RootPanel.get("__download").getElement(); 
		String url = Config.OKMDownloadServlet + "?" + params + "id=" + URL.encodeComponent(path);
		DOM.setElementAttribute(downloadIframe, "src", url); 
	}
@ jllort
Were the changes you said should be made on openKM 4.1 ?
Because I didnt find this function downloadFile in 4.1.
Can you tell me how I should fix this on 4.1

Thanks
Ravi Kiran

Re: 5.0 RC1 source code

PostPosted:Thu Nov 18, 2010 7:20 am
by jllort
It's easy, in version 4.1 must replace Util.download file method for 5.0 implementation and adding into index.html the div

Re: 5.0 RC1 source code

PostPosted:Thu Nov 18, 2010 7:40 am
by raviskiran
Code: Select all
	/**
	 * Download document
	 */
	public void downloadDocument(boolean checkout) {
		Log.debug("downloadDocument()");
		if (isDocumentSelected()) {
			Log.debug("jump to download");
			Main.get().redirect = true;
			Window.open(Config.OKMDownloadServlet + (checkout?"?checkout&":"?") + "id=" + URL.encodeComponent(getDocument().getPath()), "_self", "");
			Main.get().redirect = false;
		}
		Log.debug("downloadDocument: void");
	}
I found this in ExtendedScrollTable.java, is this the function I should change?

Re: 5.0 RC1 source code

PostPosted:Thu Nov 18, 2010 8:06 pm
by jllort
In 4.1 probably downloading is not concentrate in Util.java

Make a search of all Config.OKMDownloadServlet ( where is referenced ). In all of that places must doing the change.