Changeset 105


Ignore:
Timestamp:
09/10/13 21:11:41 (11 years ago)
Author:
psniegowski
Message:

HIGHLIGHTS:

  • import refactorization: move Tree, Path, etc.

from core to structure package

  • initial serialization implementation
  • improve PrimeExperiment? test
  • many organizational changes and convenience improvements

CHANGELOG:
Make registry in AbstractTree? final.

Move most classes from core to structure package.

Minor changes.

Switch names of Future and FutureHandler?.

Rename ExceptionResultHandler? to ExceptionHandler?.

Rename ExceptionHandler? to ExceptionDispatcherHandler?.

Fix bug in ParamCandidate? cache.

Add missing synchronization to the BufferedDispatcher?.

Develop @Serialized support.

Rework serialization further.

Add serialization/deserialization interface to ValueParam?.

Move getStorageType and isNumeric from Param down to params hierarchy.

Minor changes.

Improve param type induction.

Add TestSerializedClass? for testing new serialization.

Add info files gor GenePool? and Population.

Add standard.expt exemplary netfile.

Add type name field to PropertiesObject?.

Use PropertiesObject? for PropertiesAccess? instead of ordinary map.

Hide getFramsClass is several more places.

More unification accross FramsClass?, Access and Path.

Add ParamCollection?.

Simplify interface for getting params from FramsClass?, Access
or Path.

Make Access.call() interface variadic.

Add arguments(args) convenience wrapper around new Object[] {args}.

Upgrade to apache.commons.lang version 3.1

Minor improvement with Response constructors.

Develop proper result printing in ClientAtServer?.

Add experimentNetsave to PrimeExperiment?.

Location:
java/main
Files:
19 added
13 deleted
118 edited

Legend:

