All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jboss.ejb.client.EJBIdentifier Maven / Gradle / Ivy

There is a newer version: 5.0.8.Final
Show newest version
/*
 * JBoss, Home of Professional Open Source.
 * Copyright 2017 Red Hat, Inc., and individual contributors
 * as indicated by the @author tags.
 *
 * Licensed 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.jboss.ejb.client;

import java.io.Serializable;
import java.util.Objects;

import org.wildfly.common.Assert;

/**
 * An identifier for an Enterprise Bean located within a container.  This identifier only names the Enterprise Beans; it does not specify
 * a view, which must be done using the {@link EJBLocator} family of types.
 * 

* Enterprise Bean identifiers are suitable for use as hash keys. * * @author David M. Lloyd */ public final class EJBIdentifier implements Serializable { private static final long serialVersionUID = 7065644117552778408L; private final EJBModuleIdentifier moduleIdentifier; private final String beanName; private transient int hashCode; /** * Construct a new instance. * * @param appName the application name (must not be {@code null}) * @param moduleName the module name (must not be {@code null} or empty) * @param beanName the bean name (must not be {@code null} or empty) * @param distinctName the distinct name (must not be {@code null}) */ public EJBIdentifier(final String appName, final String moduleName, final String beanName, final String distinctName) { this(new EJBModuleIdentifier(appName, moduleName, distinctName), beanName); } /** * Construct a new instance. * * @param moduleIdentifier the Enterprise Beans module identifier (must not be {@code null}) * @param beanName the bean name (must not be {@code null} or empty) */ public EJBIdentifier(final EJBModuleIdentifier moduleIdentifier, final String beanName) { Assert.checkNotNullParam("moduleIdentifier", moduleIdentifier); Assert.checkNotNullParam("beanName", beanName); Assert.checkNotEmptyParam("beanName", beanName); this.moduleIdentifier = moduleIdentifier; this.beanName = beanName; } /** * Get the application name, which may be empty. * * @return the application name (not {@code null}) */ public String getAppName() { return moduleIdentifier.getAppName(); } /** * Get the module name. * * @return the module name (not {@code null}) */ public String getModuleName() { return moduleIdentifier.getModuleName(); } /** * Get the bean name. * * @return the bean name (not {@code null}) */ public String getBeanName() { return beanName; } /** * Get the distinct name. * * @return the distinct name (not {@code null}) */ public String getDistinctName() { return moduleIdentifier.getDistinctName(); } /** * Get the module identifier. * * @return the module identifier (not {@code null}) */ public EJBModuleIdentifier getModuleIdentifier() { return moduleIdentifier; } /** * Determine if this Enterprise Bean identifier is equal to the given object. * * @param other the object to test * @return {@code true} if the object is equal to this one, {@code false} otherwise */ public boolean equals(final Object other) { return other instanceof EJBIdentifier && equals((EJBIdentifier) other); } /** * Determine if this Enterprise Bean identifier is equal to the given object. * * @param other the object to test * @return {@code true} if the object is equal to this one, {@code false} otherwise */ public boolean equals(final EJBIdentifier other) { return other != null && ( other == this || other.hashCode() == hashCode() && moduleIdentifier.equals(other.moduleIdentifier) && Objects.equals(beanName, other.beanName) ); } /** * Get the hash code of this identifier. * * @return the hash code of this identifier */ public int hashCode() { int hashCode = this.hashCode; if (hashCode != 0) { return hashCode; } hashCode = moduleIdentifier.hashCode() * 13 + beanName.hashCode(); return this.hashCode = hashCode == 0 ? 1 : hashCode; } /** * Get the Enterprise Beans identifier as a human-readable string. * * @return the EJB identifier as a human-readable string (not {@code null}) */ public String toString() { return moduleIdentifier.toString() + "/" + beanName; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy