1 /***
2 * Copyright 2004 The Apache Software Foundation.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.apache.commons.jelly.tags.jaxme;
17
18 import java.io.File;
19 import java.io.IOException;
20
21 import org.apache.commons.jelly.TagSupport;
22 import org.apache.commons.jelly.XMLOutput;
23 import org.apache.commons.jelly.MissingAttributeException;
24 import org.apache.commons.jelly.JellyTagException;
25
26 import org.apache.ws.jaxme.generator.Generator;
27 import org.apache.ws.jaxme.generator.SchemaReader;
28 import org.apache.ws.jaxme.generator.sg.impl.JAXBSchemaReader;
29 import org.apache.ws.jaxme.generator.sg.SchemaSG;
30 import org.apache.ws.jaxme.generator.impl.GeneratorImpl;
31 import org.apache.ws.jaxme.js.JavaSourceFactory;
32
33 /***
34 * Generates java objects using JaxMe.
35 * This object can be marshalled into xml and the results unmarshalled
36 * using JaxMe.
37 *
38 * @author <a href="mailto:joe@ispsoft.de">Jochen Wiedmann</a>
39 * @author <a href="mailto:commons-dev at jakarta.apache.org">Apache Commons Development Team</a>
40 * @version $Revision: 155420 $
41 */
42 public class GeneratorTag extends TagSupport {
43
44 private String schemaUrl;
45 private String target;
46
47 public String getSchemaUrl() {
48 return schemaUrl;
49 }
50
51 /***
52 * Defines the schema against which the java object representations
53 * should be generated.
54 */
55 public void setSchemaUrl(String schemaUrl) {
56 this.schemaUrl = schemaUrl;
57 }
58
59 public String getTarget() {
60 return target;
61 }
62
63 /***
64 * Defines the target directory into which
65 * the generated objects will be placed.
66 */
67 public void setTarget(String target) {
68 this.target = target;
69 }
70
71
72 private File getSchemaFile() throws JellyTagException {
73 return new File(schemaUrl);
74 }
75
76 private File getTargetDirectory() throws JellyTagException {
77 return new File(target);
78 }
79
80 public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
81
82 if (schemaUrl == null) {
83 throw new MissingAttributeException( "schemaUrl" );
84 }
85
86 if (target == null) {
87 throw new MissingAttributeException( "target" );
88 }
89
90
91
92 Generator generator = new GeneratorImpl();
93
94 JAXBSchemaReader reader = new JAXBSchemaReader();
95 generator.setSchemaReader(reader);
96 reader.setGenerator(generator);
97 generator.setTargetDirectory(getTargetDirectory());
98
99 System.out.println("Target: " + getTargetDirectory());
100
101 try
102 {
103 SchemaSG schemaSG = generator.generate(getSchemaFile());
104 }
105 catch (Exception e)
106 {
107 throw new JellyTagException(e);
108 }
109 }
110 }