Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* 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.openejb.config;
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.config.sys.ServiceProvider;
import org.apache.openejb.config.sys.ServicesJar;
import org.apache.openejb.config.sys.JaxbOpenejb;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
import org.apache.openejb.util.Messages;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.List;
import java.util.ArrayList;
public class ServiceUtils {
public static final String ANY = ServiceUtils.class.getName() + "@ANY";
public static final String NONE = ServiceUtils.class.getName() + "@NONE";
/**
* Default service provider package. This value is choosen as follows:
*
* 1. System property "openejb.provider.default"
* 2. If in a full server containing a "conf" directory "org.apache.openejb"
* 3. Embedded mode "org.apache.openejb.embedded"
*/
public static final String DEFAULT_PROVIDER_URL;
static {
String defaultValue = "org.apache.openejb";
try {
SystemInstance system = SystemInstance.get();
if (system.getProperty("openejb.embedded") != null){
defaultValue = "org.apache.openejb.embedded";
}
} catch (Exception ignored) {
}
DEFAULT_PROVIDER_URL = SystemInstance.get().getOptions().get("openejb.provider.default", defaultValue);
}
private static Map> loadedServiceJars = new HashMap>();
public static Messages messages = new Messages("org.apache.openejb.util.resources");
public static Logger logger = Logger.getInstance(LogCategory.OPENEJB, "org.apache.openejb.util.resources");
public static class ProviderInfo {
private final String packageName;
private final String serviceName;
public ProviderInfo(String providerName, String serviceName) {
this.packageName = providerName;
this.serviceName = serviceName;
}
public String getPackageName() {
return packageName;
}
public String getServiceName() {
return serviceName;
}
}
public static boolean hasServiceProvider(String id) {
try {
ProviderInfo info = getProviderInfo(id);
List services = getServiceProviders(info.getPackageName());
for (ServiceProvider service : services) {
if (service.getId().equals(id)) {
return true;
}
}
} catch (OpenEJBException ignored) {
// someone else will load the file and get the exception
}
return false;
}
public static ServiceProvider getServiceProvider(String id) throws OpenEJBException {
ProviderInfo info = getProviderInfo(id);
List services = getServiceProviders(info.getPackageName());
for (ServiceProvider service : services) {
if (service.getId().equals(info.getServiceName())) {
return service;
}
}
throw new NoSuchProviderException(messages.format("conf.4901", info.getServiceName(), info.getPackageName()));
}
public static String getServiceProviderId(String type) throws OpenEJBException {
return getServiceProviderId(type, null);
}
public static String getServiceProviderId(String type, Properties required) throws OpenEJBException {
ServiceProvider provider = getServiceProviderByType(type, required);
return provider != null? provider.getId(): null;
}
public static List getServiceProvidersByServiceType(String type) throws OpenEJBException {
ArrayList providers = new ArrayList();
if (type == null) return providers;
List services = getServiceProviders(DEFAULT_PROVIDER_URL);
for (ServiceProvider service : services) {
if (service.getService().equals(type)) {
providers.add(service);
}
}
return providers;
}
public static ServiceProvider getServiceProviderByType(String type) throws OpenEJBException {
return getServiceProviderByType(type, (Properties) null);
}
public static ServiceProvider getServiceProviderByType(String type, Properties required) throws OpenEJBException {
if (type == null) return null;
if (required == null) required = new Properties();
List services = getServiceProviders(DEFAULT_PROVIDER_URL);
for (ServiceProvider service : services) {
if (service.getTypes().contains(type) && implies(required, service.getProperties())) {
return service;
}
}
return null;
}
public static boolean implies(Properties required, Properties available){
for (Map.Entry