1 package org.apache.maven.doxia.site.decoration.inheritance; 2 3 /* 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 */ 21 22 import org.apache.maven.doxia.site.decoration.DecorationModel; 23 24 /** 25 * Manage inheritance of the decoration model. 26 * 27 * @author <a href="mailto:brett@apache.org">Brett Porter</a> 28 * @version $Id: DecorationModelInheritanceAssembler.java 1058063 2011-01-12 10:50:15Z ltheussl $ 29 */ 30 public interface DecorationModelInheritanceAssembler 31 { 32 /** Plexus lookup role. */ 33 String ROLE = DecorationModelInheritanceAssembler.class.getName(); 34 35 /** 36 * Manage inheritance of the decoration model between a parent and child. 37 * 38 * Any relative links in the parent model will be re-based to work from the merged child 39 * model, otherwise no content from either the parent or child model should be modified. 40 * 41 * @param name a name, used for breadcrumb. 42 * If the parent model contains breadcrumbs and the child doesn't, 43 * a child breadcrumb will be added to the merged model with this name. Not null. 44 * @param child the child DecorationModel to be merged with parent. 45 * Not null. If parent == null, the child is unchanged, otherwise 46 * child will contain the merged model upon exit. 47 * @param parent the parent DecorationModel. Unchanged upon exit. 48 * May be null in which case the child is not changed. 49 * @param childBaseUrl the child base URL. 50 * May be null, in which case relative links inherited from the parent 51 * will not be resolved in the merged child. 52 * @param parentBaseUrl the parent base URL. 53 * May be null, in which case relative links inherited from the parent 54 * will not be resolved in the merged child. 55 */ 56 void assembleModelInheritance( String name, DecorationModel child, DecorationModel parent, 57 String childBaseUrl, String parentBaseUrl ); 58 59 /** 60 * Resolve relative paths for a DecorationModel given a base URL. 61 * 62 * Note that 'resolve' here means 'relativize' in the sense of 63 * {@link java.net.URI#relativize(java.net.URI)}, ie if any link in the decoration model 64 * has a base URL that is equal to the given baseUrl, it is replaced by a relative link 65 * with respect to that base. 66 * 67 * @param decoration the DecorationModel. 68 * Not null. 69 * @param baseUrl the base URL. 70 * May be null in which case the decoration model is unchanged. 71 */ 72 void resolvePaths( DecorationModel decoration, String baseUrl ); 73 }