1 /*******************************************************************************
\r
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
\r
3 * in Industry THTH ry.
\r
4 * All rights reserved. This program and the accompanying materials
\r
5 * are made available under the terms of the Eclipse Public License v1.0
\r
6 * which accompanies this distribution, and is available at
\r
7 * http://www.eclipse.org/legal/epl-v10.html
\r
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.message;
\r
18 * public class MyResourceSchemeHandler extends AbstractMessageSchemeHandler<MyResource> {
\r
19 * public MyResourceSchemeHandler() {
\r
20 * super("myresource", MyResource.class);
\r
22 * public void doPerform(MyResource r) {
\r
23 * // Do your stuff...
\r
28 * @author Tuukka Lehtonen
\r
30 public abstract class AbstractMessageSchemeHandler<T> implements IMessageSchemeHandler {
\r
32 private String scheme;
\r
33 private Class<?> expectedDataClass;
\r
35 public AbstractMessageSchemeHandler(String scheme, Class<?> expectedDataClass) {
\r
36 this.scheme = scheme;
\r
37 this.expectedDataClass = expectedDataClass;
\r
41 public String getScheme() {
\r
45 @SuppressWarnings("unchecked")
\r
47 public void perform(Object o) throws MessageSchemeException {
\r
48 if (expectedDataClass.isInstance(o)) {
\r
51 handleInvalidData(o);
\r
55 public void handleInvalidData(Object o) {
\r
56 // Override to handle differently
\r
57 throw new RuntimeException("Object " + o + " is not an instance of " + expectedDataClass.getCanonicalName());
\r
60 public abstract void doPerform(T o) throws MessageSchemeException;
\r