X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.databoard%2Fsrc%2Forg%2Fsimantics%2Fdataboard%2Fbinding%2Freflection%2FClassBindingFactory.java;fp=bundles%2Forg.simantics.databoard%2Fsrc%2Forg%2Fsimantics%2Fdataboard%2Fbinding%2Freflection%2FClassBindingFactory.java;h=1295c1099ac0c8731b3be597dd967370e0b52afc;hp=8d29ad70c24ac4c8896293b22ac82817b1c617f3;hb=95bce3521a3c97f463c3d533a36a606c7ae6f0aa;hpb=f015145947a0aaf44bd11f8dab45aef96feed149 diff --git a/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/reflection/ClassBindingFactory.java b/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/reflection/ClassBindingFactory.java index 8d29ad70c..1295c1099 100644 --- a/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/reflection/ClassBindingFactory.java +++ b/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/reflection/ClassBindingFactory.java @@ -1,3 +1,15 @@ +/******************************************************************************* + * Copyright (c) 2019 Association for Decentralized Information Management + * in Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * VTT Technical Research Centre of Finland - initial API and implementation + * Semantum Oy - gitlab #313 + *******************************************************************************/ package org.simantics.databoard.binding.reflection; import java.lang.annotation.Annotation; @@ -200,8 +212,7 @@ public class ClassBindingFactory { if(request.hasAnnotation(Optional.class)) { Optional optional = request.getAnnotation(Optional.class); - Annotation[] newAnnotations = ArrayUtils.dropElements(request.annotations, optional); - BindingRequest componentRequest = new BindingRequest(request.getClazz(), newAnnotations); + BindingRequest componentRequest = request.withAnnotations(ArrayUtils.dropElements(request.annotations, optional)); OptionalType type = new OptionalType(); OptionalBinding binding = new OptionalBindingDefault(type, null); inprogress.put(request, binding); @@ -209,6 +220,7 @@ public class ClassBindingFactory { type.componentType = binding.componentBinding.type(); inprogress.remove(request); + repository.put(request, binding); return binding; } @@ -570,7 +582,7 @@ public class ClassBindingFactory { Identifier idAnnotation = componentRequest.getAnnotation( Identifier.class ); if ( idAnnotation!=null ) { - componentRequest.dropAnnotations(1, idAnnotation); + componentRequest = componentRequest.withAnnotations(componentRequest.dropAnnotations(1, idAnnotation)); identifierIndices.add( i ); } Binding componentBinding = componentBindings[i] = construct( componentRequest ); @@ -602,8 +614,6 @@ public class ClassBindingFactory { binding = defaultBinding; } - repository.put(request, binding); - return binding; } catch (RangeException e) { inprogress.remove( request );