1/*
2 * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23package test.rowset.spi;
24
25import com.sun.rowset.internal.SyncResolverImpl;
26import java.sql.SQLException;
27import javax.sql.rowset.spi.SyncProviderException;
28import static org.testng.Assert.*;
29import org.testng.annotations.AfterClass;
30import org.testng.annotations.BeforeClass;
31import org.testng.annotations.Test;
32import util.BaseTest;
33import util.StubSyncResolver;
34
35public class SyncProviderExceptionTests extends BaseTest {
36    @BeforeClass
37    public static void setUpClass() throws Exception {
38        System.out.println(System.getProperty("java.naming.factory.initial"));
39    }
40
41    @AfterClass
42    public static void tearDownClass() throws Exception {
43    }
44    /*
45     * Create SyncProviderException with no-arg constructor
46     */
47    @Test
48    public void test() {
49        SyncProviderException ex = new SyncProviderException();
50        assertTrue(ex.getMessage() == null
51                && ex.getSQLState() == null
52                && ex.getCause() == null
53                && ex.getErrorCode() == 0
54                && ex.getSyncResolver() instanceof SyncResolverImpl);
55    }
56
57    /*
58     * Create SyncProviderException with no-arg constructor and
59     * call setSyncResolver to indicate the SyncResolver to use
60     */
61    @Test
62    public void test01() {
63        SyncProviderException ex = new SyncProviderException();
64        ex.setSyncResolver(new StubSyncResolver());
65        assertTrue(ex.getMessage() == null
66                && ex.getSQLState() == null
67                && ex.getCause() == null
68                && ex.getErrorCode() == 0
69                && ex.getSyncResolver() instanceof StubSyncResolver);
70    }
71
72    /*
73     * Create SyncProviderException with message
74     */
75    @Test
76    public void test02() {
77        SyncProviderException ex = new SyncProviderException(reason);
78        assertTrue(ex.getMessage().equals(reason)
79                && ex.getSQLState() == null
80                && ex.getCause() == null
81                && ex.getErrorCode() == 0
82                && ex.getSyncResolver() instanceof SyncResolverImpl);
83    }
84
85    /*
86     * Create SyncProviderException with message and
87     * call setSyncResolver to indicate the SyncResolver to use
88     */
89    @Test
90    public void test03() {
91        SyncProviderException ex = new SyncProviderException(reason);
92        ex.setSyncResolver(new StubSyncResolver());
93
94        assertTrue(ex.getMessage().equals(reason)
95                && ex.getSQLState() == null
96                && ex.getCause() == null
97                && ex.getErrorCode() == 0
98                && ex.getSyncResolver() instanceof StubSyncResolver);
99    }
100
101    /*
102     * Create SyncProviderException with and specify the SyncResolver to use
103     */
104    @Test
105    public void test04() {
106        SyncProviderException ex = new SyncProviderException(new StubSyncResolver());
107        assertTrue(ex.getMessage() == null
108                && ex.getSQLState() == null
109                && ex.getCause() == null
110                && ex.getErrorCode() == 0
111                && ex.getSyncResolver() instanceof StubSyncResolver);
112    }
113
114    /*
115     * Validate that the ordering of the returned Exceptions is correct using
116     * for-each loop
117     */
118    @Test
119    public void test05() {
120        SyncProviderException ex = new SyncProviderException("Exception 1");
121        ex.initCause(t1);
122        SyncProviderException ex1 = new SyncProviderException("Exception 2");
123        SyncProviderException ex2 = new SyncProviderException("Exception 3");
124        ex2.initCause(t2);
125        ex.setNextException(ex1);
126        ex.setNextException(ex2);
127        int num = 0;
128        for (Throwable e : ex) {
129            assertTrue(msgs[num++].equals(e.getMessage()));
130        }
131    }
132
133    /*
134     * Validate that the ordering of the returned Exceptions is correct using
135     * traditional while loop
136     */
137    @Test
138    public void test06() {
139        SQLException ex = new SyncProviderException("Exception 1");
140        ex.initCause(t1);
141        SyncProviderException ex1 = new SyncProviderException("Exception 2");
142        SyncProviderException ex2 = new SyncProviderException("Exception 3");
143        ex2.initCause(t2);
144        ex.setNextException(ex1);
145        ex.setNextException(ex2);
146        int num = 0;
147        while (ex != null) {
148            assertTrue(msgs[num++].equals(ex.getMessage()));
149            Throwable c = ex.getCause();
150            while (c != null) {
151                assertTrue(msgs[num++].equals(c.getMessage()));
152                c = c.getCause();
153            }
154            ex = ex.getNextException();
155        }
156    }
157
158    /*
159     * Serialize a SyncProviderException and make sure you can read it back properly
160     */
161    @Test
162    public void test07() throws Exception {
163        SyncProviderException e = new SyncProviderException(reason);
164        SyncProviderException ex1 = createSerializedException(e);
165        assertTrue(ex1.getMessage().equals(reason)
166                && ex1.getSQLState() == null
167                && ex1.getCause() == null
168                && ex1.getErrorCode() == 0
169                && ex1.getSyncResolver() instanceof SyncResolverImpl, ex1.getSyncResolver().getClass().getName());
170    }
171
172    /*
173     * Serialize a SyncProviderException and make sure you can read it back properly
174     */
175    @Test
176    public void test08() throws Exception {
177        SyncProviderException e = new SyncProviderException(reason);
178        e.setSyncResolver(new StubSyncResolver());
179
180        SyncProviderException ex1 = createSerializedException(e);
181        assertTrue(ex1.getMessage().equals(reason)
182                && ex1.getSQLState() == null
183                && ex1.getCause() == null
184                && ex1.getErrorCode() == 0
185                && ex1.getSyncResolver() instanceof StubSyncResolver);
186    }
187}
188