- // FIXME reimplement without recursion
- private void setUpSchema(final Collection<SourceIdentifier> requiredSources) {
- LOG.trace("{}: Trying to build schema context from {}", id, requiredSources);
-
- // If no more sources, fail
- if(requiredSources.isEmpty()) {
- final IllegalStateException cause = new IllegalStateException(id + ": No more sources for schema context");
- handleSalInitializationFailure(cause, listener);
- salFacade.onDeviceFailed(cause);
- return;
- }
-
- final CheckedFuture<SchemaContext, SchemaResolutionException> schemaBuilderFuture = schemaContextFactory.createSchemaContext(requiredSources);
-
- final FutureCallback<SchemaContext> RecursiveSchemaBuilderCallback = new FutureCallback<SchemaContext>() {
-
- @Override
- public void onSuccess(final SchemaContext result) {
+ private void setUpSchema(Collection<SourceIdentifier> requiredSources) {
+ while (!requiredSources.isEmpty()) {
+ LOG.trace("{}: Trying to build schema context from {}", id, requiredSources);
+ try {
+ final CheckedFuture<SchemaContext, SchemaResolutionException> schemaBuilderFuture = schemaContextFactory.createSchemaContext(requiredSources);
+ final SchemaContext result = schemaBuilderFuture.checkedGet();