Ignore:
Timestamp:
06/30/13 12:48:20 (11 years ago)
Author:
psniegowski
Message:

HIGHLIGHTS:

  • loading f0 schema with XmlLoader?
  • use XmlLoader? to load configuration
  • introduce unified fork-join model of various entities

(Instances, Connections, GUI Frames, etc.),
all those entities clean up gracefully on
shutdown, which may be initialized by user
or by some entity

  • basing on above, simplify several organizing classes

(Observer, main class)

(to host native frams server process from Java level)

CHANGELOG:
Remove redundant Observer class.

Clean up in AbstractJoinable?.

Update ExternalProcess? class to changes in joining model.

Another sweep through code with FindBugs?.

Find bug with not joining RemoteInstance?.

Joining almost works.

Much improved joining model.

More improvement to joining model.

Add logging messages around joinable operations.

Rename methods in AbstractJoinable?.

Improve Joinable.

Rewrite of entity structure.

More simplifications with entities.

Further improve joinables.

Let Frame compose from JFrame instead of inheriting.

Add join classes.

Improvements of closing.

Add Builder interface.

Add FramsServerTest?.xml

FramsServer? may be configured through xml.

Make Framsticks main class an Observer of Entities.

Make Observer a generic type.

Remove variables regarding to removed endpoint.

Simplify observer (remove endpoints).

More changes to Observer and Endpoint.

Minor improvements.

Add OutputListener? to ExternalProcess?.

Improve testing of ExternalProcess?.

Add ExternalProcess? runner.

Rename the Program class to Framsticks.

Migrate Program to use XmlLoader? configuration.

First steps with configuration using XmlLoader?.

Fix several bugs.

Move all f0 classes to apriopriate package.

XmlLoader? is able to load Schema.

XmlLoader? is loading classes and props.

Add GroupBuilder?.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • java/main/src/main/java/com/framsticks/core/Entity.java

    r86 r88  
    11package com.framsticks.core;
    22
    3 import javax.annotation.OverridingMethodsMustInvokeSuper;
    43
    54import com.framsticks.params.annotations.FramsClassAnnotation;
    6 import com.framsticks.params.annotations.ParamAnnotation;
    7 import com.framsticks.util.dispatching.Thread;
    8 import com.framsticks.util.dispatching.Dispatcher;
    9 
    10 import org.apache.commons.configuration.Configuration;
    11 import org.apache.log4j.Logger;
    12 import com.framsticks.util.dispatching.RunAt;
     5import com.framsticks.util.dispatching.Joinable;
    136
    147/**
     
    169 */
    1710@FramsClassAnnotation
    18 public abstract class Entity implements Dispatcher<Entity> {
     11public interface Entity extends Joinable {
    1912
    20         private final static Logger log = Logger.getLogger(Entity.class);
     13        public String getName();
    2114
    22         @ParamAnnotation
    23         protected String name = "entity";
    24         protected EntityOwner owner;
    25         protected Dispatcher<Entity> dispatcher;
    26 
    27         public Entity() {
    28         }
    29 
    30         public final String getName() {
    31                 return name;
    32         }
    33 
    34         /**
    35          * @param name the name to set
    36          */
    37         public final void setName(String name) {
    38                 this.name = name;
    39                 if (dispatcher instanceof Thread) {
    40                         ((Thread<Entity>) dispatcher).setName(name);
    41                 }
    42         }
    43 
    44         /**
    45          * @return the owner
    46          */
    47         public EntityOwner getOwner() {
    48                 return owner;
    49         }
    50 
    51         /**
    52          * @param owner the owner to set
    53          */
    54         public void setOwner(EntityOwner owner) {
    55                 this.owner = owner;
    56         }
    57 
    58         @Override
    59         public final boolean isActive() {
    60                 return dispatcher == null || dispatcher.isActive();
    61         }
    62 
    63         @Override
    64         public final void invokeLater(RunAt<? extends Entity> runnable) {
    65                 assert dispatcher != null;
    66                 dispatcher.invokeLater(runnable);
    67         }
    68 
    69         public Dispatcher<Entity> createDefaultDispatcher() {
    70                 return new Thread<Entity>(name).start();
    71         }
    72 
    73         @OverridingMethodsMustInvokeSuper
    74         protected void run() {
    75                 assert isActive();
    76                 log.info("running: " + this);
    77         }
     15        // /**
     16        //  * @param name the name to set
     17        //  */
     18        // @ParamAnnotation
     19        // public final void setName(String name) {
     20        //      this.name = name;
     21        //      if (dispatcher instanceof Thread) {
     22        //              ((Thread<Entity>) dispatcher).setName(name);
     23        //      }
     24        // }
    7825
    7926
    80         public void configure(Configuration config) {
    81         }
     27        // public Dispatcher<Entity> createDefaultDispatcher() {
     28        //      return new Thread<Entity>().setName(name).start();
     29        // }
    8230
    83         public Dispatcher<Entity> getDispatcher() {
    84                 return dispatcher;
    85         }
    86 
    87         /**
    88          * @param dispatcher the dispatcher to set
    89          */
    90         public void setDispatcher(Dispatcher<Entity> dispatcher) {
    91                 this.dispatcher = dispatcher;
    92         }
    93 
    94         public final void start() {
    95                 if (dispatcher == null) {
    96                         log.debug("no dispatcher set for " + this + ", creating default one");
    97                         setDispatcher(createDefaultDispatcher());
    98                 }
    99                 invokeLater(new RunAt<Entity>() {
    100                         @Override
    101                         public void run() {
    102                                 Entity.this.run();
    103                         }
    104                 });
    105         }
    106 
    107         public final void done() {
    108                 log.info("stopping entity");
    109                 if (owner != null) {
    110                         owner.onDone();
    111                 }
    112         }
    113 
     31        // public void start() {
     32        //      if (dispatcher == null) {
     33        //              log.debug("no dispatcher set for " + this + ", creating default one");
     34        //              dispatcher = createDefaultDispatcher();
     35        //      }
     36        //      invokeLater(new RunAt<Entity>() {
     37        //              @Override
     38        //              public void run() {
     39        //                      Entity.this.run();
     40        //              }
     41        //      });
     42        // }
    11443}
Note: See TracChangeset for help on using the changeset viewer.