/*******************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*******************************************************************************/
package org.apache.wink.server.internal.registry;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import junit.framework.TestCase;
import org.apache.wink.common.AbstractDynamicResource;
import org.apache.wink.common.internal.lifecycle.LifecycleManagersRegistry;
public class ResourceRecordFactoryTest extends TestCase {
@Path("/path1")
public static class Resource1 {
@GET
public String get() {
return "GET";
}
}
@Path("/path2")
public static class Resource2 {
@GET
public String get() {
return "GET";
}
}
public static class Dynamic extends AbstractDynamicResource {
}
public static class Dummy {
}
public void testStaticResource() {
ResourceRecordFactory factory = new ResourceRecordFactory(new LifecycleManagersRegistry());
ResourceRecord record = factory.getResourceRecord(Resource1.class);
assertEquals("/path1", record.getMetadata().getPath());
record = factory.getResourceRecord(Resource2.class);
assertEquals("/path2", record.getMetadata().getPath());
Resource1 r1 = new Resource1();
ResourceRecord record1 = factory.getResourceRecord(r1);
assertEquals("/path1", record1.getMetadata().getPath());
Object o = record1.getObjectFactory().getInstance(null);
assertTrue(o instanceof Resource1);
record = factory.getResourceRecord(Resource1.class);
assertTrue(record == record1);
o = record.getObjectFactory().getInstance(null);
assertTrue(o instanceof Resource1);
Resource2 r2 = new Resource2();
ResourceRecord record2 = factory.getResourceRecord(r2);
assertEquals("/path2", record2.getMetadata().getPath());
o = record2.getObjectFactory().getInstance(null);
assertTrue(o instanceof Resource2);
record = factory.getResourceRecord(Resource2.class);
assertTrue(record == record2);
o = record.getObjectFactory().getInstance(null);
assertTrue(o instanceof Resource2);
}
public void testDynamicResource() {
ResourceRecordFactory factory = new ResourceRecordFactory(new LifecycleManagersRegistry());
Dynamic dynamic = new Dynamic();
dynamic.setPath("/pathDyna");
ResourceRecord dynamicRecord = factory.getResourceRecord(dynamic);
assertEquals("/pathDyna", dynamicRecord.getMetadata().getPath());
Object o = dynamicRecord.getObjectFactory().getInstance(null);
assertTrue(o instanceof Dynamic);
assertTrue(o == dynamic);
Dynamic dynamic2 = new Dynamic();
dynamic2.setPath("/pathDyna2");
ResourceRecord dynamicRecord2 = factory.getResourceRecord(dynamic2);
assertEquals("/pathDyna2", dynamicRecord2.getMetadata().getPath());
Object o2 = dynamicRecord2.getObjectFactory().getInstance(null);
assertTrue(o2 instanceof Dynamic);
assertTrue(dynamicRecord2 != dynamicRecord);
try {
factory.getResourceRecord(Dynamic.class);
fail("Expected IllegalArgumentException");
} catch (IllegalArgumentException e) {
}
}
public void testSubResource() {
ResourceRecordFactory factory = new ResourceRecordFactory(new LifecycleManagersRegistry());
// test for sub-resource
Dummy dummy = new Dummy();
ResourceRecord dummyRecord = factory.getResourceRecord(dummy, false);
Object o = dummyRecord.getObjectFactory().getInstance(null);
assertTrue(o instanceof Dummy);
assertTrue(o == dummy);
Dummy dummy2 = new Dummy();
ResourceRecord dummyRecord2 = factory.getResourceRecord(dummy2, false);
Object o2 = dummyRecord2.getObjectFactory().getInstance(null);
assertTrue(o2 instanceof Dummy);
assertTrue(dummyRecord2 != dummyRecord);
try {
factory.getResourceRecord(new Dummy());
fail("Expected IllegalArgumentException");
} catch (IllegalArgumentException e) {
}
try {
factory.getResourceRecord(Dummy.class);
fail("Expected IllegalArgumentException");
} catch (IllegalArgumentException e) {
}
}
}