KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > fractal > adl > implementations > StaticJavaImplementationBuilder


1 /***
2  * Fractal ADL Parser
3  * Copyright (C) 2002-2004 France Telecom R&D
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 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  * Contact: Eric.Bruneton@rd.francetelecom.com
20  *
21  * Author: Eric Bruneton
22  */

23
24 package org.objectweb.fractal.adl.implementations;
25
26 import java.io.PrintWriter JavaDoc;
27 import java.util.Map JavaDoc;
28 import java.util.WeakHashMap JavaDoc;
29
30 /**
31  * A Java based, static implementation of the {@link ImplementationBuilder}
32  * interface. This implementation produces standard Java code that creates
33  * components.
34  */

35
36 public class StaticJavaImplementationBuilder implements ImplementationBuilder {
37
38   private Map JavaDoc primitiveCounters = new WeakHashMap JavaDoc();
39   
40   private Map JavaDoc compositeCounters = new WeakHashMap JavaDoc();
41   
42   // --------------------------------------------------------------------------
43
// Implementation of the ImplementationBuilder interface
44
// --------------------------------------------------------------------------
45

46   public Object JavaDoc createComponent (
47     final Object JavaDoc type,
48     final String JavaDoc name,
49     final String JavaDoc definition,
50     final Object JavaDoc controllerDesc,
51     final Object JavaDoc contentDesc,
52     final Object JavaDoc context)
53   {
54     if (contentDesc == null) {
55       Integer JavaDoc i = (Integer JavaDoc)compositeCounters.get(context);
56       if (i == null) {
57         i = new Integer JavaDoc(0);
58       }
59       String JavaDoc id = "C" + i;
60       PrintWriter JavaDoc pw = (PrintWriter JavaDoc)((Map JavaDoc)context).get("printwriter");
61       pw.print("Map ");
62       pw.print(id);
63       pw.println(" = new HashMap();");
64       compositeCounters.put(context, new Integer JavaDoc(i.intValue() + 1));
65       return id;
66     } else {
67       Integer JavaDoc i = (Integer JavaDoc)primitiveCounters.get(context);
68       if (i == null) {
69         i = new Integer JavaDoc(0);
70       }
71       String JavaDoc id = "P" + i;
72       PrintWriter JavaDoc pw = (PrintWriter JavaDoc)((Map JavaDoc)context).get("printwriter");
73       pw.print(contentDesc);
74       pw.print(' ');
75       pw.print(id);
76       pw.print(" = new ");
77       pw.print(contentDesc);
78       pw.println("();");
79       primitiveCounters.put(context, new Integer JavaDoc(i.intValue() + 1));
80       return id;
81     }
82   }
83 }
84
Popular Tags