Search in sources :

Example 11 with Type

use of org.glassfish.hk2.classmodel.reflect.Type in project Payara by payara.

the class CompositeUtil method getModel.

/**
 * This method will return a generated concrete class that implements the interface requested, as well as any
 * interfaces intended to extend the base model interface.  Model extensions must be annotated with
 *
 * @param modelIface   The base interface for the desired data model
 * @return An instance of a concrete class implementing the requested interfaces
 * @throws Exception
 * @RestModelExtension, and must be compiled with rest-annotation-processor library on the compile classpath
 * for metadata generation.
 */
public synchronized <T> T getModel(Class<T> modelIface) {
    String className = modelIface.getName() + "Impl";
    if (!generatedClasses.containsKey(className)) {
        Map<String, Map<String, Object>> properties = new HashMap<String, Map<String, Object>>();
        Set<Class<?>> interfaces = getModelExtensions(modelIface);
        interfaces.add(modelIface);
        for (Class<?> iface : interfaces) {
            analyzeInterface(iface, properties);
        }
        ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_MAXS);
        visitClass(classWriter, className, interfaces, properties);
        for (Map.Entry<String, Map<String, Object>> entry : properties.entrySet()) {
            String name = entry.getKey();
            final Map<String, Object> property = entry.getValue();
            Class<?> type = (Class<?>) property.get("type");
            createField(classWriter, name, type);
            createGettersAndSetters(classWriter, modelIface, className, name, property);
        }
        createConstructor(classWriter, className, properties);
        classWriter.visitEnd();
        Class<?> newClass;
        try {
            newClass = defineClass(modelIface, className, classWriter.toByteArray());
        } catch (Exception ex) {
            throw new RuntimeException(ex);
        }
        generatedClasses.put(className, newClass);
    }
    try {
        return (T) generatedClasses.get(className).newInstance();
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
}
Also used : HashMap(java.util.HashMap) JsonString(javax.json.JsonString) ClassWriter(org.glassfish.hk2.external.org.objectweb.asm.ClassWriter) JsonException(javax.json.JsonException) WebApplicationException(javax.ws.rs.WebApplicationException) IOException(java.io.IOException) JsonObject(javax.json.JsonObject) Map(java.util.Map) ParameterMap(org.glassfish.api.admin.ParameterMap) HashMap(java.util.HashMap) MultivaluedMap(javax.ws.rs.core.MultivaluedMap)

Example 12 with Type

use of org.glassfish.hk2.classmodel.reflect.Type in project Payara by payara.

the class InplantedTest method Test.

@Test
public void Test() {
    ServiceLocator habitat = server.getHabitat();
    System.out.println("Process type is " + habitat.<ProcessEnvironment>getService(ProcessEnvironment.class).getProcessType());
    for (Sniffer s : habitat.<Sniffer>getAllServices(Sniffer.class)) {
        System.out.println("Got sniffer " + s.getModuleType());
    }
}
Also used : ServiceLocator(org.glassfish.hk2.api.ServiceLocator) Sniffer(org.glassfish.api.container.Sniffer) Test(org.junit.Test)

Example 13 with Type

use of org.glassfish.hk2.classmodel.reflect.Type in project Payara by payara.

the class BasicServiceDiscoveryPaaSTest method testGetServiceMetadata.

// Test for CLI : '_get-service-metadata''
/*
        The war file contains the following service definition and service reference
          1.In glassfish-services.xml
        <glassfish-services>
            <service-description name="basic-db" init-type="lazy">
                <characteristics><characteristic name="service-type" value="JavaEE"/></characteristics>
                <configurations>
                    <configuration name="min.clustersize" value="1"/>
                    <configuration name="max.clustersize" value="2"/>
                </configurations>
            </service-description>
         </glassfish-services>
         <service-description name="db-service" init-type="lazy">
        <characteristics>
            <characteristic name="service-type" value="Database"/>
        </characteristics>
        <configurations>
            <configuration name="database.name" value=""/>
            <configuration name="database.init.sql" value=""/>
        </configurations>
    </service-description>

         2.In web.xml
         <resource-ref>
                <res-ref-name>jdbc/__basic_db_paas_sample</res-ref-name>
                <res-type>javax.sql.DataSource</res-type>
         </resource-ref>
     */
private void testGetServiceMetadata(File archive) {
    ServiceLocator habitat = Globals.getDefaultHabitat();
    org.glassfish.api.admin.CommandRunner commandRunner = habitat.getService(org.glassfish.api.admin.CommandRunner.class);
    ActionReport report = habitat.getService(ActionReport.class);
    org.glassfish.api.admin.CommandRunner.CommandInvocation invocation = commandRunner.getCommandInvocation("_get-service-metadata", report);
    ParameterMap parameterMap = new ParameterMap();
    parameterMap.add("DEFAULT", System.getProperty("basedir") + "/target/basic_sd_paas_sample.war");
    boolean testPassed = false;
    invocation.parameters(parameterMap).execute();
    testPassed = !report.hasFailures();
    String appName = "basic_sd_paas_sample";
    String serviceName = "basic-sd";
    testGetServiceDescription(appName, serviceName);
    List<Map<String, Object>> serviceDescList = (List<Map<String, Object>>) report.getExtraProperties().get("list");
    Map<String, Object> serviceDescMap = serviceDescList.get(1);
    serviceName = (String) serviceDescMap.get("name");
    String init_type = (String) serviceDescMap.get("init-type");
    Map<String, String> svcCharacteristicMap = (Map<String, String>) serviceDescMap.get("characteristics");
    String serviceType = (String) svcCharacteristicMap.get("service-type");
    Map<String, String> svcConfigurationMap = (Map<String, String>) serviceDescMap.get("configurations");
    if (serviceName.equalsIgnoreCase("db-service")) {
        if ("lazy".equalsIgnoreCase(init_type)) {
            if ("Database".equals(serviceType)) {
                Map<String, String> serviceConfigurationsMap = (Map<String, String>) serviceDescMap.get("configurations");
                if (serviceConfigurationsMap.containsKey("database.init.sql") && serviceConfigurationsMap.containsKey("database.name")) {
                    testPassed = true;
                }
            }
        }
    }
    System.out.println("CLI 'get-service-metadata' test passed? :: " + testPassed);
    Assert.assertTrue(testPassed);
}
Also used : ParameterMap(org.glassfish.api.admin.ParameterMap) ActionReport(org.glassfish.api.ActionReport) ServiceLocator(org.glassfish.hk2.api.ServiceLocator) List(java.util.List) CommandRunner(org.glassfish.embeddable.CommandRunner) ParameterMap(org.glassfish.api.admin.ParameterMap) Map(java.util.Map)

