001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019 020package org.apache.isis.core.metamodel.facets.object.aggregated; 021 022import java.util.List; 023import java.util.Set; 024 025import org.apache.isis.core.metamodel.facets.MarkerFacet; 026import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet; 027 028/** 029 * Indicates that this class is parented, that is, wholly contained within a 030 * larger object. 031 * 032 * <p> 033 * There are two classes of object that are parented: 034 * <ul> 035 * <li>Aggregated objects</li> 036 * <li>Internal collections</li> 037 * </ul> 038 * 039 * <p> 040 * In the standard Apache Isis Programming Model, aggregated objects typically corresponds to 041 * applying the <tt>@Aggregated</tt> annotation at the class level. 042 * In terms of an analogy, aggregated is similar to Hibernate's component types 043 * (for larger mutable in-line objects) or to Hibernate's user-defined types 044 * (for smaller immutable values). 045 * 046 * <p> 047 * Internal collections are the {@link List}s, {@link Set}s etc that hold references to 048 * other root entities. 049 * 050 * <p> 051 * The object may or may not be {@link ImmutableFacet immutable}. If an aggregated entity, then it may 052 * reference regular entity domain objects or other aggregated objects. 053 */ 054public interface ParentedFacet extends MarkerFacet { 055 056}