001 /**
002 *
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements. See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * 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, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 package org.apache.geronimo.j2ee.deployment;
019
020 import java.util.jar.JarFile;
021 import java.net.URI;
022
023 import org.apache.xmlbeans.XmlObject;
024 import org.apache.geronimo.kernel.config.ConfigurationModuleType;
025 import org.apache.geronimo.kernel.repository.Environment;
026 import org.apache.geronimo.deployment.util.DeploymentUtil;
027 import org.apache.geronimo.gbean.AbstractName;
028
029 /**
030 * @version $Rev: 470597 $ $Date: 2006-11-02 15:30:55 -0800 (Thu, 02 Nov 2006) $
031 */
032 public abstract class Module {
033 private final boolean standAlone;
034
035 private final AbstractName moduleName;
036 private final String name;
037 private final Environment environment;
038 private final URI moduleURI;
039 private final JarFile moduleFile;
040 private final String targetPath;
041 private final URI targetPathURI;
042 private final XmlObject specDD;
043 private final XmlObject vendorDD;
044 private final String originalSpecDD;
045 private final String namespace;
046
047 private EARContext earContext;
048 private EARContext rootEarContext;
049
050 protected Module(boolean standAlone, AbstractName moduleName, Environment environment, JarFile moduleFile, String targetPath, XmlObject specDD, XmlObject vendorDD, String originalSpecDD, String namespace) {
051 assert targetPath != null: "targetPath is null";
052 assert moduleName != null: "moduleName is null";
053
054 this.standAlone = standAlone;
055 this.moduleName = moduleName;
056 this.environment = environment;
057 this.moduleFile = moduleFile;
058 this.targetPath = targetPath;
059 this.specDD = specDD;
060 this.vendorDD = vendorDD;
061 this.originalSpecDD = originalSpecDD;
062 this.namespace = namespace;
063
064 if (standAlone) {
065 name = environment.getConfigId().toString();
066 moduleURI = URI.create("");
067 } else {
068 name = targetPath;
069 moduleURI = URI.create(targetPath);
070 }
071
072 targetPathURI = URI.create(targetPath + "/");
073 }
074
075 public abstract ConfigurationModuleType getType();
076
077 public String getName() {
078 return name;
079 }
080
081 public boolean isStandAlone() {
082 return standAlone;
083 }
084
085 public AbstractName getModuleName() {
086 return moduleName;
087 }
088
089 public Environment getEnvironment() {
090 return environment;
091 }
092
093 public URI getModuleURI() {
094 return moduleURI;
095 }
096
097 public JarFile getModuleFile() {
098 return moduleFile;
099 }
100
101 public String getTargetPath() {
102 return targetPath;
103 }
104
105 public URI getTargetPathURI() {
106 return targetPathURI;
107 }
108
109 public XmlObject getSpecDD() {
110 return specDD;
111 }
112
113 public XmlObject getVendorDD() {
114 return vendorDD;
115 }
116
117 public String getOriginalSpecDD() {
118 return originalSpecDD;
119 }
120
121 public String getNamespace() {
122 return namespace;
123 }
124
125 public int hashCode() {
126 return name.hashCode();
127 }
128
129 public boolean equals(Object obj) {
130 if (obj == this) {
131 return true;
132 }
133 if (obj instanceof Module) {
134 Module module = (Module) obj;
135 return name.equals(module.name);
136 }
137 return false;
138 }
139
140 public void close() {
141 DeploymentUtil.close(moduleFile);
142 }
143
144
145 public EARContext getEarContext() {
146 return earContext;
147 }
148
149 public void setEarContext(EARContext earContext) {
150 this.earContext = earContext;
151 }
152
153 public EARContext getRootEarContext() {
154 return rootEarContext;
155 }
156
157 public void setRootEarContext(EARContext rootEarContext) {
158 this.rootEarContext = rootEarContext;
159 }
160 }