Java tutorial
/** * Copyright 2012 Tobias Gierke <tobias.gierke@code-sourcery.de> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.codesourcery.jasm16.compiler; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang.StringUtils; /** * Base-class to help with implementing {@link IMarker}s. * * @author tobias.gierke@code-sourcery.de */ public abstract class AbstractMarker implements IMarker { private final String type; private final ICompilationUnit unit; private final Map<String, Object> attrs = new HashMap<String, Object>(); @Override public String toString() { return "marker_type=" + type + ", compilation unit= " + unit.getIdentifier() + " , attributes=" + attrs; } protected AbstractMarker(String type, ICompilationUnit unit) { if (StringUtils.isBlank(type)) { throw new IllegalArgumentException("type must not be NULL/blank."); } if (unit == null) { throw new IllegalArgumentException("unit must not be NULL."); } this.type = type; this.unit = unit; } @Override public boolean hasAttribute(String name) { if (StringUtils.isBlank(name)) { throw new IllegalArgumentException("name must not be NULL/blank."); } return attrs.containsKey(name); } @Override public ICompilationUnit getCompilationUnit() { return unit; } @Override public String getType() { return type; } @Override public boolean hasType(String type) { if (type == null) { throw new IllegalArgumentException("type must not be NULL."); } return getType().equals(type); } @Override public int getAttribute(String name, int defaultValue) { Object object = attrs.get(name); if (object == null) { return defaultValue; } return (Integer) object; } @Override public String getAttribute(String name, String defaultValue) { Object object = attrs.get(name); if (object == null) { return defaultValue; } return (String) object; } @SuppressWarnings("unchecked") @Override public <T> T getAttribute(String name, T defaultValue) { Object object = attrs.get(name); if (object == null) { return defaultValue; } return (T) object; } @Override public void delete() { unit.deleteMarker(this); } @Override public void setAttribute(String name, int value) { attrs.put(name, value); } @Override public void setAttribute(String name, String value) { attrs.put(name, value); } @Override public void setAttribute(String name, Object value) { attrs.put(name, value); } }