Home » Eclipse Projects » Gemini » Mapping class from another plug-in
Mapping class from another plug-in [message #1016193] |
Tue, 05 March 2013 12:47 |
Luiz E. Messages: 100 Registered: September 2010 |
Senior Member |
|
|
Hi all
I have a plug-in, which is the core of our app. The plug-in is br.com.germantech.ecf
Now, I made a plug-in, and this plug-in will contribute to our core plug-in. This works fine, he added new menus and everything.
But turns out that this new plug-in will create new tables too...
So, I created a manifest like this
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Germantech - Industria
Bundle-SymbolicName: br.com.germantech.industria;singleton:=true
Bundle-Version: 0.0.1
Bundle-Activator: br.com.germantech.industria.ActivatorIndustria
Bundle-Vendor: German Tech Sistemas
JPA-PersistenceUnits: gtech-industria
Meta-Persistence: META-INF/persistence.xml
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
javax.persistence;bundle-version="2.0.4",
org.eclipse.persistence.antlr;bundle-version="3.2.0",
org.eclipse.persistence.asm;bundle-version="3.3.1",
org.eclipse.persistence.core;bundle-version="2.4.1",
org.eclipse.persistence.jpa;bundle-version="2.4.1",
org.eclipse.persistence.jpa.jpql;bundle-version="2.0.1"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: br.com.germantech.ecf.api,
br.com.germantech.ecf.aplicacao.helpers,
br.com.germantech.ecf.dominio.modelo.produto,
org.postgresql
Bundle-ActivationPolicy: lazy
and created a class like this
package br.com.germantech.industria.dominio.modelo;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import br.com.germantech.ecf.dominio.modelo.produto.Produto;
@Entity
public class Producao implements Serializable {
private static final long serialVersionUID = -4643897338650864928L;
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Temporal(TemporalType.DATE)
private Date dataProducao;
@OneToMany
private List<Produto> produtosFinalizados = new ArrayList<Produto>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Date getDataProducao() {
return dataProducao;
}
public void setDataProducao(Date dataProducao) {
this.dataProducao = dataProducao;
}
public List<Produto> getProdutosFinalizados() {
return produtosFinalizados;
}
public void setProdutosFinalizados(List<Produto> produtosFinalizados) {
this.produtosFinalizados = produtosFinalizados;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Producao other = (Producao) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
}
The class Producao is a class from our new plug-in, and the class Produto is a class from our core plug-in...
When I start the plug-ins, I see this:
Internal Exception: javax.persistence.PersistenceException: Exception [EclipseLink-28018] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [gtech-industria] failed.
Internal Exception: Exception [EclipseLink-7250] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.ValidationException
Exception Description: [class br.com.germantech.industria.dominio.modelo.Producao] uses a non-entity [class br.com.germantech.ecf.dominio.modelo.produto.Produto] as target entity in the relationship attribute [field produtosFinalizados].
at org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:127)
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:118)
at br.com.germantech.industria.infraestrutura.persistencia.GermantechEntityManagerIndustria.init(GermantechEntityManagerIndustria.java:50)
at br.com.germantech.industria.infraestrutura.persistencia.GermantechEntityManagerIndustria.getEntityManager(GermantechEntityManagerIndustria.java:59)
at br.com.germantech.industria.ActivatorIndustria.start(ActivatorIndustria.java:31)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
... 12 more
My question is: how to map a class from one plug-in into another plug-in?
I tried to put Produto into the new plugin's persistence.xml, and that didn't worked too
thanks in advance
|
|
| |
Re: Mapping class from another plug-in [message #1016199 is a reply to message #1016197] |
Tue, 05 March 2013 13:08 |
Luiz E. Messages: 100 Registered: September 2010 |
Senior Member |
|
|
Actually, they are not in the same PU. I have a EntityManagerHelper for each plug-in.
this is my MANIFEST.MF from our core plug-in
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
JPA-PersistenceUnits: gtech
Meta-Persistence: META-INF/persistence.xml
Bundle-Vendor: Germantech Sistemas
as you can see, I have 2 PUs
I didn't understand what you want to say with `duplicating the class in the original bundle so it can be found by EclipseLink at p-unit processing time`. Should I put Producao in the core bundle? is this it?
I tried to put the Produto class into new plugin's persistence.xml, but that didn't worked too...Produto has an embedded class called Log, and EclipseLink says this
Internal Exception: Exception [EclipseLink-7246] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.ValidationException
Exception Description: The Entity class [class br.com.germantech.ecf.dominio.modelo.produto.Produto] has an embedded attribute [log] of type [class br.com.germantech.ecf.dominio.compartilhado.Log] which is NOT an Embeddable class. Probable reason: missing @Embeddable or missing <embeddable> in orm.xml if metadata-complete = true
at org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:127)
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:118)
at br.com.germantech.industria.infraestrutura.persistencia.GermantechEntityManagerIndustria.init(GermantechEntityManagerIndustria.java:50)
at br.com.germantech.industria.infraestrutura.persistencia.GermantechEntityManagerIndustria.getEntityManager(GermantechEntityManagerIndustria.java:59)
at br.com.germantech.industria.ActivatorIndustria.start(ActivatorIndustria.java:31)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
but thats the Log class
@Embeddable
public class Log implements Serializable {
private static final long serialVersionUID = -3528343752956930988L;
[Updated on: Tue, 05 March 2013 13:09] Report message to a moderator
|
|
| | | | | | | | |
Re: Mapping class from another plug-in [message #1020452 is a reply to message #1016904] |
Mon, 18 March 2013 08:05 |
Sebastian Lorenz Messages: 42 Registered: November 2010 |
Member |
|
|
Hi Mike,
I don't know how it works but it works. I wrote a test application that has a bundle test.p1 containing an entity A. Additionally there is a persistence bundle test.p2 that contains entity B and the following persistence.xml:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="com.qualitype.persistence.unit" transaction-type="RESOURCE_LOCAL">
<class>test.p1.A</class>
<class>test.p2.B</class>
<properties>
<property name="javax.persistence.jdbc.user" value="test" />
<property name="javax.persistence.jdbc.password" value="test" />
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:h2:~/test"/>
<property name="eclipselink.logging.level" value="FINE"/>
<!-- <property name="eclipselink.ddl-generation" value="create-tables"/> -->
</properties>
</persistence-unit>
</persistence>
The following output shows that A and B are loaded and A and B entities can be persisted and loaded to/from the databse.
Mrz 18, 2013 8:58:04 AM org.eclipse.gemini.blueprint.extender.internal.boot.ChainActivator <init>
Information: Blueprint API detected; enabling Blueprint Container functionality
Mrz 18, 2013 8:58:04 AM org.eclipse.gemini.blueprint.extender.internal.activator.ContextLoaderListener start
Information: Starting [org.eclipse.gemini.blueprint.extender] bundle v.[1.0.2.RELEASE]
Mrz 18, 2013 8:58:04 AM org.eclipse.gemini.blueprint.extender.internal.support.ExtenderConfiguration <init>
Information: No custom extender configuration detected; using defaults...
Mrz 18, 2013 8:58:04 AM org.springframework.scheduling.timer.TimerTaskExecutor afterPropertiesSet
Information: Initializing Timer
Mrz 18, 2013 8:58:04 AM org.eclipse.gemini.blueprint.extender.internal.activator.ContextLoaderListener start
Information: Starting [org.eclipse.gemini.blueprint.extender] bundle v.[1.0.2.RELEASE]
Mrz 18, 2013 8:58:04 AM org.eclipse.gemini.blueprint.extender.internal.support.ExtenderConfiguration <init>
Information: No custom extender configuration detected; using defaults...
Mrz 18, 2013 8:58:04 AM org.springframework.scheduling.timer.TimerTaskExecutor afterPropertiesSet
Information: Initializing Timer
Mrz 18, 2013 8:58:04 AM org.eclipse.gemini.blueprint.extender.support.DefaultOsgiApplicationContextCreator createApplicationContext
Information: Discovered configurations {osgibundle:/META-INF/spring/*.xml} in bundle [Consumer (test.service)]
Mrz 18, 2013 8:58:04 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
Information: Refreshing OsgiBundleXmlApplicationContext(bundle=test.service, config=osgibundle:/META-INF/spring/*.xml): startup date [Mon Mar 18 08:58:04 CET 2013]; root of context hierarchy
Mrz 18, 2013 8:58:04 AM org.eclipse.gemini.blueprint.context.support.AbstractOsgiBundleApplicationContext unpublishContextAsOsgiService
Information: Application Context service already unpublished
Mrz 18, 2013 8:58:04 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
Information: Loading XML bean definitions from URL [bundleentry://44.fwk1649854604/META-INF/spring/config.xml]
Mrz 18, 2013 8:58:04 AM org.springframework.beans.factory.support.DefaultListableBeanFactory registerBeanDefinition
Information: Overriding bean definition for bean 'transactionManager': replacing [Generic bean: class [org.eclipse.gemini.blueprint.service.importer.support.OsgiServiceProxyFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] with [Generic bean: class [org.springframework.orm.jpa.JpaTransactionManager]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [bundleentry://44.fwk1649854604/META-INF/spring/config.xml]]
Mrz 18, 2013 8:58:04 AM org.eclipse.gemini.blueprint.extender.internal.dependencies.startup.DependencyServiceManager doFindDependencies
Information: Adding OSGi service dependency for importer [&entityManagerFactory] matching OSGi filter [(&(objectClass=javax.persistence.EntityManagerFactory)(osgi.unit.name=com.qualitype.persistence.unit))]
Mrz 18, 2013 8:58:04 AM org.eclipse.gemini.blueprint.extender.internal.dependencies.startup.DependencyServiceManager findServiceDependencies
Information: OsgiBundleXmlApplicationContext(bundle=test.service, config=osgibundle:/META-INF/spring/*.xml) is waiting for unsatisfied dependencies [[&entityManagerFactory]]
[EL Config]: metadata: 2013-03-18 08:58:04.82--ServerSession(1754576303)--Thread(Thread[Start Level Event Dispatcher,5,main])--The access type for the persistent class [class test.p2.B] is set to [FIELD].
[EL Config]: metadata: 2013-03-18 08:58:04.836--ServerSession(1754576303)--Thread(Thread[Start Level Event Dispatcher,5,main])--The access type for the persistent class [class test.p1.A] is set to [FIELD].
[EL Config]: metadata: 2013-03-18 08:58:04.837--ServerSession(1754576303)--Thread(Thread[Start Level Event Dispatcher,5,main])--The alias name for the entity class [class test.p2.B] is being defaulted to: B.
[EL Config]: metadata: 2013-03-18 08:58:04.838--ServerSession(1754576303)--Thread(Thread[Start Level Event Dispatcher,5,main])--The table name for entity [class test.p2.B] is being defaulted to: B.
[EL Config]: metadata: 2013-03-18 08:58:04.847--ServerSession(1754576303)--Thread(Thread[Start Level Event Dispatcher,5,main])--The column name for element [id] is being defaulted to: ID.
[EL Config]: metadata: 2013-03-18 08:58:04.848--ServerSession(1754576303)--Thread(Thread[Start Level Event Dispatcher,5,main])--The alias name for the entity class [class test.p1.A] is being defaulted to: A.
[EL Config]: metadata: 2013-03-18 08:58:04.848--ServerSession(1754576303)--Thread(Thread[Start Level Event Dispatcher,5,main])--The table name for entity [class test.p1.A] is being defaulted to: A.
[EL Config]: metadata: 2013-03-18 08:58:04.848--ServerSession(1754576303)--Thread(Thread[Start Level Event Dispatcher,5,main])--The column name for element [id] is being defaulted to: ID.
Mrz 18, 2013 8:58:04 AM org.eclipse.gemini.blueprint.extender.internal.dependencies.startup.DependencyServiceManager$DependencyServiceListener serviceChanged
Information: No unsatisfied OSGi service dependencies; completing initialization for OsgiBundleXmlApplicationContext(bundle=test.service, config=osgibundle:/META-INF/spring/*.xml)
Mrz 18, 2013 8:58:04 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
Information: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@42610e8: defining beans [entityManagerFactory,transactionManager,org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#0,org.eclipse.gemini.blueprint.service.exporter.support.OsgiServiceFactoryBean#0,simpleBean,org.eclipse.gemini.blueprint.service.exporter.support.OsgiServiceFactoryBean#1,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor]; root of factory hierarchy
Mrz 18, 2013 8:58:04 AM org.eclipse.gemini.blueprint.service.exporter.support.OsgiServiceFactoryBean registerService
Information: Publishing service under classes [{org.springframework.transaction.support.ResourceTransactionManager}]
Mrz 18, 2013 8:58:04 AM org.eclipse.gemini.blueprint.service.exporter.support.OsgiServiceFactoryBean registerService
Information: Publishing service under classes [{test.consumer.SimpleService}]
[EL Config]: metadata: 2013-03-18 08:58:04.99--ServerSession(1915464807)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--The access type for the persistent class [class test.p2.B] is set to [FIELD].
[EL Config]: metadata: 2013-03-18 08:58:04.991--ServerSession(1915464807)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--The access type for the persistent class [class test.p1.A] is set to [FIELD].
[EL Config]: metadata: 2013-03-18 08:58:04.991--ServerSession(1915464807)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--The alias name for the entity class [class test.p2.B] is being defaulted to: B.
[EL Config]: metadata: 2013-03-18 08:58:04.991--ServerSession(1915464807)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--The table name for entity [class test.p2.B] is being defaulted to: B.
[EL Config]: metadata: 2013-03-18 08:58:04.991--ServerSession(1915464807)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--The column name for element [id] is being defaulted to: ID.
[EL Config]: metadata: 2013-03-18 08:58:04.992--ServerSession(1915464807)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--The alias name for the entity class [class test.p1.A] is being defaulted to: A.
[EL Config]: metadata: 2013-03-18 08:58:04.992--ServerSession(1915464807)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--The table name for entity [class test.p1.A] is being defaulted to: A.
[EL Config]: metadata: 2013-03-18 08:58:04.992--ServerSession(1915464807)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--The column name for element [id] is being defaulted to: ID.
[EL Info]: 2013-03-18 08:58:05.004--ServerSession(1915464807)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--EclipseLink, version: Eclipse Persistence Services - 2.4.1.v20121003-ad44345
[EL Fine]: connection: 2013-03-18 08:58:05.188--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--Detected database platform: org.eclipse.persistence.platform.database.H2Platform
[EL Config]: connection: 2013-03-18 08:58:05.252--ServerSession(1915464807)--Connection(82204021)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--connecting(DatabaseLogin(
platform=>H2Platform
user name=> "test"
connector=>JNDIConnector datasource name=>null
))
[EL Config]: connection: 2013-03-18 08:58:05.3--ServerSession(1915464807)--Connection(755003081)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--Connected: jdbc:h2:~/test
User: TEST
Database: H2 Version: 1.3.170 (2012-11-30)
Driver: H2 JDBC Driver Version: 1.3.170 (2012-11-30)
[EL Config]: connection: 2013-03-18 08:58:05.362--ServerSession(1915464807)--Connection(2003395891)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--connecting(DatabaseLogin(
platform=>H2Platform
user name=> "test"
connector=>JNDIConnector datasource name=>null
))
[EL Config]: connection: 2013-03-18 08:58:05.407--ServerSession(1915464807)--Connection(624834612)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--Connected: jdbc:h2:~/test
User: TEST
Database: H2 Version: 1.3.170 (2012-11-30)
Driver: H2 JDBC Driver Version: 1.3.170 (2012-11-30)
[EL Info]: connection: 2013-03-18 08:58:05.481--ServerSession(1915464807)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--com.qualitype.persistence.unit_nonJtaDataSource=468112812 login successful
----------------------
Persist A with id d17ebd64-51ad-407a-9d9c-19b870919b9b
[EL Fine]: sql: 2013-03-18 08:58:05.552--ClientSession(868453000)--Connection(1790705988)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--INSERT INTO A (ID) VALUES (?)
bind => [d17ebd64-51ad-407a-9d9c-19b870919b9b]
----------------------
The following As could be found in the DB:
[EL Fine]: sql: 2013-03-18 08:58:05.79--ServerSession(1915464807)--Connection(1921614096)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--SELECT ID FROM A
10a2f926-7ab1-44cc-a21d-5b8ae9f8619a
9a238d8a-ffaf-4553-b591-fb25f00d5d53
d17ebd64-51ad-407a-9d9c-19b870919b9b
----------------------
Persist B with id c0a9c7c2-949d-41bf-8f94-f1e924e5a999
[EL Fine]: sql: 2013-03-18 08:58:05.869--ClientSession(1066799495)--Connection(358143662)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--INSERT INTO B (ID) VALUES (?)
bind => [c0a9c7c2-949d-41bf-8f94-f1e924e5a999]
----------------------
The following Bs could be found in the DB:
[EL Fine]: sql: 2013-03-18 08:58:05.958--ServerSession(1915464807)--Connection(574180850)--Thread(Thread[EclipseGeminiBlueprintExtenderThread-2,5,eclipse-gemini-blueprint-extender[6b9b6541]-threads])--SELECT ID FROM B
66f17c7c-25b9-4fa1-8b3e-f278abc807ad
85ec8721-a1fe-4c80-8d48-efc31169802b
c0a9c7c2-949d-41bf-8f94-f1e924e5a999
Mrz 18, 2013 8:58:06 AM org.eclipse.gemini.blueprint.context.support.AbstractOsgiBundleApplicationContext publishContextAsOsgiServiceIfNecessary
Information: Publishing application context as OSGi service with properties {org.eclipse.gemini.blueprint.context.service.name=test.service, org.springframework.context.service.name=test.service, Bundle-SymbolicName=test.service, Bundle-Version=1.0.0.qualifier}
Mrz 18, 2013 8:58:06 AM org.eclipse.gemini.blueprint.extender.internal.support.DefaultOsgiBundleApplicationContextListener onOsgiApplicationEvent
Information: Application context successfully refreshed (OsgiBundleXmlApplicationContext(bundle=test.service, config=osgibundle:/META-INF/spring/*.xml))
|
|
| | | | | | |
Goto Forum:
Current Time: Tue Sep 17 20:24:37 GMT 2024
Powered by FUDForum. Page generated in 0.06401 seconds
|