001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package javax.enterprise.deploy.model;
023:
024: import java.io.FileNotFoundException;
025: import java.io.InputStream;
026: import java.util.Enumeration;
027:
028: import javax.enterprise.deploy.model.exceptions.DDBeanCreateException;
029: import javax.enterprise.deploy.shared.ModuleType;
030:
031: /**
032: * A representation of a deployment module. It provides access to the
033: * deployment descriptor and class files.
034: *
035: * @author <a href="mailto:adrian@jboss.org">Adrian Brock</a>
036: * @version $Revision: 57196 $
037: */
038: public interface DeployableObject {
039: // Constants -----------------------------------------------------
040:
041: // Public --------------------------------------------------------
042:
043: /**
044: * Get the module type of this deployment module
045: *
046: * @return the module type
047: */
048: ModuleType getType();
049:
050: /**
051: * Get the top level element of the deployment descriptor
052: *
053: * @return the root of the deployment descriptor
054: */
055: DDBeanRoot getDDBeanRoot();
056:
057: /**
058: * Get the child elements with the specified xpath
059: *
060: * @param xpath the xpath of the children
061: * @return an array of children or null if there are none
062: */
063: DDBean[] getChildBean(String xpath);
064:
065: /**
066: * Get the text for the given xpath
067: *
068: * @param xpath the xpath
069: * @return an array of Strings for the xpath or null if there are none
070: */
071: String[] getText(String xpath);
072:
073: /**
074: * Retrieves the specified class from the deployment module
075: *
076: * @param className the name of the class
077: * @return the class
078: */
079: Class getClassFromScope(String className);
080:
081: /**
082: * Get the dtd version
083: *
084: * @deprecated use DDBeanRoot.getDDBeanRootVersion
085: * @return the dtd version
086: */
087: String getModuleDTDVersion();
088:
089: /**
090: * Returns a DDBeanRoot for the xml document. This method should be used
091: * to return DDBeanRoot for non deployment descriptor xml documents such as WSDL files
092: *
093: * @param filename the file name of the document
094: * @return the root element
095: * @throws FileNotFoundException if the file is not found
096: * @throws DDBeanCreateException for other errors creating the object
097: */
098: DDBeanRoot getDDBeanRoot(String filename)
099: throws FileNotFoundException, DDBeanCreateException;
100:
101: /**
102: * Returns an enumeration of file names (as strings) for each file relative to the root
103: * of the module
104: *
105: * @return the enumeration
106: */
107: Enumeration entries();
108:
109: /**
110: * Get an input stream to the module entry.
111: *
112: * @param name the name of the module entry
113: * @return the input stream to the module entry or null if it does not exist
114: */
115: InputStream getEntry(String name);
116: }
|