diff --git a/cnf/build.bnd b/cnf/build.bnd index bccac78f..d97861a9 100644 --- a/cnf/build.bnd +++ b/cnf/build.bnd @@ -94,7 +94,7 @@ runreq.felix.web=\ osgi.identity;filter:='(osgi.identity=org.apache.felix.webconsole.plugins.useradmin)' runreq.eclipselink.jpa=\,\ - osgi.identity;filter:='(osgi.identity=org.apache.aries.jpa.eclipselink.adapter)' + osgi.identity;filter:='(osgi.identity=org.apache.aries.jpa.eclipselink.adapter)',\ osgi.identity;filter:='(osgi.identity=javax.persistence)' # Build path groups: diff --git a/uk.co.strangeskies.modabi.benchmarks/test/.gitignore b/uk.co.strangeskies.modabi.benchmarks/test/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/uk.co.strangeskies.modabi.bnd/test/.gitignore b/uk.co.strangeskies.modabi.bnd/test/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/uk.co.strangeskies.modabi.core.api/bnd.bnd b/uk.co.strangeskies.modabi.core.api/bnd.bnd index 49022bf8..23150c64 100644 --- a/uk.co.strangeskies.modabi.core.api/bnd.bnd +++ b/uk.co.strangeskies.modabi.core.api/bnd.bnd @@ -28,4 +28,4 @@ Export-Package: \ uk.co.strangeskies.modabi.processing,\ uk.co.strangeskies.modabi.processing.providers,\ uk.co.strangeskies.modabi.schema,\ - uk.co.strangeskies.modabi.schema.building \ No newline at end of file + uk.co.strangeskies.modabi.schema.building diff --git a/uk.co.strangeskies.modabi.core.api/src/uk/co/strangeskies/modabi/Binding.java b/uk.co.strangeskies.modabi.core.api/src/uk/co/strangeskies/modabi/Binding.java index 6257c5aa..a9f8e8f8 100644 --- a/uk.co.strangeskies.modabi.core.api/src/uk/co/strangeskies/modabi/Binding.java +++ b/uk.co.strangeskies.modabi.core.api/src/uk/co/strangeskies/modabi/Binding.java @@ -18,7 +18,6 @@ */ package uk.co.strangeskies.modabi; -import uk.co.strangeskies.modabi.io.structured.StructuredDataSource; import uk.co.strangeskies.modabi.schema.Model; public interface Binding { @@ -26,9 +25,9 @@ public interface Binding { public T getData(); - public void updateData(); + // public void updateData(); - public StructuredDataSource getSource(); + // public StructuredDataSource getSource(); - public void updateSource(); + // public void updateSource(); } diff --git a/uk.co.strangeskies.modabi.core.api/src/uk/co/strangeskies/modabi/SchemaManager.java b/uk.co.strangeskies.modabi.core.api/src/uk/co/strangeskies/modabi/SchemaManager.java index 5be4736c..f0080b47 100644 --- a/uk.co.strangeskies.modabi.core.api/src/uk/co/strangeskies/modabi/SchemaManager.java +++ b/uk.co.strangeskies.modabi.core.api/src/uk/co/strangeskies/modabi/SchemaManager.java @@ -47,7 +47,7 @@ public interface SchemaManager { interface Binder { BindingFuture from(StructuredDataSource input); - BindingFuture from(RewritableStructuredData input); + // BindingFuture from(RewritableStructuredData input); default BindingFuture from(File input) { return from(input.toURI()); @@ -67,7 +67,7 @@ default BindingFuture from(URI input) { BindingFuture from(String extension, InputStream input); - Binder updatable(); + // Binder updatable(); /* * Errors which are rethrown will be passed to the next error handler if @@ -80,7 +80,7 @@ default BindingFuture from(URI input) { interface Unbinder { U to(U output); - BindingFuture to(RewritableStructuredData output); + // BindingFuture to(RewritableStructuredData output); default BindingFuture to(File output) { return to(output.toURI()); @@ -100,12 +100,11 @@ default BindingFuture to(URL output) { if (lastDot > 0) { extension = extension.substring(lastDot); } else { - throw new IllegalArgumentException("No recognisable extension for file'" - + output + "', data interface cannot be selected"); + throw new IllegalArgumentException( + "No recognisable extension for file'" + output + "', data interface cannot be selected"); } - try ( - OutputStream fileStream = output.openConnection().getOutputStream()) { + try (OutputStream fileStream = output.openConnection().getOutputStream()) { BindingFuture binding = to(extension, fileStream); fileStream.flush(); return binding; @@ -116,7 +115,7 @@ default BindingFuture to(URL output) { BindingFuture to(String extension, OutputStream output); - Unbinder updatable(); + // Unbinder updatable(); /* * Errors which are rethrown will be passed to the next error handler if @@ -140,31 +139,23 @@ default GeneratedSchema generateSchema(QualifiedName name) { return generateSchema(name, Collections.emptySet()); } - default GeneratedSchema generateSchema(QualifiedName name, - Schema... dependencies) { + default GeneratedSchema generateSchema(QualifiedName name, Schema... dependencies) { return generateSchema(name, Arrays.asList(dependencies)); } - GeneratedSchema generateSchema(QualifiedName name, - Collection dependencies); + GeneratedSchema generateSchema(QualifiedName name, Collection dependencies); void registerProvider(TypeToken providedClass, Supplier provider); void registerProvider(Function, ?> provider); - default void registerProvider(Class providedClass, - Supplier provider) { + default void registerProvider(Class providedClass, Supplier provider) { registerProvider(TypeToken.over(providedClass), provider); } boolean registerSchema(Schema schema); - default BindingFuture registerBinding(Model model, T data) { - BindingFuture binding = unbind(model, data) - .to(new DiscardingStructuredDataTarget()); - binding.resolve(); - return binding; - } + BindingFuture registerBinding(Model model, T data); // Blocks until all possible processing is done other than waiting imports: Binder bind(Model model); diff --git a/uk.co.strangeskies.modabi.core.provider/bnd.bnd b/uk.co.strangeskies.modabi.core.provider/bnd.bnd index c9449948..8f66001c 100644 --- a/uk.co.strangeskies.modabi.core.provider/bnd.bnd +++ b/uk.co.strangeskies.modabi.core.provider/bnd.bnd @@ -43,4 +43,4 @@ Bundle-Description: \ osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.shell)',\ osgi.identity;filter:='(&(osgi.identity=org.apache.felix.scr)(version>=1.8.2)(version<=1.8.2))' -runee: JavaSE-1.8 --runfw: org.eclipse.osgi \ No newline at end of file +-runfw: org.eclipse.osgi diff --git a/uk.co.strangeskies.modabi.core.provider/src/uk/co/strangeskies/modabi/impl/SchemaManagerImpl.java b/uk.co.strangeskies.modabi.core.provider/src/uk/co/strangeskies/modabi/impl/SchemaManagerImpl.java index 5d2cceac..d6acb179 100644 --- a/uk.co.strangeskies.modabi.core.provider/src/uk/co/strangeskies/modabi/impl/SchemaManagerImpl.java +++ b/uk.co.strangeskies.modabi.core.provider/src/uk/co/strangeskies/modabi/impl/SchemaManagerImpl.java @@ -108,20 +108,17 @@ public class SchemaManagerImpl implements SchemaManager { private final Map dataInterfaces; public SchemaManagerImpl() { - this(new SchemaBuilderImpl(), new ModelBuilderImpl(), - new DataTypeBuilderImpl()); + this(new SchemaBuilderImpl(), new ModelBuilderImpl(), new DataTypeBuilderImpl()); } - public SchemaManagerImpl(SchemaBuilder schemaBuilder, - ModelBuilder modelBuilder, DataTypeBuilder dataTypeBuilder) { + public SchemaManagerImpl(SchemaBuilder schemaBuilder, ModelBuilder modelBuilder, DataTypeBuilder dataTypeBuilder) { this.modelBuilder = modelBuilder; this.dataTypeBuilder = dataTypeBuilder; providers = new ArrayList<>(); bindingFutures = new MultiHashMap<>(HashSet::new); // TODO make synchronous - coreSchemata = new CoreSchemata(schemaBuilder, modelBuilder, - dataTypeBuilder); + coreSchemata = new CoreSchemata(schemaBuilder, modelBuilder, dataTypeBuilder); registeredSchemata = new Schemata(); registeredModels = new Models(); @@ -133,8 +130,7 @@ public SchemaManagerImpl(SchemaBuilder schemaBuilder, registerProvider(new TypeToken<@Infer SortedSet>() {}, TreeSet::new); registerProvider(new TypeToken<@Infer Set>() {}, HashSet::new); - registerProvider(new TypeToken<@Infer LinkedHashSet>() {}, - LinkedHashSet::new); + registerProvider(new TypeToken<@Infer LinkedHashSet>() {}, LinkedHashSet::new); registerProvider(new TypeToken<@Infer List>() {}, ArrayList::new); registerProvider(new TypeToken<@Infer Map>() {}, HashMap::new); @@ -150,14 +146,11 @@ SchemaBinder getSchemaBinder() { } BindingContextImpl getBindingContext() { - return new BindingContextImpl(this) - .withProvision(DereferenceSource.class, - bindingProviders.dereferenceSource()) + return new BindingContextImpl(this).withProvision(DereferenceSource.class, bindingProviders.dereferenceSource()) .withProvision(IncludeTarget.class, bindingProviders.includeTarget()) .withProvision(ImportSource.class, bindingProviders.importSource()) .withProvision(DataLoader.class, bindingProviders.dataLoader()) - .withProvision(Imports.class, bindingProviders.imports()) - .withProvision(BindingContext.class, c -> c); + .withProvision(Imports.class, bindingProviders.imports()).withProvision(BindingContext.class, c -> c); } ModelBuilder getModelBuilder() { @@ -222,12 +215,10 @@ public BindingFuture from(String extension, InputStream input) { return registerFuture(binder.from(extension, input)); } - private BindingFuture registerFuture( - BindingFuture schema) { + private BindingFuture registerFuture(BindingFuture schema) { new Thread(() -> { registerSchemaImpl(schema.resolve()); - bindingFutures.add( - coreSchemata.metaSchema().getSchemaModel().getName(), schema); + bindingFutures.add(coreSchemata.metaSchema().getSchemaModel().getName(), schema); }).start(); return schema; @@ -238,13 +229,6 @@ public Binder with(Consumer errorHandler) { binder.with(errorHandler); return this; } - - @Override - public Binder supply( - Function> action) { - binder.supply(action); - return this; - } }; } @@ -256,9 +240,25 @@ void registerDataType(DataType type) { registeredTypes.add(type); } - protected void registerBindingImpl(Binding binding) { - bindingFutures.add(binding.getModel().getName(), - BindingFuture.forBinding(binding)); + @Override + public BindingFuture registerBinding(Model model, T data) { + return registerBindingImpl(new Binding() { + @Override + public Model getModel() { + return model; + } + + @Override + public T getData() { + return data; + } + }); + } + + protected BindingFuture registerBindingImpl(Binding binding) { + BindingFuture future = BindingFuture.forBinding(binding); + bindingFutures.add(binding.getModel().getName(), future); + return future; } @Override @@ -271,20 +271,13 @@ public BaseSchema getBaseSchema() { return coreSchemata.baseSchema(); } - private Binder createBinder( - Function> bindingFunction) { + private Binder createBinder(Function> bindingFunction) { return new Binder() { @Override public BindingFuture from(StructuredDataSource input) { return bindingFunction.apply(input); } - @Override - public BindingFuture from(RewritableStructuredData input) { - // TODO Auto-generated method stub - return null; - } - @Override public BindingFuture from(URL input) { String extension = input.getPath(); @@ -323,14 +316,12 @@ public BindingFuture from(String extension, InputStream input) { return from(input, getDataInterfaces(extension)); } - private BindingFuture from(InputStream input, - Collection loaders) { + private BindingFuture from(InputStream input, Collection loaders) { BufferedInputStream bufferedInput = new BufferedInputStream(input); bufferedInput.mark(4096); if (loaders.isEmpty()) - throw new IllegalArgumentException( - "No valid file loader registered for input"); + throw new IllegalArgumentException("No valid file loader registered for input"); Exception exception = null; @@ -343,19 +334,11 @@ private BindingFuture from(InputStream input, try { bufferedInput.reset(); } catch (IOException e) { - throw new IllegalArgumentException( - "Problem buffering input for binding", e); + throw new IllegalArgumentException("Problem buffering input for binding", e); } } - throw new IllegalArgumentException( - "Could not bind input with any registered file loaders", exception); - } - - @Override - public Binder supply(Function> action) { - // TODO Auto-generated method stub - return null; + throw new IllegalArgumentException("Could not bind input with any registered file loaders", exception); } @Override @@ -368,8 +351,7 @@ public Binder with(Consumer errorHandler) { @Override public Binder bind(Model model) { - return createBinder(input -> addBindingFuture( - getSchemaBinder().bind(model.effective(), input))); + return createBinder(input -> addBindingFuture(getSchemaBinder().bind(model.effective(), input))); } @SuppressWarnings("unchecked") @@ -379,18 +361,16 @@ public Binder bind(TypeToken dataClass) { Model model = registeredModels.get(input.peekNextChild()); List> models = registeredModels.getModelsWithClass(dataClass); if (models.contains(model)) - throw new IllegalArgumentException("None of the models '" + model - + "' compatible with the class '" + dataClass + throw new IllegalArgumentException("None of the models '" + model + "' compatible with the class '" + dataClass + "' match the root element '" + input.peekNextChild() + "'"); - return (BindingFuture) addBindingFuture( - getSchemaBinder().bind(model.effective(), input)); + return (BindingFuture) addBindingFuture(getSchemaBinder().bind(model.effective(), input)); }); } @Override public Binder bind() { - return createBinder(input -> addBindingFuture(getSchemaBinder() - .bind(registeredModels.get(input.peekNextChild()).effective(), input))); + return createBinder(input -> addBindingFuture( + getSchemaBinder().bind(registeredModels.get(input.peekNextChild()).effective(), input))); } private BindingFuture addBindingFuture(BindingFuture binding) { @@ -410,18 +390,15 @@ private BindingFuture addBindingFuture(BindingFuture binding) { @SuppressWarnings("unchecked") @Override public Set> bindingFutures(Model model) { - Set> modelBindings = bindingFutures - .get(model.effective().getName()); + Set> modelBindings = bindingFutures.get(model.effective().getName()); if (modelBindings == null) return Collections.emptySet(); else - return modelBindings.stream().map(t -> (BindingFuture) t) - .collect(Collectors.toSet()); + return modelBindings.stream().map(t -> (BindingFuture) t).collect(Collectors.toSet()); } - private Unbinder createUnbinder( - Consumer unbindingFunction) { + private Unbinder createUnbinder(Consumer unbindingFunction) { return new Unbinder() { @Override public BindingFuture to(String extension, OutputStream output) { @@ -431,25 +408,12 @@ public BindingFuture to(String extension, OutputStream output) { } @Override - public BindingFuture to(StructuredDataTarget output) { + public U to(U output) { unbindingFunction.accept(output); return null; } - @Override - public Unbinder consume(Predicate filter) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Unbinder consume(TypeToken type, - BiPredicate> filter) { - // TODO Auto-generated method stub - return null; - } - @Override public Unbinder with(Consumer errorHandler) { // TODO Auto-generated method stub @@ -460,25 +424,21 @@ public Unbinder with(Consumer errorHandler) { @Override public Unbinder unbind(Model model, T data) { - return createUnbinder(output -> new SchemaUnbinder(this) - .unbind(model.effective(), output, data)); + return createUnbinder(output -> new SchemaUnbinder(this).unbind(model.effective(), output, data)); } @Override public Unbinder unbind(T data) { - return createUnbinder( - output -> new SchemaUnbinder(this).unbind(output, data)); + return createUnbinder(output -> new SchemaUnbinder(this).unbind(output, data)); } @Override public Unbinder unbind(TypeToken dataType, T data) { - return createUnbinder( - output -> new SchemaUnbinder(this).unbind(output, dataType, data)); + return createUnbinder(output -> new SchemaUnbinder(this).unbind(output, dataType, data)); } @Override - public void registerProvider(TypeToken providedType, - Supplier provider) { + public void registerProvider(TypeToken providedType, Supplier provider) { registerProvider(c -> canEqual(c, providedType) ? provider.get() : null); } @@ -496,8 +456,7 @@ public void registerProvider(Function, ?> provider) { providers.add(c -> { Object provided = provider.apply(c); if (provided != null && !c.isAssignableFrom(provided.getClass())) - throw new SchemaException("Invalid object provided for the class [" + c - + "] by provider [" + provider + "]"); + throw new SchemaException("Invalid object provided for the class [" + c + "] by provider [" + provider + "]"); return provided; }); } @@ -508,17 +467,13 @@ public Provisions provisions() { @Override @SuppressWarnings("unchecked") public TypedObject provide(TypeToken type) { - return new TypedObject<>(type, - (T) providers.stream().map(p -> p.apply(type)) - .filter(Objects::nonNull).findFirst() - .orElseThrow(() -> new SchemaException( - "No provider exists for the type '" + type + "'"))); + return new TypedObject<>(type, (T) providers.stream().map(p -> p.apply(type)).filter(Objects::nonNull) + .findFirst().orElseThrow(() -> new SchemaException("No provider exists for the type '" + type + "'"))); } @Override public boolean isProvided(TypeToken type) { - return providers.stream().map(p -> p.apply(type)) - .anyMatch(Objects::nonNull); + return providers.stream().map(p -> p.apply(type)).anyMatch(Objects::nonNull); } }; } @@ -539,10 +494,8 @@ public DataTypes registeredTypes() { } @Override - public GeneratedSchema generateSchema(QualifiedName name, - Collection dependencies) { - GeneratedSchemaImpl schema = new GeneratedSchemaImpl(this, name, - dependencies); + public GeneratedSchema generateSchema(QualifiedName name, Collection dependencies) { + GeneratedSchemaImpl schema = new GeneratedSchemaImpl(this, name, dependencies); registerSchema(schema); return schema; } @@ -570,8 +523,7 @@ public StructuredDataFormat getDataInterface(String id) { @Override public Set getDataInterfaces(String extension) { - return getRegisteredDataInterfaces().stream() - .filter(l -> l.getFileExtensions().contains(extension)) + return getRegisteredDataInterfaces().stream().filter(l -> l.getFileExtensions().contains(extension)) .collect(Collectors.toCollection(LinkedHashSet::new)); } } diff --git a/uk.co.strangeskies.modabi.core.provider/src/uk/co/strangeskies/modabi/impl/processing/SchemaBinder.java b/uk.co.strangeskies.modabi.core.provider/src/uk/co/strangeskies/modabi/impl/processing/SchemaBinder.java index 4009f2f5..0a723b67 100644 --- a/uk.co.strangeskies.modabi.core.provider/src/uk/co/strangeskies/modabi/impl/processing/SchemaBinder.java +++ b/uk.co.strangeskies.modabi.core.provider/src/uk/co/strangeskies/modabi/impl/processing/SchemaBinder.java @@ -35,8 +35,7 @@ public class SchemaBinder { private static interface TryGet { - Binding tryGet() - throws InterruptedException, ExecutionException, TimeoutException; + Binding tryGet() throws InterruptedException, ExecutionException, TimeoutException; } private final BindingContextImpl context; @@ -45,8 +44,7 @@ public SchemaBinder(BindingContextImpl context) { this.context = context; } - public BindingFuture bind(Model.Effective model, - StructuredDataSource input) { + public BindingFuture bind(Model.Effective model, StructuredDataSource input) { try { Class.forName("uk.co.strangeskies.modabi.schema.SchemaNode"); Class.forName("uk.co.strangeskies.modabi.schema.SchemaNode", true, @@ -61,8 +59,8 @@ public BindingFuture bind(Model.Effective model, QualifiedName inputRoot = input.startNextChild(); if (!inputRoot.equals(model.getName())) - throw new BindingException("Model '" + model.getName() - + "' does not match root input node '" + inputRoot + "'", context); + throw new BindingException("Model '" + model.getName() + "' does not match root input node '" + inputRoot + "'", + context); FutureTask> future = new FutureTask>(() -> { Thread.currentThread().setContextClassLoader(classLoader); @@ -80,30 +78,11 @@ public Model getModel() { public T getData() { return data; } - - @Override - public void updateData() { - // TODO Auto-generated method stub - - } - - @Override - public NavigableStructuredDataSource getSource() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void updateSource() { - // TODO Auto-generated method stub - - } }; } catch (SchemaException e) { throw e; } catch (Exception e) { - throw new BindingException("Unexpected problem during binding.", - context, e); + throw new BindingException("Unexpected problem during binding.", context, e); } }); future.run(); @@ -139,15 +118,16 @@ private Binding tryGet(TryGet get) { try { return get.tryGet(); } catch (InterruptedException e) { - throw new SchemaException("Unexpected interrupt during binding of '" - + getName() + "' with model '" + getModel().getName() + "'", e); + throw new SchemaException( + "Unexpected interrupt during binding of '" + getName() + "' with model '" + getModel().getName() + "'", + e); } catch (ExecutionException e) { - throw new SchemaException("Exception during binding of '" + getName() - + "' with model '" + getModel().getName() + "'", e.getCause()); + throw new SchemaException( + "Exception during binding of '" + getName() + "' with model '" + getModel().getName() + "'", + e.getCause()); } catch (TimeoutException e) { throw new SchemaException( - "Timed out waiting for binding of '" + getName() - + "' with model '" + getModel().getName() + "'", + "Timed out waiting for binding of '" + getName() + "' with model '" + getModel().getName() + "'", e.getCause()); } } diff --git a/uk.co.strangeskies.modabi.core.test/bnd.bnd b/uk.co.strangeskies.modabi.core.test/bnd.bnd index 17126bcc..49b09a33 100644 --- a/uk.co.strangeskies.modabi.core.test/bnd.bnd +++ b/uk.co.strangeskies.modabi.core.test/bnd.bnd @@ -62,4 +62,4 @@ Test-Cases: ${test-cases} -runvm: -XX:MaxJavaStackTraceDepth=1000000 Import-Package: \ uk.co.strangeskies.modabi.processing.providers,\ - * \ No newline at end of file + * diff --git a/uk.co.strangeskies.modabi.core.test/test/.gitignore b/uk.co.strangeskies.modabi.core.test/test/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/uk.co.strangeskies.modabi.core.test/testdir/TEST-uk.co.strangeskies.modabi.core.test-1.0.0.xml b/uk.co.strangeskies.modabi.core.test/testdir/TEST-uk.co.strangeskies.modabi.core.test-1.0.0.xml index 29e64f91..22efcf86 100644 --- a/uk.co.strangeskies.modabi.core.test/testdir/TEST-uk.co.strangeskies.modabi.core.test-1.0.0.xml +++ b/uk.co.strangeskies.modabi.core.test/testdir/TEST-uk.co.strangeskies.modabi.core.test-1.0.0.xml @@ -1,5 +1,5 @@ - + @@ -11,8 +11,8 @@ - - + + @@ -34,7 +34,7 @@ - + @@ -49,7 +49,7 @@ - + @@ -78,34 +78,34 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + copyable - + testy testy2 @@ -117,161 +117,7 @@ testy2 testy2 - - (ComplexNodeBinder.java:39) - at uk.co.strangeskies.modabi.impl.processing.ChildNodeBinder$1.accept(ChildNodeBinder.java:67) - at uk.co.strangeskies.modabi.impl.processing.ChildNodeBinder$1.accept(ChildNodeBinder.java:1) - at uk.co.strangeskies.modabi.schema.ChildNode$Effective$1.accept(ChildNode.java:61) - at uk.co.strangeskies.modabi.schema.ComplexNode$Effective.process(ComplexNode.java:31) - at uk.co.strangeskies.modabi.schema.ChildNode$Effective.process(ChildNode.java:38) - at uk.co.strangeskies.modabi.impl.processing.ChildNodeBinder.bind(ChildNodeBinder.java:93) - ... 36 more -Caused by: uk.co.strangeskies.modabi.processing.BindingException: Failed to bind node 'uk.co.strangeskies.modabi:2014-01-01:type' at node 'uk.co.strangeskies.modabi:2014-01-01:type' with binding target object '[]' - at uk.co.strangeskies.modabi.impl.processing.ChildNodeBinder.bind(ChildNodeBinder.java:95) - at uk.co.strangeskies.modabi.impl.processing.BindingNodeBinder.bind(BindingNodeBinder.java:141) - at uk.co.strangeskies.modabi.impl.processing.ComplexNodeBinder.bindExactNode(ComplexNodeBinder.java:145) - at uk.co.strangeskies.modabi.impl.processing.ComplexNodeBinder.lambda$1(ComplexNodeBinder.java:72) - at uk.co.strangeskies.modabi.impl.processing.ComplexNodeBinder.lambda$0(ComplexNodeBinder.java:93) - at uk.co.strangeskies.modabi.impl.processing.ChildNodeBinder.repeatNode(ChildNodeBinder.java:39) - ... 44 more -Caused by: uk.co.strangeskies.modabi.processing.BindingException: Node 'uk.co.strangeskies.modabi:2014-01-01:type' failed to bind on occurance '1' of range '[0,]' at node 'uk.co.strangeskies.modabi:2014-01-01:type' with binding target object '[]' - at uk.co.strangeskies.modabi.impl.processing.ChildNodeBinder.repeatNode(ChildNodeBinder.java:46) - at uk.co.strangeskies.modabi.impl.processing.ComplexNodeBinder.bind(ComplexNodeBinder.java:58) - at uk.co.strangeskies.modabi.impl.processing.ComplexNodeBinder.(ComplexNodeBinder.java:39) - at uk.co.strangeskies.modabi.impl.processing.ChildNodeBinder$1.accept(ChildNodeBinder.java:67) - at uk.co.strangeskies.modabi.impl.processing.ChildNodeBinder$1.accept(ChildNodeBinder.java:1) - at uk.co.strangeskies.modabi.schema.ChildNode$Effective$1.accept(ChildNode.java:61) - at uk.co.strangeskies.modabi.schema.ComplexNode$Effective.process(ComplexNode.java:31) - at uk.co.strangeskies.modabi.schema.ChildNode$Effective.process(ChildNode.java:38) - at uk.co.strangeskies.modabi.impl.processing.ChildNodeBinder.bind(ChildNodeBinder.java:93) - ... 49 more -Caused by: uk.co.strangeskies.modabi.processing.BindingException: Failed to bind node 'uk.co.strangeskies.modabi:2014-01-01:dataType' at node 'uk.co.strangeskies.modabi:2014-01-01:dataType' with binding target object 'DataType configurator: uk.co.strangeskies.modabi:2014-01-01:id' - at uk.co.strangeskies.modabi.impl.processing.ChildNodeBinder.bind(ChildNodeBinder.java:95) - at uk.co.strangeskies.modabi.impl.processing.BindingNodeBinder.bind(BindingNodeBinder.java:141) - at uk.co.strangeskies.modabi.impl.processing.ComplexNodeBinder.bindExactNode(ComplexNodeBinder.java:145) - at uk.co.strangeskies.modabi.impl.processing.ComplexNodeBinder.lambda$1(ComplexNodeBinder.java:72) - at uk.co.strangeskies.modabi.impl.processing.ComplexNodeBinder.lambda$0(ComplexNodeBinder.java:93) - at uk.co.strangeskies.modabi.impl.processing.ChildNodeBinder.repeatNode(ChildNodeBinder.java:39) - ... 57 more -Caused by: uk.co.strangeskies.modabi.processing.BindingException: Node 'uk.co.strangeskies.modabi:2014-01-01:annotatedType' must be bound data. at node 'uk.co.strangeskies.modabi:2014-01-01:dataType' with binding target object 'DataType configurator: uk.co.strangeskies.modabi:2014-01-01:id' - at uk.co.strangeskies.modabi.impl.processing.DataNodeBinder.validateResults(DataNodeBinder.java:136) - at uk.co.strangeskies.modabi.impl.processing.DataNodeBinder.bindList(DataNodeBinder.java:186) - at uk.co.strangeskies.modabi.impl.processing.DataNodeBinder.bind(DataNodeBinder.java:123) - at uk.co.strangeskies.modabi.impl.processing.DataNodeBinder.(DataNodeBinder.java:46) - at uk.co.strangeskies.modabi.impl.processing.BindingNodeBinder$4.accept(BindingNodeBinder.java:189) - at uk.co.strangeskies.modabi.schema.DataNode$Effective.process(DataNode.java:39) - at uk.co.strangeskies.modabi.impl.processing.BindingNodeBinder.getSingleBinding(BindingNodeBinder.java:181) - at uk.co.strangeskies.modabi.impl.processing.BindingNodeBinder$3.accept(BindingNodeBinder.java:171) - at uk.co.strangeskies.modabi.impl.PartialSchemaProcessingContext.accept(PartialSchemaProcessingContext.java:41) - at uk.co.strangeskies.modabi.schema.DataNode$Effective.process(DataNode.java:39) - at uk.co.strangeskies.modabi.impl.processing.BindingNodeBinder.getSingleBindingSequence(BindingNodeBinder.java:162) - at uk.co.strangeskies.modabi.impl.processing.BindingNodeBinder.bind(BindingNodeBinder.java:121) - at uk.co.strangeskies.modabi.impl.processing.DataNodeBinder.bindExactNode(DataNodeBinder.java:229) - at uk.co.strangeskies.modabi.impl.processing.DataNodeBinder.bindWithDataSource(DataNodeBinder.java:195) - at uk.co.strangeskies.modabi.impl.processing.DataNodeBinder.bind(DataNodeBinder.java:103) - at uk.co.strangeskies.modabi.impl.processing.DataNodeBinder.(DataNodeBinder.java:46) - at uk.co.strangeskies.modabi.impl.processing.ChildNodeBinder$1.accept(ChildNodeBinder.java:72) - at uk.co.strangeskies.modabi.impl.processing.ChildNodeBinder$1.accept(ChildNodeBinder.java:1) - at uk.co.strangeskies.modabi.schema.ChildNode$Effective$1.accept(ChildNode.java:56) - at uk.co.strangeskies.modabi.schema.DataNode$Effective.process(DataNode.java:39) - at uk.co.strangeskies.modabi.schema.ChildNode$Effective.process(ChildNode.java:38) - at uk.co.strangeskies.modabi.impl.processing.ChildNodeBinder.bind(ChildNodeBinder.java:93) - ... 62 more -Caused by: uk.co.strangeskies.modabi.processing.BindingException: Cannot invoke static factory method 'public static java.lang.reflect.AnnotatedType uk.co.strangeskies.reflection.AnnotatedTypes.fromString(java.lang.String)' on class 'null' with parameters '[uk.co.strangeskies.modabi.processing.providers.ReferenceId<@uk.co.strangeskies.reflection.TypeToken.Infer ?>]' at node 'uk.co.strangeskies.modabi:2014-01-01:annotatedType' with binding target object 'DataType configurator: uk.co.strangeskies.modabi:2014-01-01:id' - at uk.co.strangeskies.modabi.impl.processing.BindingNodeBinder.bind(BindingNodeBinder.java:126) - at uk.co.strangeskies.modabi.impl.processing.DataNodeBinder.bindExactNode(DataNodeBinder.java:229) - at uk.co.strangeskies.modabi.impl.processing.DataNodeBinder.bindList(DataNodeBinder.java:172) - ... 82 more -Caused by: java.lang.reflect.InvocationTargetException - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.lang.reflect.Method.invoke(Method.java:497) - at uk.co.strangeskies.modabi.impl.processing.BindingNodeBinder.bind(BindingNodeBinder.java:123) - ... 84 more -Caused by: uk.co.strangeskies.utilities.text.ParseException: Cannot apply transformation to parse result -uk.co.strangeskies.modabi.processing.providers.ReferenceId<@uk.co.strangeskies.reflection.TypeToken.Infer ?> -^..........................................................^ - at uk.co.strangeskies.utilities.text.ParseState.addException(ParseState.java:98) - at uk.co.strangeskies.utilities.text.ParseResult.mapResult(ParseResult.java:58) - at uk.co.strangeskies.utilities.text.ParserProxy.parseSubstringImpl(ParserProxy.java:54) - at uk.co.strangeskies.utilities.text.AbstractParser.parseSubstring(AbstractParser.java:86) - at uk.co.strangeskies.utilities.text.JoiningParser.parseSubstringImpl(JoiningParser.java:42) - at uk.co.strangeskies.utilities.text.AbstractParser.parseSubstring(AbstractParser.java:86) - at uk.co.strangeskies.utilities.text.AppendingParser.parseSubstringImpl(AppendingParser.java:39) - at uk.co.strangeskies.utilities.text.AbstractParser.parseSubstring(AbstractParser.java:86) - at uk.co.strangeskies.utilities.text.JoiningParser.parseSubstringImpl(JoiningParser.java:40) - at uk.co.strangeskies.utilities.text.AbstractParser.parseSubstring(AbstractParser.java:86) - at uk.co.strangeskies.utilities.text.ParserProxy.parseSubstringImpl(ParserProxy.java:54) - at uk.co.strangeskies.utilities.text.ChoiceParser.parseSubstringImpl(ChoiceParser.java:46) - at uk.co.strangeskies.utilities.text.AbstractParser.parseSubstring(AbstractParser.java:86) - at uk.co.strangeskies.utilities.text.AbstractParser.parse(AbstractParser.java:81) - at uk.co.strangeskies.reflection.AnnotatedTypes.fromString(AnnotatedTypes.java:468) - at uk.co.strangeskies.reflection.AnnotatedTypes.fromString(AnnotatedTypes.java:452) - ... 89 more -Caused by: java.lang.IllegalArgumentException: Cannot load class 'uk.co.strangeskies.modabi.processing.providers.ReferenceId' - at uk.co.strangeskies.reflection.Imports.getNamedClass(Imports.java:215) - at uk.co.strangeskies.reflection.Imports.getNamedClass(Imports.java:165) - at uk.co.strangeskies.utilities.text.ParseResult.mapResult(ParseResult.java:54) - ... 103 more -Caused by: java.lang.ClassNotFoundException: uk.co.strangeskies.modabi.processing.providers.ReferenceId not found by uk.co.strangeskies.modabi.core.test [21] - at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1558) - at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79) - at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1998) - at java.lang.ClassLoader.loadClass(ClassLoader.java:357) - at java.lang.Class.forName0(Native Method) - at java.lang.Class.forName(Class.java:348) - at uk.co.strangeskies.reflection.Imports.getNamedClass(Imports.java:194) - ... 105 more -]]> - + testy testy2 @@ -591,7 +437,9 @@ Unbinding BaseSchema... &lt;data name="bindingTarget" type="int" value="1" outMethod="null" inMethodChained="true"/&gt; - &lt;/data&gt; + &lt;inputSequence name="getObject" inMethodChained="true"/&gt; + + &lt;/data&gt; &lt;/inputSequence&gt; &lt;/data&gt; @@ -697,8 +545,6 @@ Unbinding BaseSchema... Unbinding MetaSchema... -uk.co.strangeskies.modabi:2014-01-01:successful - name get... interface uk.co.strangeskies.modabi.schema.SchemaNode &lt;?xml version="1.0" ?&gt; @@ -708,15 +554,7 @@ interface uk.co.strangeskies.modabi.schema.SchemaNode &lt;dependencies&gt;BaseSchema&lt;/dependencies&gt; - &lt;types&gt; - &lt;type name="extensionData" - dataType="@uk.co.strangeskies.reflection.TypeToken.Infer ?" - abstract="true"/&gt; - &lt;type baseType="extensionData" - name="id" dataType="uk.co.strangeskies.modabi.processing.providers.ReferenceId&amp;lt;@uk.co.strangeskies.reflection.TypeToken.Infer - ?&amp;gt;" bindingStrategy="CONSTRUCTOR" abstract="true"/&gt; - - &lt;/types&gt; + &lt;types/&gt; &lt;models&gt; &lt;model name="node" dataType="uk.co.strangeskies.modabi.schema.SchemaNode&amp;lt;?, @@ -1083,233 +921,975 @@ interface uk.co.strangeskies.modabi.schema.SchemaNode Re-binding MetaSchema... - - - - - testy -testy2 -java.util.List&lt;java.lang.Integer&gt; +Success: true + + +Re-unbinding MetaSchema... -java.util.Map&lt;java.lang.String, java.lang.Integer&gt; +&lt;?xml version="1.0" ?&gt; +&lt;schema xmlns="http://modabi.strangeskies.co.uk/2014-01-01/" + name="MetaSchema"&gt; + &lt;imports&gt;uk.co.strangeskies.modabi.Schema&lt;/imports&gt; - ~# { E#13589 = E#13589, E#13589 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, - V#13592&gt;, E#13589 = java.util.Map.java.util.Map.Entry&lt;K#13597, - V#13592&gt;, E#13589 &lt;: java.lang.Object, E#13589 - &lt;: java.lang.Object, K#13597 = K#13597, K#13597 = K#13578, - K#13597 = java.lang.String, K#13597 = K#13579, K#13597 = K#13606, - K#13597 = K#13574, K#13597 = K#13596, K#13597 = K#13593, K#13597 - = K#2787, K#13597 &lt;: java.lang.Object, K#13597 &lt;: - INF#13605, K#13597 &lt;: java.lang.String, K#13597 &lt;: - INF#13564, K#13597 &lt;: java.lang.Object, K#13597 &lt;: - INF#13586, E#13590 = E#13590, E#13590 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, - V#13592&gt;, E#13590 = java.util.Map.java.util.Map.Entry&lt;K#13597, - V#13592&gt;, E#13590 &lt;: java.lang.Object, E#13590 - &lt;: java.lang.Object, E#2801 = E#2801, E#2801 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, - java.lang.Integer&gt;, E#2801 = java.util.Map.java.util.Map.Entry&lt;K#2787, - V#2788&gt;, E#2801 = java.util.Map.java.util.Map.Entry&lt;K#2787, - java.lang.Integer&gt;, E#2801 &lt;: java.lang.Object, - E#2801 &lt;: java.lang.Object, E#13595 = E#13595, E#13595 - = java.util.Map.java.util.Map.Entry&lt;K#13579, V#13573&gt;, - E#13595 &lt;: java.lang.Object, E#13595 &lt;: java.util.Map.java.util.Map.Entry&lt;K#13596, - V#13585&gt;, E#13595 &lt;: java.util.Map.java.util.Map.Entry&lt;K#13606, - V#13608&gt;, E#13595 &lt;: java.lang.Object, E#13595 - &lt;: java.util.Map.java.util.Map.Entry&lt;K#13593, - V#13588&gt;, E#13561 = E#13561, E#13561 = java.util.Map.java.util.Map.Entry&lt;K#13579, - V#13573&gt;, E#13561 &lt;: java.lang.Object, E#13561 - &lt;: java.lang.Object, K#13606 = K#13597, K#13606 = K#13578, - K#13606 = java.lang.String, K#13606 = K#13579, K#13606 = K#13606, - K#13606 = K#13574, K#13606 = K#13596, K#13606 = K#13593, K#13606 - = K#2787, K#13606 &lt;: java.lang.Object, K#13606 &lt;: - INF#13605, K#13606 &lt;: java.lang.String, K#13606 &lt;: - INF#13564, K#13606 &lt;: java.lang.Object, K#13606 &lt;: - INF#13586, V#13588 = V#2788, V#13588 = V#13585, V#13588 = - V#13563, V#13588 = V#13567, V#13588 = V#13588, V#13588 = V#13592, - V#13588 = V#13573, V#13588 = V#13608, V#13588 = java.lang.Integer, - V#13588 &lt;: java.lang.Object, V#13588 &lt;: INF#13607, - V#13588 &lt;: java.lang.Object, V#13588 &lt;: INF#13566, - V#13588 &lt;: INF#13587, V#13588 &lt;: java.lang.Integer, - V#13592 = V#2788, V#13592 = V#13585, V#13592 = V#13563, V#13592 - = V#13567, V#13592 = V#13588, V#13592 = V#13592, V#13592 = - V#13573, V#13592 = V#13608, V#13592 = java.lang.Integer, V#13592 - &lt;: java.lang.Object, V#13592 &lt;: INF#13607, V#13592 - &lt;: java.lang.Object, V#13592 &lt;: INF#13566, V#13592 - &lt;: INF#13587, V#13592 &lt;: java.lang.Integer, - E#13750 = E#13750, E#13750 = java.util.Map.java.util.Map.Entry&lt;K#13579, - V#13573&gt;, E#13750 &lt;: java.lang.Object, E#13750 - &lt;: java.lang.Object, INF#13587 = INF#13587, INF#13587 - = java.lang.Integer, INF#13587 &lt;: java.lang.Object, - V#2788 &lt;: INF#13587, V#13585 &lt;: INF#13587, V#13563 - &lt;: INF#13587, V#13567 &lt;: INF#13587, V#13588 - &lt;: INF#13587, V#13592 &lt;: INF#13587, V#13573 - &lt;: INF#13587, V#13608 &lt;: INF#13587, java.lang.Integer - &lt;: INF#13587, E#13562 = E#13562, E#13562 = java.util.Map.java.util.Map.Entry&lt;K#13579, - V#13573&gt;, E#13562 &lt;: java.lang.Object, E#13562 - &lt;: java.lang.Object, E#13576 = java.util.Map.java.util.Map.Entry&lt;K#13579, - V#13573&gt;, E#13576 = E#13576, E#13576 &lt;: java.lang.Object, - E#13576 &lt;: java.util.Map.java.util.Map.Entry&lt;K#13578, - V#13563&gt;, E#13576 &lt;: java.lang.Object, E#13576 - &lt;: java.util.Map.java.util.Map.Entry&lt;K#13574, - V#13567&gt;, E#2803 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, - java.lang.Integer&gt;, E#2803 = java.util.Map.java.util.Map.Entry&lt;K#2787, - V#2788&gt;, E#2803 = java.util.Map.java.util.Map.Entry&lt;K#2787, - java.lang.Integer&gt;, E#2803 = E#2803, E#2803 &lt;: - java.lang.Object, E#2803 &lt;: java.lang.Object, E#13572 - = E#13572, E#13572 = java.util.Map.java.util.Map.Entry&lt;K#13579, - V#13573&gt;, E#13572 &lt;: java.lang.Object, E#13572 - &lt;: java.lang.Object, java.util.Map.java.util.Map.Entry&lt;K#13574, - V#13567&gt; &lt;: E#13572, V#2788 = V#2788, V#2788 - = V#13585, V#2788 = V#13563, V#2788 = V#13567, V#2788 = V#13588, - V#2788 = V#13592, V#2788 = V#13573, V#2788 = V#13608, V#2788 - = java.lang.Integer, V#2788 &lt;: java.lang.Object, V#2788 - &lt;: INF#13607, V#2788 &lt;: java.lang.Object, V#2788 - &lt;: INF#13566, V#2788 &lt;: INF#13587, V#2788 &lt;: - java.lang.Integer, K#13578 = K#13597, K#13578 = K#13578, K#13578 - = java.lang.String, K#13578 = K#13579, K#13578 = K#13606, - K#13578 = K#13574, K#13578 = K#13596, K#13578 = K#13593, K#13578 - = K#2787, K#13578 &lt;: java.lang.Object, K#13578 &lt;: - INF#13605, K#13578 &lt;: java.lang.String, K#13578 &lt;: - INF#13564, K#13578 &lt;: java.lang.Object, K#13578 &lt;: - INF#13586, INF#13605 = INF#13605, INF#13605 = java.lang.String, - INF#13605 &lt;: java.lang.Object, K#13597 &lt;: INF#13605, - K#13578 &lt;: INF#13605, java.lang.String &lt;: INF#13605, - K#13579 &lt;: INF#13605, K#13606 &lt;: INF#13605, - K#13574 &lt;: INF#13605, K#13596 &lt;: INF#13605, - K#13593 &lt;: INF#13605, K#2787 &lt;: INF#13605, V#13585 - = V#2788, V#13585 = V#13585, V#13585 = V#13563, V#13585 = - V#13567, V#13585 = V#13588, V#13585 = V#13592, V#13585 = V#13573, - V#13585 = V#13608, V#13585 = java.lang.Integer, V#13585 &lt;: - java.lang.Object, V#13585 &lt;: INF#13607, V#13585 &lt;: - java.lang.Object, V#13585 &lt;: INF#13566, V#13585 &lt;: - INF#13587, V#13585 &lt;: java.lang.Integer, E#13749 = - E#13749, E#13749 = java.util.Map.java.util.Map.Entry&lt;K#13579, - V#13573&gt;, E#13749 &lt;: java.lang.Object, E#13749 - &lt;: java.lang.Object, E#13748 = E#13748, E#13748 = java.util.Map.java.util.Map.Entry&lt;K#13579, - V#13573&gt;, E#13748 &lt;: java.lang.Object, E#13748 - &lt;: java.lang.Object, K#13579 = K#13597, K#13579 = K#13578, - K#13579 = java.lang.String, K#13579 = K#13579, K#13579 = K#13606, - K#13579 = K#13574, K#13579 = K#13596, K#13579 = K#13593, K#13579 - = K#2787, K#13579 &lt;: java.lang.Object, K#13579 &lt;: - INF#13605, K#13579 &lt;: java.lang.String, K#13579 &lt;: - INF#13564, K#13579 &lt;: java.lang.Object, K#13579 &lt;: - INF#13586, K#13574 = K#13597, K#13574 = K#13578, K#13574 = - java.lang.String, K#13574 = K#13579, K#13574 = K#13606, K#13574 - = K#13574, K#13574 = K#13596, K#13574 = K#13593, K#13574 = - K#2787, K#13574 &lt;: java.lang.Object, K#13574 &lt;: - INF#13605, K#13574 &lt;: java.lang.String, K#13574 &lt;: - INF#13564, K#13574 &lt;: java.lang.Object, K#13574 &lt;: - INF#13586, E#2804 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, - java.lang.Integer&gt;, E#2804 = java.util.Map.java.util.Map.Entry&lt;K#2787, - V#2788&gt;, E#2804 = E#2804, E#2804 = java.util.Map.java.util.Map.Entry&lt;K#2787, - java.lang.Integer&gt;, E#2804 &lt;: java.lang.Object, - E#2804 &lt;: java.lang.Object, E#13569 = E#13569, E#13569 - = java.util.Map.java.util.Map.Entry&lt;K#13579, V#13573&gt;, - E#13569 &lt;: java.lang.Object, E#13569 &lt;: java.lang.Object, - E#13584 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, - V#13592&gt;, E#13584 = E#13584, E#13584 = java.util.Map.java.util.Map.Entry&lt;K#13597, - V#13592&gt;, E#13584 &lt;: java.lang.Object, E#13584 - &lt;: java.lang.Object, K#2787 = K#13597, K#2787 = K#13578, - K#2787 = java.lang.String, K#2787 = K#13579, K#2787 = K#13606, - K#2787 = K#13574, K#2787 = K#13596, K#2787 = K#13593, K#2787 - = K#2787, K#2787 &lt;: java.lang.Object, K#2787 &lt;: - INF#13605, K#2787 &lt;: java.lang.String, K#2787 &lt;: - INF#13564, K#2787 &lt;: java.lang.Object, K#2787 &lt;: - INF#13586, E#13568 = E#13568, E#13568 = java.util.Map.java.util.Map.Entry&lt;K#13579, - V#13573&gt;, E#13568 &lt;: java.lang.Object, E#13568 - &lt;: java.lang.Object, V#13563 = V#2788, V#13563 = V#13585, - V#13563 = V#13563, V#13563 = V#13567, V#13563 = V#13588, V#13563 - = V#13592, V#13563 = V#13573, V#13563 = V#13608, V#13563 = - java.lang.Integer, V#13563 &lt;: java.lang.Object, V#13563 - &lt;: INF#13607, V#13563 &lt;: java.lang.Object, V#13563 - &lt;: INF#13566, V#13563 &lt;: INF#13587, V#13563 - &lt;: java.lang.Integer, INF#13564 = java.lang.String, - INF#13564 = INF#13564, INF#13564 &lt;: java.lang.Object, - K#13597 &lt;: INF#13564, K#13578 &lt;: INF#13564, - java.lang.String &lt;: INF#13564, K#13579 &lt;: INF#13564, - K#13606 &lt;: INF#13564, K#13574 &lt;: INF#13564, - K#13593 &lt;: INF#13564, K#13596 &lt;: INF#13564, - K#2787 &lt;: INF#13564, E#13575 = E#13575, E#13575 = java.util.Map.java.util.Map.Entry&lt;K#13579, - V#13573&gt;, E#13575 &lt;: java.lang.Object, E#13575 - &lt;: java.lang.Object, INF#13607 = INF#13607, INF#13607 - = java.lang.Integer, INF#13607 &lt;: java.lang.Object, - V#2788 &lt;: INF#13607, V#13585 &lt;: INF#13607, V#13563 - &lt;: INF#13607, V#13567 &lt;: INF#13607, V#13588 - &lt;: INF#13607, V#13592 &lt;: INF#13607, V#13573 - &lt;: INF#13607, V#13608 &lt;: INF#13607, java.lang.Integer - &lt;: INF#13607, E#13594 = E#13594, E#13594 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, - V#13592&gt;, E#13594 = java.util.Map.java.util.Map.Entry&lt;K#13597, - V#13592&gt;, E#13594 &lt;: java.lang.Object, E#13594 - &lt;: java.lang.Object, INF#13566 = INF#13566, INF#13566 - = java.lang.Integer, INF#13566 &lt;: java.lang.Object, - V#2788 &lt;: INF#13566, V#13585 &lt;: INF#13566, V#13563 - &lt;: INF#13566, V#13567 &lt;: INF#13566, V#13588 - &lt;: INF#13566, V#13592 &lt;: INF#13566, V#13573 - &lt;: INF#13566, V#13608 &lt;: INF#13566, java.lang.Integer - &lt;: INF#13566, E#13751 = E#13751, E#13751 = java.util.Map.java.util.Map.Entry&lt;K#13579, - V#13573&gt;, E#13751 &lt;: java.lang.Object, E#13751 - &lt;: java.lang.Object, E#13570 = E#13570, E#13570 = java.util.Map.java.util.Map.Entry&lt;K#13579, - V#13573&gt;, E#13570 &lt;: java.lang.Object, E#13570 - &lt;: java.lang.Object, E#2802 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, - java.lang.Integer&gt;, E#2802 = java.util.Map.java.util.Map.Entry&lt;K#2787, - V#2788&gt;, E#2802 = java.util.Map.java.util.Map.Entry&lt;K#2787, - java.lang.Integer&gt;, E#2802 = E#2802, E#2802 &lt;: - java.lang.Object, E#2802 &lt;: java.lang.Object, E#2805 - = E#2805, E#2805 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, - java.lang.Integer&gt;, E#2805 = java.util.Map.java.util.Map.Entry&lt;K#2787, - V#2788&gt;, E#2805 = java.util.Map.java.util.Map.Entry&lt;K#2787, - java.lang.Integer&gt;, E#2805 &lt;: java.lang.Object, - E#2805 &lt;: java.lang.Object, java.util.Map.java.util.Map.Entry&lt;K#13606, - V#13608&gt; &lt;: E#2805, E#13565 = E#13565, E#13565 - = java.util.Map.java.util.Map.Entry&lt;K#13579, V#13573&gt;, - E#13565 &lt;: java.lang.Object, E#13565 &lt;: java.lang.Object, - V#13567 = V#2788, V#13567 = V#13585, V#13567 = V#13563, V#13567 - = V#13567, V#13567 = V#13588, V#13567 = V#13592, V#13567 = - V#13573, V#13567 = V#13608, V#13567 = java.lang.Integer, V#13567 - &lt;: java.lang.Object, V#13567 &lt;: INF#13607, V#13567 - &lt;: java.lang.Object, V#13567 &lt;: INF#13566, V#13567 - &lt;: INF#13587, V#13567 &lt;: java.lang.Integer, - E#13577 = E#13577, E#13577 = java.util.Map.java.util.Map.Entry&lt;K#13579, - V#13573&gt;, E#13577 &lt;: java.lang.Object, E#13577 - &lt;: java.lang.Object, E#13571 = E#13571, E#13571 = java.util.Map.java.util.Map.Entry&lt;K#13579, - V#13573&gt;, E#13571 &lt;: java.lang.Object, E#13571 - &lt;: java.lang.Object, INF#13586 = java.lang.String, - INF#13586 = INF#13586, INF#13586 &lt;: java.lang.Object, - K#13597 &lt;: INF#13586, K#13578 &lt;: INF#13586, - java.lang.String &lt;: INF#13586, K#13579 &lt;: INF#13586, - K#13606 &lt;: INF#13586, K#13574 &lt;: INF#13586, - K#13596 &lt;: INF#13586, K#13593 &lt;: INF#13586, - K#2787 &lt;: INF#13586, V#13573 = V#2788, V#13573 = V#13585, - V#13573 = V#13563, V#13573 = V#13567, V#13573 = V#13588, V#13573 - = V#13592, V#13573 = V#13573, V#13573 = V#13608, V#13573 = - java.lang.Integer, V#13573 &lt;: java.lang.Object, V#13573 - &lt;: INF#13607, V#13573 &lt;: java.lang.Object, V#13573 - &lt;: INF#13566, V#13573 &lt;: INF#13587, V#13573 - &lt;: java.lang.Integer, K#13596 = K#13597, K#13596 = - K#13578, K#13596 = java.lang.String, K#13596 = K#13579, K#13596 - = K#13606, K#13596 = K#13574, K#13596 = K#13596, K#13596 = - K#13593, K#13596 = K#2787, K#13596 &lt;: java.lang.Object, - K#13596 &lt;: INF#13605, K#13596 &lt;: java.lang.String, - K#13596 &lt;: INF#13564, K#13596 &lt;: java.lang.Object, - K#13596 &lt;: INF#13586, K#13593 = K#13597, K#13593 = - K#13578, K#13593 = java.lang.String, K#13593 = K#13579, K#13593 - = K#13606, K#13593 = K#13574, K#13593 = K#13596, K#13593 = - K#13593, K#13593 = K#2787, K#13593 &lt;: java.lang.Object, - K#13593 &lt;: INF#13605, K#13593 &lt;: java.lang.String, - K#13593 &lt;: INF#13564, K#13593 &lt;: java.lang.Object, - K#13593 &lt;: INF#13586, E#13591 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, - V#13592&gt;, E#13591 = java.util.Map.java.util.Map.Entry&lt;K#13597, - V#13592&gt;, E#13591 = E#13591, E#13591 &lt;: java.lang.Object, - E#13591 &lt;: java.lang.Object, java.util.Map.java.util.Map.Entry&lt;K#13593, - V#13588&gt; &lt;: E#13591, V#13608 = V#2788, V#13608 - = V#13585, V#13608 = V#13563, V#13608 = V#13567, V#13608 = - V#13588, V#13608 = V#13592, V#13608 = V#13573, V#13608 = V#13608, - V#13608 = java.lang.Integer, V#13608 &lt;: java.lang.Object, - V#13608 &lt;: INF#13607, V#13608 &lt;: java.lang.Object, - V#13608 &lt;: INF#13566, V#13608 &lt;: INF#13587, - V#13608 &lt;: java.lang.Integer, true } -&lt;?xml version="1.0" - ?&gt; -&lt;stringIntMap xmlns="http://modabi.strangeskies.co.uk/2014-01-01/"&gt; + &lt;dependencies&gt;BaseSchema&lt;/dependencies&gt; + + &lt;types/&gt; + &lt;models&gt; + &lt;model + name="node" dataType="uk.co.strangeskies.modabi.schema.SchemaNode&amp;lt;?, + ?&amp;gt;" unbindingStrategy="SIMPLE" abstract="true"&gt; + + &lt;inputSequence name="configure" postInputType="uk.co.strangeskies.modabi.schema.SchemaNodeConfigurator&amp;lt;?, + ?&amp;gt;" abstract="true"/&gt; + &lt;property + name="name" type="qualifiedName" inMethod="name" occurrences="0..1"/&gt; + + &lt;property name="abstract" type="boolean" inMethod="isAbstract" + occurrences="0..1"/&gt; + &lt;/model&gt; + + &lt;model name="childBase" dataType="uk.co.strangeskies.modabi.schema.ChildNode&amp;lt;?, + ?&amp;gt;" bindingType="uk.co.strangeskies.modabi.schema.SchemaNodeConfigurator&amp;lt;?, + ?&amp;gt;" abstract="true"/&gt; + &lt;model + name="branch" baseModel="node" abstract="true"&gt; + + &lt;data name="name"/&gt; + &lt;data name="abstract"/&gt; + + &lt;complex name="child" baseModel="childBase" extensible="true" + outMethod="children" inMethod="null" occurrences="0.." abstract="true"/&gt; + + &lt;inputSequence name="create" inMethodChained="true"/&gt; + + &lt;/model&gt; + &lt;model name="child" + baseModel="branch, childBase" dataType="uk.co.strangeskies.modabi.schema.ChildNode&amp;lt;?, + ?&amp;gt;" bindingStrategy="TARGET_ADAPTOR" bindingType="uk.co.strangeskies.modabi.schema.SchemaNodeConfigurator&amp;lt;?, + ?&amp;gt;" abstract="true"&gt; + &lt;inputSequence + name="addChild" inMethodChained="true"/&gt; + &lt;inputSequence + name="configure" inMethodChained="true" postInputType="uk.co.strangeskies.modabi.schema.ChildNodeConfigurator&amp;lt;?, + ?&amp;gt;" abstract="true"/&gt; + &lt;data + name="name"/&gt; + &lt;property name="ordered" + type="boolean" occurrences="0..1"/&gt; + &lt;property + name="occurrences" type="range" occurrences="0..1"/&gt; + + &lt;property name="postInputType" type="typeToken" + occurrences="0..1"/&gt; + &lt;/model&gt; + + &lt;model name="binding" baseModel="branch" dataType="uk.co.strangeskies.modabi.schema.BindingNode&amp;lt;?, + ?, ?&amp;gt;" abstract="true"&gt; + &lt;inputSequence + name="configure" postInputType="uk.co.strangeskies.modabi.schema.BindingNodeConfigurator&amp;lt;?, + ?, java.lang.Object&amp;gt;" abstract="true"/&gt; + + &lt;data name="name"/&gt; + &lt;property + name="dataType" type="typeToken" occurrences="0..1"/&gt; + + &lt;property name="bindingStrategy" type="enum" + occurrences="0..1" dataType="uk.co.strangeskies.modabi.processing.BindingStrategy"/&gt; + + &lt;property name="bindingType" type="typeToken" + occurrences="0..1"/&gt; + &lt;property name="unbindingStrategy" + type="enum" occurrences="0..1" dataType="uk.co.strangeskies.modabi.processing.UnbindingStrategy"/&gt; + + &lt;property name="unbindingMethod" type="string" + outMethod="getUnbindingMethodName" occurrences="0..1"/&gt; + + &lt;property name="unbindingType" type="typeToken" + occurrences="0..1"/&gt; + &lt;property name="providedUnbindingMethodParameters" + type="list" outMethod="getProvidedUnbindingMethodParameterNames" + inMethod="providedUnbindingMethodParameters" occurrences="0..1"&gt; + + &lt;data name="element" type="qualifiedName"/&gt; + + &lt;/property&gt; + &lt;property name="unbindingFactoryType" + type="typeToken" occurrences="0..1"/&gt; + &lt;/model&gt; + + &lt;model name="input" baseModel="child" dataType="uk.co.strangeskies.modabi.schema.InputNode&amp;lt;?, + ?&amp;gt;" abstract="true"&gt; + &lt;inputSequence + name="configure" postInputType="uk.co.strangeskies.modabi.schema.InputNodeConfigurator&amp;lt;?, + ?&amp;gt;" abstract="true"/&gt; + &lt;data + name="name"/&gt; + &lt;property name="inMethod" + type="string" outMethod="getInMethodName" occurrences="0..1"/&gt; + + &lt;property name="inMethodChained" type="boolean" + occurrences="0..1"/&gt; + &lt;property name="inMethodCast" + type="boolean" occurrences="0..1"/&gt; + &lt;property + name="inMethodUnchecked" type="boolean" occurrences="0..1"/&gt; + + &lt;/model&gt; + &lt;model name="bindingChild" + baseModel="input, binding" dataType="uk.co.strangeskies.modabi.schema.BindingChildNode&amp;lt;?, + ?, ?&amp;gt;" abstract="true"&gt; + &lt;inputSequence + name="configure" postInputType="uk.co.strangeskies.modabi.schema.BindingChildNodeConfigurator&amp;lt;?, + ?, java.lang.Object&amp;gt;" abstract="true"/&gt; + + &lt;data name="name"/&gt; + &lt;property + name="extensible" type="boolean" occurrences="0..1"/&gt; + + &lt;property name="outMethod" type="string" outMethod="getOutMethodName" + occurrences="0..1"/&gt; + &lt;property name="outMethodIterable" + type="boolean" occurrences="0..1"/&gt; + &lt;property + name="outMethodCast" type="boolean" occurrences="0..1"/&gt; + + &lt;property name="outMethodUnchecked" type="boolean" + occurrences="0..1"/&gt; + &lt;/model&gt; + + &lt;model name="choice" baseModel="child" dataType="uk.co.strangeskies.modabi.schema.ChoiceNode"&gt; + + &lt;inputSequence name="configure" inMethod="choice"/&gt; + + &lt;data name="name"/&gt; + &lt;/model&gt; + + &lt;model name="sequence" baseModel="child" dataType="uk.co.strangeskies.modabi.schema.SequenceNode"&gt; + + &lt;inputSequence name="configure" inMethod="sequence"/&gt; + + &lt;/model&gt; + &lt;model name="inputSequence" + baseModel="input, child" dataType="uk.co.strangeskies.modabi.schema.InputSequenceNode"&gt; + + &lt;inputSequence name="configure" inMethod="inputSequence" + postInputType="uk.co.strangeskies.modabi.schema.InputSequenceNodeConfigurator"/&gt; + + &lt;data name="name"/&gt; + &lt;/model&gt; + + &lt;model name="abstractModel" baseModel="binding" + dataType="uk.co.strangeskies.modabi.schema.AbstractComplexNode&amp;lt;?, + ?, ?&amp;gt;" abstract="true"&gt; + &lt;inputSequence + name="configure" postInputType="uk.co.strangeskies.modabi.schema.AbstractComplexNodeConfigurator&amp;lt;?, + ?, java.lang.Object&amp;gt;" abstract="true"/&gt; + + &lt;data name="name"/&gt; + &lt;property + name="baseModel" type="list" outMethodUnchecked="true" inMethodUnchecked="true" + occurrences="0..1"&gt; + &lt;data name="element" + type="reference" dataType="uk.co.strangeskies.modabi.schema.Model&amp;lt;?&amp;gt;"&gt; + + &lt;data name="targetModel" value="model" dataType="uk.co.strangeskies.modabi.schema.Model&amp;lt;uk.co.strangeskies.modabi.schema.Model&amp;lt;?&amp;gt;&amp;gt;"/&gt; + + &lt;data name="targetId" value="name"/&gt; + + &lt;/data&gt; + &lt;/property&gt; + + &lt;/model&gt; + &lt;model name="model" + baseModel="abstractModel" dataType="uk.co.strangeskies.modabi.schema.Model&amp;lt;?&amp;gt;" + bindingType="uk.co.strangeskies.modabi.schema.building.ModelBuilder"&gt; + + &lt;inputSequence name="configure" inMethodChained="true"&gt; + + &lt;data name="configure" outMethod="null" dataType="uk.co.strangeskies.modabi.schema.building.DataLoader" + bindingStrategy="PROVIDED"/&gt; + &lt;/inputSequence&gt; + + &lt;data name="name" occurrences="1..1"/&gt; + + &lt;/model&gt; + &lt;model name="abstractComplex" + baseModel="abstractModel, bindingChild" dataType="uk.co.strangeskies.modabi.schema.ComplexNode&amp;lt;?&amp;gt;" + abstract="true"&gt; + &lt;inputSequence name="addChild"/&gt; + + &lt;inputSequence name="configure" inMethod="complex" + inMethodChained="true" postInputType="uk.co.strangeskies.modabi.schema.ComplexNodeConfigurator&amp;lt;java.lang.Object&amp;gt;"/&gt; + + &lt;data name="name"/&gt; + &lt;data + name="inline" type="boolean" valueResolution="REGISTRATION_TIME" + occurrences="0..1" abstract="true"/&gt; + &lt;/model&gt; + + &lt;model name="complex" baseModel="abstractComplex"&gt; + + &lt;data name="inline" value="false" occurrences="0..1"/&gt; + + &lt;/model&gt; + &lt;model name="inline" + baseModel="abstractComplex"&gt; + &lt;data name="inline" + value="true" occurrences="1..1"/&gt; + &lt;/model&gt; + + &lt;model name="typedData" baseModel="bindingChild" + dataType="uk.co.strangeskies.modabi.schema.DataNode&amp;lt;?&amp;gt;" + abstract="true"&gt; + &lt;inputSequence name="addChild"/&gt; + + &lt;inputSequence name="configure" inMethod="data" + inMethodChained="true"/&gt; + &lt;property name="format" + type="enum" valueResolution="REGISTRATION_TIME" occurrences="0..1" + postInputType="uk.co.strangeskies.modabi.schema.DataNodeConfigurator" + dataType="uk.co.strangeskies.modabi.schema.DataNode.Format" + abstract="true"/&gt; + &lt;data name="name"/&gt; + + &lt;property name="type" type="reference" occurrences="0..1" + dataType="uk.co.strangeskies.modabi.schema.DataType&amp;lt;?&amp;gt;"&gt; + + &lt;data name="targetModel" valueResolution="REGISTRATION_TIME" + value="type"/&gt; + &lt;data name="targetId" + valueResolution="REGISTRATION_TIME" value="name"/&gt; + + &lt;/property&gt; + &lt;property name="nullIfOmitted" + type="boolean" occurrences="0..1"/&gt; + &lt;property + name="valueResolution" type="enum" occurrences="0..1" dataType="uk.co.strangeskies.modabi.ValueResolution"/&gt; + + &lt;property name="value" type="bufferedData" outMethod="providedValueBuffer" + inMethod="provideValue" occurrences="0..1"/&gt; + &lt;/model&gt; + + &lt;model name="content" baseModel="typedData"&gt; + + &lt;data name="format" value="CONTENT" occurrences="1..1"/&gt; + + &lt;/model&gt; + &lt;model name="property" + baseModel="typedData"&gt; + &lt;data name="format" + value="PROPERTY" occurrences="1..1"/&gt; + &lt;/model&gt; + + &lt;model name="simple" baseModel="typedData"&gt; + + &lt;data name="format" value="SIMPLE" occurrences="1..1"/&gt; + + &lt;/model&gt; + &lt;model name="data" baseModel="typedData"&gt; + + &lt;data name="format" occurrences="0..0"/&gt; + + &lt;/model&gt; + &lt;model name="type" baseModel="binding" + dataType="uk.co.strangeskies.modabi.schema.DataType&amp;lt;?&amp;gt;" + bindingType="uk.co.strangeskies.modabi.schema.building.DataTypeBuilder"&gt; + + &lt;inputSequence name="configure" inMethodChained="true"&gt; + + &lt;data name="configure" outMethod="null" dataType="uk.co.strangeskies.modabi.schema.building.DataLoader" + bindingStrategy="PROVIDED"/&gt; + &lt;/inputSequence&gt; + + &lt;property name="private" type="boolean" inMethod="isPrivate" + occurrences="0..1"/&gt; + &lt;property name="baseType" + type="reference" occurrences="0..1" dataType="uk.co.strangeskies.modabi.schema.DataType&amp;lt;?&amp;gt;"&gt; + + &lt;data name="targetModel" value="type"/&gt; + + &lt;data name="targetId" value="name"/&gt; + + &lt;/property&gt; + &lt;/model&gt; + + &lt;model name="schema" dataType="uk.co.strangeskies.modabi.Schema" + bindingType="uk.co.strangeskies.modabi.SchemaBuilder"&gt; + + &lt;inputSequence name="configure" inMethodChained="true"/&gt; + + &lt;property name="name" type="qualifiedName" outMethod="getQualifiedName" + inMethod="qualifiedName"/&gt; + &lt;simple name="imports" + outMethod="this" inMethod="null" occurrences="0..1" dataType="uk.co.strangeskies.modabi.Schema" + bindingStrategy="TARGET_ADAPTOR" bindingType="uk.co.strangeskies.modabi.SchemaConfigurator"&gt; + + &lt;data name="importsIn" type="set" outMethod="null" + inMethod="imports"&gt; + &lt;data name="element" + type="class" occurrences="1..1"/&gt; + &lt;/data&gt; + + &lt;data name="importsOut" outMethod="getImports" + inMethod="null" occurrences="0..1" dataType="uk.co.strangeskies.reflection.Imports"&gt; + + &lt;data name="imports" type="set" outMethod="getImportedClasses" + inMethod="null"&gt; + &lt;data name="element" + type="class"/&gt; + &lt;/data&gt; + + &lt;/data&gt; + &lt;/simple&gt; + + &lt;simple name="dependencies" type="set" occurrences="0..1"&gt; + + &lt;data name="element" type="import" outMethod="this" + inMethod="add" occurrences="0.." dataType="uk.co.strangeskies.modabi.Schema"&gt; + + &lt;data name="import"&gt; + &lt;data + name="targetModel" value="schema"/&gt; + &lt;data + name="targetId" value="name"/&gt; + &lt;/data&gt; + + &lt;data name="dataTypes" type="include" inMethod="null" + bindingType="uk.co.strangeskies.modabi.Schema"&gt; + + &lt;inputSequence name="getDataTypes" inMethodChained="true"/&gt; + + &lt;data name="targetModel" value="type"/&gt; + + &lt;/data&gt; + &lt;data name="models" + type="include" inMethod="null" bindingType="uk.co.strangeskies.modabi.Schema"&gt; + + &lt;inputSequence name="getModels" inMethodChained="true"/&gt; + + &lt;data name="targetModel" value="model"/&gt; + + &lt;/data&gt; + &lt;/data&gt; + + &lt;/simple&gt; + &lt;complex name="types" + outMethod="getDataTypes" occurrences="0..1" dataType="@uk.co.strangeskies.reflection.TypeToken.Infer + java.util.Set&amp;lt;?&amp;gt;" bindingType="@uk.co.strangeskies.reflection.TypeToken.Infer + java.util.LinkedHashSet&amp;lt;?&amp;gt;"&gt; + + &lt;complex name="type" baseModel="type" outMethod="this" + occurrences="0.." dataType="uk.co.strangeskies.modabi.schema.DataType&amp;lt;?&amp;gt;"/&gt; + + &lt;/complex&gt; + &lt;complex name="models" + occurrences="0..1" dataType="@uk.co.strangeskies.reflection.TypeToken.Infer + java.util.Set&amp;lt;?&amp;gt;" bindingType="@uk.co.strangeskies.reflection.TypeToken.Infer + java.util.LinkedHashSet&amp;lt;?&amp;gt;"&gt; + + &lt;complex baseModel="model" outMethod="this" + inMethod="add" occurrences="0.."/&gt; + &lt;/complex&gt; + + &lt;inputSequence name="create" inMethodChained="true"/&gt; + + &lt;/model&gt; + &lt;/models&gt; +&lt;/schema&gt; + + + +Re-re-binding MetaSchema... + + +Re-re-unbinding MetaSchema... + +&lt;?xml version="1.0" ?&gt; +&lt;schema xmlns="http://modabi.strangeskies.co.uk/2014-01-01/" + name="MetaSchema"&gt; + &lt;imports&gt;uk.co.strangeskies.modabi.Schema&lt;/imports&gt; + + &lt;dependencies&gt;BaseSchema&lt;/dependencies&gt; + + &lt;types/&gt; + &lt;models&gt; + &lt;model + name="node" dataType="uk.co.strangeskies.modabi.schema.SchemaNode&amp;lt;?, + ?&amp;gt;" unbindingStrategy="SIMPLE" abstract="true"&gt; + + &lt;inputSequence name="configure" postInputType="uk.co.strangeskies.modabi.schema.SchemaNodeConfigurator&amp;lt;?, + ?&amp;gt;" abstract="true"/&gt; + &lt;property + name="name" type="qualifiedName" inMethod="name" occurrences="0..1"/&gt; + + &lt;property name="abstract" type="boolean" inMethod="isAbstract" + occurrences="0..1"/&gt; + &lt;/model&gt; + + &lt;model name="childBase" dataType="uk.co.strangeskies.modabi.schema.ChildNode&amp;lt;?, + ?&amp;gt;" bindingType="uk.co.strangeskies.modabi.schema.SchemaNodeConfigurator&amp;lt;?, + ?&amp;gt;" abstract="true"/&gt; + &lt;model + name="branch" baseModel="node" abstract="true"&gt; + + &lt;data name="name"/&gt; + &lt;data name="abstract"/&gt; + + &lt;complex name="child" baseModel="childBase" extensible="true" + outMethod="children" inMethod="null" occurrences="0.." abstract="true"/&gt; + + &lt;inputSequence name="create" inMethodChained="true"/&gt; + + &lt;/model&gt; + &lt;model name="child" + baseModel="branch, childBase" dataType="uk.co.strangeskies.modabi.schema.ChildNode&amp;lt;?, + ?&amp;gt;" bindingStrategy="TARGET_ADAPTOR" bindingType="uk.co.strangeskies.modabi.schema.SchemaNodeConfigurator&amp;lt;?, + ?&amp;gt;" abstract="true"&gt; + &lt;inputSequence + name="addChild" inMethodChained="true"/&gt; + &lt;inputSequence + name="configure" inMethodChained="true" postInputType="uk.co.strangeskies.modabi.schema.ChildNodeConfigurator&amp;lt;?, + ?&amp;gt;" abstract="true"/&gt; + &lt;data + name="name"/&gt; + &lt;property name="ordered" + type="boolean" occurrences="0..1"/&gt; + &lt;property + name="occurrences" type="range" occurrences="0..1"/&gt; + + &lt;property name="postInputType" type="typeToken" + occurrences="0..1"/&gt; + &lt;/model&gt; + + &lt;model name="binding" baseModel="branch" dataType="uk.co.strangeskies.modabi.schema.BindingNode&amp;lt;?, + ?, ?&amp;gt;" abstract="true"&gt; + &lt;inputSequence + name="configure" postInputType="uk.co.strangeskies.modabi.schema.BindingNodeConfigurator&amp;lt;?, + ?, java.lang.Object&amp;gt;" abstract="true"/&gt; + + &lt;data name="name"/&gt; + &lt;property + name="dataType" type="typeToken" occurrences="0..1"/&gt; + + &lt;property name="bindingStrategy" type="enum" + occurrences="0..1" dataType="uk.co.strangeskies.modabi.processing.BindingStrategy"/&gt; + + &lt;property name="bindingType" type="typeToken" + occurrences="0..1"/&gt; + &lt;property name="unbindingStrategy" + type="enum" occurrences="0..1" dataType="uk.co.strangeskies.modabi.processing.UnbindingStrategy"/&gt; + + &lt;property name="unbindingMethod" type="string" + outMethod="getUnbindingMethodName" occurrences="0..1"/&gt; + + &lt;property name="unbindingType" type="typeToken" + occurrences="0..1"/&gt; + &lt;property name="providedUnbindingMethodParameters" + type="list" outMethod="getProvidedUnbindingMethodParameterNames" + inMethod="providedUnbindingMethodParameters" occurrences="0..1"&gt; + + &lt;data name="element" type="qualifiedName"/&gt; + + &lt;/property&gt; + &lt;property name="unbindingFactoryType" + type="typeToken" occurrences="0..1"/&gt; + &lt;/model&gt; + + &lt;model name="input" baseModel="child" dataType="uk.co.strangeskies.modabi.schema.InputNode&amp;lt;?, + ?&amp;gt;" abstract="true"&gt; + &lt;inputSequence + name="configure" postInputType="uk.co.strangeskies.modabi.schema.InputNodeConfigurator&amp;lt;?, + ?&amp;gt;" abstract="true"/&gt; + &lt;data + name="name"/&gt; + &lt;property name="inMethod" + type="string" outMethod="getInMethodName" occurrences="0..1"/&gt; + + &lt;property name="inMethodChained" type="boolean" + occurrences="0..1"/&gt; + &lt;property name="inMethodCast" + type="boolean" occurrences="0..1"/&gt; + &lt;property + name="inMethodUnchecked" type="boolean" occurrences="0..1"/&gt; + + &lt;/model&gt; + &lt;model name="bindingChild" + baseModel="input, binding" dataType="uk.co.strangeskies.modabi.schema.BindingChildNode&amp;lt;?, + ?, ?&amp;gt;" abstract="true"&gt; + &lt;inputSequence + name="configure" postInputType="uk.co.strangeskies.modabi.schema.BindingChildNodeConfigurator&amp;lt;?, + ?, java.lang.Object&amp;gt;" abstract="true"/&gt; + + &lt;data name="name"/&gt; + &lt;property + name="extensible" type="boolean" occurrences="0..1"/&gt; + + &lt;property name="outMethod" type="string" outMethod="getOutMethodName" + occurrences="0..1"/&gt; + &lt;property name="outMethodIterable" + type="boolean" occurrences="0..1"/&gt; + &lt;property + name="outMethodCast" type="boolean" occurrences="0..1"/&gt; + + &lt;property name="outMethodUnchecked" type="boolean" + occurrences="0..1"/&gt; + &lt;/model&gt; + + &lt;model name="choice" baseModel="child" dataType="uk.co.strangeskies.modabi.schema.ChoiceNode"&gt; + + &lt;inputSequence name="configure" inMethod="choice"/&gt; + + &lt;data name="name"/&gt; + &lt;/model&gt; + + &lt;model name="sequence" baseModel="child" dataType="uk.co.strangeskies.modabi.schema.SequenceNode"&gt; + + &lt;inputSequence name="configure" inMethod="sequence"/&gt; + + &lt;/model&gt; + &lt;model name="inputSequence" + baseModel="input, child" dataType="uk.co.strangeskies.modabi.schema.InputSequenceNode"&gt; + + &lt;inputSequence name="configure" inMethod="inputSequence" + postInputType="uk.co.strangeskies.modabi.schema.InputSequenceNodeConfigurator"/&gt; + + &lt;data name="name"/&gt; + &lt;/model&gt; + + &lt;model name="abstractModel" baseModel="binding" + dataType="uk.co.strangeskies.modabi.schema.AbstractComplexNode&amp;lt;?, + ?, ?&amp;gt;" abstract="true"&gt; + &lt;inputSequence + name="configure" postInputType="uk.co.strangeskies.modabi.schema.AbstractComplexNodeConfigurator&amp;lt;?, + ?, java.lang.Object&amp;gt;" abstract="true"/&gt; + + &lt;data name="name"/&gt; + &lt;property + name="baseModel" type="list" outMethodUnchecked="true" inMethodUnchecked="true" + occurrences="0..1"&gt; + &lt;data name="element" + type="reference" dataType="uk.co.strangeskies.modabi.schema.Model&amp;lt;?&amp;gt;"&gt; + + &lt;data name="targetModel" value="model" dataType="uk.co.strangeskies.modabi.schema.Model&amp;lt;uk.co.strangeskies.modabi.schema.Model&amp;lt;?&amp;gt;&amp;gt;"/&gt; + + &lt;data name="targetId" value="name"/&gt; + + &lt;/data&gt; + &lt;/property&gt; + + &lt;/model&gt; + &lt;model name="model" + baseModel="abstractModel" dataType="uk.co.strangeskies.modabi.schema.Model&amp;lt;?&amp;gt;" + bindingType="uk.co.strangeskies.modabi.schema.building.ModelBuilder"&gt; + + &lt;inputSequence name="configure" inMethodChained="true"&gt; + + &lt;data name="configure" outMethod="null" dataType="uk.co.strangeskies.modabi.schema.building.DataLoader" + bindingStrategy="PROVIDED"/&gt; + &lt;/inputSequence&gt; + + &lt;data name="name" occurrences="1..1"/&gt; + + &lt;/model&gt; + &lt;model name="abstractComplex" + baseModel="abstractModel, bindingChild" dataType="uk.co.strangeskies.modabi.schema.ComplexNode&amp;lt;?&amp;gt;" + abstract="true"&gt; + &lt;inputSequence name="addChild"/&gt; + + &lt;inputSequence name="configure" inMethod="complex" + inMethodChained="true" postInputType="uk.co.strangeskies.modabi.schema.ComplexNodeConfigurator&amp;lt;java.lang.Object&amp;gt;"/&gt; + + &lt;data name="name"/&gt; + &lt;data + name="inline" type="boolean" valueResolution="REGISTRATION_TIME" + occurrences="0..1" abstract="true"/&gt; + &lt;/model&gt; + + &lt;model name="complex" baseModel="abstractComplex"&gt; + + &lt;data name="inline" value="false" occurrences="0..1"/&gt; + + &lt;/model&gt; + &lt;model name="inline" + baseModel="abstractComplex"&gt; + &lt;data name="inline" + value="true" occurrences="1..1"/&gt; + &lt;/model&gt; + + &lt;model name="typedData" baseModel="bindingChild" + dataType="uk.co.strangeskies.modabi.schema.DataNode&amp;lt;?&amp;gt;" + abstract="true"&gt; + &lt;inputSequence name="addChild"/&gt; + + &lt;inputSequence name="configure" inMethod="data" + inMethodChained="true"/&gt; + &lt;property name="format" + type="enum" valueResolution="REGISTRATION_TIME" occurrences="0..1" + postInputType="uk.co.strangeskies.modabi.schema.DataNodeConfigurator" + dataType="uk.co.strangeskies.modabi.schema.DataNode.Format" + abstract="true"/&gt; + &lt;data name="name"/&gt; + + &lt;property name="type" type="reference" occurrences="0..1" + dataType="uk.co.strangeskies.modabi.schema.DataType&amp;lt;?&amp;gt;"&gt; + + &lt;data name="targetModel" valueResolution="REGISTRATION_TIME" + value="type"/&gt; + &lt;data name="targetId" + valueResolution="REGISTRATION_TIME" value="name"/&gt; + + &lt;/property&gt; + &lt;property name="nullIfOmitted" + type="boolean" occurrences="0..1"/&gt; + &lt;property + name="valueResolution" type="enum" occurrences="0..1" dataType="uk.co.strangeskies.modabi.ValueResolution"/&gt; + + &lt;property name="value" type="bufferedData" outMethod="providedValueBuffer" + inMethod="provideValue" occurrences="0..1"/&gt; + &lt;/model&gt; + + &lt;model name="content" baseModel="typedData"&gt; + + &lt;data name="format" value="CONTENT" occurrences="1..1"/&gt; + + &lt;/model&gt; + &lt;model name="property" + baseModel="typedData"&gt; + &lt;data name="format" + value="PROPERTY" occurrences="1..1"/&gt; + &lt;/model&gt; + + &lt;model name="simple" baseModel="typedData"&gt; + + &lt;data name="format" value="SIMPLE" occurrences="1..1"/&gt; + + &lt;/model&gt; + &lt;model name="data" baseModel="typedData"&gt; + + &lt;data name="format" occurrences="0..0"/&gt; + + &lt;/model&gt; + &lt;model name="type" baseModel="binding" + dataType="uk.co.strangeskies.modabi.schema.DataType&amp;lt;?&amp;gt;" + bindingType="uk.co.strangeskies.modabi.schema.building.DataTypeBuilder"&gt; + + &lt;inputSequence name="configure" inMethodChained="true"&gt; + + &lt;data name="configure" outMethod="null" dataType="uk.co.strangeskies.modabi.schema.building.DataLoader" + bindingStrategy="PROVIDED"/&gt; + &lt;/inputSequence&gt; + + &lt;property name="private" type="boolean" inMethod="isPrivate" + occurrences="0..1"/&gt; + &lt;property name="baseType" + type="reference" occurrences="0..1" dataType="uk.co.strangeskies.modabi.schema.DataType&amp;lt;?&amp;gt;"&gt; + + &lt;data name="targetModel" value="type"/&gt; + + &lt;data name="targetId" value="name"/&gt; + + &lt;/property&gt; + &lt;/model&gt; + + &lt;model name="schema" dataType="uk.co.strangeskies.modabi.Schema" + bindingType="uk.co.strangeskies.modabi.SchemaBuilder"&gt; + + &lt;inputSequence name="configure" inMethodChained="true"/&gt; + + &lt;property name="name" type="qualifiedName" outMethod="getQualifiedName" + inMethod="qualifiedName"/&gt; + &lt;simple name="imports" + outMethod="this" inMethod="null" occurrences="0..1" dataType="uk.co.strangeskies.modabi.Schema" + bindingStrategy="TARGET_ADAPTOR" bindingType="uk.co.strangeskies.modabi.SchemaConfigurator"&gt; + + &lt;data name="importsIn" type="set" outMethod="null" + inMethod="imports"&gt; + &lt;data name="element" + type="class" occurrences="1..1"/&gt; + &lt;/data&gt; + + &lt;data name="importsOut" outMethod="getImports" + inMethod="null" occurrences="0..1" dataType="uk.co.strangeskies.reflection.Imports"&gt; + + &lt;data name="imports" type="set" outMethod="getImportedClasses" + inMethod="null"&gt; + &lt;data name="element" + type="class"/&gt; + &lt;/data&gt; + + &lt;/data&gt; + &lt;/simple&gt; + + &lt;simple name="dependencies" type="set" occurrences="0..1"&gt; + + &lt;data name="element" type="import" outMethod="this" + inMethod="add" occurrences="0.." dataType="uk.co.strangeskies.modabi.Schema"&gt; + + &lt;data name="import"&gt; + &lt;data + name="targetModel" value="schema"/&gt; + &lt;data + name="targetId" value="name"/&gt; + &lt;/data&gt; + + &lt;data name="dataTypes" type="include" inMethod="null" + bindingType="uk.co.strangeskies.modabi.Schema"&gt; + + &lt;inputSequence name="getDataTypes" inMethodChained="true"/&gt; + + &lt;data name="targetModel" value="type"/&gt; + + &lt;/data&gt; + &lt;data name="models" + type="include" inMethod="null" bindingType="uk.co.strangeskies.modabi.Schema"&gt; + + &lt;inputSequence name="getModels" inMethodChained="true"/&gt; + + &lt;data name="targetModel" value="model"/&gt; + + &lt;/data&gt; + &lt;/data&gt; + + &lt;/simple&gt; + &lt;complex name="types" + outMethod="getDataTypes" occurrences="0..1" dataType="@uk.co.strangeskies.reflection.TypeToken.Infer + java.util.Set&amp;lt;?&amp;gt;" bindingType="@uk.co.strangeskies.reflection.TypeToken.Infer + java.util.LinkedHashSet&amp;lt;?&amp;gt;"&gt; + + &lt;complex name="type" baseModel="type" outMethod="this" + occurrences="0.." dataType="uk.co.strangeskies.modabi.schema.DataType&amp;lt;?&amp;gt;"/&gt; + + &lt;/complex&gt; + &lt;complex name="models" + occurrences="0..1" dataType="@uk.co.strangeskies.reflection.TypeToken.Infer + java.util.Set&amp;lt;?&amp;gt;" bindingType="@uk.co.strangeskies.reflection.TypeToken.Infer + java.util.LinkedHashSet&amp;lt;?&amp;gt;"&gt; + + &lt;complex baseModel="model" outMethod="this" + inMethod="add" occurrences="0.."/&gt; + &lt;/complex&gt; + + &lt;inputSequence name="create" inMethodChained="true"/&gt; + + &lt;/model&gt; + &lt;/models&gt; +&lt;/schema&gt; + + + + + testy +testy2 +java.util.List&lt;java.lang.Integer&gt; + +java.util.Map&lt;java.lang.String, java.lang.Integer&gt; + + ~# { E#2888 = java.util.Map.java.util.Map.Entry&lt;K#2871, + V#2870&gt;, E#2888 = E#2888, E#2888 &lt;: java.lang.Object, + E#2888 &lt;: java.lang.Object, E#33532 = java.util.Map.java.util.Map.Entry&lt;K#33536, + V#33533&gt;, E#33532 = E#33532, E#33532 &lt;: java.lang.Object, + E#33532 &lt;: java.lang.Object, E#33709 = java.util.Map.java.util.Map.Entry&lt;K#33536, + V#33533&gt;, E#33709 = E#33709, E#33709 &lt;: java.lang.Object, + E#33709 &lt;: java.lang.Object, E#33522 = java.util.Map.java.util.Map.Entry&lt;K#33536, + V#33533&gt;, E#33522 = E#33522, E#33522 &lt;: java.lang.Object, + E#33522 &lt;: java.lang.Object, E#2889 = java.util.Map.java.util.Map.Entry&lt;K#2871, + V#2870&gt;, E#2889 = E#2889, E#2889 &lt;: java.lang.Object, + E#2889 &lt;: java.lang.Object, E#33524 = java.util.Map.java.util.Map.Entry&lt;K#33536, + V#33533&gt;, E#33524 = E#33524, E#33524 &lt;: java.lang.Object, + E#33524 &lt;: java.lang.Object, INF#33550 = INF#33550, + INF#33550 = java.lang.Integer, INF#33550 &lt;: java.lang.Object, + V#33563 &lt;: INF#33550, V#33543 &lt;: INF#33550, + V#33552 &lt;: INF#33550, V#33526 &lt;: INF#33550, + V#2870 &lt;: INF#33550, V#33533 &lt;: INF#33550, V#33548 + &lt;: INF#33550, V#33520 &lt;: INF#33550, java.lang.Integer + &lt;: INF#33550, E#2886 = java.util.Map.java.util.Map.Entry&lt;K#2871, + V#2870&gt;, E#2886 = E#2886, E#2886 &lt;: java.lang.Object, + E#2886 &lt;: java.lang.Object, E#33530 = java.util.Map.java.util.Map.Entry&lt;K#33536, + V#33533&gt;, E#33530 = E#33530, E#33530 &lt;: java.lang.Object, + E#33530 &lt;: java.lang.Object, java.util.Map.java.util.Map.Entry&lt;K#33521, + V#33520&gt; &lt;: E#33530, INF#33527 = INF#33527, + INF#33527 = java.lang.Integer, INF#33527 &lt;: java.lang.Object, + V#33563 &lt;: INF#33527, V#33552 &lt;: INF#33527, + V#33543 &lt;: INF#33527, V#33526 &lt;: INF#33527, + V#2870 &lt;: INF#33527, V#33533 &lt;: INF#33527, V#33548 + &lt;: INF#33527, V#33520 &lt;: INF#33527, java.lang.Integer + &lt;: INF#33527, E#33542 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, + V#33552&gt;, E#33542 = java.util.Map.java.util.Map.Entry&lt;K#33554, + V#33552&gt;, E#33542 = E#33542, E#33542 &lt;: java.lang.Object, + E#33542 &lt;: java.lang.Object, E#33712 = E#33712, E#33712 + = java.util.Map.java.util.Map.Entry&lt;K#33536, V#33533&gt;, + E#33712 &lt;: java.lang.Object, E#33712 &lt;: java.lang.Object, + E#33710 = E#33710, E#33710 = java.util.Map.java.util.Map.Entry&lt;K#33536, + V#33533&gt;, E#33710 &lt;: java.lang.Object, E#33710 + &lt;: java.lang.Object, E#33549 = E#33549, E#33549 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, + V#33552&gt;, E#33549 = java.util.Map.java.util.Map.Entry&lt;K#33554, + V#33552&gt;, E#33549 &lt;: java.lang.Object, E#33549 + &lt;: java.lang.Object, E#2890 = java.util.Map.java.util.Map.Entry&lt;K#2871, + V#2870&gt;, E#2890 = E#2890, E#2890 &lt;: java.lang.Object, + E#2890 &lt;: java.lang.Object, java.util.Map.java.util.Map.Entry&lt;java.lang.String, + java.lang.Integer&gt; &lt;: E#2890, java.util.Map.java.util.Map.Entry&lt;K#33565, + java.lang.Integer&gt; &lt;: E#2890, java.util.Map.java.util.Map.Entry&lt;K#33565, + V#33563&gt; &lt;: E#2890, V#33552 = V#33563, V#33552 + = V#33552, V#33552 = V#33543, V#33552 = V#33526, V#33552 = + V#2870, V#33552 = V#33533, V#33552 = V#33548, V#33552 = V#33520, + V#33552 = java.lang.Integer, V#33552 &lt;: java.lang.Object, + V#33552 &lt;: java.lang.Object, V#33552 &lt;: INF#33564, + V#33552 &lt;: INF#33550, V#33552 &lt;: INF#33527, + V#33552 &lt;: java.lang.Integer, K#33536 = K#33554, K#33536 + = java.lang.String, K#33536 = K#33536, K#33536 = K#33544, + K#33536 = K#33521, K#33536 = K#33525, K#33536 = K#2871, K#33536 + = K#33565, K#33536 = K#33547, K#33536 &lt;: INF#33535, + K#33536 &lt;: java.lang.Object, K#33536 &lt;: java.lang.Object, + K#33536 &lt;: java.lang.String, K#33536 &lt;: INF#33553, + K#33536 &lt;: INF#33566, INF#33553 = java.lang.String, + INF#33553 = INF#33553, INF#33553 &lt;: java.lang.Object, + K#33554 &lt;: INF#33553, java.lang.String &lt;: INF#33553, + K#33536 &lt;: INF#33553, K#33544 &lt;: INF#33553, + K#33521 &lt;: INF#33553, K#33525 &lt;: INF#33553, + K#2871 &lt;: INF#33553, K#33547 &lt;: INF#33553, K#33565 + &lt;: INF#33553, K#33544 = K#33554, K#33544 = java.lang.String, + K#33544 = K#33536, K#33544 = K#33544, K#33544 = K#33521, K#33544 + = K#33525, K#33544 = K#2871, K#33544 = K#33565, K#33544 = + K#33547, K#33544 &lt;: INF#33535, K#33544 &lt;: java.lang.Object, + K#33544 &lt;: java.lang.Object, K#33544 &lt;: java.lang.String, + K#33544 &lt;: INF#33553, K#33544 &lt;: INF#33566, + V#2870 = V#33563, V#2870 = V#33552, V#2870 = V#33543, V#2870 + = V#33526, V#2870 = V#2870, V#2870 = V#33533, V#2870 = V#33548, + V#2870 = V#33520, V#2870 = java.lang.Integer, V#2870 &lt;: + java.lang.Object, V#2870 &lt;: java.lang.Object, V#2870 + &lt;: INF#33564, V#2870 &lt;: INF#33550, V#2870 &lt;: + INF#33527, V#2870 &lt;: java.lang.Integer, K#33525 = K#33554, + K#33525 = java.lang.String, K#33525 = K#33536, K#33525 = K#33544, + K#33525 = K#33521, K#33525 = K#33525, K#33525 = K#2871, K#33525 + = K#33565, K#33525 = K#33547, K#33525 &lt;: INF#33535, + K#33525 &lt;: java.lang.Object, K#33525 &lt;: java.lang.Object, + K#33525 &lt;: java.lang.String, K#33525 &lt;: INF#33553, + K#33525 &lt;: INF#33566, E#33528 = java.util.Map.java.util.Map.Entry&lt;K#33536, + V#33533&gt;, E#33528 = E#33528, E#33528 &lt;: java.lang.Object, + E#33528 &lt;: java.lang.Object, E#33555 = java.util.Map.java.util.Map.Entry&lt;K#33536, + V#33533&gt;, E#33555 = E#33555, E#33555 &lt;: java.util.Map.java.util.Map.Entry&lt;java.lang.String, + java.lang.Integer&gt;, E#33555 &lt;: java.util.Map.java.util.Map.Entry&lt;K#33565, + java.lang.Integer&gt;, E#33555 &lt;: java.lang.Object, + E#33555 &lt;: java.lang.Object, E#33555 &lt;: java.util.Map.java.util.Map.Entry&lt;K#33547, + V#33548&gt;, E#33555 &lt;: java.util.Map.java.util.Map.Entry&lt;K#33565, + V#33563&gt;, E#33555 &lt;: java.util.Map.java.util.Map.Entry&lt;K#33544, + V#33543&gt;, V#33520 = V#33563, V#33520 = V#33552, V#33520 + = V#33543, V#33520 = V#33526, V#33520 = V#2870, V#33520 = + V#33533, V#33520 = V#33548, V#33520 = V#33520, V#33520 = java.lang.Integer, + V#33520 &lt;: java.lang.Object, V#33520 &lt;: java.lang.Object, + V#33520 &lt;: INF#33564, V#33520 &lt;: INF#33550, + V#33520 &lt;: INF#33527, V#33520 &lt;: java.lang.Integer, + INF#33535 = INF#33535, INF#33535 = java.lang.Object, INF#33535 + &lt;: java.lang.Object, K#33554 &lt;: INF#33535, java.lang.String + &lt;: INF#33535, K#33536 &lt;: INF#33535, K#33544 + &lt;: INF#33535, K#33521 &lt;: INF#33535, K#33525 + &lt;: INF#33535, K#2871 &lt;: INF#33535, K#33565 &lt;: + INF#33535, K#33547 &lt;: INF#33535, E#33546 = E#33546, + E#33546 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, + V#33552&gt;, E#33546 = java.util.Map.java.util.Map.Entry&lt;K#33554, + V#33552&gt;, E#33546 &lt;: java.lang.Object, E#33546 + &lt;: java.lang.Object, E#33551 = E#33551, E#33551 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, + V#33552&gt;, E#33551 = java.util.Map.java.util.Map.Entry&lt;K#33554, + V#33552&gt;, E#33551 &lt;: java.lang.Object, E#33551 + &lt;: java.lang.Object, java.util.Map.java.util.Map.Entry&lt;K#33544, + V#33543&gt; &lt;: E#33551, E#33531 = E#33531, E#33531 + = java.util.Map.java.util.Map.Entry&lt;K#33536, V#33533&gt;, + E#33531 &lt;: java.lang.Object, E#33531 &lt;: java.lang.Object, + K#33554 = K#33554, K#33554 = java.lang.String, K#33554 = K#33536, + K#33554 = K#33544, K#33554 = K#33521, K#33554 = K#33525, K#33554 + = K#2871, K#33554 = K#33565, K#33554 = K#33547, K#33554 &lt;: + INF#33535, K#33554 &lt;: java.lang.Object, K#33554 &lt;: + java.lang.Object, K#33554 &lt;: java.lang.String, K#33554 + &lt;: INF#33553, K#33554 &lt;: INF#33566, E#33545 + = E#33545, E#33545 = java.util.Map.java.util.Map.Entry&lt;java.lang.String, + V#33552&gt;, E#33545 = java.util.Map.java.util.Map.Entry&lt;K#33554, + V#33552&gt;, E#33545 &lt;: java.lang.Object, E#33545 + &lt;: java.lang.Object, V#33563 = V#33563, V#33563 = V#33552, + V#33563 = V#33543, V#33563 = V#33526, V#33563 = V#2870, V#33563 + = V#33533, V#33563 = V#33548, V#33563 = V#33520, V#33563 = + java.lang.Integer, V#33563 &lt;: java.lang.Object, V#33563 + &lt;: java.lang.Object, V#33563 &lt;: INF#33564, V#33563 + &lt;: INF#33550, V#33563 &lt;: INF#33527, V#33563 + &lt;: java.lang.Integer, E#33534 = java.util.Map.java.util.Map.Entry&lt;K#33536, + V#33533&gt;, E#33534 = E#33534, E#33534 &lt;: java.lang.Object, + E#33534 &lt;: java.lang.Object, E#33523 = java.util.Map.java.util.Map.Entry&lt;K#33536, + V#33533&gt;, E#33523 = E#33523, E#33523 &lt;: java.lang.Object, + E#33523 &lt;: java.lang.Object, INF#33564 = INF#33564, + INF#33564 = java.lang.Integer, INF#33564 &lt;: java.lang.Object, + V#33563 &lt;: INF#33564, V#33552 &lt;: INF#33564, + V#33543 &lt;: INF#33564, V#33526 &lt;: INF#33564, + V#2870 &lt;: INF#33564, V#33533 &lt;: INF#33564, V#33548 + &lt;: INF#33564, V#33520 &lt;: INF#33564, java.lang.Integer + &lt;: INF#33564, V#33543 = V#33563, V#33543 = V#33552, + V#33543 = V#33543, V#33543 = V#33526, V#33543 = V#2870, V#33543 + = V#33533, V#33543 = V#33548, V#33543 = V#33520, V#33543 = + java.lang.Integer, V#33543 &lt;: java.lang.Object, V#33543 + &lt;: java.lang.Object, V#33543 &lt;: INF#33564, V#33543 + &lt;: INF#33550, V#33543 &lt;: INF#33527, V#33543 + &lt;: java.lang.Integer, V#33526 = V#33563, V#33526 = + V#33552, V#33526 = V#33543, V#33526 = V#33526, V#33526 = V#2870, + V#33526 = V#33533, V#33526 = V#33548, V#33526 = V#33520, V#33526 + = java.lang.Integer, V#33526 &lt;: java.lang.Object, V#33526 + &lt;: java.lang.Object, V#33526 &lt;: INF#33564, V#33526 + &lt;: INF#33550, V#33526 &lt;: INF#33527, V#33526 + &lt;: java.lang.Integer, E#33711 = java.util.Map.java.util.Map.Entry&lt;K#33536, + V#33533&gt;, E#33711 = E#33711, E#33711 &lt;: java.lang.Object, + E#33711 &lt;: java.lang.Object, E#33519 = java.util.Map.java.util.Map.Entry&lt;K#33536, + V#33533&gt;, E#33519 = E#33519, E#33519 &lt;: java.lang.Object, + E#33519 &lt;: java.lang.Object, K#33521 = K#33554, K#33521 + = java.lang.String, K#33521 = K#33536, K#33521 = K#33544, + K#33521 = K#33521, K#33521 = K#33525, K#33521 = K#2871, K#33521 + = K#33565, K#33521 = K#33547, K#33521 &lt;: INF#33535, + K#33521 &lt;: java.lang.Object, K#33521 &lt;: java.lang.Object, + K#33521 &lt;: java.lang.String, K#33521 &lt;: INF#33553, + K#33521 &lt;: INF#33566, INF#33566 = java.lang.String, + INF#33566 = INF#33566, INF#33566 &lt;: java.lang.Object, + K#33554 &lt;: INF#33566, java.lang.String &lt;: INF#33566, + K#33536 &lt;: INF#33566, K#33544 &lt;: INF#33566, + K#33521 &lt;: INF#33566, K#2871 &lt;: INF#33566, K#33525 + &lt;: INF#33566, K#33547 &lt;: INF#33566, K#33565 + &lt;: INF#33566, V#33548 = V#33563, V#33548 = V#33552, + V#33548 = V#33543, V#33548 = V#33526, V#33548 = V#2870, V#33548 + = V#33533, V#33548 = V#33548, V#33548 = V#33520, V#33548 = + java.lang.Integer, V#33548 &lt;: java.lang.Object, V#33548 + &lt;: java.lang.Object, V#33548 &lt;: INF#33564, V#33548 + &lt;: INF#33550, V#33548 &lt;: INF#33527, V#33548 + &lt;: java.lang.Integer, K#33565 = K#33554, K#33565 = + java.lang.String, K#33565 = K#33536, K#33565 = K#33544, K#33565 + = K#33521, K#33565 = K#33525, K#33565 = K#2871, K#33565 = + K#33565, K#33565 = K#33547, K#33565 &lt;: INF#33535, K#33565 + &lt;: java.lang.Object, K#33565 &lt;: java.lang.Object, + K#33565 &lt;: java.lang.String, K#33565 &lt;: INF#33553, + K#33565 &lt;: INF#33566, E#2887 = java.util.Map.java.util.Map.Entry&lt;K#2871, + V#2870&gt;, E#2887 = E#2887, E#2887 &lt;: java.lang.Object, + E#2887 &lt;: java.lang.Object, E#33537 = java.util.Map.java.util.Map.Entry&lt;K#33536, + V#33533&gt;, E#33537 = E#33537, E#33537 &lt;: java.util.Map.java.util.Map.Entry&lt;K#33521, + V#33520&gt;, E#33537 &lt;: java.lang.Object, E#33537 + &lt;: java.lang.Object, E#33537 &lt;: java.util.Map.java.util.Map.Entry&lt;K#33525, + V#33526&gt;, E#33529 = java.util.Map.java.util.Map.Entry&lt;K#33536, + V#33533&gt;, E#33529 = E#33529, E#33529 &lt;: java.lang.Object, + E#33529 &lt;: java.lang.Object, V#33533 = V#33563, V#33533 + = V#33552, V#33533 = V#33543, V#33533 = V#33526, V#33533 = + V#2870, V#33533 = V#33533, V#33533 = V#33548, V#33533 = V#33520, + V#33533 = java.lang.Integer, V#33533 &lt;: java.lang.Object, + V#33533 &lt;: java.lang.Object, V#33533 &lt;: INF#33564, + V#33533 &lt;: INF#33550, V#33533 &lt;: INF#33527, + V#33533 &lt;: java.lang.Integer, K#2871 = K#33554, K#2871 + = java.lang.String, K#2871 = K#33536, K#2871 = K#33544, K#2871 + = K#33521, K#2871 = K#33525, K#2871 = K#2871, K#2871 = K#33565, + K#2871 = K#33547, K#2871 &lt;: INF#33535, K#2871 &lt;: + java.lang.Object, K#2871 &lt;: java.lang.Object, K#2871 + &lt;: java.lang.String, K#2871 &lt;: INF#33553, K#2871 + &lt;: INF#33566, K#33547 = K#33554, K#33547 = java.lang.String, + K#33547 = K#33536, K#33547 = K#33544, K#33547 = K#33521, K#33547 + = K#33525, K#33547 = K#2871, K#33547 = K#33565, K#33547 = + K#33547, K#33547 &lt;: INF#33535, K#33547 &lt;: java.lang.Object, + K#33547 &lt;: java.lang.Object, K#33547 &lt;: java.lang.String, + K#33547 &lt;: INF#33553, K#33547 &lt;: INF#33566, + true } +&lt;?xml version="1.0" ?&gt; +&lt;stringIntMap + xmlns="http://modabi.strangeskies.co.uk/2014-01-01/"&gt; &lt;entry key="third"&gt; &lt;value&gt;3&lt;/value&gt; @@ -1326,8 +1906,8 @@ java.util.Map&lt;java.lang.String, java.lang.Integer&gt; &lt;/entry&gt; &lt;/stringIntMap&gt; -java.util.Map&lt;CAP#1720 - extends java.util.List&lt;byte[]&gt;, CAP#1721 extends +java.util.Map&lt;CAP#3816 + extends java.util.List&lt;byte[]&gt;, CAP#3817 extends java.util.Map&lt;java.lang.String, java.lang.Integer&gt;&gt; diff --git a/uk.co.strangeskies.modabi.eclipse/test/.gitignore b/uk.co.strangeskies.modabi.eclipse/test/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/uk.co.strangeskies.modabi.fx/bnd.bnd b/uk.co.strangeskies.modabi.fx/bnd.bnd index ac25307f..8ffc85bb 100644 --- a/uk.co.strangeskies.modabi.fx/bnd.bnd +++ b/uk.co.strangeskies.modabi.fx/bnd.bnd @@ -12,4 +12,4 @@ Bundle-Description: \ ${ss;utilities},\ uk.co.strangeskies.modabi.core.api;version=project -Export-Package: uk.co.strangeskies.modabi.fx \ No newline at end of file +Export-Package: uk.co.strangeskies.modabi.fx diff --git a/uk.co.strangeskies.modabi.fx/test/.gitignore b/uk.co.strangeskies.modabi.fx/test/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/uk.co.strangeskies.modabi.io.json/bnd.bnd b/uk.co.strangeskies.modabi.io.json/bnd.bnd index a71759c0..7fd98bca 100644 --- a/uk.co.strangeskies.modabi.io.json/bnd.bnd +++ b/uk.co.strangeskies.modabi.io.json/bnd.bnd @@ -12,4 +12,4 @@ Bundle-Description: \ uk.co.strangeskies.modabi.core.api;version=project,\ net.minidev.json-smart -Export-Package: uk.co.strangeskies.modabi.io.json.impl \ No newline at end of file +Export-Package: uk.co.strangeskies.modabi.io.json.impl diff --git a/uk.co.strangeskies.modabi.io.xml/bnd.bnd b/uk.co.strangeskies.modabi.io.xml/bnd.bnd index 11e0ad06..e1a8c969 100644 --- a/uk.co.strangeskies.modabi.io.xml/bnd.bnd +++ b/uk.co.strangeskies.modabi.io.xml/bnd.bnd @@ -34,4 +34,4 @@ Export-Package: uk.co.strangeskies.modabi.io.xml uk.co.strangeskies.reflection;version='[1.0.13,1.0.14)',\ uk.co.strangeskies.utilities;version='[1.0.13,1.0.14)',\ uk.co.strangeskies.utilities.osgi.consolelog;version='[1.0.13,1.0.14)' --runfw: org.eclipse.osgi \ No newline at end of file +-runfw: org.eclipse.osgi diff --git a/uk.co.strangeskies.modabi.io.xml/src/uk/co/strangeskies/modabi/io/xml/XmlInterface.java b/uk.co.strangeskies.modabi.io.xml/src/uk/co/strangeskies/modabi/io/xml/XmlInterface.java index 87630a33..47270183 100644 --- a/uk.co.strangeskies.modabi.io.xml/src/uk/co/strangeskies/modabi/io/xml/XmlInterface.java +++ b/uk.co.strangeskies.modabi.io.xml/src/uk/co/strangeskies/modabi/io/xml/XmlInterface.java @@ -26,6 +26,7 @@ import org.osgi.service.component.annotations.Component; +import uk.co.strangeskies.modabi.io.structured.RewritableStructuredData; import uk.co.strangeskies.modabi.io.structured.StructuredDataFormat; import uk.co.strangeskies.modabi.io.structured.StructuredDataSource; import uk.co.strangeskies.modabi.io.structured.StructuredDataTarget; @@ -53,4 +54,10 @@ public StructuredDataSource loadData(InputStream in) { public StructuredDataTarget saveData(OutputStream out) { return new XmlTarget(out); } + + @Override + public RewritableStructuredData modifyData() { + // TODO Auto-generated method stub + return null; + } } diff --git a/uk.co.strangeskies.modabi.io.yaml/test/.gitignore b/uk.co.strangeskies.modabi.io.yaml/test/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/uk.co.strangeskies.modabi.mapping/test/.gitignore b/uk.co.strangeskies.modabi.mapping/test/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/uk.co.strangeskies.modabi.scripting/test/.gitignore b/uk.co.strangeskies.modabi.scripting/test/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/uk.co.strangeskies.modabi.ui/bnd.bnd b/uk.co.strangeskies.modabi.ui/bnd.bnd index 67cacd25..6fafa56e 100644 --- a/uk.co.strangeskies.modabi.ui/bnd.bnd +++ b/uk.co.strangeskies.modabi.ui/bnd.bnd @@ -14,4 +14,4 @@ Bundle-Description: \ ${ss;utilities},\ uk.co.strangeskies.modabi.core.api;version=project -Export-Package: uk.co.strangeskies.modabi.ui \ No newline at end of file +Export-Package: uk.co.strangeskies.modabi.ui diff --git a/uk.co.strangeskies.modabi.ui/test/.gitignore b/uk.co.strangeskies.modabi.ui/test/.gitignore new file mode 100644 index 00000000..e69de29b