Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Schwarz2013-07-30 07:02:20 +0000
committerTobias Schwarz2013-07-30 07:02:20 +0000
commitcd3cdbc0a85da2f57a2732cb63fb4e29f6ab4848 (patch)
treee218b386aeba23add09442d642243cd4c0b1302f /target_explorer/plugins/org.eclipse.tcf.te.tcf.core.model
parentb07499780c7f2cb8ae57e921dfd91cbac60eb93d (diff)
downloadorg.eclipse.tcf-cd3cdbc0a85da2f57a2732cb63fb4e29f6ab4848.tar.gz
org.eclipse.tcf-cd3cdbc0a85da2f57a2732cb63fb4e29f6ab4848.tar.xz
org.eclipse.tcf-cd3cdbc0a85da2f57a2732cb63fb4e29f6ab4848.zip
Target Explorer: add common property access service
Diffstat (limited to 'target_explorer/plugins/org.eclipse.tcf.te.tcf.core.model')
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.core.model/META-INF/MANIFEST.MF3
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.core.model/src/org/eclipse/tcf/te/tcf/core/model/services/PropertiesAccessService.java139
2 files changed, 141 insertions, 1 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.core.model/META-INF/MANIFEST.MF b/target_explorer/plugins/org.eclipse.tcf.te.tcf.core.model/META-INF/MANIFEST.MF
index 0e3b8c298..355c82eb8 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.core.model/META-INF/MANIFEST.MF
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.core.model/META-INF/MANIFEST.MF
@@ -8,7 +8,8 @@ Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0",
org.eclipse.tcf.core;bundle-version="1.1.0",
org.eclipse.tcf.te.runtime;bundle-version="1.1.0",
- org.eclipse.tcf.te.runtime.model;bundle-version="1.1.0"
+ org.eclipse.tcf.te.runtime.model;bundle-version="1.1.0",
+ org.eclipse.tcf.te.runtime.services;bundle-version="1.1.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Bundle-Localization: plugin
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.core.model/src/org/eclipse/tcf/te/tcf/core/model/services/PropertiesAccessService.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.core.model/src/org/eclipse/tcf/te/tcf/core/model/services/PropertiesAccessService.java
new file mode 100644
index 000000000..0eb0ca06d
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.core.model/src/org/eclipse/tcf/te/tcf/core/model/services/PropertiesAccessService.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2013 Wind River Systems, Inc. and others. 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:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tcf.te.tcf.core.model.services;
+
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.tcf.protocol.Protocol;
+import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer;
+import org.eclipse.tcf.te.runtime.model.interfaces.IContainerModelNode;
+import org.eclipse.tcf.te.runtime.services.AbstractService;
+import org.eclipse.tcf.te.runtime.services.interfaces.IPropertiesAccessService;
+
+/**
+ * Process context node properties access service implementation.
+ */
+public class PropertiesAccessService extends AbstractService implements IPropertiesAccessService {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.services.interfaces.IPropertiesAccessService#getTargetAddress(java.lang.Object)
+ */
+ @Override
+ public Map<String, String> getTargetAddress(Object context) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.services.interfaces.IPropertiesAccessService#getProperty(java.lang.Object, java.lang.String)
+ */
+ @Override
+ public Object getProperty(final Object context, final String key) {
+ Assert.isNotNull(context);
+ Assert.isNotNull(key);
+
+ final AtomicReference<Object> value = new AtomicReference<Object>();
+ if (context instanceof IPropertiesContainer) {
+ final IPropertiesContainer node = (IPropertiesContainer) context;
+
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ Object val = node.getProperty(key);
+ value.set(val);
+ }
+ };
+
+ if (Protocol.isDispatchThread()) runnable.run();
+ else Protocol.invokeAndWait(runnable);
+ }
+
+ return value.get();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.services.interfaces.IPropertiesAccessService#setProperty(java.lang.Object, java.lang.String, java.lang.Object)
+ */
+ @Override
+ public boolean setProperty(final Object context, final String key, final Object value) {
+ Assert.isNotNull(context);
+ Assert.isNotNull(key);
+
+ final AtomicBoolean result = new AtomicBoolean();
+ if (context instanceof IPropertiesContainer) {
+ final IPropertiesContainer node = (IPropertiesContainer) context;
+
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ result.set(node.setProperty(key, value));
+ }
+ };
+
+ if (Protocol.isDispatchThread()) runnable.run();
+ else Protocol.invokeAndWait(runnable);
+ }
+
+ return result.get();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.services.interfaces.IPropertiesAccessService#isProperty(java.lang.Object, java.lang.String, java.lang.Object)
+ */
+ @Override
+ public boolean isProperty(final Object context, final String key, final Object value) {
+ Assert.isNotNull(context);
+ Assert.isNotNull(key);
+
+ final AtomicBoolean result = new AtomicBoolean();
+ if (context instanceof IPropertiesContainer) {
+ final IPropertiesContainer node = (IPropertiesContainer) context;
+
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ result.set(node.isProperty(key, value));
+ }
+ };
+
+ if (Protocol.isDispatchThread()) runnable.run();
+ else Protocol.invokeAndWait(runnable);
+ }
+
+ return result.get();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.services.interfaces.IPropertiesAccessService#getParent(java.lang.Object)
+ */
+ @Override
+ public Object getParent(final Object context) {
+ Assert.isNotNull(context);
+
+ final AtomicReference<Object> value = new AtomicReference<Object>();
+ if (context instanceof IContainerModelNode) {
+ final IContainerModelNode node = (IContainerModelNode) context;
+
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ value.set(node.getParent());
+ }
+ };
+
+ if (Protocol.isDispatchThread()) runnable.run();
+ else Protocol.invokeAndWait(runnable);
+ }
+
+ return value.get();
+ }
+}

Back to the top