Example 14 with Type

use of org.glassfish.hk2.classmodel.reflect.Type in project Payara by payara.

the class BasicServiceDiscoveryPaaSTest method testGetServiceDescription.

// Test for CLI : '_get-service-description''
private void testGetServiceDescription(String appName, String serviceName) {
    ServiceLocator habitat = Globals.getDefaultHabitat();
    org.glassfish.api.admin.CommandRunner commandRunner = habitat.getService(org.glassfish.api.admin.CommandRunner.class);
    ActionReport report = habitat.getService(ActionReport.class);
    ParameterMap parameterMap = new ParameterMap();
    parameterMap.add("appname", appName);
    parameterMap.add("DEFAULT", serviceName);
    boolean testPassed = false;
    org.glassfish.api.admin.CommandRunner.CommandInvocation invocation = commandRunner.getCommandInvocation("_get-service-description", report);
    invocation.parameters(parameterMap).execute();
    Map<String, Object> SDMap = (Map<String, Object>) report.getExtraProperties().get("list");
    if (serviceName.equalsIgnoreCase((String) SDMap.get("name"))) {
        if ("lazy".equalsIgnoreCase((String) SDMap.get("init-type"))) {
            Map<String, String> serviceCharacteristicsMap = (Map<String, String>) SDMap.get("characteristics");
            if ("JavaEE".equals(serviceCharacteristicsMap.get("service-type"))) {
                Map<String, String> serviceConfigurationsMap = (Map<String, String>) SDMap.get("configurations");
                String minclustersize = serviceConfigurationsMap.get("min.clustersize");
                String maxclustersize = serviceConfigurationsMap.get("max.clustersize");
                if (Integer.parseInt(minclustersize) == 1 && Integer.parseInt(maxclustersize) == 2) {
                    testPassed = true;
                }
            }
        }
    }
    System.out.println("CLI 'get-service-description' test passed? :: " + testPassed);
    Assert.assertTrue(testPassed);
}
Also used : ParameterMap(org.glassfish.api.admin.ParameterMap) ActionReport(org.glassfish.api.ActionReport) ServiceLocator(org.glassfish.hk2.api.ServiceLocator) CommandRunner(org.glassfish.embeddable.CommandRunner) ParameterMap(org.glassfish.api.admin.ParameterMap) Map(java.util.Map)

Example 15 with Type

use of org.glassfish.hk2.classmodel.reflect.Type in project Payara by payara.

the class ExistingDomainTest method Test.

@Test
public void Test() throws Exception {
    ServiceLocator habitat = server.getHabitat();
    System.out.println("Process type is " + habitat.<ProcessEnvironment>getService(ProcessEnvironment.class).getProcessType());
    Collection<ServiceHandle<?>> listeners = habitat.getAllServiceHandles(org.glassfish.grizzly.config.dom.NetworkListener.class);
    Assert.assertTrue(listeners.size() > 1);
    for (ServiceHandle<?> s : listeners) {
        Object networkListener = s.getService();
        Method m = networkListener.getClass().getMethod("getPort");
        Assert.assertNotNull("Object returned does not implement getPort, is it a networkListener ?", m);
        String port = (String) m.invoke(networkListener);
        System.out.println("Network Listener " + port);
        Assert.assertNotNull("Got a null networkListener port", port);
    }
}
Also used : ServiceLocator(org.glassfish.hk2.api.ServiceLocator) ServiceHandle(org.glassfish.hk2.api.ServiceHandle) Method(java.lang.reflect.Method) Test(org.junit.Test)

Aggregations

ServiceLocator (org.glassfish.hk2.api.ServiceLocator)18 ActionReport (org.glassfish.api.ActionReport)13 MultiException (org.glassfish.hk2.api.MultiException)13 ParameterMap (org.glassfish.api.admin.ParameterMap)12 List (java.util.List)10 Map (java.util.Map)10 GeneratorAdapter (org.glassfish.hk2.external.org.objectweb.asm.commons.GeneratorAdapter)7 Method (org.glassfish.hk2.external.org.objectweb.asm.commons.Method)7 IOException (java.io.IOException)6 ArrayList (java.util.ArrayList)6 HashMap (java.util.HashMap)6 Sniffer (org.glassfish.api.container.Sniffer)6 CommandRunner (org.glassfish.embeddable.CommandRunner)6 File (java.io.File)5 Types (org.glassfish.hk2.classmodel.reflect.Types)5 PropertyVetoException (java.beans.PropertyVetoException)4 Method (java.lang.reflect.Method)4 Type (java.lang.reflect.Type)4 JsonString (javax.json.JsonString)4 PrivilegedActionException (java.security.PrivilegedActionException)3