1   /*
2                         ContractChecker
3   
4       Copyright (C) 2003  Jose San Leandro Armend?riz
5                           jsanleandro@yahoo.es
6                           chousz@yahoo.com
7   
8       This library is free software; you can redistribute it and/or
9       modify it under the terms of the GNU General Public
10      License as published by the Free Software Foundation; either
11      version 2 of the License, or (at your option) any later version.
12  
13      This library is distributed in the hope that it will be useful,
14      but WITHOUT ANY WARRANTY; without even the implied warranty of
15      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16      General Public License for more details.
17  
18      You should have received a copy of the GNU General Public
19      License along with this library; if not, write to the Free Software
20      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  
22      Thanks to ACM S.L. for distributing this library under the GPL license.
23      Contact info: jsanleandro@yahoo.es
24      Postal Address: c/Playa de Lagoa, 1
25                      Urb. Valdecaba?as
26                      Boadilla del monte
27                      28660 Madrid
28                      Spain
29  
30   ******************************************************************************
31   *
32   * Filename: $RCSfile: ContractCheckerAspectTemplateGenerator.java,v $
33   *
34   * Author: Jose San Leandro Armend?riz
35   *
36   * Description: Is able to generate ContractCheckerAspect templates from
37   *              Javadoc information.
38   *
39   * Last modified by: $Author: chous $ at $Date: 2004/01/11 19:44:06 $
40   *
41   * File version: $Revision: 1.4 $
42   *
43   * Project version: $Name:  $
44   *
45   * $Id: ContractCheckerAspectTemplateGenerator.java,v 1.4 2004/01/11 19:44:06 chous Exp $
46   *
47   */
48  package org.acmsl.contractchecker;
49  
50  /*
51   * Importing some project-specific classes.
52   */
53  import org.acmsl.contractchecker.ContractCheckerAspectTemplate;
54  import org.acmsl.contractchecker.ContractCheckerAspectTemplateFactory;
55  import org.acmsl.contractchecker.ContractCheckerUtils;
56  
57  /*
58   * Importing some JDK classes.
59   */
60  import java.io.File;
61  import java.io.IOException;
62  import java.lang.ref.WeakReference;
63  
64  /***
65   * Is able to generate ContractCheckerAspect templates from Javadoc
66   * information.
67   * @author <a href="mailto:jsanleandro@yahoo.es"
68             >Jose San Leandro</a>
69   * @version $Revision: 1.4 $
70   * @testcase test.org.acmsl.contractchecker.TestContractCheckerAspectTemplateGenerator
71   */
72  public class ContractCheckerAspectTemplateGenerator
73      implements  ContractCheckerAspectTemplateFactory
74  {
75      /***
76       * Singleton implemented as a weak reference.
77       */
78      private static WeakReference singleton;
79  
80      /***
81       * Protected constructor to avoid accidental instantiation.
82       */
83      protected ContractCheckerAspectTemplateGenerator() {};
84  
85      /***
86       * Specifies a new weak reference.
87       * @param generator the generator instance to use.
88       */
89      protected static void setReference(
90          ContractCheckerAspectTemplateGenerator generator)
91      {
92          singleton = new WeakReference(generator);
93      }
94  
95      /***
96       * Retrieves the weak reference.
97       * @return such reference.
98       */
99      protected static WeakReference getReference()
100     {
101         return singleton;
102     }
103 
104     /***
105      * Retrieves a ContractCheckerTemplateGenerator instance.
106      * @return such instance.
107      */
108     public static ContractCheckerAspectTemplateGenerator getInstance()
109     {
110         ContractCheckerAspectTemplateGenerator result = null;
111 
112         WeakReference reference = getReference();
113 
114         if  (reference != null) 
115         {
116             result = (ContractCheckerAspectTemplateGenerator) reference.get();
117         }
118 
119         if  (result == null) 
120         {
121             result = new ContractCheckerAspectTemplateGenerator() {};
122 
123             setReference(result);
124         }
125 
126         return result;
127     }
128 
129     /***
130      * Generates a ContractChecker template.
131      * @param packageName the package name.
132      * @param defaultException the default exception.
133      * @return a template.
134      */
135     public ContractCheckerAspectTemplate createContractCheckerTemplate(
136         String packageName, String defaultException)
137     {
138         return
139             createContractCheckerAspectTemplate(
140                 packageName, defaultException);
141     }
142 
143     /***
144      * Generates a ContractCheckerAspect template.
145      * @param packageName the package name.
146      * @param defaultException the default exception.
147      * @return a template.
148      */
149     public ContractCheckerAspectTemplate createContractCheckerAspectTemplate(
150         String packageName, String defaultException)
151     {
152         ContractCheckerAspectTemplate result = null;
153 
154         <b>if  (packageName != null)
155         {
156             result =
157                 new ContractCheckerAspectTemplate(
158                     packageName, defaultException) {};
159         }
160 
161         return result;
162     }
163 
164     /***
165      * Writes a ContractCheckerAspect template to disk.
166      * @param template the template to write.
167      * @param outputDir the output folder.
168      * @throws IOException if the file cannot be created.
169      */
170     public void write(
171             ContractCheckerAspectTemplate template,
172             File                          outputDir)
173         throws  IOException
174     {
175         if  (   (template  != null)
176              && (outputDir != null))
177         {
178             ContractCheckerUtils t_ContractCheckerUtils =
179                 ContractCheckerUtils.getInstance();
180 
181             if  (t_ContractCheckerUtils != null)
182             {
183                 outputDir =
184                     t_ContractCheckerUtils.retrieveAspectFolder(
185                         outputDir,
186                         template.getPackageName());
187 
188                 outputDir.mkdirs();
189 
190                 t_ContractCheckerUtils.writeFile(
191                       outputDir.getAbsolutePath()
192                     + File.separator
193                     + "ContractChecking.java",
194                     template.toString());
195             }
196         }
197     }
198 }
This page was automatically generated by Maven