1 package org.apache.maven.surefire.booter;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.ByteArrayInputStream;
23 import java.io.File;
24 import java.util.Properties;
25 import org.apache.maven.surefire.util.NestedRuntimeException;
26 import org.apache.maven.surefire.util.ReflectionUtils;
27
28
29
30
31 public class TypeEncodedValue
32 {
33 String type;
34
35 String value;
36
37 public TypeEncodedValue( String type, String value )
38 {
39 this.type = type;
40 this.value = value;
41 }
42
43 public boolean isTypeClass()
44 {
45 return Class.class.getName().equals( type );
46 }
47
48 public Object getDecodedValue()
49 {
50 return getDecodedValue( Thread.currentThread().getContextClassLoader() );
51 }
52
53 public Object getDecodedValue( ClassLoader classLoader )
54 {
55 if ( type.trim().length() == 0 )
56 {
57 return null;
58 }
59 else if ( type.equals( String.class.getName() ) )
60 {
61 return value;
62 }
63 else if ( isTypeClass() )
64 {
65 return ReflectionUtils.loadClass( classLoader, value );
66 }
67 else if ( type.equals( File.class.getName() ) )
68 {
69 return new File( value );
70 }
71 else if ( type.equals( Boolean.class.getName() ) )
72 {
73 return Boolean.valueOf( value );
74 }
75 else if ( type.equals( Integer.class.getName() ) )
76 {
77 return Integer.valueOf( value );
78 }
79 else if ( type.equals( Properties.class.getName() ) )
80 {
81 final Properties result = new Properties();
82 try
83 {
84 ByteArrayInputStream bais = new ByteArrayInputStream( value.getBytes( "8859_1" ) );
85 result.load( bais );
86 }
87 catch ( Exception e )
88 {
89 throw new NestedRuntimeException( "bug in property conversion", e );
90 }
91 return result;
92 }
93 else
94 {
95 throw new IllegalArgumentException( "Unknown parameter type: " + type );
96 }
97 }
98
99 public boolean equals( Object o )
100 {
101 if ( this == o )
102 {
103 return true;
104 }
105 if ( o == null || getClass() != o.getClass() )
106 {
107 return false;
108 }
109
110 TypeEncodedValue that = (TypeEncodedValue) o;
111
112 if ( type != null ? !type.equals( that.type ) : that.type != null )
113 {
114 return false;
115 }
116 return !( value != null ? !value.equals( that.value ) : that.value != null );
117
118 }
119
120 public int hashCode()
121 {
122 int result = type != null ? type.hashCode() : 0;
123 result = 31 * result + ( value != null ? value.hashCode() : 0 );
124 return result;
125 }
126 }