]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/impl/AbstractHandlerClass.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.g2d / src / org / simantics / g2d / diagram / impl / AbstractHandlerClass.java
index 4c94728b4e69042e0d23f1ffdf605acee9d0a6a4..22bd959039d88684cddd18d9bc0cf80bc39a5fb6 100644 (file)
-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.g2d.diagram.impl;\r
-\r
-import java.io.Serializable;\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-import java.util.Collections;\r
-import java.util.List;\r
-\r
-import org.simantics.utils.datastructures.MapList;\r
-\r
-/**\r
- * @author Toni Kalajainen\r
- */\r
-public class AbstractHandlerClass<Handler> implements Serializable {\r
-\r
-    private static final long serialVersionUID = 4137854678128072467L;\r
-\r
-    private final MapList<Class<?>, Handler> handlers = new MapList<Class<?>, Handler>();\r
-    private final List<Handler> snapshot;\r
-    private final int hash;\r
-\r
-    public AbstractHandlerClass(Collection<Handler> contributions)\r
-    {\r
-        for (Handler c : contributions)\r
-            _addClass(c.getClass(), c);\r
-        this.handlers.makeImmutable();\r
-        this.snapshot = Collections.unmodifiableList(new ArrayList<Handler>(contributions));\r
-        this.hash = snapshot.hashCode();\r
-    }\r
-\r
-    private void _addClass(Class<?> clazz, Handler ec)\r
-    {\r
-        if (handlers.contains(clazz, ec)) return;\r
-        handlers.add(clazz, ec);\r
-        Class<?> superClazz = clazz.getSuperclass();\r
-        if (superClazz!=null) _addClass(superClazz, ec);\r
-        for (Class<?> interphase : clazz.getInterfaces())\r
-            _addClass(interphase, ec);\r
-    }\r
-\r
-    /**\r
-     * Get all interactors by class\r
-     * @param clazz\r
-     * @return collection\r
-     */\r
-    @SuppressWarnings("unchecked")\r
-    public <R extends Handler> List<R> getItemsByClass(Class<R> clazz)\r
-    {\r
-        List<R> result = (List<R>) handlers.getValuesUnsafe(clazz);\r
-        if (result!=null)\r
-            return result;\r
-        return Collections.emptyList();\r
-    }\r
-\r
-    /**\r
-     * Get a single item by class.\r
-     * (Convenience method)\r
-     * \r
-     * @param <R>\r
-     * @param clazz\r
-     * @return the item\r
-     * @throws RuntimeException if single interactor was not found\r
-     */\r
-    @SuppressWarnings("unchecked")\r
-    public <R extends Handler> R getSingleItem(Class<R> clazz)\r
-    {\r
-        List<R> list = (List<R>) handlers.getValuesUnsafe(clazz);\r
-        if (list==null || list.size()!=1)\r
-            throw new RuntimeException("Invalid element class "+toString()+": One and only one "+clazz.getName()+" is expected, got " + (list != null ? list.size() : 0));\r
-        return list.get(0);\r
-    }\r
-\r
-    /**\r
-     * Get a single item by class.\r
-     * (Convenience method)\r
-     * \r
-     * @param <R>\r
-     * @param clazz\r
-     * @return the item or <code>null</code>\r
-     * @throws RuntimeException if more than one items were found\r
-     */\r
-    @SuppressWarnings("unchecked")\r
-    public <R extends Handler> R getAtMostOneItemOfClass(Class<R> clazz)\r
-    {\r
-        List<R> list = (List<R>) handlers.getValuesUnsafe(clazz);\r
-        if (list==null || list.size()==0) return null;\r
-        if (list.size()==1) return list.get(0);\r
-        throw new RuntimeException("At most one was "+clazz.getName()+" expected in "+this.getClass().getName() + ", got " + list.size());\r
-    }\r
-\r
-    public <R extends Handler> R[] getAtMostItemsOfClass(Class<R> clazz, R[] result)\r
-    {\r
-        handlers.getAtMostValues(clazz, result);\r
-        return result;\r
-    }\r
-\r
-    public List<Handler> getAll()\r
-    {\r
-        return snapshot;\r
-    }\r
-\r
-    public boolean contains(Handler handler)\r
-    {\r
-        return getAll().contains(handler);\r
-    }\r
-\r
-    @SuppressWarnings("unchecked")\r
-    public <R extends Handler> boolean containsClass(Class<R> clazz)\r
-    {\r
-        List<R> list = (List<R>) handlers.getValuesUnsafe(clazz);\r
-        if (list==null || list.size()==0) return false;\r
-        return list.size()>0;\r
-    }\r
-\r
-    @Override\r
-    public int hashCode() {\r
-        return hash;\r
-    }\r
-\r
-    @Override\r
-    public boolean equals(Object obj) {\r
-        if (this == obj)\r
-            return true;\r
-        if (obj == null)\r
-            return false;\r
-        if (!(obj instanceof AbstractHandlerClass<?>))\r
-            return false;\r
-        AbstractHandlerClass<?> other = (AbstractHandlerClass<?>) obj;\r
-        return snapshot.equals(other.snapshot);\r
-    }\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2007, 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.g2d.diagram.impl;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.simantics.utils.datastructures.MapList;
+
+/**
+ * @author Toni Kalajainen
+ */
+public class AbstractHandlerClass<Handler> implements Serializable {
+
+    private static final long serialVersionUID = 4137854678128072467L;
+
+    private final MapList<Class<?>, Handler> handlers = new MapList<Class<?>, Handler>();
+    private final List<Handler> snapshot;
+    private final int hash;
+
+    public AbstractHandlerClass(Collection<Handler> contributions)
+    {
+        for (Handler c : contributions)
+            _addClass(c.getClass(), c);
+        this.handlers.makeImmutable();
+        this.snapshot = Collections.unmodifiableList(new ArrayList<Handler>(contributions));
+        this.hash = snapshot.hashCode();
+    }
+
+    private void _addClass(Class<?> clazz, Handler ec)
+    {
+        if (handlers.contains(clazz, ec)) return;
+        handlers.add(clazz, ec);
+        Class<?> superClazz = clazz.getSuperclass();
+        if (superClazz!=null) _addClass(superClazz, ec);
+        for (Class<?> interphase : clazz.getInterfaces())
+            _addClass(interphase, ec);
+    }
+
+    /**
+     * Get all interactors by class
+     * @param clazz
+     * @return collection
+     */
+    @SuppressWarnings("unchecked")
+    public <R extends Handler> List<R> getItemsByClass(Class<R> clazz)
+    {
+        List<R> result = (List<R>) handlers.getValuesUnsafe(clazz);
+        if (result!=null)
+            return result;
+        return Collections.emptyList();
+    }
+
+    /**
+     * Get a single item by class.
+     * (Convenience method)
+     * 
+     * @param <R>
+     * @param clazz
+     * @return the item
+     * @throws RuntimeException if single interactor was not found
+     */
+    @SuppressWarnings("unchecked")
+    public <R extends Handler> R getSingleItem(Class<R> clazz)
+    {
+        List<R> list = (List<R>) handlers.getValuesUnsafe(clazz);
+        if (list==null || list.size()!=1)
+            throw new RuntimeException("Invalid element class "+toString()+": One and only one "+clazz.getName()+" is expected, got " + (list != null ? list.size() : 0));
+        return list.get(0);
+    }
+
+    /**
+     * Get a single item by class.
+     * (Convenience method)
+     * 
+     * @param <R>
+     * @param clazz
+     * @return the item or <code>null</code>
+     * @throws RuntimeException if more than one items were found
+     */
+    @SuppressWarnings("unchecked")
+    public <R extends Handler> R getAtMostOneItemOfClass(Class<R> clazz)
+    {
+        List<R> list = (List<R>) handlers.getValuesUnsafe(clazz);
+        if (list==null || list.size()==0) return null;
+        if (list.size()==1) return list.get(0);
+        throw new RuntimeException("At most one was "+clazz.getName()+" expected in "+this.getClass().getName() + ", got " + list.size());
+    }
+
+    public <R extends Handler> R[] getAtMostItemsOfClass(Class<R> clazz, R[] result)
+    {
+        handlers.getAtMostValues(clazz, result);
+        return result;
+    }
+
+    public List<Handler> getAll()
+    {
+        return snapshot;
+    }
+
+    public boolean contains(Handler handler)
+    {
+        return getAll().contains(handler);
+    }
+
+    @SuppressWarnings("unchecked")
+    public <R extends Handler> boolean containsClass(Class<R> clazz)
+    {
+        List<R> list = (List<R>) handlers.getValuesUnsafe(clazz);
+        if (list==null || list.size()==0) return false;
+        return list.size()>0;
+    }
+
+    @Override
+    public int hashCode() {
+        return hash;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (!(obj instanceof AbstractHandlerClass<?>))
+            return false;
+        AbstractHandlerClass<?> other = (AbstractHandlerClass<?>) obj;
+        return snapshot.equals(other.snapshot);
+    }
+
+}