View Javadoc

1   /*
2   Karma core - Core of the Karma application
3   Copyright (C) 2004  Toolforge <www.toolforge.nl>
4   
5   This library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9   
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  Lesser General Public License for more details.
14  
15  You should have received a copy of the GNU Lesser General Public
16  License along with this library; if not, write to the Free Software
17  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  */
19  package nl.toolforge.karma.core.manifest;
20  
21  import nl.toolforge.karma.core.boot.WorkingContext;
22  import nl.toolforge.karma.core.location.LocationException;
23  
24  /***
25   * Creation factory to be able to create {@link Manifest} instances. The reason to have this class
26   * is that Digester at some point calls <code>hashCode()</code> on newly created <code>AbstractManifest</code> instances
27   * and this fails with a <code>NullPointerException</code> if <code>name</code> is still
28   * <code>null</code>; Digester somehow calls upon the setName() later on in the process.
29   *
30   * @author D.A. Smedes
31   * @version $Id: ManifestFactory.java,v 1.10 2004/09/20 05:56:55 asmedes Exp $
32   */
33  public final class ManifestFactory {
34  
35    public Manifest create(WorkingContext context, ManifestStructure structure) throws LocationException {
36  
37      if (Manifest.DEVELOPMENT_MANIFEST.equals(structure.getType())) {
38        return new DevelopmentManifest(context, structure);
39      } else {
40        return new ReleaseManifest(context, structure);
41      }
42    }
43  }