1 package org.apache.maven.plugins.ejb;
2
3 /*
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22 import java.io.File;
23
24 /**
25 * This class contains some helper methods which do not belong to {@link EjbMojo}.
26 *
27 * <pre>
28 * Think about this helper class, cause i've got the impression this can be made better.
29 * </pre>
30 *
31 * @author <a href="mailto:khmarbaise@apache.org">Karl Heinz Marbaise</a>
32 */
33 public final class EjbHelper
34 {
35 private EjbHelper()
36 {
37 // prevent instantiation
38 }
39
40 /**
41 * Check if a <code>classifier</code> is valid or not.
42 *
43 * @param classifier The classifier which should be checked.
44 * @return true in case of a valid <code>classifier</code> false otherwise which includes the case where
45 * <code>classifier</code> is {@code null}.
46 */
47 public static boolean isClassifierValid( String classifier )
48 {
49 // @FIXME: Check classifier for trailing dash? "a-0" valid?
50 // What are the rules for a valid classifier? Somewhere documented? which can be used as a reference?
51 boolean result = false;
52
53 // The following check is only based on an educated guess ;-)
54 if ( hasClassifier( classifier ) && classifier.matches( "^[a-zA-Z]+[0-9a-zA-Z\\-]*" ) )
55 {
56 result = true;
57 }
58
59 return result;
60 }
61
62 /**
63 * Check if the given classifier exists in the meaning of not being {@code null} and contain something else than
64 * only white spaces.
65 *
66 * @param classifier The classifier to be used.
67 * @return true in case when the given classifier is not {@code null} and contains something else than white spaces.
68 */
69 public static boolean hasClassifier( String classifier )
70 {
71 boolean result = false;
72 if ( classifier != null && classifier.trim().length() > 0 )
73 {
74 result = true;
75 }
76 return result;
77 }
78
79 /**
80 * Returns the Jar file to generate, based on an optional classifier.
81 *
82 * @param basedir the output directory
83 * @param finalName the name of the ear file
84 * @param classifier an optional classifier
85 * @return the file to generate
86 */
87 public static File getJarFile( File basedir, String finalName, String classifier )
88 {
89 if ( basedir == null )
90 {
91 throw new IllegalArgumentException( "basedir is not allowed to be null" );
92 }
93 if ( finalName == null )
94 {
95 throw new IllegalArgumentException( "finalName is not allowed to be null" );
96 }
97
98 StringBuilder fileName = new StringBuilder( finalName );
99
100 if ( hasClassifier( classifier ) )
101 {
102 fileName.append( "-" ).append( classifier );
103 }
104
105 fileName.append( ".jar" );
106
107 return new File( basedir, fileName.toString() );
108 }
109
110 }