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 @SuppressWarnings( "SimplifiableIfStatement" )
100 public boolean equals( Object o )
101 {
102 if ( this == o )
103 {
104 return true;
105 }
106 if ( o == null || getClass() != o.getClass() )
107 {
108 return false;
109 }
110
111 TypeEncodedValue that = (TypeEncodedValue) o;
112
113 if ( type != null ? !type.equals( that.type ) : that.type != null )
114 {
115 return false;
116 }
117 return !( value != null ? !value.equals( that.value ) : that.value != null );
118
119 }
120
121 public int hashCode()
122 {
123 int result = type != null ? type.hashCode() : 0;
124 result = 31 * result + ( value != null ? value.hashCode() : 0 );
125 return result;
126 }
127 }