001 /* 002 * Copyright 2006 Stephen J. McConnell. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 013 * implied. 014 * 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 019 package net.dpml.lang; 020 021 import java.io.IOException; 022 import java.io.Writer; 023 024 import dpml.lang.Classpath; 025 026 import net.dpml.util.Logger; 027 import net.dpml.util.Resolver; 028 029 import org.w3c.dom.Element; 030 031 /** 032 * Interace implemented by part strategy handlers. 033 * 034 * @author <a href="http://www.dpml.net">Digital Product Management Laboratory</a> 035 * @version 2.0.0 036 */ 037 public interface StrategyHandler 038 { 039 /** 040 * Creation of a new strategy handler for the supplied implementation class. 041 * @param c the component implementation class 042 * @exception IOException if an I/O error occurs 043 */ 044 Strategy newStrategy( Class<?> c ) throws IOException; 045 046 /** 047 * Creation of a new strategy handler for the supplied implementation class. 048 * @param c the component implementation class 049 * @param name the component name 050 * @exception IOException if an I/O error occurs 051 */ 052 Strategy newStrategy( Class<?> c, String name ) throws IOException; 053 054 /** 055 * Construct a new strategy using a supplied element and value resolver. 056 * @param classloader the classloader 057 * @param element the DOM element definining the deployment strategy 058 * @param resolver symbolic property resolver 059 * @param partition the assigned partition 060 * @param query the query 061 * @param validate if true validate the strategy integrity 062 * @return the strategy 063 * @exception IOException if an I/O error occurs 064 */ 065 Strategy build( 066 ClassLoader classloader, Element element, Resolver resolver, String partition, 067 String query, boolean validate ) throws IOException; 068 }