You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2010/10/16 16:58:39 UTC
svn commit: r1023303 - in /commons/proper/daemon/trunk: RELEASE-NOTES.txt
src/java/org/apache/commons/daemon/Daemon.java
src/java/org/apache/commons/daemon/DaemonInitException.java
src/java/org/apache/commons/daemon/support/DaemonLoader.java
Author: mturk
Date: Sat Oct 16 14:58:39 2010
New Revision: 1023303
URL: http://svn.apache.org/viewvc?rev=1023303&view=rev
Log:
DAEMON-177: Allow fail during init. Patch provided by Nick Griffiths
Added:
commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/DaemonInitException.java (with props)
Modified:
commons/proper/daemon/trunk/RELEASE-NOTES.txt
commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/Daemon.java
commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java
Modified: commons/proper/daemon/trunk/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/RELEASE-NOTES.txt?rev=1023303&r1=1023302&r2=1023303&view=diff
==============================================================================
--- commons/proper/daemon/trunk/RELEASE-NOTES.txt (original)
+++ commons/proper/daemon/trunk/RELEASE-NOTES.txt Sat Oct 16 14:58:39 2010
@@ -15,6 +15,7 @@ follow the release early/release often m
NEW FEATURES:
+* DAEMON-177: Allow fail during init with nicer message. (1.0.4)
* DAEMON-176: Create config.nice during configure step. (1.0.4)
* DAEMON-173: Allow --JavaHome=jdk and --JavaHome=jre options that
will guess default JavaHome from the registry. (1.0.4)
@@ -46,7 +47,8 @@ NEW FEATURES:
BUG FIXES:
-1.0.4: DAEMON-95, DAEMON-171, DAEMON-100, DAEMON-164, DAEMON-165, DAEMON-175
+1.0.4: DAEMON-95, DAEMON-171, DAEMON-100, DAEMON-164, DAEMON-165, DAEMON-175,
+ DAEMON-177
1.0.3: DAEMON-108, DAEMON-128, DAEMON-139, DAEMON-143, DAEMON-148,
DAEMON-135, DAEMON-155, DAEMON-159, DAEMON-161, DAEMON-145, DAEMON-146,
Modified: commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/Daemon.java
URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/Daemon.java?rev=1023303&r1=1023302&r2=1023303&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/Daemon.java (original)
+++ commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/Daemon.java Sat Oct 16 14:58:39 2010
@@ -63,12 +63,14 @@ public interface Daemon
*
* @param context A <code>DaemonContext</code> object used to
* communicate with the container.
- *
+ * @exception DaemonInitException An exception that prevented
+ * initialization where you want to display a nice message to the user,
+ * rather than a stack trace.
* @exception Exception Any exception preventing a successful
* initialization.
*/
public void init(DaemonContext context)
- throws Exception;
+ throws DaemonInitException, Exception;
/**
* Start the operation of this <code>Daemon</code> instance. This
Added: commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/DaemonInitException.java
URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/DaemonInitException.java?rev=1023303&view=auto
==============================================================================
--- commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/DaemonInitException.java (added)
+++ commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/DaemonInitException.java Sat Oct 16 14:58:39 2010
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2010 Media Service Provider Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License./*
+ *
+ */
+package org.apache.commons.daemon;
+
+/**
+ * Throw this during init if you can't initialise yourself for some expected
+ * reason. Using this exception will cause the exception's message to come out
+ * on stdout, rather than a dirty great stacktrace.
+ * @author Nick Griffiths (nicobrevin@gmail.com)
+ */
+public class DaemonInitException extends Exception {
+
+ //don't rely on Throwable#getCause (jdk1.4)
+ private Throwable cause;
+
+ public DaemonInitException(String message) {
+ super(message);
+ }
+
+ public DaemonInitException(String message, Throwable cause) {
+ super(message);
+ this.cause = cause;
+ }
+
+ public String getMessageWithCause() {
+ String extra = this.cause == null ? "" : ": " + this.cause.getMessage();
+ return getMessage() + extra;
+ }
+
+}
Propchange: commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/DaemonInitException.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java
URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java?rev=1023303&r1=1023302&r2=1023303&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java (original)
+++ commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java Sat Oct 16 14:58:39 2010
@@ -19,7 +19,9 @@ package org.apache.commons.daemon.suppor
import org.apache.commons.daemon.DaemonContext;
import org.apache.commons.daemon.DaemonController;
+import org.apache.commons.daemon.DaemonInitException;
+import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/*
@@ -169,6 +171,15 @@ public final class DaemonLoader
init.invoke(daemon, arg);
}
+ } catch (InvocationTargetException e) {
+ Throwable thrown = e.getCause();
+ /* DaemonInitExceptions can fail with a nicer message */
+ if (thrown instanceof DaemonInitException) {
+ failed(((DaemonInitException) thrown).getMessageWithCause());
+ } else {
+ thrown.printStackTrace(System.err);
+ }
+ return false;
} catch (Throwable t) {
/* In case we encounter ANY error, we dump the stack trace and
* return false (load, start and stop won't be called).
@@ -306,41 +317,32 @@ public final class DaemonLoader
}
public void fail()
- throws IllegalStateException
{
fail(null, null);
}
public void fail(String message)
- throws IllegalStateException
{
fail(message, null);
}
public void fail(Exception exception)
- throws IllegalStateException
{
fail(null, exception);
}
public void fail(String message, Exception exception)
- throws IllegalStateException
{
synchronized (this) {
- if (!this.isAvailable()) {
- throw new IllegalStateException();
- }
- else {
- this.setAvailable(false);
- String msg = message;
- if (exception != null) {
- if (msg != null)
- msg = msg + ": " + exception.toString();
- else
- msg = exception.toString();
- }
- DaemonLoader.failed(msg);
+ this.setAvailable(false);
+ String msg = message;
+ if (exception != null) {
+ if (msg != null)
+ msg = msg + ": " + exception.toString();
+ else
+ msg = exception.toString();
}
+ DaemonLoader.failed(msg);
}
}
Re: svn commit: r1023303 - in /commons/proper/daemon/trunk:
RELEASE-NOTES.txt src/java/org/apache/commons/daemon/Daemon.java
src/java/org/apache/commons/daemon/DaemonInitException.java src/java/org/apache/commons/daemon/support/DaemonLoader.java
Posted by Nick Griffiths <ni...@gmail.com>.
OK, i've removed the other use of getCause and modified the SimpleDaemon to
use the exception if it can't bind to its server port.
I'm going to have a look and see if I can get the failure message to come
out on stderr, as well as out to the logs (if they are used). Reason being
that if you are running /etc/init.d/my-jsvc-daemon start you will see the
actual failure reason, rather than just inspecting $? and then having to
trawl through the logs.
Cheers,
Nick
On Sat, Oct 16, 2010 at 11:05 PM, Nick Griffiths <ni...@gmail.com>wrote:
> Ah crap. Will fix tomo.
> On 16 Oct 2010 16:34, "sebb" <se...@gmail.com> wrote:
> > On 16 October 2010 15:58, <mt...@apache.org> wrote:
> >> Author: mturk
> >> Date: Sat Oct 16 14:58:39 2010
> >> New Revision: 1023303
> >>
> >> URL: http://svn.apache.org/viewvc?rev=1023303&view=rev
> >> Log:
> >> DAEMON-177: Allow fail during init. Patch provided by Nick Griffiths
> >>
> >> Added:
> >>
> commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/DaemonInitException.java
> (with props)
> >> Modified:
> >> commons/proper/daemon/trunk/RELEASE-NOTES.txt
> >>
> commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/Daemon.java
> >>
> commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java
> >>
> >
> >> Modified:
> commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java?rev=1023303&r1=1023302&r2=1023303&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java
> (original)
> >> +++
> commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java
> Sat Oct 16 14:58:39 2010
> >> @@ -19,7 +19,9 @@ package org.apache.commons.daemon.suppor
> >>
> >> import org.apache.commons.daemon.DaemonContext;
> >> import org.apache.commons.daemon.DaemonController;
> >> +import org.apache.commons.daemon.DaemonInitException;
> >>
> >> +import java.lang.reflect.InvocationTargetException;
> >> import java.lang.reflect.Method;
> >>
> >> /*
> >> @@ -169,6 +171,15 @@ public final class DaemonLoader
> >> init.invoke(daemon, arg);
> >> }
> >>
> >> + } catch (InvocationTargetException e) {
> >> + Throwable thrown = e.getCause();
> >
> > That's not available in 1.3.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> > For additional commands, e-mail: dev-help@commons.apache.org
> >
>
Re: svn commit: r1023303 - in /commons/proper/daemon/trunk:
RELEASE-NOTES.txt src/java/org/apache/commons/daemon/Daemon.java
src/java/org/apache/commons/daemon/DaemonInitException.java src/java/org/apache/commons/daemon/support/DaemonLoader.java
Posted by Nick Griffiths <ni...@gmail.com>.
Ah crap. Will fix tomo.
On 16 Oct 2010 16:34, "sebb" <se...@gmail.com> wrote:
> On 16 October 2010 15:58, <mt...@apache.org> wrote:
>> Author: mturk
>> Date: Sat Oct 16 14:58:39 2010
>> New Revision: 1023303
>>
>> URL: http://svn.apache.org/viewvc?rev=1023303&view=rev
>> Log:
>> DAEMON-177: Allow fail during init. Patch provided by Nick Griffiths
>>
>> Added:
>>
commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/DaemonInitException.java
(with props)
>> Modified:
>> commons/proper/daemon/trunk/RELEASE-NOTES.txt
>>
commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/Daemon.java
>>
commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java
>>
>
>> Modified:
commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java
>> URL:
http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java?rev=1023303&r1=1023302&r2=1023303&view=diff
>>
==============================================================================
>> ---
commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java
(original)
>> +++
commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java
Sat Oct 16 14:58:39 2010
>> @@ -19,7 +19,9 @@ package org.apache.commons.daemon.suppor
>>
>> import org.apache.commons.daemon.DaemonContext;
>> import org.apache.commons.daemon.DaemonController;
>> +import org.apache.commons.daemon.DaemonInitException;
>>
>> +import java.lang.reflect.InvocationTargetException;
>> import java.lang.reflect.Method;
>>
>> /*
>> @@ -169,6 +171,15 @@ public final class DaemonLoader
>> init.invoke(daemon, arg);
>> }
>>
>> + } catch (InvocationTargetException e) {
>> + Throwable thrown = e.getCause();
>
> That's not available in 1.3.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
Re: svn commit: r1023303 - in /commons/proper/daemon/trunk:
RELEASE-NOTES.txt src/java/org/apache/commons/daemon/Daemon.java
src/java/org/apache/commons/daemon/DaemonInitException.java src/java/org/apache/commons/daemon/support/DaemonLoader.java
Posted by sebb <se...@gmail.com>.
On 16 October 2010 15:58, <mt...@apache.org> wrote:
> Author: mturk
> Date: Sat Oct 16 14:58:39 2010
> New Revision: 1023303
>
> URL: http://svn.apache.org/viewvc?rev=1023303&view=rev
> Log:
> DAEMON-177: Allow fail during init. Patch provided by Nick Griffiths
>
> Added:
> commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/DaemonInitException.java (with props)
> Modified:
> commons/proper/daemon/trunk/RELEASE-NOTES.txt
> commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/Daemon.java
> commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java
>
> Modified: commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java
> URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java?rev=1023303&r1=1023302&r2=1023303&view=diff
> ==============================================================================
> --- commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java (original)
> +++ commons/proper/daemon/trunk/src/java/org/apache/commons/daemon/support/DaemonLoader.java Sat Oct 16 14:58:39 2010
> @@ -19,7 +19,9 @@ package org.apache.commons.daemon.suppor
>
> import org.apache.commons.daemon.DaemonContext;
> import org.apache.commons.daemon.DaemonController;
> +import org.apache.commons.daemon.DaemonInitException;
>
> +import java.lang.reflect.InvocationTargetException;
> import java.lang.reflect.Method;
>
> /*
> @@ -169,6 +171,15 @@ public final class DaemonLoader
> init.invoke(daemon, arg);
> }
>
> + } catch (InvocationTargetException e) {
> + Throwable thrown = e.getCause();
That's not available in 1.3.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org