Unmodified
Added
Removed
  • java/main/pom.xml

    r102 r105  
    5757                </dependency>
    5858                <dependency>
    59                         <groupId>commons-lang</groupId>
    60                         <artifactId>commons-lang</artifactId>
    61                         <version>2.3</version>
     59                        <groupId>org.apache.commons</groupId>
     60                        <artifactId>commons-lang3</artifactId>
     61                        <version>3.1</version>
    6262                </dependency>
    6363                <dependency>
  • java/main/src/main/java/com/framsticks/communication/ClientSideManagedConnection.java

    r103 r105  
    99import com.framsticks.communication.queries.UseRequest;
    1010import com.framsticks.communication.queries.VersionRequest;
    11 import com.framsticks.core.Path;
    1211import com.framsticks.params.ListSource;
     12import com.framsticks.structure.Path;
    1313import com.framsticks.util.*;
    1414import com.framsticks.util.dispatching.AtOnceDispatcher;
    1515import com.framsticks.util.dispatching.Dispatcher;
    1616import com.framsticks.util.dispatching.Dispatching;
    17 import com.framsticks.util.dispatching.ExceptionResultHandler;
     17import com.framsticks.util.dispatching.FutureHandler;
    1818import com.framsticks.util.dispatching.Future;
    19 import com.framsticks.util.dispatching.FutureHandler;
    2019import com.framsticks.util.dispatching.JoinableState;
    2120import com.framsticks.util.lang.Casting;
     
    195194        }
    196195
    197         private void sendNextUseRequest(final Iterator<String> featuresIterator, final Future<Void> future) {
     196        private void sendNextUseRequest(final Iterator<String> featuresIterator, final FutureHandler<Void> future) {
    198197                if (!featuresIterator.hasNext()) {
    199198                        future.pass(null);
     
    214213        }
    215214
    216         private void sendQueryVersion(final int version, final Future<Void> future) {
     215        private void sendQueryVersion(final int version, final FutureHandler<Void> future) {
    217216                send(new VersionRequest().version(version), new ClientSideResponseFuture(future) {
    218217                        @Override
     
    335334                }
    336335
    337                 final Future<File> future = new Future<File>() {
     336                final FutureHandler<File> future = new FutureHandler<File>() {
    338337
    339338                        protected void send(final File result) {
     
    415414        }
    416415
    417         protected final ExceptionResultHandler closeOnFailure = new ExceptionResultHandler() {
     416        protected final ExceptionHandler closeOnFailure = new ExceptionHandler() {
    418417
    419418                @Override
     
    428427                startClientConnection(this);
    429428
    430                 sendQueryVersion(1, new FutureHandler<Void>(closeOnFailure) {
     429                sendQueryVersion(1, new Future<Void>(closeOnFailure) {
    431430
    432431                        @Override
     
    451450        protected final Map<String, EventListener<File>> registeredListeners = new HashMap<>();
    452451
    453         public <C> void addListener(String path, final EventListener<File> listener, final Dispatcher<C> dispatcher, final Future<Void> future) {
     452        public <C> void addListener(String path, final EventListener<File> listener, final Dispatcher<C> dispatcher, final FutureHandler<Void> future) {
    454453                send(new RegisterRequest().path(path), dispatcher, new ClientSideResponseFuture(future) {
    455454                        @Override
     
    463462        }
    464463
    465         public <C> void removeListener(EventListener<File> listener, final Dispatcher<C> dispatcher, final Future<Void> future) {
     464        public <C> void removeListener(EventListener<File> listener, final Dispatcher<C> dispatcher, final FutureHandler<Void> future) {
    466465                String eventPath = null;
    467466                synchronized (registeredListeners) {
  • java/main/src/main/java/com/framsticks/communication/ClientSideRawConnection.java

    r97 r105  
    22
    33import com.framsticks.params.annotations.FramsClassAnnotation;
    4 import com.framsticks.util.dispatching.ExceptionResultHandler;
     4import com.framsticks.util.ExceptionHandler;
    55import com.framsticks.util.dispatching.RunAt;
    66
     
    2323        }
    2424
    25         public void send(final String line, ExceptionResultHandler handler) {
     25        public void send(final String line, ExceptionHandler handler) {
    2626
    2727                senderThread.dispatch(new RunAt<ClientSideRawConnection>(handler) {
  • java/main/src/main/java/com/framsticks/communication/ClientSideResponseFuture.java

    r98 r105  
    11package com.framsticks.communication;
    22
     3import com.framsticks.util.ExceptionHandler;
    34import com.framsticks.util.FramsticksException;
    4 import com.framsticks.util.dispatching.ExceptionResultHandler;
    5 import com.framsticks.util.dispatching.FutureHandler;
     5import com.framsticks.util.dispatching.Future;
    66
    7 public abstract class ClientSideResponseFuture extends FutureHandler<Response> {
     7public abstract class ClientSideResponseFuture extends Future<Response> {
    88
    9         public ClientSideResponseFuture(ExceptionResultHandler handler) {
     9        public ClientSideResponseFuture(ExceptionHandler handler) {
    1010                super(handler);
    1111        }
  • java/main/src/main/java/com/framsticks/communication/Connection.java

    r102 r105  
    55import com.framsticks.params.annotations.FramsClassAnnotation;
    66import com.framsticks.params.annotations.ParamAnnotation;
     7import com.framsticks.util.ExceptionHandler;
    78import com.framsticks.util.FramsticksException;
    89import com.framsticks.util.io.Encoding;
     
    2526import com.framsticks.util.dispatching.Dispatcher;
    2627import com.framsticks.util.dispatching.Dispatching;
    27 import com.framsticks.util.dispatching.ExceptionResultHandler;
    2828import com.framsticks.util.dispatching.Joinable;
    2929import com.framsticks.util.dispatching.JoinableCollection;
     
    3535
    3636@FramsClassAnnotation
    37 public abstract class Connection extends AbstractJoinable implements JoinableParent, ExceptionResultHandler {
     37public abstract class Connection extends AbstractJoinable implements JoinableParent, ExceptionHandler {
    3838
    3939        protected final static Logger log = LogManager.getLogger(Connection.class);
     
    5252        protected final Set<ConnectionListener> listeners = new HashSet<>();
    5353
    54         protected ExceptionResultHandler exceptionHandler = ThrowExceptionHandler.getInstance();
     54        protected ExceptionHandler exceptionHandler = ThrowExceptionHandler.getInstance();
    5555
    5656        /**
     
    301301         * @return the handler
    302302         */
    303         public ExceptionResultHandler getExceptionHandler() {
     303        public ExceptionHandler getExceptionHandler() {
    304304                return exceptionHandler;
    305305        }
     
    308308         * @param handler the handler to set
    309309         */
    310         public void setExceptionHandler(ExceptionResultHandler handler) {
     310        public void setExceptionHandler(ExceptionHandler handler) {
    311311                this.exceptionHandler = handler;
    312312        }
     
    346346        }
    347347
    348         public final void sendFile(final String header, final File file, final Integer id, ExceptionResultHandler handler) {
     348        public final void sendFile(final String header, final File file, final Integer id, ExceptionHandler handler) {
    349349                senderThread.dispatch(new RunAt<Connection>(handler) {
    350350                        @Override
  • java/main/src/main/java/com/framsticks/communication/File.java

    r101 r105  
    11package com.framsticks.communication;
    22
    3 import java.util.ArrayList;
    4 import java.util.List;
    53
    64import javax.annotation.Nonnull;
     
    3129        }
    3230
    33         public static List<File> single(File file) {
    34                 List<File> result = new ArrayList<File>();
    35                 result.add(file);
    36                 return result;
    37         }
    38 
    3931        @Override
    4032        public String toString() {
  • java/main/src/main/java/com/framsticks/communication/RequestHandler.java

    r98 r105  
    22
    33import com.framsticks.communication.queries.ApplicationRequest;
    4 import com.framsticks.util.dispatching.ExceptionResultHandler;
     4import com.framsticks.util.ExceptionHandler;
    55
    66/**
    77 * @author Piotr Sniegowski
    88 */
    9 public interface RequestHandler extends ExceptionResultHandler {
     9public interface RequestHandler extends ExceptionHandler {
    1010        public void handle(ApplicationRequest request, ServerSideResponseFuture responseCallback);
    1111}
  • java/main/src/main/java/com/framsticks/communication/Response.java

    r96 r105  
    11package com.framsticks.communication;
    22
     3import java.util.Arrays;
    34import java.util.List;
    45
     
    1011        protected final String comment;
    1112        protected final List<File> files;
     13
     14        public Response(boolean ok, String comment, File... files) {
     15                this(ok, comment, (files.length == 0 ? null : Arrays.asList(files)));
     16        }
    1217
    1318        public Response(boolean ok, String comment, List<File> files) {
  • java/main/src/main/java/com/framsticks/communication/ServerSideManagedConnection.java

    r103 r105  
    4646                if (request instanceof ProtocolRequest) {
    4747                        if (request instanceof VersionRequest) {
    48                                 responseCallback.pass(new Response(true, null, null));
     48                                responseCallback.pass(new Response(true, null));
    4949                                return;
    5050                        }
     
    5353                                if (feature.equals("request_id")) {
    5454                                        requestIdEnabled = true;
    55                                         responseCallback.pass(new Response(true, null, null));
     55                                        responseCallback.pass(new Response(true, null));
    5656                                        return;
    5757                                }
    5858                                if (feature.equals("call_empty_result")) {
    59                                         responseCallback.pass(new Response(true, null, null));
     59                                        responseCallback.pass(new Response(true, null));
    6060                                        return;
    6161                                }
    6262                                if (feature.equals("needfile_id")) {
    63                                         responseCallback.pass(new Response(true, null, null));
     63                                        responseCallback.pass(new Response(true, null));
    6464                                        return;
    6565                                }
    66                                 responseCallback.pass(new Response(false, "unknown feature: " + feature, null));
     66                                responseCallback.pass(new Response(false, "unknown feature: " + feature));
    6767                                return;
    6868                        }
     
    7070                }
    7171                log.error("unhandled request: {}", request);
    72                 responseCallback.pass(new Response(false, "unhandled", null));
     72                responseCallback.pass(new Response(false, "unhandled"));
    7373        }
    7474
     
    120120                        e.arg("id", id.get()).arg("line", line);
    121121                        log.error("error: ", e);
    122                         respond(new Response(false, "invalid input: " + e.getMsg(), null), id.get());
     122                        respond(new Response(false, "invalid input: " + e.getMsg()), id.get());
    123123                        return;
    124124                }
  • java/main/src/main/java/com/framsticks/communication/ServerSideResponseFuture.java

    r99 r105  
    22
    33import com.framsticks.util.FramsticksException;
    4 import com.framsticks.util.dispatching.Future;
     4import com.framsticks.util.dispatching.FutureHandler;
    55
    66/**
    77 * @author Piotr Sniegowski
    88 */
    9 public abstract class ServerSideResponseFuture extends Future<Response> {
     9public abstract class ServerSideResponseFuture extends FutureHandler<Response> {
    1010
    1111        @Override
    1212        public final void handle(FramsticksException e) {
    13                 result(new Response(false, e.getClass().getCanonicalName() + ": " + e.getMessage(), null));
     13                result(new Response(false, e.getClass().getCanonicalName() + ": " + e.getMessage()));
    1414        }
    1515
  • java/main/src/main/java/com/framsticks/communication/queries/NeedFile.java

    r101 r105  
    22
    33import com.framsticks.communication.File;
    4 import com.framsticks.util.dispatching.Future;
     4import com.framsticks.util.dispatching.FutureHandler;
    55import com.framsticks.util.lang.Strings;
    66
     
    99        protected final String suggestedName;
    1010        protected final String description;
    11         protected final Future<File> future;
     11        protected final FutureHandler<File> future;
    1212
    1313        /**
     
    1616         * @param future
    1717         */
    18         public NeedFile(String suggestedName, String description, Future<File> future) {
     18        public NeedFile(String suggestedName, String description, FutureHandler<File> future) {
    1919                this.suggestedName = suggestedName;
    2020                this.description = description;
     
    3939         * @return the future
    4040         */
    41         public Future<File> getFuture() {
     41        public FutureHandler<File> getFuture() {
    4242                return future;
    4343        }
  • java/main/src/main/java/com/framsticks/communication/queries/RegisterRequest.java

    r99 r105  
    11package com.framsticks.communication.queries;
    22
    3 import com.framsticks.core.Path;
     3import com.framsticks.structure.Path;
    44import com.framsticks.util.lang.Pair;
    55
  • java/main/src/main/java/com/framsticks/dumping/LoadStream.java

    r100 r105  
    22
    33import com.framsticks.communication.File;
    4 import com.framsticks.core.TreeOperations;
    5 import com.framsticks.core.Path;
    64import com.framsticks.params.ListSource;
    7 import com.framsticks.core.Tree;
     5import com.framsticks.structure.Path;
     6import com.framsticks.structure.Tree;
     7import com.framsticks.structure.TreeOperations;
    88import com.framsticks.util.*;
    9 import com.framsticks.util.dispatching.Future;
     9import com.framsticks.util.dispatching.FutureHandler;
    1010import com.framsticks.util.lang.Pair;
    1111import com.framsticks.util.lang.Strings;
     
    2828        protected final Path mountPath;
    2929        protected final BufferedReader stream;
    30         protected final Future<Path> future;
     30        protected final FutureHandler<Path> future;
    3131        protected final Stopwatch stopwatch = new Stopwatch();
    3232
    3333
    34         public LoadStream(Path mountPath, BufferedReader stream, Tree tree, Future<Path> future) {
     34        public LoadStream(Path mountPath, BufferedReader stream, Tree tree, FutureHandler<Path> future) {
    3535                this.tree = tree;
    3636                this.mountPath = mountPath;
  • java/main/src/main/java/com/framsticks/dumping/SaveStream.java

    r102 r105  
    11package com.framsticks.dumping;
    22
    3 import static com.framsticks.core.TreeOperations.*;
    43import static com.framsticks.params.AccessOperations.*;
    5 import com.framsticks.core.Node;
    6 import com.framsticks.core.Path;
    74import com.framsticks.params.Access;
    85import com.framsticks.params.CompositeParam;
     
    118import com.framsticks.params.Sink;
    129import com.framsticks.parsers.Savers;
    13 import com.framsticks.core.Tree;
     10import com.framsticks.structure.Node;
     11import com.framsticks.structure.Path;
     12import com.framsticks.structure.Tree;
    1413import com.framsticks.util.*;
    1514import com.framsticks.util.dispatching.Dispatching;
    16 import com.framsticks.util.dispatching.Future;
     15import com.framsticks.util.dispatching.FutureHandler;
    1716
    1817import org.apache.logging.log4j.Logger;
     
    2221import java.util.HashSet;
    2322import java.util.Set;
     23
     24import static com.framsticks.structure.TreeOperations.*;
    2425import static com.framsticks.util.lang.Containers.filterInstanceof;
    2526
     
    3334        protected final Sink sink;
    3435        protected final Tree tree;
    35         protected final Future<Void> future;
     36        protected final FutureHandler<Void> future;
    3637        protected final Stopwatch stopwatch = new Stopwatch();
    3738        protected final Set<FramsClass> storedInfo = new HashSet<FramsClass>();
     
    3940        private int dispatched = 0;
    4041
    41         public SaveStream(Sink sink, Tree tree, Path root, Future<Void> future) {
     42        public SaveStream(Sink sink, Tree tree, Path root, FutureHandler<Void> future) {
    4243                assert Dispatching.isThreadSafe();
    4344                this.sink = sink;
  • java/main/src/main/java/com/framsticks/experiment/Experiment.java

    r103 r105  
    77import org.apache.logging.log4j.LogManager;
    88
    9 import com.framsticks.core.ListChange;
    109import com.framsticks.params.EventListener;
    1110import com.framsticks.params.ParamFlags;
     
    1615import com.framsticks.params.types.ProcedureParam;
    1716import com.framsticks.remote.RemoteTree;
     17import com.framsticks.structure.messages.ListChange;
     18import com.framsticks.util.ExceptionHandler;
    1819import com.framsticks.util.FramsticksException;
    1920import com.framsticks.util.dispatching.AbstractJoinable;
     
    2223import com.framsticks.util.dispatching.DispatcherSetable;
    2324import com.framsticks.util.dispatching.Dispatching;
    24 import com.framsticks.util.dispatching.ExceptionResultHandler;
    2525import com.framsticks.util.dispatching.Joinable;
    2626import com.framsticks.util.dispatching.JoinableCollection;
     
    3030
    3131@FramsClassAnnotation
    32 public class Experiment extends AbstractJoinable implements Dispatcher<Experiment>, DispatcherSetable<Experiment>, JoinableParent, ExceptionResultHandler {
     32public class Experiment extends AbstractJoinable implements Dispatcher<Experiment>, DispatcherSetable<Experiment>, JoinableParent, ExceptionHandler {
    3333        private static final Logger log = LogManager.getLogger(Experiment.class);
    3434
  • java/main/src/main/java/com/framsticks/experiment/NetLoadSaveLogic.java

    r103 r105  
    55import org.apache.logging.log4j.LogManager;
    66
    7 import com.framsticks.core.ListChange;
    8 import com.framsticks.core.Message;
    97import com.framsticks.params.EventListener;
    108import com.framsticks.params.MessageLogger;
    119import com.framsticks.params.annotations.FramsClassAnnotation;
    1210import com.framsticks.params.annotations.ParamAnnotation;
     11import com.framsticks.structure.messages.ListChange;
     12import com.framsticks.structure.messages.Message;
     13import com.framsticks.util.dispatching.FutureHandler;
    1314import com.framsticks.util.dispatching.Future;
    14 import com.framsticks.util.dispatching.FutureHandler;
    1515
    1616@FramsClassAnnotation
     
    5050
    5151                                log.debug("issuing netsave to: {}", simulator);
    52                                 simulator.netsave(netJavaClass, new FutureHandler<NF>(simulator) {
     52                                simulator.netsave(netJavaClass, new Future<NF>(simulator) {
    5353
    5454                                        @Override
     
    6868                }
    6969                log.debug("issuing netload to: {}", simulator);
    70                 netload(simulator, new FutureHandler<NF>(simulator) {
     70                netload(simulator, new Future<NF>(simulator) {
    7171
    7272                        @Override
     
    7777                                }
    7878
    79                                 simulator.netload(net, new FutureHandler<Object>(this) {
     79                                simulator.netload(net, new Future<Object>(this) {
    8080
    8181                                        @Override
     
    9090        }
    9191
    92         public abstract void netload(Simulator simulator, Future<NF> net);
     92        public abstract void netload(Simulator simulator, FutureHandler<NF> net);
    9393
    9494        public abstract void netsave(Simulator simulator, NF net);
  • java/main/src/main/java/com/framsticks/experiment/Simulator.java

    r103 r105  
    44import com.framsticks.communication.queries.NeedFile;
    55import com.framsticks.communication.queries.NeedFileAcceptor;
    6 import com.framsticks.core.ListChange;
    7 import com.framsticks.core.Path;
    8 import com.framsticks.core.Tree;
    9 import com.framsticks.core.ValueChange;
    106import com.framsticks.params.AccessOperations;
    117import com.framsticks.params.CastFailure;
     
    1915import com.framsticks.params.types.ProcedureParam;
    2016import com.framsticks.remote.RemoteTree;
     17import com.framsticks.structure.Path;
     18import com.framsticks.structure.Tree;
     19import com.framsticks.structure.messages.ListChange;
     20import com.framsticks.structure.messages.ValueChange;
     21import com.framsticks.util.ExceptionHandler;
    2122import com.framsticks.util.FramsticksException;
    2223import com.framsticks.util.dispatching.AbstractJoinable;
    2324import com.framsticks.util.dispatching.Dispatcher;
    2425import com.framsticks.util.dispatching.Dispatching;
    25 import com.framsticks.util.dispatching.ExceptionResultHandler;
     26import com.framsticks.util.dispatching.FutureHandler;
    2627import com.framsticks.util.dispatching.Future;
    27 import com.framsticks.util.dispatching.FutureHandler;
    2828import com.framsticks.util.dispatching.Joinable;
    2929import com.framsticks.util.dispatching.JoinableParent;
     
    3535import org.apache.logging.log4j.LogManager;
    3636import org.apache.logging.log4j.Logger;
    37 import static com.framsticks.core.TreeOperations.*;
     37import static com.framsticks.params.ParamsUtil.arguments;
     38import static com.framsticks.params.ParamsUtil.getParam;
     39import static com.framsticks.structure.TreeOperations.*;
    3840
    3941@FramsClassAnnotation
    40 public final class Simulator extends AbstractJoinable implements Dispatcher<Simulator>, JoinableParent, UniqueObject, ExceptionResultHandler {
     42public final class Simulator extends AbstractJoinable implements Dispatcher<Simulator>, JoinableParent, UniqueObject, ExceptionHandler {
    4143
    4244        private static final Logger log = LogManager.getLogger(Simulator.class);
     
    6971                        public void action(ValueChange argument) {
    7072                                try {
    71                                         boolean running = simulatorClass.getParamEntry("running", BooleanParam.class).reassign(argument.value, null).getValue();
     73                                        boolean running = getParam(simulatorClass, "running", BooleanParam.class).reassign(argument.value, null).getValue();
    7274                                        log.debug("running state of {} changed: {}", Simulator.this, running);
    7375                                        if (!running) {
     
    8082                };
    8183
    82                 addListener(simulatorPath, simulatorClass.getParamEntry("running_changed", EventParam.class), runningListener, ValueChange.class, new FutureHandler<Void>(this) {
     84                addListener(simulatorPath, getParam(simulatorClass, "running_changed", EventParam.class), runningListener, ValueChange.class, new Future<Void>(this) {
    8385                        @Override
    8486                        protected void result(Void result) {
     
    160162        public void start() {
    161163                log.debug("starting simulator {}", this);
    162                 call(simulatorPath, "start", new Object[] {}, Object.class, FutureHandler.doNothing(Object.class, this));
     164                call(simulatorPath, "start", arguments(), Object.class, Future.doNothing(Object.class, this));
    163165        }
    164166
     
    199201        protected final AtomicInteger netloadIdCounter = new AtomicInteger();
    200202
    201         public <N> void netload(final N net, final Future<Object> future) {
     203        public <N> void netload(final N net, final FutureHandler<Object> future) {
    202204                final String netloadId = "NetLoadSaveLogic" + netloadIdCounter.getAndIncrement();
    203205
     
    231233                simulatorPath.getTree().addNeedFileAcceptor(Integer.MIN_VALUE, acceptor.get());
    232234
    233                 call(simulatorPath, getFramsClass(simulatorPath).getParamEntry("netload_id", ProcedureParam.class), new Object[] { netloadId }, Object.class, new FutureHandler<Object>(future) {
     235                call(simulatorPath, getParam(simulatorPath, "netload_id", ProcedureParam.class), arguments(netloadId), Object.class, new Future<Object>(future) {
    234236
    235237                        @Override
    236238                        protected void result(Object result) {
    237                                 log.debug("upload of {} done", file);
     239                                log.debug("netload of {} done", file);
    238240                                future.pass(result);
    239241                        }
     
    242244        }
    243245
    244         public <N> void netsave(Class<N> netJavaClass, final Future<N> futureNet) {
    245                 call(simulatorPath, getFramsClass(simulatorPath).getParamEntry("netsave", ProcedureParam.class), new Object[] { }, netJavaClass, new FutureHandler<N>(futureNet) {
     246        public <N> void netsave(Class<N> netJavaClass, final FutureHandler<N> futureNet) {
     247                call(simulatorPath, getParam(simulatorPath, "netsave", ProcedureParam.class), arguments(), netJavaClass, new Future<N>(futureNet) {
    246248
    247249                        @Override
    248250                        protected void result(N net) {
    249                                 log.debug("download of {} done", net);
     251                                log.debug("netsave of {} done", net);
    250252                                futureNet.pass(net);
    251253                        }
    252254                });
    253 
    254255        }
    255256}
  • java/main/src/main/java/com/framsticks/experiment/SimulatorConnector.java

    r102 r105  
    66
    77import com.framsticks.communication.Address;
    8 import com.framsticks.core.Path;
    98import com.framsticks.params.annotations.FramsClassAnnotation;
    109import com.framsticks.params.annotations.ParamAnnotation;
    1110import com.framsticks.remote.RemoteTree;
     11import com.framsticks.structure.Path;
    1212import com.framsticks.util.AutoAttacher;
    1313import com.framsticks.util.Misc;
    1414import com.framsticks.util.dispatching.Dispatcher;
    1515import com.framsticks.util.dispatching.Dispatching;
    16 import com.framsticks.util.dispatching.FutureHandler;
     16import com.framsticks.util.dispatching.Future;
    1717import com.framsticks.util.lang.Casting;
    1818import com.framsticks.util.lang.Strings;
    1919
    20 import static com.framsticks.core.TreeOperations.*;
     20import static com.framsticks.structure.TreeOperations.*;
    2121
    2222@FramsClassAnnotation
     
    4646                Dispatching.dispatchLog(remoteTree, log, Level.DEBUG, "first task in remote tree");
    4747
    48                 tryGet(remoteTree, "/simulator", new FutureHandler<Path>(experiment) {
     48                tryGet(remoteTree, "/simulator", new Future<Path>(experiment) {
    4949
    5050                        @Override
  • java/main/src/main/java/com/framsticks/experiment/WorkPackageLogic.java

    r103 r105  
    88import org.apache.logging.log4j.LogManager;
    99
    10 import com.framsticks.core.Message;
    11 import com.framsticks.core.ValueChange;
    1210import com.framsticks.params.EventListener;
    1311import com.framsticks.params.MessageLogger;
     
    1513import com.framsticks.params.annotations.FramsClassAnnotation;
    1614import com.framsticks.params.annotations.ParamAnnotation;
     15import com.framsticks.structure.messages.Message;
     16import com.framsticks.structure.messages.ValueChange;
     17import com.framsticks.util.dispatching.FutureHandler;
    1718import com.framsticks.util.dispatching.Future;
    18 import com.framsticks.util.dispatching.FutureHandler;
    1919
    2020@FramsClassAnnotation(order = {"netLoadSaveLogic", "newestTaskScheduled", "newestResultReceived"})
     
    4747
    4848                        @Override
    49                         public void netload(final Simulator simulator, final Future<WP> netFuture) {
     49                        public void netload(final Simulator simulator, final FutureHandler<WP> netFuture) {
    5050                                assert experiment.isActive();
    5151                                log.debug("providing netload file for {}", simulator);
    5252
    53                                 findNextPackage(new FutureHandler<WP> (netFuture) {
     53                                findNextPackage(new Future<WP> (netFuture) {
    5454
    5555                                        @Override
     
    106106
    107107
    108         protected void findNextPackage(final Future<WP> future) {
     108        protected void findNextPackage(final FutureHandler<WP> future) {
    109109                if (!queuedPackages.isEmpty()) {
    110110                        WP workPackage = queuedPackages.pollFirst();
     
    113113                }
    114114
    115                 generateNextPackage(new FutureHandler<WP>(experiment) {
     115                generateNextPackage(new Future<WP>(experiment) {
    116116
    117117                        @Override
     
    127127        }
    128128
    129         protected abstract void generateNextPackage(Future<WP> future);
     129        protected abstract void generateNextPackage(FutureHandler<WP> future);
    130130        protected abstract void returnPackage(WP workPackage);
    131131
  • java/main/src/main/java/com/framsticks/gui/Browser.java

    r102 r105  
    44import com.framsticks.communication.queries.NeedFile;
    55import com.framsticks.communication.queries.NeedFileAcceptor;
    6 import com.framsticks.core.*;
    76import com.framsticks.gui.console.Console;
    87import com.framsticks.gui.console.DirectConsole;
     
    1615import com.framsticks.parsers.FileSource;
    1716import com.framsticks.remote.RemoteTree;
     17import com.framsticks.structure.Path;
     18import com.framsticks.structure.Tree;
     19import com.framsticks.util.ExceptionHandler;
    1820import com.framsticks.util.FramsticksException;
    1921import com.framsticks.util.dispatching.AbstractJoinable;
    2022import com.framsticks.util.dispatching.Dispatcher;
    2123import com.framsticks.util.dispatching.Dispatching;
    22 import com.framsticks.util.dispatching.ExceptionResultHandler;
    23 import com.framsticks.util.dispatching.Future;
     24import com.framsticks.util.dispatching.FutureHandler;
    2425import com.framsticks.util.dispatching.Joinable;
    2526import com.framsticks.util.dispatching.JoinableCollection;
     
    5455 */
    5556@FramsClassAnnotation
    56 public class Browser extends AbstractJoinable implements Dispatcher<Browser>, JoinableParent, ExceptionResultHandler {
     57public class Browser extends AbstractJoinable implements Dispatcher<Browser>, JoinableParent, ExceptionHandler {
    5758
    5859        private static final Logger log = LogManager.getLogger(Browser.class);
     
    213214                                                                file = new File("", new FileSource(filename));
    214215                                                        } catch (IOException e) {
    215                                                                 needFile.getFuture().handle(new FramsticksException().msg("failed to open choosed file").arg("filename", filename).cause(e));
     216                                                                needFile.getFuture().handle(new FramsticksException().msg("failed to open chosen file").arg("filename", filename).cause(e));
    216217                                                        }
    217218                                                        if (file != null) {
     
    239240        }
    240241
    241         public void autoResolvePath(final String path, final Future<Path> future) {
     242        public void autoResolvePath(final String path, final FutureHandler<Path> future) {
    242243                // final Tree i = trees.get("localhost");
    243244                // i.dispatch(new RunAt<Tree>(future) {
     
    277278                        protected void runAt() {
    278279
    279                                 for (final Tree i : trees) {
    280                                         i.dispatch(new RunAt<Tree>(this) {
     280                                for (final Tree tree : trees) {
     281                                        tree.dispatch(new RunAt<Tree>(this) {
    281282                                                @Override
    282283                                                protected void runAt() {
    283                                                         final Path p = Path.to(i, "/");
     284                                                        final Path p = Path.to(tree, "/");
    284285                                                        log.debug("adding path: {}", p);
    285286                                                        dispatch(new RunAt<Browser>(this) {
  • java/main/src/main/java/com/framsticks/gui/Frame.java

    r102 r105  
    3939import org.apache.logging.log4j.LogManager;
    4040
    41 import com.framsticks.core.Path;
    42 import com.framsticks.core.Tree;
    4341import com.framsticks.gui.tree.AbstractNode;
    4442import com.framsticks.gui.tree.MetaNode;
     
    4644import com.framsticks.gui.tree.TreeModel;
    4745import com.framsticks.gui.tree.TreeNode;
     46import com.framsticks.structure.Path;
     47import com.framsticks.structure.Tree;
    4848import com.framsticks.util.dispatching.Dispatching;
    49 import com.framsticks.util.dispatching.FutureHandler;
     49import com.framsticks.util.dispatching.Future;
    5050import com.framsticks.util.dispatching.Joinable;
    5151import com.framsticks.util.dispatching.JoinableCollection;
     
    269269                if (!tree.getAssignedRoot().isResolved()) {
    270270                        log.debug("root not yet assigned, geting root");
    271                         tree.get(path, new FutureHandler<Path>(this) {
     271                        tree.get(path, new Future<Path>(this) {
    272272
    273273                                @Override
     
    329329        public void updatePanelIfIsLeadSelection(Path path) {
    330330                assert isActive();
    331                 TreePath treePath = treeModel.convertToTreePath(path, true);
     331                TreePath treePath = treeModel.convertToTreePath(path);
    332332                if (treePath == null) {
    333333                        return;
  • java/main/src/main/java/com/framsticks/gui/FrameJoinable.java

    r101 r105  
    1313import org.apache.logging.log4j.LogManager;
    1414
     15import com.framsticks.util.ExceptionHandler;
    1516import com.framsticks.util.FramsticksException;
    16 import com.framsticks.util.dispatching.ExceptionResultHandler;
    1717import com.framsticks.util.dispatching.RunAt;
    1818import com.framsticks.util.dispatching.ThrowExceptionHandler;
    1919
    20 public abstract class FrameJoinable extends SwingJoinable<JFrame> implements ExceptionResultHandler {
     20public abstract class FrameJoinable extends SwingJoinable<JFrame> implements ExceptionHandler {
    2121        private static final Logger log =
    2222                LogManager.getLogger(FrameJoinable.class);
  • java/main/src/main/java/com/framsticks/gui/ModifiablePanel.java

    r101 r105  
    99import java.awt.event.ActionEvent;
    1010import java.awt.event.ActionListener;
    11 import static com.framsticks.core.TreeOperations.*;
     11
     12import static com.framsticks.structure.TreeOperations.*;
    1213
    1314/**
  • java/main/src/main/java/com/framsticks/gui/MultiPanel.java

    r100 r105  
    11package com.framsticks.gui;
    22
    3 import com.framsticks.core.Path;
    43import com.framsticks.params.Access;
     4import com.framsticks.structure.Path;
    55
    66import javax.swing.*;
  • java/main/src/main/java/com/framsticks/gui/ObjectPanel.java

    r101 r105  
    11package com.framsticks.gui;
    22
    3 import com.framsticks.core.Path;
    43import com.framsticks.gui.controls.Control;
    54import com.framsticks.gui.controls.ControlOwner;
     
    1615import java.util.HashMap;
    1716import java.util.Map;
     17
     18import static com.framsticks.structure.TreeOperations.*;
    1819import static com.framsticks.util.lang.Containers.filterInstanceof;
    1920
     21import com.framsticks.structure.Path;
    2022import com.framsticks.util.FramsticksException;
    2123
    22 import static com.framsticks.core.TreeOperations.*;
    2324
    2425@SuppressWarnings("serial")
  • java/main/src/main/java/com/framsticks/gui/PopupMenuEntryProvider.java

    r97 r105  
    33import javax.swing.JPopupMenu;
    44
    5 import com.framsticks.core.Path;
     5import com.framsticks.structure.Path;
    66
    77public interface PopupMenuEntryProvider {
  • java/main/src/main/java/com/framsticks/gui/StandardPanelProvider.java

    r100 r105  
    1919        public TreePanel providePanel(TreePanel.Parameters parameters) {
    2020                if (parameters.param instanceof ObjectParam) {
    21                         return new ObjectPanel(parameters, CollectionUtils.select(parameters.framsClass.getParamEntries(), new NotPredicate(new InstanceofPredicate(CompositeParam.class))));
     21                        return new ObjectPanel(parameters, CollectionUtils.select(parameters.framsClass.getParams(), new NotPredicate(new InstanceofPredicate(CompositeParam.class))));
    2222                }
    23 //              if (param instanceof ListParam) {
    24 //                      return new ListPanel();
    25 //              }
    2623                return null;
    2724        }
  • java/main/src/main/java/com/framsticks/gui/StatusBar.java

    r101 r105  
    1313
    1414import com.framsticks.gui.controls.Control;
     15import com.framsticks.util.ExceptionHandler;
    1516import com.framsticks.util.FramsticksException;
    1617import com.framsticks.util.dispatching.Dispatcher;
    1718import com.framsticks.util.dispatching.Dispatching;
    18 import com.framsticks.util.dispatching.ExceptionResultHandler;
    1919import com.framsticks.util.dispatching.RunAt;
    2020
    21 public class StatusBar implements ExceptionResultHandler {
     21public class StatusBar implements ExceptionHandler {
    2222        private static final Logger log = LogManager.getLogger(StatusBar.class);
    2323
    2424        protected JTextField statusBar;
    2525        protected JPanel swing;
    26         protected ExceptionResultHandler exceptionHandler;
     26        protected ExceptionHandler exceptionHandler;
    2727        protected final Dispatcher<?> dispatcher;
    2828
     
    8686         * @return the exceptionHandler
    8787         */
    88         public ExceptionResultHandler getExceptionHandler() {
     88        public ExceptionHandler getExceptionHandler() {
    8989                return exceptionHandler;
    9090        }
     
    9393         * @param exceptionHandler the exceptionHandler to set
    9494         */
    95         public void setExceptionHandler(ExceptionResultHandler exceptionHandler) {
     95        public void setExceptionHandler(ExceptionHandler exceptionHandler) {
    9696                this.exceptionHandler = exceptionHandler;
    9797        }
  • java/main/src/main/java/com/framsticks/gui/TreeAtFrame.java

    r101 r105  
    44import org.apache.logging.log4j.LogManager;
    55
    6 import com.framsticks.core.SideNoteKey;
    7 import com.framsticks.core.Tree;
    8 import com.framsticks.core.Node;
    9 import com.framsticks.core.Path;
    10 import static com.framsticks.core.TreeOperations.*;
    116import com.framsticks.gui.controls.ValueControl;
    127import com.framsticks.params.CompositeParam;
     
    1510
    1611import java.util.*;
     12import static com.framsticks.params.ParamsUtil.getParam;
     13import static com.framsticks.structure.TreeOperations.*;
    1714
    18 
    19 
    20 import com.framsticks.util.dispatching.FutureHandler;
     15import com.framsticks.structure.Node;
     16import com.framsticks.structure.Path;
     17import com.framsticks.structure.SideNoteKey;
     18import com.framsticks.structure.Tree;
     19import com.framsticks.util.dispatching.Future;
    2120
    2221/**
     
    114113
    115114                for (final Map.Entry<String, Object> e : userChanges.changes.entrySet()) {
    116                         set(path, getParam(path, e.getKey(), PrimitiveParam.class), e.getValue(), new FutureHandler<Integer>(frame) {
     115                        set(path, getParam(path, e.getKey(), PrimitiveParam.class), e.getValue(), new Future<Integer>(frame) {
    117116                                @Override
    118117                                protected void result(Integer flag) {
  • java/main/src/main/java/com/framsticks/gui/TreePanel.java

    r101 r105  
    11package com.framsticks.gui;
    22
    3 import com.framsticks.core.Path;
    4 import com.framsticks.core.Tree;
    5 import static com.framsticks.core.TreeOperations.*;
     3import static com.framsticks.structure.TreeOperations.*;
     4
    65import com.framsticks.gui.tree.AbstractNode;
    76import com.framsticks.gui.tree.TreeNode;
     
    98import com.framsticks.params.CompositeParam;
    109import com.framsticks.params.FramsClass;
     10import com.framsticks.structure.Path;
     11import com.framsticks.structure.Tree;
    1112import com.framsticks.util.lang.Casting;
    1213
  • java/main/src/main/java/com/framsticks/gui/console/Console.java

    r100 r105  
    1515import com.framsticks.gui.FrameJoinable;
    1616import com.framsticks.params.annotations.FramsClassAnnotation;
     17import com.framsticks.util.ExceptionHandler;
    1718import com.framsticks.util.FramsticksException;
    1819import com.framsticks.util.dispatching.Dispatching;
    19 import com.framsticks.util.dispatching.ExceptionResultHandler;
    2020import com.framsticks.util.dispatching.Joinable;
    2121import com.framsticks.util.dispatching.JoinableParent;
     
    8989        }
    9090
    91         protected ExceptionResultHandler getExceptionHandler() {
    92                 return new ExceptionResultHandler() {
     91        protected ExceptionHandler getExceptionHandler() {
     92                return new ExceptionHandler() {
    9393
    9494                        @Override
  • java/main/src/main/java/com/framsticks/gui/console/ManagedConsole.java

    r102 r105  
    1010import com.framsticks.communication.Response;
    1111import com.framsticks.communication.queries.ApplicationRequest;
    12 import com.framsticks.core.Path;
    13 import static com.framsticks.core.TreeOperations.*;
     12
     13import static com.framsticks.structure.TreeOperations.*;
     14
    1415import com.framsticks.gui.SwingDispatcher;
    1516import com.framsticks.params.CompositeParam;
     
    1819import com.framsticks.params.types.ListParam;
    1920import com.framsticks.remote.RemoteTree;
     21import com.framsticks.structure.Path;
    2022import com.framsticks.util.FramsticksException;
    2123import com.framsticks.util.dispatching.Dispatching;
    22 import com.framsticks.util.dispatching.FutureHandler;
     24import com.framsticks.util.dispatching.Future;
    2325import com.framsticks.util.dispatching.RunAt;
    2426import com.framsticks.util.lang.Casting;
     
    98100                // final Iterator<String> iterator = Path.splitPath(textual);
    99101
    100                 tryGet(tree, textual, new FutureHandler<Path>(this) {
     102                tryGet(tree, textual, new Future<Path>(this) {
    101103
    102104                        @Override
     
    143145
    144146                                if (path.getTop().getParam() instanceof ListParam) {
    145                                         tree.get(path, new FutureHandler<Path>(ManagedConsole.this) {
     147                                        tree.get(path, new Future<Path>(ManagedConsole.this) {
    146148                                                @Override
    147149                                                protected void result(Path result) {
  • java/main/src/main/java/com/framsticks/gui/controls/Control.java

    r101 r105  
    11package com.framsticks.gui.controls;
    2 
    3 // import java.awt.BorderLayout;
    4 
    52
    63import javax.swing.JPanel;
    74
    8 import com.framsticks.core.Path;
    95import com.framsticks.params.ParamFlags;
    106import com.framsticks.params.Param;
     7import com.framsticks.structure.Path;
     8import com.framsticks.util.ExceptionHandler;
    119import com.framsticks.util.FramsticksException;
    1210import com.framsticks.util.Misc;
    13 import com.framsticks.util.dispatching.ExceptionResultHandler;
    1411
    1512/**
     
    1714 */
    1815@SuppressWarnings("serial")
    19 public abstract class Control extends JPanel implements ExceptionResultHandler {
     16public abstract class Control extends JPanel implements ExceptionHandler {
    2017
    2118        public static final int LINE_HEIGHT = 36;
  • java/main/src/main/java/com/framsticks/gui/controls/ControlOwner.java

    r101 r105  
    22
    33
    4 import com.framsticks.core.Path;
    54import com.framsticks.gui.Frame;
    6 import com.framsticks.util.dispatching.ExceptionResultHandler;
     5import com.framsticks.structure.Path;
     6import com.framsticks.util.ExceptionHandler;
    77
    8 public interface ControlOwner extends ExceptionResultHandler {
     8public interface ControlOwner extends ExceptionHandler {
    99
    1010        public Path getCurrentPath();
  • java/main/src/main/java/com/framsticks/gui/controls/EventControl.java

    r101 r105  
    1010
    1111
    12 import com.framsticks.core.Path;
    13 import com.framsticks.core.SideNoteKey;
    1412import com.framsticks.gui.Frame;
    1513import com.framsticks.gui.Gui;
     
    1715import com.framsticks.params.EventListener;
    1816import com.framsticks.params.types.EventParam;
     17import com.framsticks.structure.Path;
     18import com.framsticks.structure.SideNoteKey;
    1919import com.framsticks.util.FramsticksUnsupportedOperationException;
    2020import com.framsticks.util.dispatching.Dispatching;
    21 import com.framsticks.util.dispatching.FutureHandler;
     21import com.framsticks.util.dispatching.Future;
    2222import com.framsticks.util.dispatching.RunAt;
    2323import com.framsticks.util.lang.Pair;
    2424
    25 import static com.framsticks.core.TreeOperations.*;
     25import static com.framsticks.structure.TreeOperations.*;
    2626
    2727/**
     
    5959                                        removeSideNote(path, listenerKey);
    6060                                        refreshState();
    61                                         path.getTree().removeListener(path, getParam(), listener, FutureHandler.doNothing(Void.class, owner.getFrame()));
     61                                        path.getTree().removeListener(path, getParam(), listener, Future.doNothing(Void.class, owner.getFrame()));
    6262                                        return;
    6363                                }
     
    7979                                };
    8080
    81                                 path.getTree().addListener(path, getParam(), newListener, Object.class, new FutureHandler<Void>(owner.getFrame()) {
     81                                addListener(path, getParam(), newListener, Object.class, new Future<Void>(owner.getFrame()) {
    8282
    8383                                        @Override
  • java/main/src/main/java/com/framsticks/gui/controls/ProcedureControl.java

    r103 r105  
    11package com.framsticks.gui.controls;
    22
    3 import com.framsticks.core.Path;
    43import com.framsticks.gui.Frame;
    54import com.framsticks.gui.Gui;
    65import com.framsticks.params.Param;
    76import com.framsticks.params.types.ProcedureParam;
    8 import com.framsticks.util.dispatching.FutureHandler;
     7import com.framsticks.structure.Path;
     8import com.framsticks.util.dispatching.Future;
    99
    1010import javax.swing.*;
     
    7373                assert path.getTree().isActive();
    7474
    75                 path.getTree().call(path, param, arguments, Object.class, new FutureHandler<Object>(frame) {
     75                path.getTree().call(path, param, arguments, Object.class, new Future<Object>(frame) {
    7676
    7777                        @Override
  • java/main/src/main/java/com/framsticks/gui/table/ListPanel.java

    r101 r105  
    4444                        }
    4545                } else {
    46                         for (Param param : framsClass.getParamEntries()) {
     46                        for (Param param : framsClass.getParams()) {
    4747                                if (provider.getMaximumColumnNumber() != null && tableModel.getColumnCount() >= provider.getMaximumColumnNumber()) {
    4848                                        break;
  • java/main/src/main/java/com/framsticks/gui/table/ProcedureColumn.java

    r102 r105  
    11package com.framsticks.gui.table;
    22
    3 
    4 import com.framsticks.core.Path;
    53import com.framsticks.gui.controls.ProcedureControl;
    64import com.framsticks.params.CompositeParam;
    75import com.framsticks.params.types.ProcedureParam;
     6import com.framsticks.structure.Path;
     7
     8import static com.framsticks.params.ParamsUtil.arguments;
    89
    910public class ProcedureColumn extends Column {
     
    3839                        return 0;
    3940                }
    40                 ProcedureControl.callProcedure(path, getParam(), new Object[] {}, tableModel.getFrame());
     41                ProcedureControl.callProcedure(path, getParam(), arguments(), tableModel.getFrame());
    4142                return 0;
    4243        }
  • java/main/src/main/java/com/framsticks/gui/tree/TreeModel.java

    r103 r105  
    1414import org.apache.logging.log4j.LogManager;
    1515
    16 import com.framsticks.core.ListChange;
    17 import com.framsticks.core.Node;
    18 import com.framsticks.core.Path;
    19 import com.framsticks.core.SideNoteKey;
    20 import com.framsticks.core.TreeOperations;
    21 import com.framsticks.core.ValueChange;
    2216import com.framsticks.gui.Frame;
    2317import com.framsticks.params.Access;
     
    2923import com.framsticks.params.ValueParam;
    3024import com.framsticks.params.types.EventParam;
    31 import com.framsticks.util.FramsticksException;
     25import com.framsticks.structure.Node;
     26import com.framsticks.structure.Path;
     27import com.framsticks.structure.SideNoteKey;
     28import com.framsticks.structure.TreeOperations;
     29import com.framsticks.structure.messages.ListChange;
     30import com.framsticks.structure.messages.ValueChange;
    3231import com.framsticks.util.Misc;
    3332import com.framsticks.util.FramsticksUnsupportedOperationException;
    34 import com.framsticks.util.dispatching.FutureHandler;
     33import com.framsticks.util.dispatching.Future;
    3534import com.framsticks.util.lang.Casting;
    3635
    37 import static com.framsticks.core.TreeOperations.*;
     36import static com.framsticks.structure.TreeOperations.*;
    3837
    3938public class TreeModel implements javax.swing.tree.TreeModel {
     
    4241
    4342        protected List<TreeModelListener> listeners = new LinkedList<>();
    44 
    4543
    4644        protected final Frame frame;
     
    208206        }
    209207
    210         public TreePath convertToTreePath(Path path, boolean forceComplete) {
     208        public TreePath convertToTreePath(Path path) {
    211209                assert frame.isActive();
    212210
     
    271269                        return;
    272270                }
    273                 path.getTree().get(path, new FutureHandler<Path>(frame) {
     271                path.getTree().get(path, new Future<Path>(frame) {
    274272                        @Override
    275273                        protected void result(Path result) {
    276                                 final TreePath treePath = convertToTreePath(result, true);
     274                                final TreePath treePath = convertToTreePath(result);
    277275
    278276
     
    358356
    359357                                        log.debug("reacting to change {} in {}", listChange, listPath);
    360                                         final TreePath treeListPath = convertToTreePath(listPath, true);
    361                                         if (treeListPath == null) {
    362                                                 throw new FramsticksException().msg("path was not fully converted").arg("path", listPath);
    363                                         }
     358                                        final TreePath treeListPath = convertToTreePath(listPath);
    364359
    365360                                        if ((listChange.getAction().equals(ListChange.Action.Modify)) && (listChange.getPosition() == -1)) {
     
    387382                                                        }
    388383
    389                                                         listPath.getTree().get(childPath, new FutureHandler<Path>(frame) {
     384                                                        listPath.getTree().get(childPath, new Future<Path>(frame) {
    390385                                                                @Override
    391386                                                                protected void result(Path result) {
     
    394389                                                                        }
    395390                                                                        assert frame.isActive();
    396                                                                         final TreePath treePath = Misc.throwIfNull(frame.getTreeModel().convertToTreePath(result, true));
     391                                                                        final TreePath treePath = Misc.throwIfNull(frame.getTreeModel().convertToTreePath(result));
    397392
    398393                                                                        // treeModel.nodeStructureChanged(treePath);
     
    420415                                                case Modify: {
    421416                                                        Path childPath = listPath.appendParam(access.prepareParamFor(id)).tryResolveIfNeeded();
    422                                                         listPath.getTree().get(childPath, new FutureHandler<Path>(frame) {
     417                                                        listPath.getTree().get(childPath, new Future<Path>(frame) {
    423418                                                                @Override
    424419                                                                protected void result(Path result) {
  • java/main/src/main/java/com/framsticks/gui/tree/TreeNode.java

    r101 r105  
    88import org.apache.logging.log4j.Logger;
    99
    10 import com.framsticks.core.Node;
    11 import com.framsticks.core.Path;
    12 import com.framsticks.core.SideNoteKey;
    13 import com.framsticks.core.Tree;
    1410import com.framsticks.gui.Frame;
    1511import com.framsticks.gui.ImageProvider;
     
    1915import com.framsticks.params.CompositeParam;
    2016import com.framsticks.params.EventListener;
    21 import com.framsticks.params.FramsClass;
    2217import com.framsticks.params.ValueParam;
    2318import com.framsticks.params.types.EventParam;
    2419import com.framsticks.params.types.ObjectParam;
    2520import com.framsticks.params.types.StringParam;
     21import com.framsticks.structure.Node;
     22import com.framsticks.structure.Path;
     23import com.framsticks.structure.SideNoteKey;
     24import com.framsticks.structure.Tree;
    2625import com.framsticks.util.FramsticksException;
    27 import com.framsticks.util.dispatching.FutureHandler;
     26import com.framsticks.util.dispatching.Future;
    2827import com.framsticks.util.lang.Casting;
    2928import com.framsticks.util.lang.Containers;
    3029import com.framsticks.util.swing.TooltipConstructor;
    3130
    32 import static com.framsticks.core.TreeOperations.*;
     31import static com.framsticks.structure.TreeOperations.*;
    3332
    3433public class TreeNode extends AbstractNode {
     
    6968                if (path.getTop().getParam() instanceof ObjectParam) {
    7069                        Access access = bindAccess(path);
    71                         FramsClass framsClass = access.getFramsClass();
    72                         for (EventParam eventParam : Containers.filterInstanceof(framsClass.getParamEntries(), EventParam.class)) {
     70                        for (EventParam eventParam : Containers.filterInstanceof(access.getParams(), EventParam.class)) {
    7371                                if (!eventParam.getId().endsWith("_changed")) {
    7472                                        continue;
    7573                                }
    7674                                String valueId = eventParam.getId().substring(0, eventParam.getId().length() - 8);
    77                                 final ValueParam valueParam = Casting.tryCast(ValueParam.class, framsClass.getParam(valueId));
     75                                final ValueParam valueParam = Casting.tryCast(ValueParam.class, access.getParam(valueId));
    7876                                if (valueParam == null) {
    7977                                        continue;
     
    249247
    250248                renderer.setToolTipText(new TooltipConstructor()
    251                                 .append("frams", access.getId())
     249                                .append("frams", access.getTypeId())
    252250                                .append("java", child.getClass().getCanonicalName())
    253251                                .append("access", access.getClass().getSimpleName())
     
    271269
    272270        protected <A> void tryAddListener(final Path path, final EventParam eventParam, Class<A> argumentType, final EventListener<A> listener) {
    273                 getTree().addListener(path, eventParam, listener, argumentType, new FutureHandler<Void>(getFrame()) {
     271                addListener(path, eventParam, listener, argumentType, new Future<Void>(getFrame()) {
    274272                        @SuppressWarnings("unchecked")
    275273                        @Override
  • java/main/src/main/java/com/framsticks/hosting/Cli.java

    r103 r105  
    99import com.framsticks.communication.Response;
    1010import com.framsticks.communication.ServerSideResponseFuture;
    11 import com.framsticks.core.Path;
    12 import com.framsticks.core.Tree;
    1311import com.framsticks.params.EventListener;
    1412import com.framsticks.params.annotations.FramsClassAnnotation;
    1513import com.framsticks.params.annotations.ParamAnnotation;
    1614import com.framsticks.params.types.EventParam;
    17 import com.framsticks.util.dispatching.FutureHandler;
     15import com.framsticks.structure.Path;
     16import com.framsticks.structure.Tree;
     17import com.framsticks.structure.TreeOperations;
     18import com.framsticks.util.dispatching.Future;
    1819import com.framsticks.util.dispatching.ThrowExceptionHandler;
    1920
     
    6970
    7071                // SyncedFuture handler = new SyncedFuture<Void>(ThrowExceptionHandler.getInstance());
    71                 path.getTree().addListener(path, param, event.listener, Object.class, FutureHandler.doNothing(Void.class, ThrowExceptionHandler.getInstance()));
     72                TreeOperations.addListener(path, param, event.listener, Object.class, Future.doNothing(Void.class, ThrowExceptionHandler.getInstance()));
    7273
    7374                events.put(event.id, event);
    74                 responseFuture.pass(new Response(true, event.pathToEvent, null));
     75                responseFuture.pass(new Response(true, event.pathToEvent));
    7576                // handler
    7677        }
  • java/main/src/main/java/com/framsticks/hosting/CliEvent.java

    r103 r105  
    11package com.framsticks.hosting;
    22
    3 import com.framsticks.core.Path;
    43import com.framsticks.params.EventListener;
    54import com.framsticks.params.annotations.FramsClassAnnotation;
     
    76import com.framsticks.params.types.EventParam;
    87import com.framsticks.params.types.ProcedureParam;
    9 import com.framsticks.util.dispatching.FutureHandler;
     8import com.framsticks.structure.Path;
     9import com.framsticks.util.dispatching.Future;
    1010import com.framsticks.util.dispatching.ThrowExceptionHandler;
    1111
     
    3232
    3333                //it should happen now
    34                 path.getTree().removeListener(path, param, listener, FutureHandler.doNothing(Void.class, ThrowExceptionHandler.getInstance()));
     34                path.getTree().removeListener(path, param, listener, Future.doNothing(Void.class, ThrowExceptionHandler.getInstance()));
    3535                cli.events.remove(id);
    3636        }
  • java/main/src/main/java/com/framsticks/hosting/ClientAtServer.java

    r103 r105  
    11package com.framsticks.hosting;
    22
     3import static com.framsticks.structure.TreeOperations.*;
    34import static com.framsticks.util.lang.Strings.assureNotEmpty;
    45
     
    1011import com.framsticks.communication.queries.RegisterRequest;
    1112import com.framsticks.communication.queries.SetRequest;
    12 import com.framsticks.core.LocalTree;
    13 import com.framsticks.core.Tree;
    14 import com.framsticks.core.Path;
    1513import com.framsticks.params.*;
    1614import com.framsticks.params.types.EventParam;
    1715import com.framsticks.params.types.ProcedureParam;
    1816import com.framsticks.parsers.Savers;
     17import com.framsticks.structure.LocalTree;
     18import com.framsticks.structure.Path;
     19import com.framsticks.structure.Tree;
     20import com.framsticks.util.ExceptionHandler;
    1921import com.framsticks.util.FramsticksException;
    2022import com.framsticks.util.Misc;
    2123import com.framsticks.util.dispatching.AbstractJoinable;
    2224import com.framsticks.util.dispatching.Dispatching;
    23 import com.framsticks.util.dispatching.ExceptionResultHandler;
    24 import com.framsticks.util.dispatching.FutureHandler;
     25import com.framsticks.util.dispatching.Future;
    2526import com.framsticks.util.dispatching.Joinable;
    2627import com.framsticks.util.dispatching.JoinableParent;
     
    2930import com.framsticks.util.lang.Strings;
    3031
    31 import static com.framsticks.core.TreeOperations.*;
    3232import static com.framsticks.params.AccessOperations.*;
     33import static com.framsticks.params.ParamsUtil.getParam;
    3334
    3435import java.net.Socket;
     
    3738 * @author Piotr Sniegowski
    3839 */
    39 public class ClientAtServer extends AbstractJoinable implements RequestHandler, JoinableParent, ExceptionResultHandler {
     40public class ClientAtServer extends AbstractJoinable implements RequestHandler, JoinableParent, ExceptionHandler {
    4041
    4142        protected final Server server;
     
    126127        protected void handleInTree(final Tree tree, final ApplicationRequest request, final ServerSideResponseFuture responseCallback, final String usedPrefix) {
    127128
    128                 tryGet(tree, request.getActualPath(), new FutureHandler<Path>(responseCallback) {
     129                tryGet(tree, request.getActualPath(), new Future<Path>(responseCallback) {
    129130                        @Override
    130131                        protected void result(final Path path) {
     
    142143                                                throw new FramsticksException().msg("mismatch objects during fetch").arg("path", path);
    143144                                        }
    144                                         responseCallback.pass(new Response(true, "", File.single(printToFile(path.getTextual(), access))));
     145                                        responseCallback.pass(new Response(true, "", printToFile(path.getTextual(), access)));
    145146
    146147                                        return;
     
    149150                                if (request instanceof SetRequest) {
    150151                                        SetRequest setRequest = (SetRequest) request;
    151                                         tree.set(path, access.getFramsClass().getParamEntry(setRequest.getField(), PrimitiveParam.class), setRequest.getValue(), new FutureHandler<Integer>(responseCallback) {
     152                                        tree.set(path, getParam(access, setRequest.getField(), PrimitiveParam.class), setRequest.getValue(), new Future<Integer>(responseCallback) {
    152153                                                @Override
    153154                                                protected void result(Integer flag) {
    154                                                         responseCallback.pass(new Response(true, FlagsUtil.write(SetStateFlags.class, flag, null), null));
    155 
     155                                                        responseCallback.pass(new Response(true, FlagsUtil.write(SetStateFlags.class, flag, null)));
    156156                                                }
    157157                                        });
     
    161161                                if (request instanceof CallRequest) {
    162162                                        final CallRequest callRequest = (CallRequest) request;
    163                                         tree.call(path, access.getFramsClass().getParamEntry(callRequest.getProcedure(), ProcedureParam.class), callRequest.getArguments().toArray(), Object.class, new FutureHandler<Object>(responseCallback) {
     163                                        tree.call(path, getParam(access, callRequest.getProcedure(), ProcedureParam.class), callRequest.getArguments().toArray(), Object.class, new Future<Object>(responseCallback) {
    164164                                                @Override
    165                                                 protected void result(Object result) {
    166                                                         ListSink sink = new ListSink();
    167                                                         sink.print("Result:").breakLine();
    168                                                         sink.print("value:");
    169                                                         sink.print("[");
    170                                                         if (result != null) {
    171                                                                 sink.print(result);
     165                                                protected void result(final Object result) {
     166                                                        if (result == null) {
     167                                                                responseCallback.pass(new Response(true, ""));
     168                                                                return;
    172169                                                        }
    173                                                         sink.print("]");
    174 
    175                                                         responseCallback.pass(new Response(true, "", File.single(new File("", new ListSource(sink.getOut())))));
     170                                                        final Object wrapped = AccessOperations.wrapValueInResultIfPrimitive(result);
     171                                                        final File file = AccessOperations.convert(File.class, wrapped, tree.getRegistry());
     172                                                        responseCallback.pass(new Response(true, "", file));
     173
    176174                                                }
    177175                                        });
     
    184182                                                throw new FramsticksException().msg("info should be available");
    185183                                        }
    186                                         responseCallback.pass(new Response(true, null, File.single(new File(path.getTextual(), new ListSource(Savers.saveFramsClass(new ListSink(), framsClass).getOut())))));
     184                                        responseCallback.pass(new Response(true, null, new File(path.getTextual(), new ListSource(Savers.saveFramsClass(new ListSink(), framsClass).getOut()))));
    187185                                        return;
    188186                                }
     
    191189                                        RegisterRequest register = (RegisterRequest) request;
    192190
    193                                         cliObject.addListener(path, access.getFramsClass().getParamEntry(register.getEventName(), EventParam.class), usedPrefix, responseCallback);
     191                                        cliObject.addListener(path, getParam(access, register.getEventName(), EventParam.class), usedPrefix, responseCallback);
    194192                                        return;
    195193                                }
  • java/main/src/main/java/com/framsticks/hosting/Server.java

    r102 r105  
    55import org.apache.logging.log4j.LogManager;
    66
    7 import com.framsticks.core.Tree;
    87import com.framsticks.params.ParamFlags;
    98import com.framsticks.params.annotations.AutoAppendAnnotation;
    109import com.framsticks.params.annotations.FramsClassAnnotation;
    1110import com.framsticks.params.annotations.ParamAnnotation;
     11import com.framsticks.structure.Tree;
    1212import com.framsticks.util.FramsticksException;
    1313import com.framsticks.util.dispatching.AbstractJoinable;
  • java/main/src/main/java/com/framsticks/model/Part.java

    r90 r105  
    1212public class Part extends BasePart implements ModelComponent {
    1313
    14         @ParamAnnotation
    15         public double rx, ry, rz;
     14        @ParamAnnotation(id = "rx")
     15        public double rotationX;
    1616
     17        @ParamAnnotation(id = "ry")
     18        public double rotationY;
    1719
    18         public Point3d getRotation() { return new Point3d(rx, ry, rz); }
    19         public void setRotation(Point3d r) { rx = r.x; ry = r.y; rz = r.z; }
     20        @ParamAnnotation(id = "rz")
     21        public double rotationZ;
     22
     23        public Point3d getRotation() { return new Point3d(rotationX, rotationY, rotationZ); }
     24        public void setRotation(Point3d r) { rotationX = r.x; rotationY = r.y; rotationZ = r.z; }
    2025
    2126        @ParamAnnotation(id = "dn")
  • java/main/src/main/java/com/framsticks/model/f0/VisualHints.java

    r88 r105  
    88        /** don't draw class name label below the neuron. */
    99        public static final int DONT_SHOW_CLASS = 2;
    10        
     10
    1111        /** draw the neuron at the first part when attached to joint (default is in the middle). */
    1212        public static final int AT_FIRST_PART = 4;
    13        
     13
    1414        /** draw the neuron at the second part when attached to joint (default is in the middle). */
    1515        public static final int AT_SECOND_PART = 8;
    16        
     16
    1717        /** use effector color for this neuro unit. */
    1818        public static final int EFFECTOR_CLASS = 16;
    19        
     19
    2020        /** use receptor color for this neuro unit. */
    2121        public static final int RECEPTOR_CLASS = 32;
    22        
     22
    2323        /** The Constant V1_BEND_MUSCLE. */
    2424        public static final int V1_BEND_MUSCLE = 64;
    25        
     25
    2626        /** The Constant V1_ROT_MUSCLE. */
    2727        public static final int V1_ROT_MUSCLE = 128;
  • java/main/src/main/java/com/framsticks/params/Access.java

    r102 r105  
    1414 *         surname with my personal data)
    1515 */
    16 public interface Access {
     16public interface Access extends ParamCollection {
    1717
    18         Param getParam(int i);
     18        String getTypeId();
    1919
    20         Param getParam(String id);
     20        Object call(String id, Object... arguments);
    2121
    22         String getId();
    23 
    24         int getParamCount();
    25 
    26         Object call(String id, Object[] arguments);
    27 
    28         Object call(ProcedureParam param, Object[] arguments);
     22        Object call(ProcedureParam param, Object... arguments);
    2923
    3024        <T> T get(int i, Class<T> type);
     
    5751        Object createAccessee();
    5852
    59         Iterable<Param> getParams();
    60 
    6153        FramsClass getFramsClass();
    6254
  • java/main/src/main/java/com/framsticks/params/AccessOperations.java

    r103 r105  
    66import javax.annotation.Nullable;
    77
     8import org.apache.commons.lang3.ClassUtils;
    89import org.apache.logging.log4j.Logger;
    910import org.apache.logging.log4j.LogManager;
     
    1213import com.framsticks.params.types.ListParam;
    1314import com.framsticks.parsers.MultiParamLoader;
     15import com.framsticks.structure.messages.Result;
    1416import com.framsticks.util.FramsticksException;
    1517import com.framsticks.util.FramsticksUnsupportedOperationException;
     
    114116                                        first.set(false);
    115117                                        if (rootAccess != null) {
    116                                                 if (name.equals(rootAccess.getId())) {
     118                                                if (name.equals(rootAccess.getTypeId())) {
    117119                                                        needAdd.set(false);
    118120                                                        currentAccess.set(rootAccess);
     
    224226                if (access instanceof ObjectAccess) {
    225227                        ObjectAccess objectAccess = (ObjectAccess) access;
    226                         FramsClass framsClass = access.getFramsClass();
    227                         assert framsClass != null;
    228228                        boolean headerNeeded = true;
    229229                        // sink.print(framsClass.getId()).print(":").breakLine();
    230                         for (PrimitiveParam<?> p : filterInstanceof(framsClass.getParamEntries(), PrimitiveParam.class)) {
     230                        for (PrimitiveParam<?> p : filterInstanceof(access.getParams(), PrimitiveParam.class)) {
    231231
    232232                                Object value = objectAccess.get(p, Object.class);
     
    236236
    237237                                if (headerNeeded) {
    238                                         sink.print(framsClass.getId()).print(":").breakLine();
     238                                        sink.print(access.getTypeId()).print(":").breakLine();
    239239                                        headerNeeded = false;
    240240                                }
    241241
    242                                 sink.print(p.getId()).print(":");
    243                                 p.save(sink, value);
     242                                String stringValue = p.serialize(value);
     243
     244                                sink.print(p.getId()).print(":").print(stringValue);
     245                                // p.save(sink, stringValue);
    244246                                sink.breakLine();
    245247                        }
     
    414416        }
    415417
     418        public static Object wrapValueInResultIfPrimitive(Object object) {
     419                Class<?> javaClass = object.getClass();
     420                if (ClassUtils.isPrimitiveOrWrapper(javaClass)) {
     421                        return new Result(object);
     422                }
     423                if (javaClass.equals(String.class)) {
     424                        return new Result(object);
     425                }
     426                return object;
     427        }
    416428
    417429        /**
  • java/main/src/main/java/com/framsticks/params/ArrayListAccess.java

    r101 r105  
    4848
    4949        @Override
    50         public String getId() {
    51                 return "l " + elementAccess.getId();
     50        public String getTypeId() {
     51                return "l " + elementAccess.getTypeId();
    5252        }
    5353
  • java/main/src/main/java/com/framsticks/params/FramsClass.java

    r100 r105  
    33import com.framsticks.params.annotations.FramsClassAnnotation;
    44import com.framsticks.params.annotations.ParamAnnotation;
    5 import com.framsticks.util.FramsticksException;
    65import com.framsticks.util.lang.Containers;
    76import com.framsticks.util.lang.Strings;
     
    109import java.util.*;
    1110
    12 import javax.annotation.Nonnull;
    1311import javax.annotation.concurrent.Immutable;
    1412
     
    3028@Immutable
    3129@FramsClassAnnotation(id = "class", name = "class")
    32 public class FramsClass {
     30public class FramsClass implements ParamCollection {
    3331
    3432        private final static Logger log = LogManager.getLogger(FramsClass.class);
     
    5553
    5654        @ParamAnnotation(id = "props", name = "props")
    57         public List<Param> getParamEntries() {
     55        public List<Param> getParams() {
    5856                return Collections.unmodifiableList(paramList);
    5957        }
     
    135133        }
    136134
    137         public @Nonnull <T extends Param> T castedParam(@Nonnull final Param param, @Nonnull final Class<T> type, Object name) {
    138                 if (param == null) {
    139                         // return null;
    140                         throw new FramsticksException().msg("param is missing").arg("name", name).arg("in", this);
    141                 }
    142                 if (!type.isInstance(param)) {
    143                         // return null;
    144                         throw new FramsticksException().msg("wrong type of param").arg("actual", param.getClass()).arg("requested", type).arg("in", this);
    145                 }
    146                 return type.cast(param);
    147         }
    148 
    149         /**
    150          * Gets the param entry.
    151          *
    152          * @param i
    153          *            the offset of parameter
    154          * @return the param entry
    155          */
    156         public @Nonnull <T extends Param> T getParamEntry(final int i, @Nonnull final Class<T> type) {
    157                 return castedParam(getParam(i), type, i);
    158         }
    159 
    160         /**
    161          * Gets the param entry.
    162          *
    163          * @param id
    164          *            the getId of parameter
    165          * @return the param entry
    166          */
    167         public @Nonnull <T extends Param> T getParamEntry(@Nonnull final String id, @Nonnull final Class<T> type) {
    168                 return castedParam(getParam(id), type, id);
    169         }
    170 
    171135        public Param getParam(int i) {
    172136                if (i < 0 || i >= paramList.size()) {
  • java/main/src/main/java/com/framsticks/params/ListAccess.java

    r102 r105  
    1919        public ListAccess(Access elementAccess) {
    2020                this.elementAccess = elementAccess;
    21                 this.containedTypeName = elementAccess.getId();
     21                this.containedTypeName = elementAccess.getTypeId();
    2222                paramBuilder = elementAccess.buildParam(new ParamBuilder());
    2323        }
     
    5151
    5252        @Override
    53         public Object call(String id, Object[] arguments) {
     53        public Object call(String id, Object... arguments) {
    5454                throw new InvalidOperationException().msg("list access does not support calling methods").arg("id", id).arg("access", this);
    5555        }
    5656
    5757        @Override
    58         public Object call(ProcedureParam param, Object[] arguments) {
     58        public Object call(ProcedureParam param, Object... arguments) {
    5959                throw new InvalidOperationException().msg("list access does not support calling methods").arg("param", param).arg("access", this);
    6060        }
  • java/main/src/main/java/com/framsticks/params/MessageLogger.java

    r103 r105  
    11package com.framsticks.params;
    22
    3 import com.framsticks.core.Message;
     3import com.framsticks.structure.messages.Message;
    44
    55public class MessageLogger extends EventListeners<Message> {
  • java/main/src/main/java/com/framsticks/params/Param.java

    r102 r105  
    8585        }
    8686
    87         public boolean isNumeric() {
    88                 return false;
    89         }
    90 
    91         public abstract Class<?> getStorageType();
    92 
    9387        public boolean hasFlag(int flag) {
    9488                return (flags & flag) != 0;
  • java/main/src/main/java/com/framsticks/params/ParamCandidate.java

    r102 r105  
    7979        protected final OneTime<Method> adder = new OneTime<>("adder");
    8080        protected final OneTime<Method> remover = new OneTime<>("remover");
     81        protected final OneTime<Class<? extends Param>> paramType = new OneTime<>("paramType");
     82
    8183        protected int flags = 0;
    8284
     
    262264        }
    263265
     266        // public static <T extends Param> boolean isParamAnnorationOfTypeOrUnspecified(ParamAnnotation paramAnnotation, Class<T> paramType) {
     267        //      return paramAnnotation.paramType().equals(Param.class) || paramAnnotation.paramType().equals(paramType);
     268        // }
     269
     270        // public static <T extends Param> boolean isParamAnnorationOfType(ParamAnnotation paramAnnotation, Class<T> paramType) {
     271        //      return paramAnnotation.paramType().equals(paramType);
     272        // }
     273
    264274        void add(ParamAnnotation paramAnnotation, Member member, String name) {
    265275                this.name.set(name);
    266276                annotations.add(paramAnnotation);
    267277                flags |= paramAnnotation.flags();
     278                if (!paramAnnotation.paramType().equals(Param.class)) {
     279                        paramType.set(paramAnnotation.paramType());
     280                }
    268281                if (member instanceof Field) {
    269282                        field.set((Field) member);
     
    273286                if (member instanceof Method) {
    274287                        Method m = (Method) member;
    275                         if (!paramAnnotation.paramType().equals(Param.class)) {
    276                                 if (paramAnnotation.paramType().equals(ProcedureParam.class)) {
    277                                         caller.set(m);
    278                                         return;
    279                                 }
    280                                 throw new ConstructionException().msg("explicit set of paramType different than ProcedureParam is not yet supported").arg("name", name).arg("method", m).arg("in", this);
     288                        if (paramAnnotation.paramType().equals(ProcedureParam.class)) {
     289                                caller.set(m);
     290                                return;
    281291                        }
    282292                        Type[] ps = m.getGenericParameterTypes();
     
    392402        protected static final Map<Class<?>, Set> setsCache = Collections.synchronizedMap(new IdentityHashMap<Class<?>, Set>());
    393403
    394         public static Set getAllCandidates(Class<?> javaClass) throws ConstructionException {
     404        public static Set getAllCandidates(final Class<?> javaClass) throws ConstructionException {
    395405                Set result = setsCache.get(javaClass);
    396406                if (result != null) {
     
    399409
    400410                List<Class<?>> javaClasses = new LinkedList<>();
    401                 while (javaClass != null) {
    402                         javaClasses.add(0, javaClass);
    403                         javaClass = javaClass.getSuperclass();
     411                Class<?> jc = javaClass;
     412                while (jc != null) {
     413                        javaClasses.add(0, jc);
     414                        jc = jc.getSuperclass();
    404415                }
    405416
     
    473484                //      throw new ConstructionException().msg("void is not a valid type");
    474485                // }
     486
    475487
    476488                if (type instanceof ParameterizedType) {
     
    562574        }
    563575
    564 
    565576        public ParamBuilder induceParamType(ParamBuilder builder) {
    566577                Method method = getCaller();
    567578                if (method == null) {
     579                        if (paramType.has()) {
     580                                return builder.type(paramType.get());
     581                        }
    568582                        return induceParamType(builder, getType());
    569583                }
  • java/main/src/main/java/com/framsticks/params/ParamsUtil.java

    r101 r105  
    33import java.util.ArrayList;
    44import java.util.List;
     5import java.util.Map;
     6
     7import javax.annotation.Nonnull;
    58
    69import com.framsticks.util.FramsticksException;
     
    2932                        Object object = a.getSelected();
    3033                        if (!type.isInstance(object)) {
    31                                 throw new FramsticksException().msg("extracted object is of invalid type").arg("object", object).arg("desired", type).arg("actual", object.getClass()).arg("framsclass", a.getFramsClass());
     34                                throw new FramsticksException().msg("extracted object is of invalid type").arg("object", object).arg("desired", type).arg("actual", object.getClass()).arg("access", a);
    3235                        }
    3336                        result.add(type.cast(object));
     
    8891        }
    8992
     93        public static Object[] arguments(Object... args) {
     94                return args;
     95        }
     96
     97        public static Param getParam(ParamCollection collection, int i) {
     98                return collection.getParam(i);
     99        }
     100
     101        public static Param getParam(ParamCollection collection, String id) {
     102                return collection.getParam(id);
     103        }
     104
     105        public static @Nonnull <T extends Param> T castedParam(ParamCollection collection, @Nonnull final Param param, @Nonnull final Class<T> type, Object name) {
     106                if (param == null) {
     107                        // return null;
     108                        throw new FramsticksException().msg("param is missing").arg("name", name).arg("in", collection);
     109                }
     110                if (!type.isInstance(param)) {
     111                        // return null;
     112                        throw new FramsticksException().msg("wrong type of param").arg("actual", param.getClass()).arg("requested", type).arg("in", collection);
     113                }
     114                return type.cast(param);
     115        }
     116
     117        /**
     118         * Gets the param entry.
     119         *
     120         * @param i
     121         *            the offset of parameter
     122         * @return the param entry
     123         */
     124        public static @Nonnull <T extends Param> T getParam(ParamCollection collection, final int i, @Nonnull final Class<T> type) {
     125                return castedParam(collection, collection.getParam(i), type, i);
     126        }
     127
     128        /**
     129         * Gets the param entry.
     130         *
     131         * @param id
     132         *            the getId of parameter
     133         * @return the param entry
     134         */
     135        public static @Nonnull <T extends Param> T getParam(ParamCollection collection, @Nonnull final String id, @Nonnull final Class<T> type) {
     136                return castedParam(collection, collection.getParam(id), type, id);
     137        }
     138
     139        public static final String SERIALIZED = "@Serialized:";
     140
     141        public static class SerializationContext {
     142                protected final StringBuilder builder = new StringBuilder();
     143                protected final ArrayList<Object> objects = new ArrayList<>();
     144
     145                protected void appendString(String value) {
     146                        builder.append('"').append(value).append('"');
     147                }
     148
     149                protected boolean serializeInternal(Object value) {
     150                        if (value == null) {
     151                                builder.append("null");
     152                                return true;
     153                        }
     154                        /** indexOf is not used here, because it uses equals() internally, which results in StackOverflowError */
     155                        Class<?> type = value.getClass();
     156                        if (type.equals(String.class)) {
     157                                String stringValue = (String) value;
     158                                appendString(stringValue);
     159                                return stringValue.startsWith(SERIALIZED);
     160                        }
     161                        if (type.equals(Boolean.class)) {
     162                                builder.append(((Boolean) value) ? "1" : "0");
     163                                return false;
     164                        }
     165                        if (type.equals(Double.class) || type.equals(Integer.class)) {
     166                                builder.append(value.toString());
     167                                return false;
     168                        }
     169
     170                        for (int i = 0; i < objects.size(); ++i) {
     171                                if (objects.get(i) == value) {
     172                                        builder.append("^").append(i);
     173                                        return true;
     174                                }
     175                        }
     176
     177                        if (List.class.isAssignableFrom(type)) {
     178                                objects.add(value);
     179                                List<?> list = (List<?>) value;
     180                                boolean placeComma = false;
     181                                builder.append("[");
     182                                for (Object element : list) {
     183                                        if (placeComma) {
     184                                                builder.append(",");
     185                                        } else {
     186                                                placeComma = true;
     187                                        }
     188                                        serializeInternal(element);
     189                                }
     190                                builder.append("]");
     191                                return true;
     192                        }
     193                        if (Map.class.isAssignableFrom(type)) {
     194                                objects.add(value);
     195                                Map<?, ?> map = (Map<?, ?>) value;
     196                                boolean placeComma = false;
     197                                builder.append("{");
     198                                for (Map.Entry<?, ?> entry : map.entrySet()) {
     199                                        if (placeComma) {
     200                                                builder.append(",");
     201                                        } else {
     202                                                placeComma = true;
     203                                        }
     204                                        if (!(entry.getKey() instanceof String)) {
     205                                                throw new FramsticksException().msg("non string keys are not allowed in serialization").arg("key type", entry.getKey().getClass());
     206                                        }
     207                                        appendString((String) entry.getKey());
     208                                        builder.append(":");
     209                                        serializeInternal(entry.getValue());
     210                                }
     211                                builder.append("}");
     212                                return true;
     213                        }
     214                        throw new FramsticksException().msg("invalid type for serialization").arg("type", type);
     215                }
     216
     217                public String serialize(Object value) {
     218                        if (value instanceof String) {
     219                                String stringValue = (String) value;
     220                                if (!stringValue.startsWith(SERIALIZED)) {
     221                                        return stringValue;
     222                                }
     223                        }
     224                        boolean complex = serializeInternal(value);
     225                        return (complex ? SERIALIZED : "") + builder.toString();
     226                }
     227
     228        }
     229
     230
     231        public static <T> String serialize(T value) {
     232                return new SerializationContext().serialize(value);
     233        }
     234
     235        public static <T> T deserialize(String value, Class<T> type) {
     236                return null;
     237        }
     238
    90239}
  • java/main/src/main/java/com/framsticks/params/PrimitiveParam.java

    r102 r105  
    33import com.framsticks.util.FramsticksException;
    44import com.framsticks.util.Misc;
     5import com.framsticks.util.lang.Casting;
    56import com.framsticks.util.lang.Numbers;
     7import com.framsticks.util.lang.Strings;
    68
    79import javax.annotation.concurrent.Immutable;
     
    3335        }
    3436
    35         public void save(Sink sink, Object value) {
    36                 sink.print(value);
    37         }
     37        // public void save(Sink sink, Object value) {
     38        //      sink.print(value);
     39        // }
    3840
    3941        protected <T> T tryCastAndReturn(Object value, Class<T> type) {
     
    9799        }
    98100
     101        @Override
     102        public <T> String serialize(T value) {
     103                return Strings.toStringNullProof(value);
     104        }
     105
     106        @Override
     107        public <T> T deserialize(String text, T currentValue, Class<T> type) {
     108                try {
     109                        return Casting.nullOrThrowCast(type, reassign(text, currentValue).getValue());
     110                } catch (CastFailure e) {
     111                        return null;
     112                }
     113        }
    99114}
  • java/main/src/main/java/com/framsticks/params/PropertiesAccess.java

    r101 r105  
    11package com.framsticks.params;
    2 
    3 import java.util.HashMap;
    4 import java.util.Map;
    52
    63import com.framsticks.params.types.EventParam;
    74import com.framsticks.params.types.ProcedureParam;
    8 
    95
    106/**
     
    1814public class PropertiesAccess extends SimpleAbstractAccess {
    1915
    20         public Map<String, Object> properties;
     16        protected PropertiesObject properties;
    2117
    2218        @Override
    23         public Map<String, Object> createAccessee() {
    24                 return PropertiesAccess.createPropertiesMap();
    25         }
    26 
    27         public static Map<String, Object> createPropertiesMap() {
    28                 return new HashMap<String, Object>();
     19        public PropertiesObject createAccessee() {
     20                return new PropertiesObject(framsClass.getId());
    2921        }
    3022
     
    4335                assert properties != null;
    4436                assert param != null;
    45                 Object object = properties.get(param.getId());
    46                 if (object != null) {
    47                         try {
    48                                 return type.cast(object);
    49                         } catch (ClassCastException e) {
    50                                 throw (ClassCastException) new ClassCastException("property " + param + " type is " + object.getClass().getName() + ", not " + type.getName()).initCause(e);
    51                         }
     37                Object object = properties.get(param.getId(), Object.class);
     38                if (object == null) {
     39                        return null;
    5240                }
    5341                try {
    54                         return param.getDef(type);
     42                        return type.cast(object);
    5543                } catch (ClassCastException e) {
    56                         throw (ClassCastException) new ClassCastException("default value of property " + param + " is not of type " + type.getName()).initCause(e);
     44                        throw (ClassCastException) new ClassCastException("property " + param + " type is " + object.getClass().getName() + ", not " + type.getName()).initCause(e);
    5745                }
    58 
    5946        }
    6047
    6148        @Override
    6249        protected <T> void internalSet(ValueParam param, T value) {
    63                 properties.put(param.getId(), value);
     50                properties.set(param.getId(), value);
    6451        }
    6552
     
    7360         *            the properties with parameters values
    7461         */
    75         @SuppressWarnings("unchecked")
    7662        @Override
    7763        public PropertiesAccess select(Object object) {
    78                 properties = ParamsUtil.selectObjectForAccess(this, object, Map.class);
     64                properties = ParamsUtil.selectObjectForAccess(this, object, PropertiesObject.class);
    7965                return this;
    8066        }
     
    8268        /** covariant */
    8369        @Override
    84         public Map<String, Object> getSelected() {
     70        public PropertiesObject getSelected() {
    8571                return properties;
    8672        }
     
    9783
    9884        @Override
    99         public Object call(String id, Object[] arguments) {
     85        public Object call(String id, Object... arguments) {
    10086                throw new InvalidOperationException().msg("properties access does not support calling methods").arg("id", id);
    10187        }
    10288
    10389        @Override
    104         public Object call(ProcedureParam param, Object[] arguments) {
     90        public Object call(ProcedureParam param, Object... arguments) {
    10591                throw new InvalidOperationException().msg("properties access does not support calling methods").arg("param", param);
    10692        }
  • java/main/src/main/java/com/framsticks/params/ReflectionAccess.java

    r101 r105  
    131131
    132132        @Override
    133         public Object call(String id, Object[] arguments) {
     133        public Object call(String id, Object... arguments) {
    134134                try {
    135135                        try {
     
    151151
    152152        @Override
    153         public Object call(ProcedureParam param, Object[] arguments) {
     153        public Object call(ProcedureParam param, Object... arguments) {
    154154                return call(param.getId(), arguments);
    155155        }
     
    162162
    163163                try {
    164                         for (ValueParam p : filterInstanceof(framsClass.getParamEntries(), ValueParam.class)) {
     164                        for (ValueParam p : filterInstanceof(framsClass.getParams(), ValueParam.class)) {
    165165                                setValue(p, p.getDef(Object.class));
    166166                        }
  • java/main/src/main/java/com/framsticks/params/ReflectionAccessBackend.java

    r101 r105  
    8181
    8282                try {
    83                         for (final ProcedureParam pp : filterInstanceof(framsClass.getParamEntries(), ProcedureParam.class)) {
     83                        for (final ProcedureParam pp : filterInstanceof(framsClass.getParams(), ProcedureParam.class)) {
    8484                                if (!candidates.containsKey(pp.getId())) {
    8585                                        log.trace("java class does implement method {}", pp);
     
    9999                        }
    100100
    101                         for (final EventParam ep : filterInstanceof(framsClass.getParamEntries(), EventParam.class)) {
     101                        for (final EventParam ep : filterInstanceof(framsClass.getParams(), EventParam.class)) {
    102102                                if (!candidates.containsKey(ep.getId())) {
    103103                                        log.trace("java class does not implement the event param {}", ep);
     
    125125                        }
    126126
    127                         for (final ValueParam vp : filterInstanceof(framsClass.getParamEntries(), ValueParam.class)) {
     127                        for (final ValueParam vp : filterInstanceof(framsClass.getParams(), ValueParam.class)) {
    128128                                if (!candidates.containsKey(vp.getId())) {
    129129                                        throw new ConstructionException().msg("missing candidate for param").arg("param", vp);
     
    228228                }
    229229                if (!a.isPrimitive()) {
    230                         return a.equals(b);
     230                        return b.isAssignableFrom(a);//equals(b);
    231231                }
    232232
  • java/main/src/main/java/com/framsticks/params/SimpleAbstractAccess.java

    r102 r105  
    11package com.framsticks.params;
    2 
    3 
    4 
    52
    63import com.framsticks.params.types.ObjectParam;
     
    3633
    3734        @Override
    38         public String getId() {
     35        public String getTypeId() {
    3936                return framsClass.getId();
    4037        }
     
    6259        @Override
    6360        public <T> T get(int i, Class<T> type) {
    64                 return get(framsClass.getParamEntry(i, ValueParam.class), type);
     61                return get(ParamsUtil.getParam(framsClass, i, ValueParam.class), type);
    6562        }
    6663
    6764        @Override
    6865        public <T> T get(String id, Class<T> type) {
    69                 return get(framsClass.getParamEntry(id, ValueParam.class), type);
     66                return get(ParamsUtil.getParam(framsClass, id, ValueParam.class), type);
    7067        }
    7168
    7269        @Override
    7370        public <T> int set(int i, T value) {
    74                 return set(framsClass.getParamEntry(i, ValueParam.class), value);
     71                return set(ParamsUtil.getParam(framsClass, i, ValueParam.class), value);
    7572        }
    7673
    7774        @Override
    7875        public <T> int set(String id, T value) {
    79                 return set(framsClass.getParamEntry(id, ValueParam.class), value);
     76                return set(ParamsUtil.getParam(framsClass, id, ValueParam.class), value);
    8077        }
    8178
     
    107104        @Override
    108105        public Iterable<Param> getParams() {
    109                 return framsClass.getParamEntries();
     106                return framsClass.getParams();
    110107        }
    111108
     
    122119        @Override
    123120        public ParamBuilder buildParam(ParamBuilder builder) {
    124                 return builder.name(getId()).type(ObjectParam.class).containedTypeName(getId());
     121                return builder.name(getTypeId()).type(ObjectParam.class).containedTypeName(getTypeId());
    125122        }
    126123
  • java/main/src/main/java/com/framsticks/params/SimplePrimitive.java

    r103 r105  
    11package com.framsticks.params;
    22
    3 import com.framsticks.core.ValueChange;
     3import com.framsticks.structure.messages.ValueChange;
    44import com.framsticks.util.lang.Strings;
    55
  • java/main/src/main/java/com/framsticks/params/SimpleUniqueList.java

    r103 r105  
    55import java.util.Map;
    66
    7 import com.framsticks.core.ListChange;
     7import com.framsticks.structure.messages.ListChange;
    88
    99public class SimpleUniqueList<T extends UniqueObject> implements Iterable<T> {
  • java/main/src/main/java/com/framsticks/params/UniqueListAccess.java

    r103 r105  
    140140
    141141        @Override
    142         public String getId() {
    143                 return "l " + elementAccess.getId() + " " + uidName;
     142        public String getTypeId() {
     143                return "l " + elementAccess.getTypeId() + " " + uidName;
    144144        }
    145145
  • java/main/src/main/java/com/framsticks/params/ValueParam.java

    r87 r105  
    11package com.framsticks.params;
    2 
    32
    43import javax.annotation.concurrent.Immutable;
     
    2322        public abstract <T> T getDef(Class<T> type);
    2423
     24        public abstract Class<?> getStorageType();
     25
     26        public boolean isNumeric() {
     27                return false;
     28        }
     29
     30        public abstract <T> String serialize(T value);
     31
     32        public abstract <T> T deserialize(String text, T currentValue, Class<T> type);
     33
    2534}
  • java/main/src/main/java/com/framsticks/params/types/ArrayListParam.java

    r100 r105  
    4949                        // List<?> list;
    5050                        // if (oldValue == null) {
    51                         //      list = new ArrayList<Object>();
     51                        //      list = new ArrayList<Object>();
    5252                        // } else {
    53                         //      list = Casting.tryCast(List.class, oldValue);
    54                         //      if (list == null) {
    55                         //              throw new CastFailure();
    56                         //      }
     53                        //      list = Casting.tryCast(List.class, oldValue);
     54                        //      if (list == null) {
     55                        //              throw new CastFailure();
     56                        //      }
    5757                        // }
    5858                        // Containers.resizeList(list, size);
     
    6161                }
    6262                // if (oldValue != null) {
    63                 //      return new ReassignResult<List<?>>(Casting.throwCast(List.class, oldValue));
     63                //      return new ReassignResult<List<?>>(Casting.throwCast(List.class, oldValue));
    6464                // }
    6565                return new ReassignResult<List<?>>(Casting.throwCast(List.class, newValue));
     
    7070                return "l " + getContainedTypeName();
    7171        }
     72
     73                // return (value == null) ? "0" : Integer.toString(Casting.throwCast(List.class, value).size());
    7274}
  • java/main/src/main/java/com/framsticks/params/types/BooleanParam.java

    r102 r105  
    77import com.framsticks.params.PrimitiveParam;
    88import com.framsticks.params.ReassignResult;
    9 import com.framsticks.params.Sink;
    109import com.framsticks.util.lang.Numbers;
    1110
     
    5857
    5958        @Override
    60         public void save(Sink sink, Object value) {
     59        public String serialize(Object value) {
    6160                assert value instanceof Boolean;
    62                 sink.print(((Boolean)value) ? "1" : "0");
     61                return ((Boolean)value) ? "1" : "0";
    6362        }
    6463}
  • java/main/src/main/java/com/framsticks/params/types/EventParam.java

    r99 r105  
    2424
    2525        @Override
    26         public Class<?> getStorageType() {
    27                 return Void.TYPE;
    28         }
    29 
    30         @Override
    3126        public String getFramsTypeName() {
    3227                return eventArgumentTypeName != null ? "e " + eventArgumentTypeName : "e";
  • java/main/src/main/java/com/framsticks/params/types/ListParam.java

    r87 r105  
    1616        }
    1717
     18        @Override
     19        public <T> String serialize(T value) {
     20                return null;
     21        }
     22
     23        @Override
     24        public <T> T deserialize(String text, T currentValue, Class<T> type) {
     25                return null;
     26        }
    1827}
  • java/main/src/main/java/com/framsticks/params/types/ObjectParam.java

    r100 r105  
    55import com.framsticks.params.CompositeParam;
    66import com.framsticks.params.ParamBuilder;
     7import com.framsticks.params.ParamsUtil;
    78import com.framsticks.params.ReassignResult;
    89
     
    5051        }
    5152
     53        @Override
     54        public <T> String serialize(T value) {
     55                return ParamsUtil.serialize(value);
     56        }
     57
     58        @Override
     59        public <T> T deserialize(String text, T currentValue, Class<T> type) {
     60                return ParamsUtil.deserialize(text, type);
     61        }
    5262
    5363}
  • java/main/src/main/java/com/framsticks/params/types/ProcedureParam.java

    r99 r105  
    5252        }
    5353
    54         @Override
    55         public Class<?> getStorageType() {
    56                 return Void.TYPE;
    57         }
    58 
    5954        public @Nullable ValueParam getResultType() {
    6055                return resultType;
  • java/main/src/main/java/com/framsticks/params/types/StringParam.java

    r102 r105  
    55import com.framsticks.params.PrimitiveParam;
    66import com.framsticks.params.ReassignResult;
    7 import com.framsticks.params.Sink;
    87
    98import javax.annotation.concurrent.Immutable;
     
    4948
    5049        @Override
    51         public void save(Sink sink, Object value) {
     50        public String serialize(Object value) {
    5251                assert value instanceof String;
    53                 String s = (String)value;
    54                 sink.print((s.contains(SEPARATOR) ? (s = "~" + SEPARATOR + s + "~") : s));
     52                String s = (String) value;
     53                return (s.contains(SEPARATOR) ? (s = "~" + SEPARATOR + s + "~") : s);
    5554        }
    5655}
  • java/main/src/main/java/com/framsticks/params/types/UniversalParam.java

    r87 r105  
    33import com.framsticks.params.CastFailure;
    44import com.framsticks.params.ParamBuilder;
     5import com.framsticks.params.ParamsUtil;
    56import com.framsticks.params.PrimitiveParam;
    67import com.framsticks.params.ReassignResult;
     
    3738        }
    3839
     40        @Override
     41        public <T> String serialize(T value) {
     42                return ParamsUtil.serialize(value);
     43        }
     44
     45        @Override
     46        public <T> T deserialize(String text, T currentValue, Class<T> type) {
     47                return ParamsUtil.deserialize(text, type);
     48        }
     49
    3950}
  • java/main/src/main/java/com/framsticks/parsers/AccessStash.java

    r103 r105  
    1818        public AccessStash add(Access access) {
    1919                /**TODO: by id or by name? rather by id, because from file is always lowercase*/
    20                 accesses.put(access.getId(), access);
     20                accesses.put(access.getTypeId(), access);
    2121                return this;
    2222        }
  • java/main/src/main/java/com/framsticks/parsers/F0Parser.java

    r101 r105  
    233233                                                        throw (new Exception("tried to set a read-only attribute \""
    234234                                                                + currentParam.getId()
    235                                                                 + "\" in class \"" + access.getId() + "\""));
     235                                                                + "\" in class \"" + access.getTypeId() + "\""));
    236236                                                }
    237237                                        }
     
    258258                                + param.getId()
    259259                                + "\" in class \""
    260                                 + access.getId()
     260                                + access.getTypeId()
    261261                                + "\" to value which exceeds " + name + " ("
    262262                                + value
  • java/main/src/main/java/com/framsticks/parsers/F0Writer.java

    r102 r105  
    3838                }
    3939                StringBuilder line = new StringBuilder();
    40                 line.append(access.getId()).append(":");
     40                line.append(access.getTypeId()).append(":");
    4141                boolean placeComma = false;
    4242                boolean contiguous = true;
  • java/main/src/main/java/com/framsticks/parsers/Savers.java

    r102 r105  
    1919
    2020                save(framsClassAccess, sink);
    21                 for (Param p : framsClass.getParamEntries()) {
     21                for (Param p : framsClass.getParams()) {
    2222                        save(paramAccess.select(p), sink);
    2323                }
  • java/main/src/main/java/com/framsticks/parsers/XmlLoader.java

    r102 r105  
    2727import com.framsticks.util.FramsticksException;
    2828import com.framsticks.util.lang.Strings;
     29import static com.framsticks.params.ParamsUtil.getParam;
    2930
    3031public class XmlLoader {
     
    110111                for (int i = 0; i < attributes.getLength(); ++i) {
    111112                        Node attributeNode = attributes.item(i);
    112                         PrimitiveParam<?> param = access.getFramsClass().getParamEntry(mangleAttribute(attributeNode.getNodeName()), PrimitiveParam.class);
     113                        PrimitiveParam<?> param = getParam(access, mangleAttribute(attributeNode.getNodeName()), PrimitiveParam.class);
    113114                        if (param.hasFlag(ParamFlags.READONLY)) {
    114115                                throw new FramsticksException().msg("cannot configure readonly param").arg("param", param).arg("in", access);
  • java/main/src/main/java/com/framsticks/remote/RecursiveFetcher.java

    r100 r105  
    11package com.framsticks.remote;
    22
    3 import static com.framsticks.core.TreeOperations.*;
    43
    5 import com.framsticks.core.Node;
    6 import com.framsticks.core.Path;
    74import com.framsticks.params.Access;
    85import com.framsticks.params.CompositeParam;
    9 import com.framsticks.params.FramsClass;
    10 import com.framsticks.core.Tree;
     6import com.framsticks.structure.Node;
     7import com.framsticks.structure.Path;
     8import com.framsticks.structure.Tree;
     9import com.framsticks.util.dispatching.FutureHandler;
    1110import com.framsticks.util.dispatching.Future;
    12 import com.framsticks.util.dispatching.FutureHandler;
    1311import com.framsticks.util.dispatching.ThrowExceptionHandler;
    1412import com.framsticks.util.FramsticksException;
     
    1715import org.apache.logging.log4j.Logger;
    1816import org.apache.logging.log4j.LogManager;
     17
     18import static com.framsticks.structure.TreeOperations.*;
    1919import static com.framsticks.util.lang.Containers.filterInstanceof;
    2020import com.framsticks.util.dispatching.RunAt;
     
    2828
    2929        protected final Tree tree;
    30         protected final Future<Void> future;
     30        protected final FutureHandler<Void> future;
    3131        protected int dispatched;
    3232        protected final Stopwatch stopwatch = new Stopwatch();
    3333
    34         public RecursiveFetcher(Tree tree, final Path path, Future<Void> future) {
     34        public RecursiveFetcher(Tree tree, final Path path, FutureHandler<Void> future) {
    3535                this.tree = tree;
    3636                this.future = future;
     
    5151                } else {
    5252                        Access access = bindAccess(path);
    53                         FramsClass framsClass = access.getFramsClass();
    54                         assert framsClass != null;
    5553                        for (CompositeParam p : filterInstanceof(access.getParams(), CompositeParam.class)) {
    5654                                Object child = access.get(p, Object.class);
     
    6765                                }
    6866                                ++dispatched;
    69                                 tree.get(childPath, new FutureHandler<Path>(Logging.logger(log, "resolve", RecursiveFetcher.this)) {
     67                                tree.get(childPath, new Future<Path>(Logging.logger(log, "resolve", RecursiveFetcher.this)) {
    7068                                        @Override
    7169                                        protected void result(Path result) {
     
    8381
    8482        protected void fetch(final Path path) {
    85                 tree.get(path, new Future<Path>() {
     83                tree.get(path, new FutureHandler<Path>() {
    8684
    8785                        @Override
  • java/main/src/main/java/com/framsticks/remote/RemoteTree.java

    r103 r105  
    66import com.framsticks.communication.queries.InfoRequest;
    77import com.framsticks.communication.queries.SetRequest;
    8 import com.framsticks.core.AbstractTree;
    9 import com.framsticks.core.ListChange;
    10 import com.framsticks.core.Path;
    11 import com.framsticks.core.ValueChange;
    128import com.framsticks.params.*;
    139import com.framsticks.params.EventListener;
     
    1713import com.framsticks.params.types.ProcedureParam;
    1814import com.framsticks.parsers.Loaders;
     15import com.framsticks.structure.AbstractTree;
     16import com.framsticks.structure.Path;
     17import com.framsticks.structure.messages.ListChange;
     18import com.framsticks.structure.messages.ValueChange;
    1919import com.framsticks.util.*;
    2020import com.framsticks.util.dispatching.AtOnceDispatcher;
    2121import com.framsticks.util.dispatching.Dispatching;
    2222import com.framsticks.util.dispatching.DispatchingFuture;
    23 import com.framsticks.util.dispatching.ExceptionResultHandler;
     23import com.framsticks.util.dispatching.FutureHandler;
    2424import com.framsticks.util.dispatching.Future;
    25 import com.framsticks.util.dispatching.FutureHandler;
    2625import com.framsticks.util.dispatching.Joinable;
    2726import com.framsticks.util.dispatching.JoinableParent;
     
    2928import com.framsticks.util.dispatching.ThrowExceptionHandler;
    3029import com.framsticks.util.dispatching.RunAt;
    31 import static com.framsticks.core.TreeOperations.*;
     30
     31import static com.framsticks.structure.TreeOperations.*;
    3232
    3333import java.util.*;
     
    8080        }
    8181
    82         protected ExceptionResultHandler pathRemoveHandler(final Path path, final ExceptionResultHandler handler) {
    83                 return new ExceptionResultHandler() {
     82        protected ExceptionHandler pathRemoveHandler(final Path path, final ExceptionHandler handler) {
     83                return new ExceptionHandler() {
    8484
    8585                        @Override
     
    114114        // }
    115115
    116         protected final Map<String, Set<Future<FramsClass>>> infoRequests = new HashMap<String, Set<Future<FramsClass>>>();
     116        protected final Map<String, Set<FutureHandler<FramsClass>>> infoRequests = new HashMap<String, Set<FutureHandler<FramsClass>>>();
    117117
    118118
     
    124124         * */
    125125        @Override
    126         public void info(final Path path, final Future<FramsClass> future) {
     126        public void info(final Path path, final FutureHandler<FramsClass> future) {
    127127
    128128                final String name = path.getTop().getParam().getContainedTypeName();
     
    134134
    135135                log.debug("issuing info request for {}", name);
    136                 final Set<Future<FramsClass>> futures = new HashSet<Future<FramsClass>>();
     136                final Set<FutureHandler<FramsClass>> futures = new HashSet<FutureHandler<FramsClass>>();
    137137                futures.add(future);
    138138                infoRequests.put(name, futures);
    139139
    140                 final Future<FramsClass> compositeFuture = DispatchingFuture.create(this, new Future<FramsClass>() {
     140                final FutureHandler<FramsClass> compositeFuture = DispatchingFuture.create(this, new FutureHandler<FramsClass>() {
    141141
    142142                        @Override
     
    144144                                assert isActive();
    145145                                infoRequests.remove(name);
    146                                 for (Future<FramsClass> f : futures) {
     146                                for (FutureHandler<FramsClass> f : futures) {
    147147                                        f.handle(exception);
    148148                                }
     
    154154                                putInfoIntoCache(framsClass);
    155155                                infoRequests.remove(name);
    156                                 for (Future<FramsClass> f : futures) {
     156                                for (FutureHandler<FramsClass> f : futures) {
    157157                                        f.pass(framsClass);
    158158                                }
     
    183183
    184184        @Override
    185         public void get(final Path path, final Future<Path> future) {
    186                 assert isActive();
    187                 final ExceptionResultHandler remover = pathRemoveHandler(path, future);
     185        public void get(final Path path, final FutureHandler<Path> future) {
     186                assert isActive();
     187                final ExceptionHandler remover = pathRemoveHandler(path, future);
    188188
    189189                log.trace("fetching values for {}", path);
    190                 findInfo(path, new FutureHandler<FramsClass>(remover) {
     190                findInfo(path, new Future<FramsClass>(remover) {
    191191                        @Override
    192192                        protected void result(FramsClass result) {
     
    204204
    205205        @Override
    206         public void set(final Path path, final PrimitiveParam<?> param, final Object value, final Future<Integer> future) {
     206        public void set(final Path path, final PrimitiveParam<?> param, final Object value, final FutureHandler<Integer> future) {
    207207                assert isActive();
    208208                final Integer flag = bindAccess(path).set(param, value);
     
    267267
    268268        @Override
    269         public <R> void call(@Nonnull final Path path, @Nonnull final ProcedureParam procedure, @Nonnull Object[] arguments, final Class<R> resultType, final Future<R> future) {
     269        public <R> void call(@Nonnull final Path path, @Nonnull final ProcedureParam procedure, @Nonnull Object[] arguments, final Class<R> resultType, final FutureHandler<R> future) {
    270270                assert isActive();
    271271                assert path.isResolved();
     
    294294        protected final Map<EventListener<?>, EventListener<File>> proxyListeners = new IdentityHashMap<>();
    295295
    296         public <A> void addListener(Path path, EventParam param, final EventListener<A> listener, final Class<A> argumentType, final Future<Void> future) {
     296        public <A> void addListener(Path path, EventParam param, final EventListener<A> listener, final Class<A> argumentType, final FutureHandler<Void> future) {
    297297                assert isActive();
    298298                assert path.isResolved();
     
    322322        }
    323323
    324         public void removeListener(Path path, EventParam param, EventListener<?> listener, Future<Void> future) {
     324        public void removeListener(Path path, EventParam param, EventListener<?> listener, FutureHandler<Void> future) {
    325325                assert isActive();
    326326                EventListener<File> proxyListener = proxyListeners.get(listener);
  • java/main/src/main/java/com/framsticks/running/ExternalProcess.java

    r103 r105  
    1414import org.apache.logging.log4j.LogManager;
    1515
    16 import com.framsticks.core.ValueChange;
    1716import com.framsticks.params.EventListener;
    1817import com.framsticks.params.EventListeners;
     
    2120import com.framsticks.params.annotations.FramsClassAnnotation;
    2221import com.framsticks.params.annotations.ParamAnnotation;
     22import com.framsticks.structure.messages.ValueChange;
    2323import com.framsticks.util.FramsticksException;
    2424import com.framsticks.util.dispatching.AbstractJoinable;
  • java/main/src/main/java/com/framsticks/running/LoggingOutputListener.java

    r101 r105  
    44import org.apache.logging.log4j.LogManager;
    55
    6 import com.framsticks.core.ValueChange;
    76import com.framsticks.params.EventListener;
    87import com.framsticks.params.annotations.FramsClassAnnotation;
     8import com.framsticks.structure.messages.ValueChange;
    99
    1010@FramsClassAnnotation
  • java/main/src/main/java/com/framsticks/test/PrimeExperiment.java

    r103 r105  
    88import org.apache.logging.log4j.LogManager;
    99
    10 import com.framsticks.core.ValueChange;
    1110import com.framsticks.experiment.Experiment;
    1211import com.framsticks.experiment.WorkPackageLogic;
     
    1514import com.framsticks.params.annotations.FramsClassAnnotation;
    1615import com.framsticks.params.annotations.ParamAnnotation;
     16import com.framsticks.params.types.ProcedureParam;
     17import com.framsticks.structure.messages.ValueChange;
    1718import com.framsticks.test.prime.ExpParams;
    1819import com.framsticks.test.prime.PrimePackage;
    1920import com.framsticks.util.FramsticksException;
    20 import com.framsticks.util.dispatching.Future;
     21import com.framsticks.util.dispatching.FutureHandler;
    2122
    2223@FramsClassAnnotation
     
    3334        protected int nextWaitNumber = 1;
    3435        protected List<PrimePackage> waitingPackages = new LinkedList<>();
    35         protected List<Integer> primes = new LinkedList<>();
     36        // protected List<Integer> primes = new LinkedList<>();
    3637
    3738        protected final EventListeners<ValueChange> primesListeners = new EventListeners<>();
     
    5051
    5152                        @Override
    52                         protected void generateNextPackage(Future<PrimePackage> future) {
     53                        protected void generateNextPackage(FutureHandler<PrimePackage> future) {
    5354                                assert isActive();
    5455                                if (task.state.current_number > task.params.to_number) {
     
    8485                                        return;
    8586                                }
    86                                 log.info("experiment is done, {} primes found", primes.size());
    87                                 log.debug("primes: {}", primes);
     87                                log.info("experiment is done, {} primes found", getPrimes().size());
     88                                log.debug("primes: {}", getPrimes());
    8889                        }
    8990                };
     91        }
     92
     93        public List<Integer> getPrimes() {
     94                return task.state.getResultList();
    9095        }
    9196
     
    98103                }
    99104
    100                 primes.addAll(result.state.getResultList());
     105                getPrimes().addAll(result.state.getResultList());
    101106                nextWaitNumber = result.params.to_number + 1;
    102107
     
    141146        @ParamAnnotation
    142147        public String getDescription() {
    143                 return primes.size() + " found in range " + new ExpParams(task.params.from_number, nextWaitNumber - 1);
     148                return getPrimes().size() + " found in range " + new ExpParams(task.params.from_number, nextWaitNumber - 1);
    144149        }
    145150
     
    154159        }
    155160
     161        @ParamAnnotation(paramType = ProcedureParam.class)
     162        public PrimePackage experimentNetsave() {
     163                return task;
     164        }
     165
    156166}
  • java/main/src/main/java/com/framsticks/test/TestClass.java

    r103 r105  
    66import org.apache.logging.log4j.LogManager;
    77
    8 import com.framsticks.core.ListChange;
    9 import com.framsticks.core.ValueChange;
    108import com.framsticks.params.EventListener;
    119import com.framsticks.params.SimplePrimitive;
     
    1513import com.framsticks.params.annotations.ParamAnnotation;
    1614import com.framsticks.params.types.ProcedureParam;
     15import com.framsticks.structure.messages.ListChange;
     16import com.framsticks.structure.messages.ValueChange;
    1717
    1818@FramsClassAnnotation(
     
    135135        }
    136136
     137
    137138}
  • java/main/src/main/java/com/framsticks/test/prime/ExpState.java

    r102 r105  
    44import java.util.List;
    55
    6 import org.apache.commons.lang.StringUtils;
     6import org.apache.commons.lang3.StringUtils;
    77
    88import com.framsticks.params.annotations.FramsClassAnnotation;
  • java/main/src/main/java/com/framsticks/util/FramsticksException.java

    r98 r105  
    44import java.util.List;
    55
    6 import com.framsticks.util.dispatching.ExceptionResultHandler;
    76import com.framsticks.util.lang.Delimeted;
    87import com.framsticks.util.lang.Pair;
     
    7776
    7877
    79         public static ExceptionResultHandler addArgumentHandler(final ExceptionResultHandler innerHandler, final String header, final Object argument) {
    80                 return new ExceptionResultHandler() {
     78        public static ExceptionHandler addArgumentHandler(final ExceptionHandler innerHandler, final String header, final Object argument) {
     79                return new ExceptionHandler() {
    8180                        @Override
    8281                        public void handle(FramsticksException exception) {
  • java/main/src/main/java/com/framsticks/util/Logging.java

    r100 r105  
    33import org.apache.logging.log4j.Logger;
    44
    5 import com.framsticks.util.dispatching.ExceptionResultHandler;
    65
    76/**
     
    2019        }
    2120
    22         public static ExceptionResultHandler logger(final Logger logger, final String action, final Object subject) {
    23                 return new ExceptionResultHandler() {
     21        public static ExceptionHandler logger(final Logger logger, final String action, final Object subject) {
     22                return new ExceptionHandler() {
    2423                        @Override
    2524                        public void handle(FramsticksException e) {
  • java/main/src/main/java/com/framsticks/util/dispatching/BufferedDispatcher.java

    r102 r105  
    9292
    9393        public void createThreadIfNeeded() {
    94                 if (targetDispatcher != null) {
    95                         return;
     94                synchronized (this) {
     95                        if (targetDispatcher != null) {
     96                                return;
     97                        }
    9698                }
    9799                this.setTargetDispatcher(new Thread<C>().setName(parent.getName()));
     
    104106
    105107        @Override
    106         protected void joinableStart() {
     108        protected synchronized void joinableStart() {
    107109                Dispatching.use(targetDispatcher, this);
    108110        }
    109111
    110112        @Override
    111         protected void joinableInterrupt() {
     113        protected synchronized void joinableInterrupt() {
    112114                Dispatching.drop(targetDispatcher, this);
    113115
     
    121123
    122124        @Override
    123         protected void joinableJoin() throws InterruptedException {
     125        protected synchronized void joinableJoin() throws InterruptedException {
    124126                Dispatching.join(targetDispatcher);
    125127        }
  • java/main/src/main/java/com/framsticks/util/dispatching/Dispatching.java

    r102 r105  
    77import org.apache.logging.log4j.LogManager;
    88
     9import com.framsticks.util.ExceptionHandler;
    910import com.framsticks.util.FramsticksException;
    1011import com.framsticks.util.Misc;
     
    141142        }
    142143
    143         public interface Query<T> extends ExceptionResultHandler {
     144        public interface Query<T> extends ExceptionHandler {
    144145                T get();
    145146        }
    146147
    147148        public static abstract class QueryHandler<T> implements Query<T> {
    148                 ExceptionResultHandler handler;
     149                ExceptionHandler handler;
    149150
    150151                /**
    151152                 * @param handler
    152153                 */
    153                 public QueryHandler(ExceptionResultHandler handler) {
     154                public QueryHandler(ExceptionHandler handler) {
    154155                        this.handler = handler;
    155156                }
     
    244245
    245246                protected final double timeOut;
    246                 protected final ExceptionResultHandler handler;
     247                protected final ExceptionHandler handler;
    247248
    248249                /**
    249250                 * @param timeOut
    250251                 */
    251                 public Waiter(double timeOut, ExceptionResultHandler handler) {
     252                public Waiter(double timeOut, ExceptionHandler handler) {
    252253                        this.timeOut = timeOut;
    253254                        this.handler = handler;
     
    273274                }
    274275
    275                 public <T> Future<T> passInFuture(Class<T> type) {
    276                         return new FutureHandler<T>(handler) {
     276                public <T> FutureHandler<T> passInFuture(Class<T> type) {
     277                        return new Future<T>(handler) {
    277278                                @Override
    278279                                protected void result(T result) {
  • java/main/src/main/java/com/framsticks/util/dispatching/DispatchingExceptionHandler.java

    r100 r105  
    11package com.framsticks.util.dispatching;
    22
     3import com.framsticks.util.ExceptionHandler;
    34import com.framsticks.util.FramsticksException;
    45
    5 public class DispatchingExceptionHandler implements ExceptionResultHandler {
     6public class DispatchingExceptionHandler implements ExceptionHandler {
    67
    78        protected final Dispatcher<?> dispatcher;
    8         protected final ExceptionResultHandler handler;
     9        protected final ExceptionHandler handler;
    910
    1011        /**
     
    1213         * @param handler
    1314         */
    14         public DispatchingExceptionHandler(Dispatcher<?> dispatcher, ExceptionResultHandler handler) {
     15        public DispatchingExceptionHandler(Dispatcher<?> dispatcher, ExceptionHandler handler) {
    1516                this.dispatcher = dispatcher;
    1617                this.handler = handler;
  • java/main/src/main/java/com/framsticks/util/dispatching/DispatchingFuture.java

    r100 r105  
    33import com.framsticks.util.FramsticksException;
    44
    5 public class DispatchingFuture<C, T> extends Future<T> {
     5public class DispatchingFuture<C, T> extends FutureHandler<T> {
    66
    77        protected final Dispatcher<? super C> dispatcher;
    8         protected final Future<T> future;
     8        protected final FutureHandler<T> future;
    99
    1010        /**
     
    1212         * @param future
    1313         */
    14         public DispatchingFuture(Dispatcher<? super C> dispatcher, Future<T> future) {
     14        public DispatchingFuture(Dispatcher<? super C> dispatcher, FutureHandler<T> future) {
    1515                this.dispatcher = dispatcher;
    1616                this.future = future;
     
    3737        }
    3838
    39         public static <Ca, Ta> Future<Ta> create(Dispatcher<Ca> dispatcher, Future<Ta> future) {
     39        public static <Ca, Ta> FutureHandler<Ta> create(Dispatcher<Ca> dispatcher, FutureHandler<Ta> future) {
    4040                return new DispatchingFuture<Ca, Ta>(dispatcher, future);
    4141        }
  • java/main/src/main/java/com/framsticks/util/dispatching/Future.java

    r97 r105  
    11package com.framsticks.util.dispatching;
    22
     3import com.framsticks.util.ExceptionHandler;
    34import com.framsticks.util.FramsticksException;
    45
    5 /**
    6  * @author Piotr Sniegowski
    7  */
    8 public abstract class Future<T> implements ExceptionResultHandler {
     6public abstract class Future<T> extends FutureHandler<T> {
    97
    10         protected abstract void result(T result);
     8        protected final ExceptionHandler handler;
    119
    12         public final void pass(T result) {
    13                 try {
    14                         result(result);
    15                 } catch (FramsticksException e) {
    16                         handle(e);
    17                 }
     10        public Future(ExceptionHandler handler) {
     11                assert handler != null;
     12                this.handler = handler;
    1813        }
    1914
     15        @Override
     16        public final void handle(FramsticksException exception) {
     17                handler.handle(exception);
     18        }
     19
     20        public static <T> Future<T> doNothing(Class<T> type, ExceptionHandler handler) {
     21                return new Future<T>(handler) {
     22
     23                        @Override
     24                        protected void result(T result) {
     25
     26                        }
     27                };
     28        }
    2029
    2130}
  • java/main/src/main/java/com/framsticks/util/dispatching/FutureHandler.java

    r99 r105  
    11package com.framsticks.util.dispatching;
    22
     3import com.framsticks.util.ExceptionHandler;
    34import com.framsticks.util.FramsticksException;
    45
    5 public abstract class FutureHandler<T> extends Future<T> {
     6/**
     7 * @author Piotr Sniegowski
     8 */
     9public abstract class FutureHandler<T> implements ExceptionHandler {
    610
    7         protected final ExceptionResultHandler handler;
     11        protected abstract void result(T result);
    812
    9         public FutureHandler(ExceptionResultHandler handler) {
    10                 assert handler != null;
    11                 this.handler = handler;
     13        public final void pass(T result) {
     14                try {
     15                        result(result);
     16                } catch (FramsticksException e) {
     17                        handle(e);
     18                }
    1219        }
    13 
    14         @Override
    15         public final void handle(FramsticksException exception) {
    16                 handler.handle(exception);
    17         }
    18 
    19         public static <T> FutureHandler<T> doNothing(Class<T> type, ExceptionResultHandler handler) {
    20                 return new FutureHandler<T>(handler) {
    21 
    22                         @Override
    23                         protected void result(T result) {
    24 
    25                         }
    26                 };
    27         }
    28 
    2920}
  • java/main/src/main/java/com/framsticks/util/dispatching/IgnoreExceptionHandler.java

    r99 r105  
    11package com.framsticks.util.dispatching;
    22
     3import com.framsticks.util.ExceptionHandler;
    34import com.framsticks.util.FramsticksException;
    45
    5 public class IgnoreExceptionHandler implements ExceptionResultHandler {
     6public class IgnoreExceptionHandler implements ExceptionHandler {
    67
    78        private static final IgnoreExceptionHandler instance = new IgnoreExceptionHandler();
  • java/main/src/main/java/com/framsticks/util/dispatching/Monitor.java

    r102 r105  
    104104        }
    105105
    106         protected ExceptionHandler taskExceptionHandler;
     106        protected ExceptionDispatcherHandler taskExceptionHandler;
    107107
    108108        /**
    109109         * @return the taskExceptionHandler
    110110         */
    111         public ExceptionHandler getTaskExceptionHandler() {
     111        public ExceptionDispatcherHandler getTaskExceptionHandler() {
    112112                return taskExceptionHandler;
    113113        }
     
    116116         * @param taskExceptionHandler the taskExceptionHandler to set
    117117         */
    118         public void setTaskExceptionHandler(ExceptionHandler taskExceptionHandler) {
     118        public void setTaskExceptionHandler(ExceptionDispatcherHandler taskExceptionHandler) {
    119119                this.taskExceptionHandler = taskExceptionHandler;
    120120        }
  • java/main/src/main/java/com/framsticks/util/dispatching/RunAt.java

    r97 r105  
    11package com.framsticks.util.dispatching;
    22
     3import com.framsticks.util.ExceptionHandler;
    34import com.framsticks.util.FramsticksException;
    45
    5 public abstract class RunAt<C> implements ExceptionResultHandler, Runnable {
     6public abstract class RunAt<C> implements ExceptionHandler, Runnable {
    67
    7         protected final ExceptionResultHandler handler;
     8        protected final ExceptionHandler handler;
    89
    9         public RunAt(ExceptionResultHandler handler) {
     10        public RunAt(ExceptionHandler handler) {
    1011                assert handler != null;
    1112                this.handler = handler;
  • java/main/src/main/java/com/framsticks/util/dispatching/Thread.java

    r102 r105  
    4646                log.debug("starting thread {}", this);
    4747                assert getMonitor() != null;
    48                 ExceptionHandler exceptionHandler = getMonitor().getTaskExceptionHandler();
    4948                while (!java.lang.Thread.interrupted()) {
    5049                        RunAt<? extends C> runnable;
     
    6463                                        runnable.run();
    6564                                } catch (Exception e) {
     65                                        final ExceptionDispatcherHandler exceptionHandler = getMonitor().getTaskExceptionHandler();
    6666                                        if (exceptionHandler != null) {
    6767                                                if (exceptionHandler.handle(this, e)) {
     
    122122        // @Override
    123123        // public String toString() {
    124         //      return getName();
     124        //      return getName();
    125125        // }
    126126
  • java/main/src/main/java/com/framsticks/util/dispatching/ThrowExceptionHandler.java

    r97 r105  
    11package com.framsticks.util.dispatching;
    22
     3import com.framsticks.util.ExceptionHandler;
    34import com.framsticks.util.FramsticksException;
    45
    5 public class ThrowExceptionHandler implements ExceptionResultHandler {
     6public class ThrowExceptionHandler implements ExceptionHandler {
    67
    78        private static final ThrowExceptionHandler instance = new ThrowExceptionHandler();
  • java/main/src/main/resources/bash-gui-runner.xml

    r101 r105  
    22<Framsticks>
    33        <import class="com.framsticks.gui.Browser" />
    4         <import class="com.framsticks.core.LocalTree" />
     4        <import class="com.framsticks.structure.LocalTree" />
    55        <import class="com.framsticks.running.LoggingOutputListener" />
    66        <import class="com.framsticks.running.FramsServer" />
  • java/main/src/main/resources/framsticks.xml

    r101 r105  
    66        <import class="com.framsticks.model.ModelBuilder" />
    77        <import class="com.framsticks.model.f0.SchemaBuilder" />
    8         <import class="com.framsticks.core.LocalTree" />
     8        <import class="com.framsticks.structure.LocalTree" />
    99        <import class="com.framsticks.hosting.Server" />
    1010        <import class="com.framsticks.test.TestClass" />
  • java/main/src/main/resources/prime.xml

    r103 r105  
    33        <import class="com.framsticks.hosting.Server" />
    44        <import class="com.framsticks.test.PrimeExperiment" />
    5         <!-- <import class="com.framsticks.experiment.Simulator" /> -->
    65        <import class="com.framsticks.experiment.SimulatorConnector" />
    7         <import class="com.framsticks.core.LocalTree" />
     6        <import class="com.framsticks.structure.LocalTree" />
    87        <Server port="9007">
    98                <LocalTree name="prime-local-tree">
    10                         <PrimeExperiment maxNumber="30000">
     9                        <PrimeExperiment maxNumber="3000">
    1110                                <SimulatorConnector address="localhost:9100" />
    1211                                <SimulatorConnector address="localhost:9101" />
     
    1615        </Server>
    1716</Framsticks>
    18 
  • java/main/src/test/java/com/framsticks/core/ListChangeTest.java

    r102 r105  
    66import org.testng.annotations.Test;
    77
    8 import com.framsticks.core.ListChange.Action;
    98import static com.framsticks.params.AccessOperations.*;
    109import com.framsticks.params.FramsClass;
     
    1211import com.framsticks.params.ListSource;
    1312import com.framsticks.params.ReflectionAccess;
     13import com.framsticks.structure.messages.ListChange;
     14import com.framsticks.structure.messages.ListChange.Action;
    1415import com.framsticks.test.TestConfiguration;
    1516
  • java/main/src/test/java/com/framsticks/core/LocalTreeTest.java

    r100 r105  
    1212import com.framsticks.model.f0.Schema;
    1313import com.framsticks.model.f0.SchemaBuilder;
     14import com.framsticks.structure.LocalTree;
     15import com.framsticks.structure.Path;
     16import com.framsticks.structure.Tree;
     17import com.framsticks.structure.TreeOperations;
    1418import com.framsticks.test.TestConfiguration;
    1519import com.framsticks.util.dispatching.Dispatching;
     
    2024import com.framsticks.params.types.FloatParam;
    2125
    22 import static com.framsticks.core.TreeOperations.*;
    2326
    2427
    2528import static org.fest.assertions.Assertions.*;
     29import static com.framsticks.params.ParamsUtil.getParam;
     30import static com.framsticks.structure.TreeOperations.*;
    2631
    2732@Test
     
    7580                                assertThat(access.get("se", Double.class)).isEqualTo(1.0);
    7681
    77                                 assertThat(bindAccess(tree, "/parts/2").getFramsClass().getParamEntry("m", FloatParam.class).getDef(Double.class)).isEqualTo(1.0);
    78                                 assertThat(bindAccess(tree, "/parts/2").getFramsClass().getParamEntry("m", FloatParam.class).getMax(Double.class)).isEqualTo(999.0);
     82                                assertThat(getParam(bindAccess(tree, "/parts/2"), "m", FloatParam.class).getDef(Double.class)).isEqualTo(1.0);
     83                                assertThat(getParam(bindAccess(tree, "/parts/2"), "m", FloatParam.class).getMax(Double.class)).isEqualTo(999.0);
    7984                                assertThat(bindAccess(tree, "/parts/2")).isInstanceOf(ReflectionAccess.class);
    8085                                assertThat(Path.to(tree, "/neurodefs").getTopObject()).isInstanceOf(ArrayList.class);
  • java/main/src/test/java/com/framsticks/core/PathTest.java

    r99 r105  
    1111import org.testng.annotations.Test;
    1212
     13import com.framsticks.structure.Path;
    1314import com.framsticks.test.TestConfiguration;
    1415import com.framsticks.util.lang.Pair;
  • java/main/src/test/java/com/framsticks/gui/LocalTreeBrowserTest.java

    r100 r105  
    55import org.testng.annotations.Test;
    66
    7 import com.framsticks.core.Tree;
    8 import com.framsticks.core.LocalTree;
    97import com.framsticks.model.Model;
    108import com.framsticks.params.types.FloatParam;
    119import com.framsticks.parsers.XmlLoader;
     10import com.framsticks.structure.LocalTree;
     11import com.framsticks.structure.Tree;
    1212import com.framsticks.util.dispatching.RunAt;
    1313
    14 import static com.framsticks.core.TreeOperations.*;
     14import static com.framsticks.params.ParamsUtil.getParam;
     15import static com.framsticks.structure.TreeOperations.*;
    1516
    1617@Test
     
    4546                        @Override
    4647                        protected void runAt() {
    47                                 assertThat(bindAccess(tree, "/parts/2").getFramsClass().getParamEntry("m", FloatParam.class).getMax(Double.class)).isEqualTo(999.0);
     48                                assertThat(getParam(bindAccess(tree, "/parts/2"), "m", FloatParam.class).getMax(Double.class)).isEqualTo(999.0);
    4849                        }
    4950                });
  • java/main/src/test/java/com/framsticks/gui/ProcedureBrowserTest.java

    r103 r105  
    77import org.testng.annotations.Test;
    88
    9 import com.framsticks.core.Path;
    10 import com.framsticks.core.Tree;
    11 import com.framsticks.core.LocalTree;
    12 import com.framsticks.core.ValueChange;
    139import com.framsticks.params.Access;
    1410import com.framsticks.params.EventListener;
    15 import com.framsticks.params.FramsClass;
    1611import com.framsticks.params.ReflectionAccess;
    1712import com.framsticks.params.types.EventParam;
    1813import com.framsticks.params.types.StringParam;
    1914import com.framsticks.parsers.XmlLoader;
     15import com.framsticks.structure.LocalTree;
     16import com.framsticks.structure.Path;
     17import com.framsticks.structure.Tree;
     18import com.framsticks.structure.messages.ValueChange;
    2019import com.framsticks.test.TestClass;
    21 import com.framsticks.util.dispatching.FutureHandler;
     20import com.framsticks.util.dispatching.Future;
    2221// import com.framsticks.util.dispatching.Dispatching;
    2322import com.framsticks.util.dispatching.RunAt;
    24 import static com.framsticks.core.TreeOperations.*;
     23import static com.framsticks.params.ParamsUtil.getParam;
     24import static com.framsticks.structure.TreeOperations.*;
    2525
    2626@Test
     
    5353                        @Override
    5454                        protected void runAt() {
    55                                 assertThat(bindAccess(tree, "/").getFramsClass().getParam("history")).isInstanceOf(StringParam.class);
     55                                assertThat(getParam(bindAccess(tree, "/"), "history")).isInstanceOf(StringParam.class);
    5656                        }
    5757                });
     
    6464                                Access access = bindAccess(tree, "/");
    6565                                assertThat(access).isInstanceOf(ReflectionAccess.class);
    66                                 FramsClass framsClass = access.getFramsClass();
    67                                 assertThat(framsClass.getParam(0).getId()).isEqualTo("name");
    68                                 assertThat(framsClass.getParam(1).getId()).isEqualTo("history");
    69                                 assertThat(framsClass.getParam(2).getId()).isEqualTo("history_changed");
    70                                 assertThat(framsClass.getParam(3).getId()).isEqualTo("appendHistory");
    71                                 assertThat(framsClass.getParam(4).getId()).isEqualTo("resetHistory");
     66                                assertThat(getParam(access, 0).getId()).isEqualTo("name");
     67                                assertThat(getParam(access, 1).getId()).isEqualTo("history");
     68                                assertThat(getParam(access, 2).getId()).isEqualTo("history_changed");
     69                                assertThat(getParam(access, 3).getId()).isEqualTo("appendHistory");
     70                                assertThat(getParam(access, 4).getId()).isEqualTo("resetHistory");
    7271
    7372                                assertThat(access.get("history", String.class)).isEqualTo("initial|");
     
    9695                                assertThat(access.get("history", String.class)).isEqualTo("initial|Żółw|");
    9796
    98                                 tree.addListener(Path.to(tree, "/"), access.getFramsClass().getParamEntry("history_changed", EventParam.class), listener, ValueChange.class, FutureHandler.doNothing(Void.class, failOnException));
     97                                tree.addListener(Path.to(tree, "/"), getParam(access, "history_changed", EventParam.class), listener, ValueChange.class, Future.doNothing(Void.class, failOnException));
    9998                        }
    10099                });
     
    109108                                assertThat(access.get("history", String.class)).isEqualTo("");
    110109
    111                                 tree.removeListener(Path.to(tree, "/"), access.getFramsClass().getParamEntry("history_changed", EventParam.class), listener, FutureHandler.doNothing(Void.class, failOnException));
     110                                tree.removeListener(Path.to(tree, "/"), getParam(access, "history_changed", EventParam.class), listener, Future.doNothing(Void.class, failOnException));
    112111                        }
    113112                });
  • java/main/src/test/java/com/framsticks/gui/console/TrackConsoleTest.java

    r101 r105  
    33import org.testng.annotations.Test;
    44
    5 import com.framsticks.core.Path;
    65import com.framsticks.gui.GuiTest;
    76import com.framsticks.remote.RemoteTree;
     7import com.framsticks.structure.Path;
    88import com.framsticks.util.dispatching.Dispatching;
    99import com.framsticks.util.dispatching.Dispatching.Waiter;
    10 import com.framsticks.util.dispatching.FutureHandler;
     10import com.framsticks.util.dispatching.Future;
    1111import com.framsticks.util.dispatching.Joinable;
    1212import com.framsticks.util.dispatching.JoinableCollection;
    1313
    14 import static com.framsticks.core.TreeOperations.*;
     14import static com.framsticks.structure.TreeOperations.*;
    1515
    1616@Test
     
    4141                final Waiter waiter = produceWaiter(1.0);
    4242
    43                 tryGet(tree, "/simulator/genepools/groups/0", new FutureHandler<Path>(failOnException) {
     43                tryGet(tree, "/simulator/genepools/groups/0", new Future<Path>(failOnException) {
    4444
    4545                        @Override
  • java/main/src/test/java/com/framsticks/hosting/ServerTest.java

    r103 r105  
    88import org.testng.annotations.Test;
    99
    10 import com.framsticks.core.ListChange;
    11 import com.framsticks.core.LocalTree;
    12 import com.framsticks.core.Path;
    13 import com.framsticks.core.Result;
    14 import com.framsticks.core.TreeOperations;
    15 import com.framsticks.core.ValueChange;
    1610import com.framsticks.core.XmlBasedTest;
    1711import com.framsticks.remote.RemoteTree;
     12import com.framsticks.structure.LocalTree;
     13import com.framsticks.structure.Path;
     14import com.framsticks.structure.Tree;
     15import com.framsticks.structure.TreeOperations;
     16import com.framsticks.structure.messages.ListChange;
     17import com.framsticks.structure.messages.Result;
     18import com.framsticks.structure.messages.ValueChange;
    1819
    1920import com.framsticks.test.TestClass;
    20 import com.framsticks.core.Tree;
    2121import com.framsticks.params.FramsClass;
    2222import com.framsticks.params.Access;
     
    2929import com.framsticks.params.types.ProcedureParam;
    3030import com.framsticks.util.dispatching.Dispatching.Waiter;
    31 import com.framsticks.util.dispatching.FutureHandler;
     31import com.framsticks.util.dispatching.Future;
    3232import com.framsticks.util.dispatching.RunAt;
    3333
    34 import static com.framsticks.core.TreeOperations.*;
     34import static com.framsticks.params.ParamsUtil.arguments;
    3535
    3636import static org.fest.assertions.Assertions.*;
     37import static com.framsticks.params.ParamsUtil.getParam;
     38import static com.framsticks.structure.TreeOperations.*;
    3739
    3840@Test
     
    7274                final Waiter waiter = produceWaiter(1.0);
    7375
    74                 TreeOperations.tryGet(remote, "/testClass", new FutureHandler<Path>(failOnException) {
     76                TreeOperations.tryGet(remote, "/testClass", new Future<Path>(failOnException) {
    7577                        @Override
    7678                        protected void result(Path path) {
     
    8890                final Waiter waiter = produceWaiter(1.0);
    8991
    90                 TreeOperations.tryGet(remote, "/testClass", new FutureHandler<Path>(failOnException) {
     92                TreeOperations.tryGet(remote, "/testClass", new Future<Path>(failOnException) {
    9193                        @Override
    9294                        protected void result(Path path) {
     
    105107                final Waiter waiter = produceWaiter(2.0);
    106108
    107                 set(remotePath, remoteTestFramsClass.getParamEntry("name", PrimitiveParam.class), "new name", new FutureHandler<Integer>(failOnException) {
     109                set(remotePath, getParam(remoteTestFramsClass, "name", PrimitiveParam.class), "new name", new Future<Integer>(failOnException) {
    108110                        @Override
    109111                        protected void result(Integer flags) {
     
    132134                };
    133135
    134                 TreeOperations.tryGet(remote, "/cli/events", new FutureHandler<Path>(failOnException) {
     136                TreeOperations.tryGet(remote, "/cli/events", new Future<Path>(failOnException) {
    135137                        @Override
    136138                        protected void result(Path path) {
     
    139141                });
    140142
    141                 addListener(remotePath, remoteTestFramsClass.getParamEntry("history_changed", EventParam.class), listener, ValueChange.class, produceWaiter(1.0).passInFuture(Void.class));
     143                addListener(remotePath, getParam(remoteTestFramsClass, "history_changed", EventParam.class), listener, ValueChange.class, produceWaiter(1.0).passInFuture(Void.class));
    142144        }
    143145
     
    146148                final Waiter waiter = produceWaiter(2.0);
    147149
    148                 call(remotePath, remoteTestFramsClass.getParamEntry("resetHistory", ProcedureParam.class), new Object[] {}, Object.class, produceWaiter(2.0).passInFuture(Object.class));
    149 
    150                 call(remotePath, remoteTestFramsClass.getParamEntry("appendHistory", ProcedureParam.class), new Object[] {"next word"}, Result.class, new FutureHandler<Result>(failOnException) {
     150                call(remotePath, getParam(remoteTestFramsClass, "resetHistory", ProcedureParam.class), arguments(), Object.class, produceWaiter(2.0).passInFuture(Object.class));
     151
     152                call(remotePath, getParam(remoteTestFramsClass, "appendHistory", ProcedureParam.class), arguments("next word"), Result.class, new Future<Result>(failOnException) {
    151153                        @Override
    152154                        protected void result(final Result result) {
     
    167169        @Test(dependsOnMethods = "callMethod")
    168170        public void deregisterListener() {
    169                 removeListener(remotePath, remoteTestFramsClass.getParamEntry("history_changed", EventParam.class), listener, produceWaiter(1.0).passInFuture(Void.class));
     171                removeListener(remotePath, getParam(remoteTestFramsClass, "history_changed", EventParam.class), listener, produceWaiter(1.0).passInFuture(Void.class));
    170172
    171173                assertThat(listenerArguments).isEqualTo(Arrays.asList("", "next word|"));
     
    183185                };
    184186
    185                 addListener(remotePath, remoteTestFramsClass.getParamEntry("children_changed", EventParam.class), childListener, ListChange.class, produceWaiter(1.0).passInFuture(Void.class));
     187                addListener(remotePath, getParam(remoteTestFramsClass, "children_changed", EventParam.class), childListener, ListChange.class, produceWaiter(1.0).passInFuture(Void.class));
    186188        }
    187189
     
    189191        public void createChild() {
    190192                final Waiter waiter = produceWaiter(2.0);
    191                 call(remotePath, "createChild", new Object[] { "a child" }, Object.class, produceWaiter(2.0).passInFuture(Object.class));
    192                 call(remotePath, "createChild", new Object[] { "another child" }, Object.class, produceWaiter(2.0).passInFuture(Object.class));
    193 
    194                 tryGet(remote, "/testClass/children/c0", new FutureHandler<Path>(failOnException) {
     193                call(remotePath, "createChild", arguments("a child"), Object.class, produceWaiter(2.0).passInFuture(Object.class));
     194                call(remotePath, "createChild", arguments("another child"), Object.class, produceWaiter(2.0).passInFuture(Object.class));
     195
     196                tryGet(remote, "/testClass/children/c0", new Future<Path>(failOnException) {
    195197
    196198                        @Override
    197199                        protected void result(Path result) {
    198                                 set(result, getFramsClass(result).getParamEntry("name", StringParam.class), "new_name", new FutureHandler<Integer>(failOnException) {
     200                                set(result, getParam(result, "name", StringParam.class), "new_name", new Future<Integer>(failOnException) {
    199201
    200202                                        @Override
     
    209211        @Test(dependsOnMethods = "createChild")
    210212        public void deregisterChildListener() {
    211                 removeListener(remotePath, remoteTestFramsClass.getParamEntry("children_changed", EventParam.class), childListener, produceWaiter(1.0).passInFuture(Void.class));
     213                removeListener(remotePath, getParam(remoteTestFramsClass, "children_changed", EventParam.class), childListener, produceWaiter(1.0).passInFuture(Void.class));
    212214        }
    213215
  • java/main/src/test/java/com/framsticks/model/CreatureTest.java

    r87 r105  
    1111
    1212import static org.fest.assertions.Assertions.*;
     13import static com.framsticks.params.ParamsUtil.getParam;
    1314
    1415@Test
     
    2728                assertThat(framsClass.getParam("name")).describedAs("name").isInstanceOf(StringParam.class);
    2829                assertThat(framsClass.getParam("parts")).describedAs("parts").isInstanceOf(ArrayListParam.class);
    29                 partsParam = framsClass.getParamEntry("parts", ArrayListParam.class);
     30                partsParam = getParam(framsClass, "parts", ArrayListParam.class);
    3031                assertThat(partsParam).describedAs("partsParam").isNotNull();
    3132                assertThat(partsParam).isInstanceOf(ArrayListParam.class);
  • java/main/src/test/java/com/framsticks/model/ModelPackageTest.java

    r101 r105  
    1515
    1616import static org.fest.assertions.Assertions.*;
     17import static com.framsticks.params.ParamsUtil.getParam;
    1718
    1819@Test
     
    4142                                Object defaultValue = args[1];
    4243
    43                                 ValueParam param = framsClass.getParamEntry(paramName, ValueParam.class);
     44                                ValueParam param = getParam(framsClass, paramName, ValueParam.class);
    4445                                assertThat(param.getDef(Object.class)).isEqualTo(defaultValue);
    4546
  • java/main/src/test/java/com/framsticks/model/f0/SchemaTest.java

    r97 r105  
    1111
    1212import static org.fest.assertions.Assertions.*;
     13import static com.framsticks.params.ParamsUtil.getParam;
    1314
    1415public class SchemaTest extends TestConfiguration {
     
    2324
    2425                assertThat(schema.getNeuroClass("|").getName()).isEqualTo("Bend muscle");
    25                 assertThat(schema.getNeuroClass("VEye").getParam("p")).isInstanceOf(FloatParam.class);
    26                 assertThat(schema.getNeuroClass("VEye").getParamEntry("p", FloatParam.class).getMax(Double.class)).isEqualTo(10.0, delta(0.0));
     26                assertThat(getParam(schema.getNeuroClass("VEye"), "p")).isInstanceOf(FloatParam.class);
     27                assertThat(getParam(schema.getNeuroClass("VEye"), "p", FloatParam.class).getMax(Double.class)).isEqualTo(10.0, delta(0.0));
    2728
    2829                FramsClass partClass = schema.getFramsClass("p");
    2930                assertThat(partClass).isNotNull();
    30                 assertThat(partClass.getParamEntry("as", FloatParam.class).getDef(Double.class)).isEqualTo(0.25, delta(0.0));
     31                assertThat(getParam(partClass, "as", FloatParam.class).getDef(Double.class)).isEqualTo(0.25, delta(0.0));
    3132                assertThat(partClass.getGroupCount()).isEqualTo(3);
    3233                assertThat(partClass.getGroup(1).getName()).isEqualTo("Other properties");
  • java/main/src/test/java/com/framsticks/params/FramsClassBuilderTest.java

    r103 r105  
    66import org.testng.annotations.Test;
    77
    8 import com.framsticks.core.ValueChange;
    98import com.framsticks.params.types.EventParam;
    109import com.framsticks.params.types.ProcedureParam;
    1110import com.framsticks.params.types.StringParam;
    1211import com.framsticks.parsers.Savers;
     12import com.framsticks.structure.messages.ValueChange;
    1313import com.framsticks.test.TestClass;
    1414import com.framsticks.test.TestConfiguration;
     
    1616
    1717import static org.fest.assertions.Assertions.*;
     18import static com.framsticks.params.ParamsUtil.arguments;
     19import static com.framsticks.params.ParamsUtil.getParam;
    1820
    1921@Test
     
    4345                assertThat(framsClass.getParam("resetHistory")).isInstanceOf(ProcedureParam.class);
    4446
    45                 ProcedureParam appendHistory = framsClass.getParamEntry("appendHistory", ProcedureParam.class);
     47
     48                ProcedureParam appendHistory = getParam(framsClass, "appendHistory", ProcedureParam.class);
    4649                assertThat(appendHistory.getArgumentsType().size()).isEqualTo(1);
    4750                assertThat(appendHistory.getArgumentsType().get(0).getId()).isEqualTo("arg0");
     
    111114
    112115                assertThat(access.get("history", String.class)).isEqualTo("initial|first|");
    113                 Object result = access.call("appendHistory", new Object[] {"second"});
     116                Object result = access.call("appendHistory", arguments("second"));
    114117
    115118                assertThat(result).isInstanceOf(Integer.class);
     
    117120                assertThat(access.get("history", String.class)).isEqualTo("initial|first|second|");
    118121
    119                 result = access.call("resetHistory", null);
     122                result = access.call("resetHistory");
    120123                assertThat(result).isNull();
    121124
     
    136139                };
    137140
    138                 final EventParam eventParam = access.getFramsClass().getParamEntry("history_changed", EventParam.class);
     141                final EventParam eventParam = getParam(access, "history_changed", EventParam.class);
    139142                access.reg(eventParam, listener);
    140143
     
    142145                final String addition = "test";
    143146
    144                 access.call("appendHistory", new Object[] { addition });
     147                access.call("appendHistory", arguments(addition));
    145148
    146149                String expected = currentHistory + addition + "|";
  • java/main/src/test/java/com/framsticks/params/ParamBuilderTest.java

    r103 r105  
    99import com.framsticks.test.TestConfiguration;
    1010import static org.fest.assertions.Assertions.*;
     11import static com.framsticks.params.ParamsUtil.getParam;
    1112
    1213@Test
     
    2425                assertThat(builderFramsClass.getName()).isEqualTo("prop");
    2526                assertThat(builderFramsClass.getId()).isEqualTo("prop");
    26                 assertThat(builderFramsClass.getParamEntry("flags", ValueParam.class).getDef(Object.class)).isEqualTo(new Integer(0));
    27                 assertThat(builderFramsClass.getParamEntry("id", Param.class)).isInstanceOf(StringParam.class);
     27                assertThat(getParam(builderFramsClass, "flags", ValueParam.class).getDef(Object.class)).isEqualTo(new Integer(0));
     28                assertThat(getParam(builderFramsClass, "id", Param.class)).isInstanceOf(StringParam.class);
    2829        }
    2930
  • java/main/src/test/java/com/framsticks/parsers/F0ParserTest.java

    r101 r105  
    1717import static org.fest.assertions.Assertions.*;
    1818import static org.fest.assertions.Delta.*;
     19import static com.framsticks.params.ParamsUtil.getParam;
    1920
    2021/**
     
    4849        public void primitiveParam() {
    4950                FramsClass joint = schema.getFramsClass("j");
    50                 PrimitiveParam<?> dx = joint.getParamEntry("dx", PrimitiveParam.class);
     51                PrimitiveParam<?> dx = getParam(joint, "dx", PrimitiveParam.class);
    5152                assertThat(dx).isInstanceOf(FloatParam.class);
    5253                assertThat(schema.getNeuroClasses().size()).isEqualTo(21);
     
    5455                assertThat(dx.getMin(Double.class)).isEqualTo(-2.0, delta(0.0));
    5556
    56                 assertThat(schema.getRegistry().getFramsClass("n").getParamEntry("d", StringParam.class).getDef(String.class)).isEqualTo("N");
     57                assertThat(getParam(schema.getRegistry().getFramsClass("n"), "d", StringParam.class).getDef(String.class)).isEqualTo("N");
    5758        }
    5859
     
    6061        public void readF0() throws IOException, ParseException {
    6162                assertThat(schema.getFramsClass("p")).isInstanceOf(FramsClass.class);
    62                 assertThat(schema.getRegistry().getFramsClass("p").getParamEntry("as", FloatParam.class).getDef(Double.class)).isEqualTo(0.25, delta(0.0));
     63                assertThat(getParam(schema.getRegistry().getFramsClass("p"), "as", FloatParam.class).getDef(Double.class)).isEqualTo(0.25, delta(0.0));
    6364
    6465                accesses = new F0Parser(schema, F0ParserTest.class.getResourceAsStream("/parsers/f0_example.txt")).parse();
     
    9192
    9293                assertThat(model.getParts().get(1).getPosition().x).isEqualTo(2.0, delta(0.0));
    93                 assertThat(model.getParts().get(2).getPosition().sub(new Point3d(2.27236, -0.0792596, -0.958924)).length()).isLessThan(0.0001);
     94                assertThat(model.getParts().get(2).getPosition().sub(new Point3d(2.27236, -0.0792596, -0.958924)).length()).describedAs("position error").isLessThan(0.0001);
    9495                assertThat(model.getParts().get(2).getOrientation().y.sub(new Point3d(0.870277, -0.404792, 0.280644)).length()).isLessThan(0.0001);
    9596
  • java/main/src/test/java/com/framsticks/running/ExternalProcessTest.java

    r101 r105  
    99import org.testng.annotations.Test;
    1010
    11 import com.framsticks.core.ValueChange;
    1211import com.framsticks.params.EventListener;
     12import com.framsticks.structure.messages.ValueChange;
    1313import com.framsticks.test.TestConfiguration;
    1414import com.framsticks.util.dispatching.Monitor;
  • java/main/src/test/java/com/framsticks/test/TestConfiguration.java

    r100 r105  
    1010import org.testng.annotations.*;
    1111
     12import com.framsticks.util.ExceptionHandler;
    1213import com.framsticks.util.FramsticksException;
    1314import com.framsticks.util.dispatching.Dispatcher;
    1415import com.framsticks.util.dispatching.Dispatching;
    1516import com.framsticks.util.dispatching.Dispatching.Waiter;
    16 import com.framsticks.util.dispatching.ExceptionHandler;
    17 import com.framsticks.util.dispatching.ExceptionResultHandler;
     17import com.framsticks.util.dispatching.ExceptionDispatcherHandler;
    1818
    1919// import static org.fest.assertions.Assertions.*;
     
    4646        }
    4747
    48         public ExceptionHandler createExceptionHandler() {
    49                 return new ExceptionHandler() {
     48        public ExceptionDispatcherHandler createExceptionHandler() {
     49                return new ExceptionDispatcherHandler() {
    5050                        @Override
    5151                        public boolean handle(Dispatcher<?> dispatcher, Throwable throwable) {
     
    9898        }
    9999
    100         public final ExceptionResultHandler failOnException = new ExceptionResultHandler() {
     100        public final ExceptionHandler failOnException = new ExceptionHandler() {
    101101                @Override
    102102                public void handle(FramsticksException e) {
  • java/main/src/test/resources/configs/LocalTreeBrowserTest.xml

    r99 r105  
    22<Browser>
    33        <import class="com.framsticks.model.ModelBuilder" />
    4         <import class="com.framsticks.core.LocalTree" />
     4        <import class="com.framsticks.structure.LocalTree" />
    55        <!-- <import class="com.framsticks.model.ModelPackage" /> -->
    66        <LocalTree name="model">
  • java/main/src/test/resources/configs/ProcedureBrowserTest.xml

    r99 r105  
    11<?xml version="1.0" encoding="UTF-8"?>
    22<Browser>
    3         <import class="com.framsticks.core.LocalTree" />
     3        <import class="com.framsticks.structure.LocalTree" />
    44        <import class="com.framsticks.test.TestClass" />
    55        <LocalTree name="test">
  • java/main/src/test/resources/configs/ServerTest.xml

    r102 r105  
    33        <import class="com.framsticks.hosting.Server" />
    44        <import class="com.framsticks.remote.RemoteTree" />
    5         <import class="com.framsticks.core.LocalTree" />
     5        <import class="com.framsticks.structure.LocalTree" />
    66        <import class="com.framsticks.test.TestClass" />
    77        <import class="com.framsticks.running.LoggingOutputListener" />
Note: See TracChangeset for help on using the changeset viewer.