/* * Copyright 2012 Red Hat, Inc. and/or its affiliates. * * Licensed under the Eclipse Public License version 1.0, available at * http://www.eclipse.org/legal/epl-v10.html */ package org.jboss.forge.roaster.model.source; import java.util.List; import org.jboss.forge.roaster.model.Field; import org.jboss.forge.roaster.model.FieldHolder; /** * Represents a {@link JavaSource} that may contain field definitions. * * @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a> * */ public interface FieldHolderSource<O extends JavaSource<O>> extends FieldHolder<O>, MemberHolderSource<O> { /** * Add a new Java {@link Field} to this {@link O} instance. This field will be a stub until further modified. */ FieldSource<O> addField(); /** * Add a new {@link Field} declaration to this {@link O} instance, using the given {@link String} as the declaration. * <p/> * <strong>For example:</strong><br> * <code>Field f = javaClass.addField("private String newField;");</code> */ FieldSource<O> addField(final String declaration); /** * Remove the given {@link Field} from this {@link O} instance, if it exists; otherwise, do nothing. */ O removeField(final Field<O> field); /** * Get the {@link Field} with the given name and return it, otherwise, return null. */ @Override FieldSource<O> getField(String name); /** * Get a list of all {@link Field}s declared by this {@link O}, or return an empty list if no {@link Field}s are * declared. */ @Override List<FieldSource<O>> getFields(); }