X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.databoard%2Fsrc%2Forg%2Fsimantics%2Fdataboard%2Faccessor%2Fjava%2FJavaObject.java;h=38b5001e2a24dc2eb6b3d42b757985f17f456582;hb=refs%2Fchanges%2F15%2F3015%2F1;hp=f5a0d334a3afd597deb9a3eafb16ae4a22f2f088;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.databoard/src/org/simantics/databoard/accessor/java/JavaObject.java b/bundles/org.simantics.databoard/src/org/simantics/databoard/accessor/java/JavaObject.java index f5a0d334a..38b5001e2 100644 --- a/bundles/org.simantics.databoard/src/org/simantics/databoard/accessor/java/JavaObject.java +++ b/bundles/org.simantics.databoard/src/org/simantics/databoard/accessor/java/JavaObject.java @@ -1,54 +1,54 @@ -/******************************************************************************* - * 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.java; -import java.io.IOException; -import java.util.Collection; -import java.util.LinkedList; -import java.util.List; -import java.util.concurrent.Executor; -import java.util.concurrent.locks.Lock; - -import org.simantics.databoard.accessor.Accessor; -import org.simantics.databoard.accessor.ParametrisedAccessor; -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.InvalidatedEvent; -import org.simantics.databoard.accessor.event.ValueAssigned; -import org.simantics.databoard.accessor.impl.AccessorParams; -import org.simantics.databoard.accessor.impl.ListenerEntry; -import org.simantics.databoard.accessor.interestset.ByteInterestSet; -import org.simantics.databoard.accessor.interestset.InterestSet; -import org.simantics.databoard.accessor.reference.ChildReference; -import org.simantics.databoard.adapter.AdaptException; -import org.simantics.databoard.adapter.AdapterConstructionException; -import org.simantics.databoard.binding.ArrayBinding; -import org.simantics.databoard.binding.Binding; -import org.simantics.databoard.binding.BooleanBinding; -import org.simantics.databoard.binding.ByteBinding; -import org.simantics.databoard.binding.DoubleBinding; -import org.simantics.databoard.binding.FloatBinding; -import org.simantics.databoard.binding.IntegerBinding; -import org.simantics.databoard.binding.LongBinding; -import org.simantics.databoard.binding.MapBinding; -import org.simantics.databoard.binding.OptionalBinding; -import org.simantics.databoard.binding.RecordBinding; -import org.simantics.databoard.binding.StringBinding; -import org.simantics.databoard.binding.UnionBinding; -import org.simantics.databoard.binding.VariantBinding; -import org.simantics.databoard.binding.error.BindingException; -import org.simantics.databoard.type.Datatype; +import java.io.IOException; +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; +import java.util.concurrent.Executor; +import java.util.concurrent.locks.Lock; + +import org.simantics.databoard.accessor.Accessor; +import org.simantics.databoard.accessor.ParametrisedAccessor; +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.InvalidatedEvent; +import org.simantics.databoard.accessor.event.ValueAssigned; +import org.simantics.databoard.accessor.impl.AccessorParams; +import org.simantics.databoard.accessor.impl.ListenerEntry; +import org.simantics.databoard.accessor.interestset.ByteInterestSet; +import org.simantics.databoard.accessor.interestset.InterestSet; +import org.simantics.databoard.accessor.reference.ChildReference; +import org.simantics.databoard.adapter.AdaptException; +import org.simantics.databoard.adapter.AdapterConstructionException; +import org.simantics.databoard.binding.ArrayBinding; +import org.simantics.databoard.binding.Binding; +import org.simantics.databoard.binding.BooleanBinding; +import org.simantics.databoard.binding.ByteBinding; +import org.simantics.databoard.binding.DoubleBinding; +import org.simantics.databoard.binding.FloatBinding; +import org.simantics.databoard.binding.IntegerBinding; +import org.simantics.databoard.binding.LongBinding; +import org.simantics.databoard.binding.MapBinding; +import org.simantics.databoard.binding.OptionalBinding; +import org.simantics.databoard.binding.RecordBinding; +import org.simantics.databoard.binding.StringBinding; +import org.simantics.databoard.binding.UnionBinding; +import org.simantics.databoard.binding.VariantBinding; +import org.simantics.databoard.binding.error.BindingException; +import org.simantics.databoard.type.Datatype; /** * Accessor to a Java Object. @@ -56,8 +56,8 @@ import org.simantics.databoard.type.Datatype; * The monitoring contract forbids modifications to the object outside this * accessor object. If you do modifications to the value using other mechanisms, * you must notify the listeners of the accessor with {@link #notifyValueChanged()}. - *
- * If a lock is not provided, operations cannot be performed simulataneously + *
+ * If a lock is not provided, operations cannot be performed simulataneously
* in multiple-threads.
*
* @author Toni Kalajainen
- *
- * Read and write locks may optionally be provided for locking mechanisms.
- * ReadWriteLock can be provied or a signle MutualExclusion lock.
- *
- * @param parent parent, or null
- * @param binding
- * @param initialValue the java object
- * @param params accessor params
+
+ /**
+ * Create a new accessor to a Java Object.
+ *
+ * Read and write locks may optionally be provided for locking mechanisms.
+ * ReadWriteLock can be provied or a signle MutualExclusion lock.
+ *
+ * @param parent parent, or null
+ * @param binding
+ * @param initialValue the java object
+ * @param params accessor params
*/
public JavaObject(Accessor parent, Binding binding, Object initialValue, AccessorParams params) {
if (binding==null) throw new IllegalArgumentException("null arg");
this.parent = parent;
this.binding = binding;
- this.object = initialValue;
- this.params = params;
+ this.object = initialValue;
+ this.params = params;
}
/**
@@ -112,132 +112,132 @@ public abstract class JavaObject implements Accessor, ParametrisedAccessor {
public Binding getBinding() {
return binding;
}
-
- @Override
- public AccessorParams getParams() {
- return params;
- }
+
+ @Override
+ public AccessorParams getParams() {
+ return params;
+ }
public Datatype type() {
return binding.type();
- }
-
- /**
- * Get lock if available.
- *
- * @return lock or null
- */
- public Lock getReadLock() {
- return params.readLock;
- }
-
- /**
- * Get lock if available.
- *
- * @return lock or null
- */
- public Lock getWriteLock() {
- return params.writeLock;
- }
+ }
+
+ /**
+ * Get lock if available.
+ *
+ * @return lock or null
+ */
+ public Lock getReadLock() {
+ return params.readLock;
+ }
+
+ /**
+ * Get lock if available.
+ *
+ * @return lock or null
+ */
+ public Lock getWriteLock() {
+ return params.writeLock;
+ }
-
- /**
- * Lock the lock if there is a lock.
- */
- protected void readLock() {
- if (params.readLock!=null) params.readLock.lock();
- }
-
- /**
- * Unlock the lock if one exists
- */
- protected void readUnlock() {
- if (params.readLock!=null) params.readLock.unlock();
- }
-
- /**
- * Lock the lock if there is a lock.
- */
- protected void writeLock() {
- if (params.writeLock!=null) params.writeLock.lock();
- }
-
- /**
- * Unlock the lock if one exists
- */
- protected void writeUnlock() {
- if (params.writeLock!=null) params.writeLock.unlock();
- }
+
+ /**
+ * Lock the lock if there is a lock.
+ */
+ protected void readLock() {
+ if (params.readLock!=null) params.readLock.lock();
+ }
+
+ /**
+ * Unlock the lock if one exists
+ */
+ protected void readUnlock() {
+ if (params.readLock!=null) params.readLock.unlock();
+ }
+
+ /**
+ * Lock the lock if there is a lock.
+ */
+ protected void writeLock() {
+ if (params.writeLock!=null) params.writeLock.lock();
+ }
+
+ /**
+ * Unlock the lock if one exists
+ */
+ protected void writeUnlock() {
+ if (params.writeLock!=null) params.writeLock.unlock();
+ }
@Override
- public Object getValue(Binding binding) throws AccessorException {
+ public Object getValue(Binding binding) throws AccessorException {
readLock();
- try {
-// return params.adapterScheme.getAdapter(this.binding, binding, true, true).adapt(object);
- if (binding == this.binding) {
- return binding.isImmutable() ? object : binding.clone(object);
- }
+ try {
+// return params.adapterScheme.getAdapter(this.binding, binding, true, true).adapt(object);
+ if (binding == this.binding) {
+ return binding.isImmutable() ? object : binding.clone(object);
+ }
return adapt(object, this.binding, binding);
} catch (AdaptException e) {
throw new AccessorException(e);
- } catch (AdapterConstructionException e) {
- throw new AccessorException(e);
- } finally {
- readUnlock();
+ } catch (AdapterConstructionException e) {
+ throw new AccessorException(e);
+ } finally {
+ readUnlock();
+ }
+ }
+
+
+ @Override
+ public void getValue(Binding binding, Object obj) throws AccessorException {
+ readLock();
+ try {
+ this.binding.readFrom(this.binding, object, obj);
+ } catch (BindingException e) {
+ throw new AccessorException(e);
+ } finally {
+ readLock();
+ }
+ }
+
+ @Override
+ public boolean getValue(ChildReference path, Binding binding, Object obj) throws AccessorException {
+ try {
+ Accessor a = getComponent(path);
+ a.getValue(binding, obj);
+ return true;
+ } catch (ReferenceException re) {
+ return false;
+ } catch (AccessorConstructionException e) {
+ throw new AccessorException(e);
+ }
+ }
+
+ public Object getValue(ChildReference path, Binding binding) throws AccessorException {
+ try {
+ Accessor a = getComponent(path);
+ return a.getValue(binding);
+ } catch (ReferenceException re) {
+ return null;
+ } catch (AccessorConstructionException e) {
+ throw new AccessorException(e);
+ }
+ }
+
+ public boolean setValue(ChildReference path, Binding binding, Object obj) throws AccessorException {
+ try {
+ Accessor a = getComponent(path);
+ a.setValue(binding, obj);
+ return true;
+ } catch (ReferenceException re) {
+ return false;
+ } catch (AccessorConstructionException e) {
+ throw new AccessorException(e);
}
- }
-
-
- @Override
- public void getValue(Binding binding, Object obj) throws AccessorException {
- readLock();
- try {
- this.binding.readFrom(this.binding, object, obj);
- } catch (BindingException e) {
- throw new AccessorException(e);
- } finally {
- readLock();
- }
- }
-
- @Override
- public boolean getValue(ChildReference path, Binding binding, Object obj) throws AccessorException {
- try {
- Accessor a = getComponent(path);
- a.getValue(binding, obj);
- return true;
- } catch (ReferenceException re) {
- return false;
- } catch (AccessorConstructionException e) {
- throw new AccessorException(e);
- }
- }
-
- public Object getValue(ChildReference path, Binding binding) throws AccessorException {
- try {
- Accessor a = getComponent(path);
- return a.getValue(binding);
- } catch (ReferenceException re) {
- return null;
- } catch (AccessorConstructionException e) {
- throw new AccessorException(e);
- }
- }
-
- public boolean setValue(ChildReference path, Binding binding, Object obj) throws AccessorException {
- try {
- Accessor a = getComponent(path);
- a.setValue(binding, obj);
- return true;
- } catch (ReferenceException re) {
- return false;
- } catch (AccessorConstructionException e) {
- throw new AccessorException(e);
- }
- }
-
- Object adapt(Object value, Binding domain, Binding range) throws AdaptException, AdapterConstructionException {
- return params.adapterScheme.getAdapter(domain, range, true, false).adapt(value);
+ }
+
+ Object adapt(Object value, Binding domain, Binding range) throws AdaptException, AdapterConstructionException {
+ return params.adapterScheme.getAdapter(domain, range, true, false).adapt(value);
}
@Override
@@ -270,11 +270,11 @@ public abstract class JavaObject implements Accessor, ParametrisedAccessor {
public void removeListener(Listener listener) throws AccessorException {
detachListener(listener);
}
-
- public static JavaObject createAccessor(Accessor parent, Binding b, Object v, AccessorParams params) throws AccessorConstructionException {
- return createSubAccessor(parent, b, v, params);
- }
-
+
+ public static JavaObject createAccessor(Accessor parent, Binding b, Object v, AccessorParams params) throws AccessorConstructionException {
+ return createSubAccessor(parent, b, v, params);
+ }
+
public static JavaObject createSubAccessor(Accessor parent, Binding b, Object v, AccessorParams params)
throws AccessorConstructionException {
if (b instanceof BooleanBinding) {
@@ -292,8 +292,8 @@ public abstract class JavaObject implements Accessor, ParametrisedAccessor {
if (b instanceof FloatBinding) {
return new JavaFloat(parent, (FloatBinding)b, v, params);
}
- if (b instanceof DoubleBinding) {
- return new JavaDouble(parent, (DoubleBinding)b, v, params);
+ if (b instanceof DoubleBinding) {
+ return new JavaDouble(parent, (DoubleBinding)b, v, params);
}
if (b instanceof StringBinding) {
return new JavaString(parent, (StringBinding)b, v, params);
@@ -336,7 +336,7 @@ public abstract class JavaObject implements Accessor, ParametrisedAccessor {
/**
* Apply a change set that has events for the particular accessor.
- * There are no sub-accessor in the path of the event.
+ * There are no sub-accessor in the path of the event.
* This is called within lock.
*
* @param cs
@@ -347,7 +347,7 @@ public abstract class JavaObject implements Accessor, ParametrisedAccessor {
abstract Event applyLocal(Event e, boolean makeRollback) throws AccessorException;
@Override
- public void apply(List