X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.databoard%2Fsrc%2Forg%2Fsimantics%2Fdataboard%2Faccessor%2Fbinary%2FBinaryOptional.java;fp=bundles%2Forg.simantics.databoard%2Fsrc%2Forg%2Fsimantics%2Fdataboard%2Faccessor%2Fbinary%2FBinaryOptional.java;h=b6d212e49fbb4e49840e21d443323173556db617;hb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;hp=a7870e74b743ac4291b7153cd59037da7c08a8ab;hpb=24e2b34260f219f0d1644ca7a138894980e25b14;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.databoard/src/org/simantics/databoard/accessor/binary/BinaryOptional.java b/bundles/org.simantics.databoard/src/org/simantics/databoard/accessor/binary/BinaryOptional.java index a7870e74b..b6d212e49 100644 --- a/bundles/org.simantics.databoard/src/org/simantics/databoard/accessor/binary/BinaryOptional.java +++ b/bundles/org.simantics.databoard/src/org/simantics/databoard/accessor/binary/BinaryOptional.java @@ -1,48 +1,48 @@ -/******************************************************************************* - * 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 java.io.IOException; -import java.lang.ref.SoftReference; -import java.util.concurrent.Executor; - -import org.simantics.databoard.Bindings; -import org.simantics.databoard.accessor.Accessor; -import org.simantics.databoard.accessor.OptionalAccessor; -import org.simantics.databoard.accessor.error.AccessorConstructionException; -import org.simantics.databoard.accessor.error.AccessorException; -import org.simantics.databoard.accessor.error.ReferenceException; -import org.simantics.databoard.accessor.event.Event; -import org.simantics.databoard.accessor.event.OptionalValueAssigned; -import org.simantics.databoard.accessor.event.OptionalValueRemoved; -import org.simantics.databoard.accessor.event.ValueAssigned; -import org.simantics.databoard.accessor.file.FileOptionalAccessor; -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.OptionalInterestSet; -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.OptionalBinding; -import org.simantics.databoard.binding.error.BindingException; -import org.simantics.databoard.binding.mutable.MutableVariant; -import org.simantics.databoard.serialization.Serializer; -import org.simantics.databoard.serialization.SerializerConstructionException; -import org.simantics.databoard.type.Datatype; -import org.simantics.databoard.type.OptionalType; -import org.simantics.databoard.util.binary.Blob; +import java.io.IOException; +import java.lang.ref.SoftReference; +import java.util.concurrent.Executor; + +import org.simantics.databoard.Bindings; +import org.simantics.databoard.accessor.Accessor; +import org.simantics.databoard.accessor.OptionalAccessor; +import org.simantics.databoard.accessor.error.AccessorConstructionException; +import org.simantics.databoard.accessor.error.AccessorException; +import org.simantics.databoard.accessor.error.ReferenceException; +import org.simantics.databoard.accessor.event.Event; +import org.simantics.databoard.accessor.event.OptionalValueAssigned; +import org.simantics.databoard.accessor.event.OptionalValueRemoved; +import org.simantics.databoard.accessor.event.ValueAssigned; +import org.simantics.databoard.accessor.file.FileOptionalAccessor; +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.OptionalInterestSet; +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.OptionalBinding; +import org.simantics.databoard.binding.error.BindingException; +import org.simantics.databoard.binding.mutable.MutableVariant; +import org.simantics.databoard.serialization.Serializer; +import org.simantics.databoard.serialization.SerializerConstructionException; +import org.simantics.databoard.type.Datatype; +import org.simantics.databoard.type.OptionalType; +import org.simantics.databoard.util.binary.Blob; public class BinaryOptional extends BinaryObject implements OptionalAccessor, FileOptionalAccessor { @@ -60,8 +60,8 @@ public class BinaryOptional extends BinaryObject implements OptionalAccessor, Fi } @Override - public void setValueNoflush(Binding binding, Object newValue) throws AccessorException { - assert b.isOpen(); + public void setValueNoflush(Binding binding, Object newValue) throws AccessorException { + assert b.isOpen(); writeLock(); try { OptionalBinding ob = (OptionalBinding) binding; @@ -78,14 +78,14 @@ public class BinaryOptional extends BinaryObject implements OptionalAccessor, Fi } catch (BindingException e) { throw new AccessorException(e); - } finally { - writeUnlock(); + } finally { + writeUnlock(); } } public void setComponentValueNoflush(Binding cb, Object cv) - throws AccessorException { - assert b.isOpen(); + throws AccessorException { + assert b.isOpen(); writeLock(); try { BinaryObject sa = getExistingAccessor(); @@ -124,16 +124,16 @@ public class BinaryOptional extends BinaryObject implements OptionalAccessor, Fi 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(); } } - public void setNoValueNoflush() throws AccessorException { - assert b.isOpen(); + public void setNoValueNoflush() throws AccessorException { + assert b.isOpen(); writeLock(); try { // Write @@ -160,46 +160,46 @@ public class BinaryOptional extends BinaryObject implements OptionalAccessor, Fi } catch (IOException e) { throw new AccessorException(e); - } finally { - writeUnlock(); + } finally { + writeUnlock(); } } @Override - public void setNoValue() throws AccessorException { - assert b.isOpen(); + public void setNoValue() throws AccessorException { + assert b.isOpen(); writeLock(); try { setNoValueNoflush(); b.flush(); } catch (IOException e) { throw new AccessorException( e ); - } finally { - writeUnlock(); + } finally { + writeUnlock(); } } @Override public void setComponentValue(Binding cb, Object cv) - throws AccessorException { - assert b.isOpen(); + throws AccessorException { + assert b.isOpen(); writeLock(); try { setComponentValueNoflush(cb, cv); b.flush(); } catch (IOException e) { throw new AccessorException( e ); - } finally { - writeUnlock(); + } finally { + writeUnlock(); } } @SuppressWarnings("unchecked") @Override public T getComponentAccessor() - throws AccessorConstructionException { - assert b.isOpen(); + throws AccessorConstructionException { + assert b.isOpen(); readLock(); try { // Get existing or create new @@ -240,8 +240,8 @@ public class BinaryOptional extends BinaryObject implements OptionalAccessor, Fi throw new AccessorConstructionException( e ); } catch (AccessorException e) { throw new AccessorConstructionException( e ); - } finally { - readUnlock(); + } finally { + readUnlock(); } } @@ -260,8 +260,8 @@ public class BinaryOptional extends BinaryObject implements OptionalAccessor, Fi @Override public Object getComponentValue(Binding cb) - throws AccessorException { - assert b.isOpen(); + throws AccessorException { + assert b.isOpen(); readLock(); try { b.position(1L); @@ -269,16 +269,16 @@ public class BinaryOptional extends BinaryObject implements OptionalAccessor, Fi return cs.deserialize(b, null); } 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(); } } @Override - public boolean hasValue() throws AccessorException { - assert b.isOpen(); + public boolean hasValue() throws AccessorException { + assert b.isOpen(); readLock(); try { b.position(0L); @@ -288,8 +288,8 @@ public class BinaryOptional extends BinaryObject implements OptionalAccessor, Fi throw new AccessorException("Unexpected value "+v+", expected 0/1"); } catch (IOException e) { throw new AccessorException( e ); - } finally { - readUnlock(); + } finally { + readUnlock(); } } @@ -297,24 +297,24 @@ public class BinaryOptional extends BinaryObject implements OptionalAccessor, Fi @Override public T getComponent(ChildReference reference) throws AccessorConstructionException { - if (reference==null) return (T) this; - - if (reference instanceof LabelReference) { - LabelReference lr = (LabelReference) reference; - if (lr.label.equals("o")) { - Accessor result = getComponentAccessor(); - if (reference.getChildReference() != null) - result = result.getComponent(reference.getChildReference()); - return (T) result; - } - } + if (reference==null) return (T) this; + + if (reference instanceof LabelReference) { + LabelReference lr = (LabelReference) reference; + if (lr.label.equals("o")) { + Accessor result = getComponentAccessor(); + if (reference.getChildReference() != null) + result = result.getComponent(reference.getChildReference()); + return (T) result; + } + } if (reference instanceof ComponentReference) { Accessor result = getComponentAccessor(); if (reference.getChildReference() != null) result = result.getComponent(reference.getChildReference()); return (T) result; - } + } throw new ReferenceException(reference.getClass()+" is not a reference of OptionalType"); @@ -360,11 +360,11 @@ public class BinaryOptional extends BinaryObject implements OptionalAccessor, Fi } } - if (e instanceof ValueAssigned) { - ValueAssigned va = (ValueAssigned) e; - setValueNoflush(va.newValue.getBinding(), va.newValue.getValue()); - return rollback; - } else + if (e instanceof ValueAssigned) { + ValueAssigned va = (ValueAssigned) e; + setValueNoflush(va.newValue.getBinding(), va.newValue.getValue()); + return rollback; + } else if (e instanceof OptionalValueAssigned) { OptionalValueAssigned oa = (OptionalValueAssigned) e; if (oa.newValue == null)