source: java/main/src/main/java/com/framsticks/parsers/Loaders.java @ 193

Last change on this file since 193 was 193, checked in by Maciej Komosinski, 10 years ago

Set svn:eol-style native for all textual files

  • Property svn:eol-style set to native
File size: 1.5 KB
Line 
1package com.framsticks.parsers;
2
3import javax.annotation.Nonnull;
4
5import com.framsticks.params.*;
6// import org.apache.logging.log4j.Logger;
7
8/**
9 * @author Piotr Sniegowski
10 */
11public class Loaders {
12
13        // private static final Logger log = LogManager.getLogger(Loaders.class.getName());
14
15        public static @Nonnull FramsClass loadFramsClass(Source source) throws ConstructionException {
16                final MultiParamLoader loader = new MultiParamLoader();
17                loader.setNewSource(source);
18
19                final FramsClassBuilder builder = FramsClass.build();
20
21                final Access framsClassAccess = new ReflectionAccess(FramsClassBuilder.class, FramsClass.build().forClass(FramsClassBuilder.class));
22                Access paramBuilderAccess = new ReflectionAccess(ParamBuilder.class, FramsClass.build().forClass(ParamBuilder.class));
23                framsClassAccess.select(builder);
24                loader.setAccessProvider(new AccessStash().add(framsClassAccess).add(paramBuilderAccess));
25
26                loader.addListener(MultiParamLoader.Status.AfterObject, new MultiParamLoader.StatusListener() {
27                        @Override
28                        public void onStatusChange() {
29                                Object object = loader.returnObject();
30                                if (object instanceof FramsClassBuilder) {
31                                        return;
32                                }
33                                framsClassAccess.select(builder).tryAutoAppend(object);
34                                // throw new ConstructionException().msg("failed to interpretate object").arg("object", object);
35
36                        }
37                });
38
39                try {
40                        loader.go();
41                        return builder.finish();
42                } catch (Exception e) {
43                        throw new ConstructionException().msg("an error occurred while loading class description").arg("before", loader.getCurrentLine()).cause(e);
44                }
45        }
46}
Note: See TracBrowser for help on using the repository browser.