Skip to content

Commit e09db38

Browse files
author
graeme
committed
fix for GRAILS-1090
git-svn-id: https://svn.codehaus.org/grails/trunk@4069 1cfb16fd-6d17-0410-8ff1-b7e8e1e2867d
1 parent d215728 commit e09db38

File tree

2 files changed

+137
-9
lines changed

2 files changed

+137
-9
lines changed

src/commons/org/codehaus/groovy/grails/commons/GrailsDomainConfigurationUtil.java

Lines changed: 65 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,17 @@
1616

1717
import groovy.lang.GroovyObject;
1818
import org.apache.commons.lang.StringUtils;
19-
import org.hibernate.type.TypeFactory;
2019

20+
import java.io.Serializable;
21+
import java.math.BigDecimal;
22+
import java.math.BigInteger;
2123
import java.net.URI;
2224
import java.net.URL;
23-
import java.util.Collections;
24-
import java.util.Map;
25+
import java.sql.Blob;
26+
import java.sql.Clob;
27+
import java.sql.Time;
28+
import java.sql.Timestamp;
29+
import java.util.*;
2530

2631
/**
2732
* Utility methods used in configuring the Grails Hibernate integration
@@ -110,7 +115,7 @@ public static void configureDomainClassRelationships(GrailsClass[] domainClasses
110115
/**
111116
* Returns the ORM frameworks mapping file name for the specified class name
112117
*
113-
* @param className
118+
* @param className The class name of the mapped file
114119
* @return The mapping file name
115120
*/
116121
public static String getMappingFileName(String className) {
@@ -154,11 +159,62 @@ public static Map getMappedByMap(Class domainClass) {
154159
public static boolean isBasicType(GrailsDomainClassProperty prop) {
155160
if(prop == null)return false;
156161
Class propType = prop.getType();
157-
return TypeFactory.basic(propType.getName()) != null ||
158-
propType == URL.class ||
159-
propType == URI.class;
162+
return isBasicType(propType);
163+
}
164+
165+
private static final Set BASIC_TYPES;
166+
167+
static {
168+
Set basics = new HashSet();
169+
basics.add( boolean.class.getName());
170+
basics.add( long.class.getName());
171+
basics.add( short.class.getName());
172+
basics.add( int.class.getName());
173+
basics.add( byte.class.getName());
174+
basics.add( float.class.getName());
175+
basics.add( double.class.getName());
176+
basics.add( char.class.getName());
177+
basics.add( Boolean.class.getName());
178+
basics.add( Long.class.getName());
179+
basics.add( Short.class.getName());
180+
basics.add( Integer.class.getName());
181+
basics.add( Byte.class.getName());
182+
basics.add( Float.class.getName());
183+
basics.add( Double.class.getName());
184+
basics.add( Character.class.getName());
185+
basics.add( String.class.getName());
186+
basics.add( java.util.Date.class.getName());
187+
basics.add( Time.class.getName());
188+
basics.add( Timestamp.class.getName());
189+
basics.add( java.sql.Date.class.getName());
190+
basics.add( BigDecimal.class.getName());
191+
basics.add( BigInteger.class.getName());
192+
basics.add( Locale.class.getName());
193+
basics.add( Calendar.class.getName());
194+
basics.add( GregorianCalendar.class.getName());
195+
basics.add( java.util.Currency.class.getName());
196+
basics.add( TimeZone.class.getName());
197+
basics.add( Object.class.getName());
198+
basics.add( Class.class.getName());
199+
basics.add( byte[].class.getName());
200+
basics.add( Byte[].class.getName());
201+
basics.add( char[].class.getName());
202+
basics.add( Character[].class.getName());
203+
basics.add( Blob.class.getName());
204+
basics.add( Clob.class.getName());
205+
basics.add( Serializable.class.getName() );
206+
basics.add( URI.class.getName() );
207+
basics.add( URL.class.getName() );
208+
209+
BASIC_TYPES = Collections.unmodifiableSet( basics );
160210
}
161211

162-
163-
212+
public static boolean isBasicType(Class propType) {
213+
if(propType.isArray()) {
214+
return isBasicType(propType.getComponentType());
215+
}
216+
return BASIC_TYPES.contains(propType.getName());
217+
}
218+
219+
164220
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/* Copyright 2004-2005 Graeme Rocher
2+
*
3+
* Licensed under the Apache License, Version 2.0 (the "License");
4+
* you may not use this file except in compliance with the License.
5+
* You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software
10+
* distributed under the License is distributed on an "AS IS" BASIS,
11+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
* See the License for the specific language governing permissions and
13+
* limitations under the License.
14+
*/
15+
package org.codehaus.groovy.grails.commons;
16+
17+
import junit.framework.TestCase;
18+
19+
import java.util.Date;
20+
import java.net.URL;
21+
import java.net.URI;
22+
23+
/**
24+
* Tests for the GrailsDOmainConfigurationUtil class
25+
*
26+
*
27+
* @author Graeme Rocher
28+
* @since 0.5
29+
* <p/>
30+
* Created: Apr 27, 2007
31+
* Time: 11:24:21 AM
32+
*/
33+
public class GrailsDomainConfigurationUtilTests extends TestCase {
34+
35+
public void testIsBasicType() {
36+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(boolean.class));
37+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(long.class));
38+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(int.class));
39+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(short.class));
40+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(char.class));
41+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(double.class));
42+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(float.class));
43+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(byte.class));
44+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Boolean.class));
45+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Long.class));
46+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Integer.class));
47+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Short.class));
48+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Character.class));
49+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Double.class));
50+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Float.class));
51+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Byte.class));
52+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Date.class));
53+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(URL.class));
54+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(URI.class));
55+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(boolean[].class));
56+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(long[].class));
57+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(int[].class));
58+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(short[].class));
59+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(char[].class));
60+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(double[].class));
61+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(float[].class));
62+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(byte[].class));
63+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Boolean[].class));
64+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Long[].class));
65+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Integer[].class));
66+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Short[].class));
67+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Character[].class));
68+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Double[].class));
69+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Float[].class));
70+
assertTrue(GrailsDomainConfigurationUtil.isBasicType(Byte[].class));
71+
}
72+
}

0 commit comments

Comments
 (0)