KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > deployment > ModuleIDBuilder


1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17 package org.apache.geronimo.deployment;
18
19 import org.apache.geronimo.kernel.repository.Artifact;
20 import org.apache.geronimo.kernel.repository.Version;
21 import org.apache.geronimo.kernel.repository.Environment;
22
23 /**
24  * A utility class to flesh out any incomplete Module IDs (formerly known as
25  * config IDs) encountered during the course of a deployment. For example,
26  * an EAR may have a module ID with only an artifactId, and contain a web
27  * app with no Geronimo plan and an EJB JAR with a module ID with no version.
28  *
29  * @version $Rev: 476049 $ $Date: 2006-11-16 23:35:17 -0500 (Thu, 16 Nov 2006) $
30  */

31 public class ModuleIDBuilder {
32     private Version defaultVersion;
33     private String JavaDoc defaultGroup;
34
35     public ModuleIDBuilder() {
36         defaultVersion = new Version(Long.toString(System.currentTimeMillis()));
37         defaultGroup = Artifact.DEFAULT_GROUP_ID;
38     }
39
40     /**
41      * If an EAR is going to pass this module ID builder to its children, it
42      * can use this to set the default groupId to be its own.
43      */

44     public void setDefaultGroup(String JavaDoc defaultGroup) {
45         this.defaultGroup = defaultGroup;
46     }
47
48
49     /**
50      * If an EAR is going to pass this module ID builder to its children, it
51      * can use this to set the default version to be its own.
52      */

53     public void setDefaultVersion(Version defaultVersion) {
54         this.defaultVersion = defaultVersion;
55     }
56
57     /**
58      * Translates the argument Artifact to a fully-resolved Artifact, which is
59      * returned. If the argument was fully-resolved to begin with it is
60      * returned as is. Otherwise, a new Artifact is returned with any missing
61      * values populated.
62      *
63      * @param argument The artifact to review
64      * @param defaultType The type to use if the artifact to review has no
65      * type specified
66      *
67      * @return A fully resolved Artifact
68      *
69      * @throws IllegalArgumentException Occurs when the argument artifact does
70      * not have an artifactId
71      */

72     public Artifact resolve(Artifact argument, String JavaDoc defaultType) {
73         if(argument.isResolved()) {
74             return argument;
75         }
76         if(argument.getArtifactId() == null || argument.getArtifactId().equals("")) {
77             throw new IllegalArgumentException JavaDoc("Incoming Artifact must have an ArtifactID (not "+argument+")");
78         }
79         return new Artifact(argument.getGroupId() == null || argument.getGroupId().equals("") ? defaultGroup : argument.getGroupId(),
80                 argument.getArtifactId(),
81                 argument.getVersion() == null ? defaultVersion : argument.getVersion(),
82                 argument.getType() == null || argument.getType().equals("") ? defaultType : argument.getType());
83     }
84
85     /**
86      * Creates a new artifact using entirely default values.
87      *
88      * @param defaultArtifact The artifactId to use for the new Artifact
89      * @param defaultType The type to use for the new Artifact
90      */

91     public Artifact createDefaultArtifact(String JavaDoc defaultArtifact, String JavaDoc defaultType) {
92         return new Artifact(defaultGroup, defaultArtifact, defaultVersion, defaultType);
93     }
94
95     /**
96      * Guarantees that the argument Environment will have a present and fully
97      * qualified module ID when this method returns. If the Environment is
98      * missing a module ID, or has a partial module ID (isResolved() == false)
99      * then this method will fill in any missing values. If the module ID is
100      * present and resolved, then this method does nothing.
101      *
102      * @param environment The Environment to check and populate
103      * @param defaultArtifactId The artifactId to use if the Envrionment does
104      * not have a module ID at all
105      * @param defaultType The type to use if the Environment is lacking
106      * a module ID or the module ID is lacking a type
107      */

108     public void resolve(Environment environment, String JavaDoc defaultArtifactId, String JavaDoc defaultType) {
109         if(environment.getConfigId() == null) {
110             environment.setConfigId(resolve(new Artifact(null, defaultArtifactId, (Version)null, defaultType), defaultType));
111         } else if(!environment.getConfigId().isResolved()) {
112             environment.setConfigId(resolve(environment.getConfigId(), defaultType));
113         }
114     }
115 }
116
Popular Tags