X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.databoard%2Fsrc%2Forg%2Fsimantics%2Fdataboard%2Faccessor%2Fbinary%2FBinaryVariant.java;h=3015623ea4d9befb79bebfda43dae890965154aa;hb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;hp=cbc86bcc037d0a67a679be41500400c7c5cdb391;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.databoard/src/org/simantics/databoard/accessor/binary/BinaryVariant.java b/bundles/org.simantics.databoard/src/org/simantics/databoard/accessor/binary/BinaryVariant.java index cbc86bcc0..3015623ea 100644 --- a/bundles/org.simantics.databoard/src/org/simantics/databoard/accessor/binary/BinaryVariant.java +++ b/bundles/org.simantics.databoard/src/org/simantics/databoard/accessor/binary/BinaryVariant.java @@ -1,52 +1,52 @@ -/******************************************************************************* - * Copyright (c) 2010 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 - *******************************************************************************/ +/******************************************************************************* + * Copyright (c) 2010 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 + *******************************************************************************/ package org.simantics.databoard.accessor.binary; -import gnu.trove.map.hash.TObjectIntHashMap; - -import java.io.IOException; -import java.lang.ref.SoftReference; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.Executor; - -import org.simantics.databoard.Bindings; -import org.simantics.databoard.Datatypes; -import org.simantics.databoard.accessor.Accessor; -import org.simantics.databoard.accessor.VariantAccessor; -import org.simantics.databoard.accessor.error.AccessorConstructionException; -import org.simantics.databoard.accessor.error.AccessorException; -import org.simantics.databoard.accessor.event.Event; -import org.simantics.databoard.accessor.event.ValueAssigned; -import org.simantics.databoard.accessor.file.FileVariantAccessor; -import org.simantics.databoard.accessor.impl.AccessorParams; -import org.simantics.databoard.accessor.impl.ListenerEntry; -import org.simantics.databoard.accessor.interestset.InterestSet; -import org.simantics.databoard.accessor.interestset.VariantInterestSet; -import org.simantics.databoard.accessor.reference.ChildReference; -import org.simantics.databoard.accessor.reference.ComponentReference; -import org.simantics.databoard.accessor.reference.LabelReference; -import org.simantics.databoard.adapter.AdaptException; -import org.simantics.databoard.binding.Binding; -import org.simantics.databoard.binding.VariantBinding; -import org.simantics.databoard.binding.error.BindingConstructionException; -import org.simantics.databoard.binding.error.BindingException; -import org.simantics.databoard.binding.mutable.MutableVariant; -import org.simantics.databoard.serialization.RuntimeSerializerConstructionException; -import org.simantics.databoard.serialization.Serializer; -import org.simantics.databoard.serialization.SerializerConstructionException; -import org.simantics.databoard.type.Datatype; -import org.simantics.databoard.type.VariantType; -import org.simantics.databoard.util.binary.Blob; +import gnu.trove.map.hash.TObjectIntHashMap; + +import java.io.IOException; +import java.lang.ref.SoftReference; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Executor; + +import org.simantics.databoard.Bindings; +import org.simantics.databoard.Datatypes; +import org.simantics.databoard.accessor.Accessor; +import org.simantics.databoard.accessor.VariantAccessor; +import org.simantics.databoard.accessor.error.AccessorConstructionException; +import org.simantics.databoard.accessor.error.AccessorException; +import org.simantics.databoard.accessor.event.Event; +import org.simantics.databoard.accessor.event.ValueAssigned; +import org.simantics.databoard.accessor.file.FileVariantAccessor; +import org.simantics.databoard.accessor.impl.AccessorParams; +import org.simantics.databoard.accessor.impl.ListenerEntry; +import org.simantics.databoard.accessor.interestset.InterestSet; +import org.simantics.databoard.accessor.interestset.VariantInterestSet; +import org.simantics.databoard.accessor.reference.ChildReference; +import org.simantics.databoard.accessor.reference.ComponentReference; +import org.simantics.databoard.accessor.reference.LabelReference; +import org.simantics.databoard.adapter.AdaptException; +import org.simantics.databoard.binding.Binding; +import org.simantics.databoard.binding.VariantBinding; +import org.simantics.databoard.binding.error.BindingConstructionException; +import org.simantics.databoard.binding.error.BindingException; +import org.simantics.databoard.binding.mutable.MutableVariant; +import org.simantics.databoard.serialization.RuntimeSerializerConstructionException; +import org.simantics.databoard.serialization.Serializer; +import org.simantics.databoard.serialization.SerializerConstructionException; +import org.simantics.databoard.type.Datatype; +import org.simantics.databoard.type.VariantType; +import org.simantics.databoard.util.binary.Blob; public class BinaryVariant extends BinaryObject implements VariantAccessor, FileVariantAccessor { @@ -67,8 +67,8 @@ public class BinaryVariant extends BinaryObject implements VariantAccessor, File @SuppressWarnings("unchecked") @Override public T getContentAccessor() - throws AccessorConstructionException { - assert b.isOpen(); + throws AccessorConstructionException { + assert b.isOpen(); readLock(); try { BinaryObject sa = getExistingAccessor(); @@ -110,12 +110,12 @@ public class BinaryVariant extends BinaryObject implements VariantAccessor, File throw new AccessorConstructionException(e); } catch (AccessorException e) { throw new AccessorConstructionException(e); - } finally { - readUnlock(); + } finally { + readUnlock(); } } - protected BinaryObject getExistingAccessor() { + protected BinaryObject getExistingAccessor() { SoftReference r = child; if (r==null) return null; BinaryObject sa = r.get(); @@ -124,8 +124,8 @@ public class BinaryVariant extends BinaryObject implements VariantAccessor, File @Override public void setContentValueNoflush(Binding valueBinding, Object value) - throws AccessorException { - assert b.isOpen(); + throws AccessorException { + assert b.isOpen(); writeLock(); try { // reuse sub-accessor, if type matches, and sub-accessor exists @@ -187,29 +187,29 @@ public class BinaryVariant extends BinaryObject implements VariantAccessor, File throw new AccessorException( e ); } catch (AdaptException e) { throw new AccessorException( e ); - } catch (SerializerConstructionException e) { - throw new AccessorException( e ); - } finally { - writeUnlock(); + } catch (SerializerConstructionException e) { + throw new AccessorException( e ); + } finally { + writeUnlock(); } } @Override public void setContentValue(Binding valueBinding, Object value) - throws AccessorException { - assert b.isOpen(); - writeLock(); + throws AccessorException { + assert b.isOpen(); + writeLock(); try { setContentValueNoflush(valueBinding, value); - flush(); - } finally { - writeUnlock(); + flush(); + } finally { + writeUnlock(); } } @Override - public Datatype getContentType() throws AccessorException { - assert b.isOpen(); + public Datatype getContentType() throws AccessorException { + assert b.isOpen(); readLock(); try { b.position(0L); @@ -218,15 +218,15 @@ public class BinaryVariant extends BinaryObject implements VariantAccessor, File return type; } catch (IOException e) { throw new AccessorException( e ); - } finally { - readUnlock(); + } finally { + readUnlock(); } } @Override public Object getContentValue(Binding contentBinding) - throws AccessorException { - assert b.isOpen(); + throws AccessorException { + assert b.isOpen(); readLock(); try { b.position(0L); @@ -250,10 +250,10 @@ public class BinaryVariant extends BinaryObject implements VariantAccessor, File // return adapt(lv, lcb, rcb); } catch (IOException e) { throw new AccessorException( e ); - } catch (SerializerConstructionException e) { - throw new AccessorException( e ); - } finally { - readUnlock(); + } catch (SerializerConstructionException e) { + throw new AccessorException( e ); + } finally { + readUnlock(); } } @@ -261,24 +261,24 @@ public class BinaryVariant extends BinaryObject implements VariantAccessor, File @Override public T getComponent(ChildReference reference) throws AccessorConstructionException { - if (reference==null) return (T) this; + if (reference==null) return (T) this; + + if (reference instanceof LabelReference) { + LabelReference lr = (LabelReference) reference; + if (lr.label.equals("v")) { + Accessor sa = getContentAccessor(); + if (reference.getChildReference()!=null) sa = sa.getComponent(reference.getChildReference()); + return (T) sa; + } + } + + if (reference instanceof ComponentReference) { + Accessor sa = getContentAccessor(); + if (reference.getChildReference()!=null) sa = sa.getComponent(reference.getChildReference()); + return (T) sa; + } - if (reference instanceof LabelReference) { - LabelReference lr = (LabelReference) reference; - if (lr.label.equals("v")) { - Accessor sa = getContentAccessor(); - if (reference.getChildReference()!=null) sa = sa.getComponent(reference.getChildReference()); - return (T) sa; - } - } - - if (reference instanceof ComponentReference) { - Accessor sa = getContentAccessor(); - if (reference.getChildReference()!=null) sa = sa.getComponent(reference.getChildReference()); - return (T) sa; - } - - throw new AccessorConstructionException("Variant value reference expected, got "+reference.getClass().getName()); + throw new AccessorConstructionException("Variant value reference expected, got "+reference.getClass().getName()); } @Override @@ -324,7 +324,7 @@ public class BinaryVariant extends BinaryObject implements VariantAccessor, File Event applyLocal(Event e, boolean makeRollback) throws AccessorException { try { if (e instanceof ValueAssigned ) { - Event rollback = null; + Event rollback = null; ValueAssigned va = (ValueAssigned) e; if (va.newValue==null) throw new AccessorException("Cannot apply variant assignment event, the value is missing"); @@ -339,28 +339,28 @@ public class BinaryVariant extends BinaryObject implements VariantAccessor, File rollback = new ValueAssigned( Bindings.MUTABLE_VARIANT, new MutableVariant( cb, lv )); } - setValueNoflush(va.newValue.getBinding(), va.newValue.getValue()); + setValueNoflush(va.newValue.getBinding(), va.newValue.getValue()); // setContentValueNoflush(va.newValue.getBinding(), va.newValue.getValue()); - return rollback; - } else { - throw new AccessorException("Invalid event "+e.getClass().getName()); + return rollback; + } else { + throw new AccessorException("Invalid event "+e.getClass().getName()); } } catch (IOException ioe) { throw new AccessorException(ioe); } catch (RuntimeSerializerConstructionException rsce) { - throw new AccessorException(rsce); - } catch (SerializerConstructionException e2) { - throw new AccessorException(e2); - } catch (BindingConstructionException e2) { - throw new AccessorException(e2); + throw new AccessorException(rsce); + } catch (SerializerConstructionException e2) { + throw new AccessorException(e2); + } catch (BindingConstructionException e2) { + throw new AccessorException(e2); } } @Override public void setValueNoflush(Binding variantBinding, Object variantValue) - throws AccessorException { - assert b.isOpen(); + throws AccessorException { + assert b.isOpen(); writeLock(); try { VariantBinding vb = (VariantBinding) variantBinding; @@ -370,8 +370,8 @@ public class BinaryVariant extends BinaryObject implements VariantAccessor, File setContentValueNoflush(cb, cv); } catch (BindingException e) { throw new AccessorException( e ); - } finally { - writeUnlock(); + } finally { + writeUnlock(); } }