Ignore:
Timestamp:
09/23/13 18:54:07 (11 years ago)
Author:
psniegowski
Message:

HIGHLIGHTS:

  • add SimultorProviders? hierarchy
  • start Framsticks server over SSH
  • FJF compatible with Framsticks 4.0rc3
  • reading and writing of standard.expt
  • a proof-of-concept implementation of StandardExperiment?

CHANGELOG:
Optionally return FreeAccess? from registry.

Add SimulatorRange?.

StandardExperiment? with genotypes circulation.

Automate registration around StandardState?.

More improvements to StandardExperiment?.

Skeleton version of StandardExperiment?.

Test saving of StandardState?.

Standard experiment state is being loaded.

More development towards StandardState? reading.

Work on reading standard experiment state.

Add classes for standard experiment.

Update example standard.expt

Add FreeAccess? and FreeObject?.

Made compatible with version 4.0rc3

Change deserialization policy.

Improve SSH support.

Working running simulator over SSH.

Fix joining bug in Experiment.

Working version of SimulatorRunner?.

Add more SimulatorProviders?.

Working PrimeExperimentTest? with 4.0rc3

Add references to deserialization.

Add OpaqueObject? and it's serialization.

Add deserialization of dictionaries.

Partial implementation of deserialization.

Add more tests for deserialization.

Prepare tests for deserialization.

Add proper result to prime experiment test.

Minor fixes to simulators providers.

Draft version of SimulatorProvider?.

Add SimulatorProvider? interface.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • java/main/src/main/java/com/framsticks/params/Registry.java

    r103 r107  
    88import com.framsticks.util.DoubleMap;
    99import com.framsticks.util.FramsticksException;
     10import com.framsticks.util.lang.Casting;
    1011import com.framsticks.util.lang.Strings;
    1112
     
    5354                        registerAndBuild(r);
    5455                }
     56
     57                for (String i : ParamCandidate.getAllCandidates(javaClass).getDependentClassesFromInfo()) {
     58                        putFramsClass(FramsClassBuilder.readFromStream(getClass().getResourceAsStream("/info/" + i + ".info")));
     59                }
    5560                return this;
    5661        }
     
    7681                try {
    7782                        if (!javaClasses.containsValue(javaClass)) {
     83                                registerAndBuild(javaClass);
     84                        }
     85
     86                        if (!javaClasses.containsValue(javaClass)) {
    7887                                throw new FramsticksException().msg("java class is not registered");
    7988                        }
     
    114123        }
    115124
    116         public @Nonnull Access prepareAccess(CompositeParam param) throws ConstructionException {
    117                 return wrapAccessWithListIfNeeded(param, createAccess(param.getContainedTypeName()));
    118         }
    119 
    120         public @Nonnull Access createAccess(@Nonnull String name) throws ConstructionException {
     125        public @Nonnull Access prepareAccess(CompositeParam param, boolean force) throws ConstructionException {
     126                return wrapAccessWithListIfNeeded(param, createAccess(param.getContainedTypeName(), force));
     127        }
     128
     129        public @Nonnull Access createAccess(@Nonnull Object object) throws ConstructionException {
     130                if (object instanceof MapBasedObject) {
     131                        return createAccess(((MapBasedObject) object).getFramsTypeName());
     132                }
     133                return createAccess(object.getClass());
     134        }
     135
     136        public @Nonnull Access createAccess(@Nonnull String name, boolean force) throws ConstructionException {
    121137                try {
    122138                        Strings.assureNotEmpty(name);
    123139                        FramsClass framsClass = getFramsClass(name);
    124140                        if (framsClass == null) {
    125                                 throw new ConstructionException().msg("framsclass is missing");
     141                                if (!force) {
     142                                        throw new ConstructionException().msg("framsclass is missing");
     143                                }
     144                                return new FreeAccess(name);
    126145                        }
    127146
     
    131150                        throw new FramsticksException().msg("failed to create access for name").arg("name", name).cause(e);
    132151                }
     152        }
     153
     154        public @Nonnull Access createAccess(@Nonnull String name) throws ConstructionException {
     155                return createAccess(name, false);
    133156        }
    134157
     
    166189
    167190        public Access bindAccessFor(Object object) {
    168                 return createAccess(object.getClass()).select(object);
     191                return createAccess(object).select(object);
     192        }
     193
     194        public Registry register(ParamsPackage paramsPackage) {
     195                paramsPackage.register(this);
     196                return this;
     197        }
     198
     199        public Registry registerAndBuild(ParamsPackage paramsPackage) {
     200                paramsPackage.setBuild(true);
     201                paramsPackage.register(this);
     202                return this;
     203        }
     204
     205        public Access bindAccessFor(Access parent, String paramName) {
     206                CompositeParam childParam = Casting.throwCast(CompositeParam.class, parent.getParam(paramName));
     207                return prepareAccess(childParam, true).select(parent.get(childParam, Object.class));
    169208        }
    170209
Note: See TracChangeset for help on using the changeset viewer.