summaryrefslogtreecommitdiff
path: root/sources/events
diff options
context:
space:
mode:
Diffstat (limited to 'sources/events')
-rw-r--r--sources/events/VSAbstractEvent.java14
-rw-r--r--sources/events/VSCopyableEvent.java (renamed from sources/events/VSNotCopyableEvent.java)8
-rw-r--r--sources/events/implementations/VSProcessCrashEvent.java11
-rw-r--r--sources/events/implementations/VSProcessRecoverEvent.java11
-rw-r--r--sources/events/internal/VSMessageReceiveEvent.java3
-rw-r--r--sources/events/internal/VSProtocolEvent.java20
-rw-r--r--sources/events/internal/VSProtocolScheduleEvent.java2
7 files changed, 46 insertions, 23 deletions
diff --git a/sources/events/VSAbstractEvent.java b/sources/events/VSAbstractEvent.java
index 834b691..263f21f 100644
--- a/sources/events/VSAbstractEvent.java
+++ b/sources/events/VSAbstractEvent.java
@@ -55,17 +55,21 @@ abstract public class VSAbstractEvent extends VSPrefs {
private String eventClassname;
/**
- * Creates a copy of the event.
+ * Creates a copy of the event.
*
* @return The copy
*/
final public VSAbstractEvent getCopy() throws VSEventNotCopyableException {
- VSAbstractEvent copy = null
+ if (!(this instanceof VSCopyableEvent))
+ throw new VSEventNotCopyableException(eventShortname);
- if (this instanceof VSCopyableEvent)
- throw new VSEventNotCopyableException(eventShortname);
+ VSAbstractEvent copy =
+ VSRegisteredEvents.createEventInstanceByClassname(
+ eventClassname, process);
- return copy;
+ ((VSCopyableEvent) this).initCopy(copy);
+
+ return copy;
}
/**
diff --git a/sources/events/VSNotCopyableEvent.java b/sources/events/VSCopyableEvent.java
index 49dde93..0ad6b24 100644
--- a/sources/events/VSNotCopyableEvent.java
+++ b/sources/events/VSCopyableEvent.java
@@ -26,9 +26,15 @@ package events;
/**
* The interface VSCopyableEvent, all events which implement this class
- * are nor copyable.
+ * are copyable.
*
* @author Paul C. Buetow
*/
public interface VSCopyableEvent {
+ /**
+ * Fills a copy of this event with its values
+ *
+ * @param copy The copy
+ */
+ public void initCopy(VSAbstractEvent copy);
}
diff --git a/sources/events/implementations/VSProcessCrashEvent.java b/sources/events/implementations/VSProcessCrashEvent.java
index c281500..e5c99f5 100644
--- a/sources/events/implementations/VSProcessCrashEvent.java
+++ b/sources/events/implementations/VSProcessCrashEvent.java
@@ -23,18 +23,25 @@
package events.implementations;
-import events.VSAbstractEvent;
+import events.*;
/**
* The class VSProcessCrashEvent. This event makes a process to crash.
*
* @author Paul C. Buetow
*/
-public class VSProcessCrashEvent extends VSAbstractEvent {
+public class VSProcessCrashEvent extends VSAbstractEvent
+ implements VSCopyableEvent {
/** The serial version uid */
private static final long serialVersionUID = 1L;
/* (non-Javadoc)
+ * @see events.VSCopyableEvent#initCopy(events.VSAbstractEvent)
+ */
+ public void initCopy(VSAbstractEvent copy) {
+ }
+
+ /* (non-Javadoc)
* @see events.VSAbstractEvent#onInit()
*/
public void onInit() {
diff --git a/sources/events/implementations/VSProcessRecoverEvent.java b/sources/events/implementations/VSProcessRecoverEvent.java
index 43479cf..600fcf7 100644
--- a/sources/events/implementations/VSProcessRecoverEvent.java
+++ b/sources/events/implementations/VSProcessRecoverEvent.java
@@ -23,7 +23,7 @@
package events.implementations;
-import events.VSAbstractEvent;
+import events.*;
/**
* The class VSProcessRecoverEvent. This event makes a process to recover if
@@ -31,11 +31,18 @@ import events.VSAbstractEvent;
*
* @author Paul C. Buetow
*/
-public class VSProcessRecoverEvent extends VSAbstractEvent {
+public class VSProcessRecoverEvent extends VSAbstractEvent
+ implements VSCopyableEvent {
/** The serial version uid */
private static final long serialVersionUID = 1L;
/* (non-Javadoc)
+ * @see events.VSCopyableEvent#initCopy(events.VSAbstractEvent)
+ */
+ public void initCopy(VSAbstractEvent copy) {
+ }
+
+ /* (non-Javadoc)
* @see events.VSAbstractEvent#onInit()
*/
public void onInit() {
diff --git a/sources/events/internal/VSMessageReceiveEvent.java b/sources/events/internal/VSMessageReceiveEvent.java
index 7755b60..825e500 100644
--- a/sources/events/internal/VSMessageReceiveEvent.java
+++ b/sources/events/internal/VSMessageReceiveEvent.java
@@ -26,7 +26,6 @@ package events.internal;
import java.io.*;
import core.VSMessage;
-import events.VSCopyableEvent;
import protocols.VSAbstractProtocol;
import serialize.VSNotSerializable;
@@ -37,7 +36,7 @@ import serialize.VSNotSerializable;
* @author Paul C. Buetow
*/
public class VSMessageReceiveEvent extends VSAbstractInternalEvent
- implements VSNotSerializable, VSCopyableEvent {
+ implements VSNotSerializable {
/** The serioal version uid */
private static final long serialVersionUID = 1L;
diff --git a/sources/events/internal/VSProtocolEvent.java b/sources/events/internal/VSProtocolEvent.java
index d0a12cc..1ccb700 100644
--- a/sources/events/internal/VSProtocolEvent.java
+++ b/sources/events/internal/VSProtocolEvent.java
@@ -38,7 +38,8 @@ import serialize.VSSerialize;
*
* @author Paul C. Buetow
*/
-public class VSProtocolEvent extends VSAbstractInternalEvent {
+public class VSProtocolEvent extends VSAbstractInternalEvent
+ implements VSCopyableEvent {
/** The serial version uid */
private static final long serialVersionUID = 1L;
@@ -51,16 +52,15 @@ public class VSProtocolEvent extends VSAbstractInternalEvent {
/** The event is a protocol activation if true. Else it is a deactivation */
private boolean isProtocolActivation;
- /**
- * Fills a copy of this event with its values
- *
- * @param copy The copy
+ /* (non-Javadoc)
+ * @see events.VSCopyableEvent#initCopy(events.VSAbstractEvent)
*/
- public void initCopy(VSProtocolEvent copy) {
- copy.isClientProtocol(isClientProtocol);
- copy.isProtocolActivation(isProtocolActivation);
- copy.setProtocolClassname(protocolClassname);
- }
+ public void initCopy(VSAbstractEvent copy) {
+ VSProtocolEvent protocolEventCopy = (VSProtocolEvent) copy;
+ protocolEventCopy.isClientProtocol(isClientProtocol);
+ protocolEventCopy.isProtocolActivation(isProtocolActivation);
+ protocolEventCopy.setProtocolClassname(protocolClassname);
+ }
/* (non-Javadoc)
* @see events.VSAbstractEvent#onInit()
diff --git a/sources/events/internal/VSProtocolScheduleEvent.java b/sources/events/internal/VSProtocolScheduleEvent.java
index 0ee7d05..bab0a63 100644
--- a/sources/events/internal/VSProtocolScheduleEvent.java
+++ b/sources/events/internal/VSProtocolScheduleEvent.java
@@ -37,7 +37,7 @@ import serialize.*;
* @author Paul C. Buetow
*/
public class VSProtocolScheduleEvent extends VSAbstractInternalEvent
- implements VSNotSerializable, VSCopyableEvent {
+ implements VSNotSerializable {
/** The serial version uid */
private static final long serialVersionUID = 1L;