org.apache.openejb.config.WlsConversion Maven / Gradle / Ivy
The newest version!
/*
* 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.jee.jpa.EntityMappings;
import org.apache.openejb.jee.oejb3.EjbDeployment;
import org.apache.openejb.jee.oejb3.Jndi;
import org.apache.openejb.jee.oejb3.OpenejbJar;
import org.apache.openejb.jee.wls.JaxbWls;
import org.apache.openejb.jee.wls.WeblogicEjbJar;
import org.apache.openejb.jee.wls.WeblogicEnterpriseBean;
import org.apache.openejb.loader.IO;
import javax.xml.bind.JAXBElement;
import java.io.ByteArrayInputStream;
import java.net.URL;
public class WlsConversion implements DynamicDeployer {
public AppModule deploy(final AppModule appModule) {
for (final EjbModule ejbModule : appModule.getEjbModules()) {
convertModule(ejbModule, appModule.getCmpMappings());
}
return appModule;
}
private T getDescriptor(final EjbModule ejbModule, final String descriptor, final Class type) {
Object altDD = ejbModule.getAltDDs().get(descriptor);
if (altDD instanceof String) {
try {
altDD = JaxbWls.unmarshal(type, new ByteArrayInputStream(((String) altDD).getBytes()));
} catch (final Exception e) {
// todo warn about not being able to parse sun descriptor
}
}
if (altDD instanceof URL) {
try {
altDD = JaxbWls.unmarshal(type, IO.read((URL) altDD));
} catch (final Exception e) {
e.printStackTrace();
// todo warn about not being able to parse sun descriptor
}
}
if (altDD == null) {
return null;
}
if (altDD instanceof JAXBElement) {
final JAXBElement jaxbElement = (JAXBElement) altDD;
altDD = jaxbElement.getValue();
}
return (T) altDD;
}
public void convertModule(final EjbModule ejbModule, final EntityMappings entityMappings) {
// merge data from weblogic-ejb-jar.xml file
final WeblogicEjbJar weblogicEjbJar = getDescriptor(ejbModule, "weblogic-ejb-jar.xml", WeblogicEjbJar.class);
mergeEjbConfig(ejbModule, weblogicEjbJar);
}
private void mergeEjbConfig(final EjbModule ejbModule, final WeblogicEjbJar weblogicEjbJar) {
final OpenejbJar openejbJar = ejbModule.getOpenejbJar();
if (openejbJar == null) {
return;
}
if (weblogicEjbJar == null) {
return;
}
if (weblogicEjbJar.getWeblogicEnterpriseBean().size() == 0) {
return;
}
for (final WeblogicEnterpriseBean ejb : weblogicEjbJar.getWeblogicEnterpriseBean()) {
final EjbDeployment deployment = openejbJar.getDeploymentsByEjbName().get(ejb.getEjbName());
if (deployment == null) {
// warn no matching deployment
continue;
}
// JNDI name of the remote home (legacy remote interface)
if (ejb.getJndiName() != null) {
deployment.getJndi().add(new Jndi(ejb.getJndiName(), "RemoteHome"));
}
// JNDI name of the remote home (legacy remote interface)
if (ejb.getLocalJndiName() != null) {
deployment.getJndi().add(new Jndi(ejb.getLocalJndiName(), "LocalHome"));
}
// TODO: What would be the default JNDI name for a business remote interface?
//deployment.getJndi().add(new Jndi("{theFormat}", "Remote"));
// TODO: What would be the default JNDI name for a business local interface?
//deployment.getJndi().add(new Jndi("{theFormat}", "Local"));
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy