Home » geronimo-2.2-source-release » org.apache.geronimo.deployment » [javadoc | source]

    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 20:35:17 -0800 (Thu, 16 Nov 2006) $
   30    */
   31   public class ModuleIDBuilder {
   32       private Version defaultVersion;
   33       private String 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 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 defaultType) {
   73           if(argument.isResolved()) {
   74               return argument;
   75           }
   76           if(argument.getArtifactId() == null || argument.getArtifactId().equals("")) {
   77               throw new IllegalArgumentException("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 defaultArtifact, String 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 defaultArtifactId, String 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   }

Home » geronimo-2.2-source-release » org.apache.geronimo.deployment » [javadoc | source]