|
Glassfish example source code file (ConnectorConfigurationParserServiceImpl.java)
The Glassfish ConnectorConfigurationParserServiceImpl.java source code/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. * * The contents of this file are subject to the terms of either the GNU * General Public License Version 2 only ("GPL") or the Common Development * and Distribution License("CDDL") (collectively, the "License"). You * may not use this file except in compliance with the License. You can * obtain a copy of the License at * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html * or packager/legal/LICENSE.txt. See the License for the specific * language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each * file and include the License file at packager/legal/LICENSE.txt. * * GPL Classpath Exception: * Oracle designates this particular file as subject to the "Classpath" * exception as provided by Oracle in the GPL Version 2 section of the License * file that accompanied this code. * * Modifications: * If applicable, add the following below the License Header, with the fields * enclosed by brackets [] replaced by your own identifying information: * "Portions Copyright [year] [name of copyright owner]" * * Contributor(s): * If you wish your version of this file to be governed by only the CDDL or * only the GPL Version 2, indicate your decision by adding "[Contributor] * elects to include this software in this distribution under the [CDDL or GPL * Version 2] license." If you don't indicate a single choice of license, a * recipient has the option to distribute your version of this file under * either the CDDL, the GPL Version 2 or to extend the choice of license to * its licensees as provided above. However, if you add GPL Version 2 code * and therefore, elected the GPL Version 2 license, then the option applies * only if the new code is made subject to such option by the copyright * holder. */ package com.sun.enterprise.connectors.service; import com.sun.enterprise.deployment.ConnectorDescriptor; import com.sun.enterprise.deployment.SecurityPermission; import com.sun.enterprise.connectors.util.*; import com.sun.appserv.connectors.internal.api.ConnectorRuntimeException; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.Set; import java.util.Iterator; import java.util.Properties; import java.util.logging.Level; /** * This is configuration parser service. Retrieves various configuration * information from ra.xml * @author Srikanth P */ public class ConnectorConfigurationParserServiceImpl extends ConnectorService { /** * Default constructor */ public ConnectorConfigurationParserServiceImpl() { super(); } /** * Obtains the Permission string that needs to be added to the * to the security policy files. These are the security permissions needed * by the resource adapter implementation classes. * These strings are obtained by parsing the ra.xml * * @param moduleName rar module Name * @return Required policy permissions in server.policy file * @throws ConnectorRuntimeException If rar.xml parsing fails. */ public String getSecurityPermissionSpec(String moduleName) throws ConnectorRuntimeException { if (moduleName == null) { return null; } String policyString = null; //check whether the policy file already has required permissions. String fileName = System.getProperty("java.security.policy"); if (fileName != null) { File policyFile = new File(fileName); String policyContent = getFileContent(policyFile); ConnectorDescriptor connectorDescriptor = getConnectorDescriptor(moduleName); Set securityPermissions = connectorDescriptor.getSecurityPermissions(); Iterator it = securityPermissions.iterator(); SecurityPermission secPerm = null; String permissionString = null; while (it.hasNext()) { secPerm = (SecurityPermission) it.next(); permissionString = secPerm.getPermission(); int intIndex = policyContent.indexOf(permissionString); if (intIndex == -1) { if (permissionString != null) { if (policyString != null) { policyString = policyString + "\n \n" + permissionString; } else { policyString = "\n\n" + permissionString; } } } } //print the missing permissions if (policyString != null) { policyString = CAUTION_MESSAGE + policyString; } } return policyString; } /** * Obtain the content of server.policy file * * @param file File server.policy file * @return String content of server.policy file */ public String getFileContent(File file) { StringBuilder contents = new StringBuilder(); BufferedReader input = null; try { input = new BufferedReader(new FileReader(file)); try { String line = null; while ((line = input.readLine()) != null) { contents.append(line); contents.append(System.getProperty("line.separator")); } } finally { input.close(); } } catch (Exception ex) { _logger.log(Level.WARNING, "Exception while performing resource-adapter's " + "security permission check : ", ex); } return contents.toString(); } /** Obtains all the Connection definition names of a rar * @param rarName rar moduleName * @return Array of connection definition names. */ public String[] getConnectionDefinitionNames(String rarName) throws ConnectorRuntimeException { String[] result = new String[0]; ConnectorDescriptor desc = getConnectorDescriptor(rarName); if(desc != null) { MCFConfigParser mcfConfigParser = (MCFConfigParser) ConnectorConfigParserFactory.getParser(ConnectorConfigParser.MCF); return mcfConfigParser.getConnectionDefinitionNames(desc); } else { return result; } } /** * Retrieves the Resource adapter javabean properties with default values. * The default values will the values present in the ra.xml. If the * value is not present in ra.xxml, javabean is introspected to obtain * the default value present, if any. If intrspection fails or null is the * default value, empty string is returned. * If ra.xml has only the property and no value, empty string is the value * returned. * @param rarName rar module name * @return Resource adapter javabean properties with default values. * @throws ConnectorRuntimeException if property retrieval fails. */ public Properties getResourceAdapterConfigProps(String rarName) throws ConnectorRuntimeException { return getConnectorConfigJavaBeans( rarName,null,ConnectorConfigParser.RA); } /** * Retrieves the MCF javabean properties with default values. * The default values will the values present in the ra.xml. If the * value is not present in ra.xxml, javabean is introspected to obtain * the default value present, if any. If intrspection fails or null is the * default value, empty string is returned. * If ra.xml has only the property and no value, empty string is the value * returned. * @param rarName rar module name * @return managed connection factory javabean properties with * default values. * @throws ConnectorRuntimeException if property retrieval fails. */ public Properties getMCFConfigProps( String rarName,String connectionDefName) throws ConnectorRuntimeException { Properties props = getConnectorConfigJavaBeans( rarName,connectionDefName,ConnectorConfigParser.MCF); /* TODO V3 handle JMS-RA later if (rarName.equals(ConnectorConstants.DEFAULT_JMS_ADAPTER)) { props.remove(ActiveJmsResourceAdapter.ADDRESSLIST); } */ return props; } /** * Retrieves the admin object javabean properties with default values. * The default values will the values present in the ra.xml. If the * value is not present in ra.xxml, javabean is introspected to obtain * the default value present, if any. If intrspection fails or null is the * default value, empty string is returned. * If ra.xml has only the property and no value, empty string is the value * returned. * @param rarName rar module name * @return admin object javabean properties with * default values. * @throws ConnectorRuntimeException if property retrieval fails. */ public Properties getAdminObjectConfigProps( String rarName,String adminObjectIntf) throws ConnectorRuntimeException { return getConnectorConfigJavaBeans( rarName,adminObjectIntf,ConnectorConfigParser.AOR); } /** * Retrieves the admin object javabean properties with default values. * The default values will the values present in the ra.xml. If the * value is not present in ra.xxml, javabean is introspected to obtain * the default value present, if any. If intrspection fails or null is the * default value, empty string is returned. * If ra.xml has only the property and no value, empty string is the value * returned. * @param rarName rar module name * @param adminObjectIntf admin object interface * @param adminObjectClass admin object class * @return admin object javabean properties with * default values. * @throws ConnectorRuntimeException if property retrieval fails. */ public Properties getAdminObjectConfigProps( String rarName,String adminObjectIntf, String adminObjectClass) throws ConnectorRuntimeException { ConnectorDescriptor desc = getConnectorDescriptor(rarName); if(desc != null) { AdminObjectConfigParser adminObjectConfigParser = (AdminObjectConfigParser) ConnectorConfigParserFactory.getParser( ConnectorConfigParser.AOR); return adminObjectConfigParser.getJavaBeanProps( desc,adminObjectIntf, adminObjectClass, rarName); } else { return null; } } /** * Retrieves the XXX javabean properties with default values. * The javabean to introspect/retrieve is specified by the type. * The default values will be the values present in the ra.xml. If the * value is not present in ra.xxml, javabean is introspected to obtain * the default value present, if any. If intrspection fails or null is the * default value, empty string is returned. * If ra.xml has only the property and no value, empty string is the value * returned. * @param rarName rar module name * @return admin object javabean properties with * default values. * @throws ConnectorRuntimeException if property retrieval fails. */ public Properties getConnectorConfigJavaBeans(String rarName, String connectionDefName,String type) throws ConnectorRuntimeException { ConnectorDescriptor desc = getConnectorDescriptor(rarName); if(desc != null) { ConnectorConfigParser ccParser = ConnectorConfigParserFactory.getParser(type); return ccParser.getJavaBeanProps(desc,connectionDefName, rarName); } else { return null; } } /** * Return the ActivationSpecClass name for given rar and messageListenerType * @param moduleDir The directory where rar is exploded. * @param messageListenerType MessageListener type * @throws ConnectorRuntimeException If moduleDir is null. * If corresponding rar is not deployed. */ public String getActivationSpecClass( String rarName, String messageListenerType) throws ConnectorRuntimeException { ConnectorDescriptor desc = getConnectorDescriptor(rarName); if(desc != null) { MessageListenerConfigParser messagelistenerConfigParser = (MessageListenerConfigParser) ConnectorConfigParserFactory.getParser( ConnectorConfigParser.MSL); return messagelistenerConfigParser.getActivationSpecClass( desc,messageListenerType); } else { return null; } } /* Parses the ra.xml and returns all the Message listener types. * * @param rarName name of the rar module. * @return Array of message listener types as strings. * @throws ConnectorRuntimeException If moduleDir is null. * If corresponding rar is not deployed. * */ public String[] getMessageListenerTypes(String rarName) throws ConnectorRuntimeException { ConnectorDescriptor desc = getConnectorDescriptor(rarName); if(desc != null) { MessageListenerConfigParser messagelistenerConfigParser = (MessageListenerConfigParser) ConnectorConfigParserFactory.getParser( ConnectorConfigParser.MSL); return messagelistenerConfigParser.getMessageListenerTypes(desc); } else { return null; } } /** Parses the ra.xml for the ActivationSpec javabean * properties. The ActivationSpec to be parsed is * identified by the moduleDir where ra.xml is present and the * message listener type. * * message listener type will be unique in a given ra.xml. * * It throws ConnectorRuntimeException if either or both the * parameters are null, if corresponding rar is not deployed, * if message listener type mentioned as parameter is not found in ra.xml. * If rar is deployed and message listener (type mentioned) is present * but no properties are present for the corresponding message listener, * null is returned. * * @param rarName name of the rar module. * @param messageListenerType message listener type.It is uniqie * across all <messagelistener> sub-elements in Other Glassfish examples (source code examples)Here is a short list of links related to this Glassfish ConnectorConfigurationParserServiceImpl.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.