Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 41593 invoked from network); 29 Apr 2010 00:46:36 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 29 Apr 2010 00:46:36 -0000 Received: (qmail 69602 invoked by uid 500); 29 Apr 2010 00:46:36 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 69558 invoked by uid 500); 29 Apr 2010 00:46:36 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 69551 invoked by uid 99); 29 Apr 2010 00:46:36 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 29 Apr 2010 00:46:36 +0000 X-ASF-Spam-Status: No, hits=-1900.1 required=10.0 tests=ALL_TRUSTED,AWL X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 29 Apr 2010 00:46:31 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 7FB102388A9F; Thu, 29 Apr 2010 00:45:16 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r939145 [6/7] - in /geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core: ./ META-INF/ src/main/java/org/apache/geronimo/st/v30/core/ src/main/java/org/apache/geronimo/st/v30/core/commands/ src/main/java/org/apache... Date: Thu, 29 Apr 2010 00:45:15 -0000 To: scm@geronimo.apache.org From: mcconne@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100429004516.7FB102388A9F@eris.apache.org> Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/DependencyHelper.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/DependencyHelper.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/DependencyHelper.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/DependencyManager.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/DependencyManager.java?rev=939145&view=auto ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/DependencyManager.java (added) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/DependencyManager.java Thu Apr 29 00:45:13 2010 @@ -0,0 +1,213 @@ +/* + * 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.geronimo.st.v30.core.internal; + +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +import org.apache.geronimo.jee.deployment.Artifact; + +/** + * DependencyManager is very closely-based on the similar class in the Geronimo server. + * DependencyManager is the record keeper of the dependencies in the Geronimo Eclipse Plugin. The + * DependencyManager does not enforce any dependencies, it is simply a place where components can + * register their intent to be dependent on another component, and where other components can query + * those dependencies. + * + *

Like the DependencyManager in the Geronimo server, it uses the nomenclature of parent-child + * where a child is dependent on a parent. The names parent and child have no other meaning are just + * a convenience to make the code readable. + * + *

The initial usage of this DependencyManager in the GEP is somewhat limited but other usages + * are possible

+ * + * @version $Rev$ $Date$ + */ +public class DependencyManager { + + // + // Map from child to a list of parents + // + private final Map childToParentMap = new HashMap(); + + // + // Map from parent back to a list of its children + // + private final Map parentToChildMap = new HashMap(); + + + /** + * + */ + public void close() { + childToParentMap.clear(); + parentToChildMap.clear(); + } + + + /** + * Declares a dependency from a child to a parent. + * + * @param child the dependent component + * @param parent the component the child is depending on + */ + public void addDependency(Artifact child, Artifact parent) { + Trace.tracePoint("Entry", "DependencyManager.addDependency", child, parent); + + Set parents = (Set) childToParentMap.get(child); + if (parents == null) { + parents = new LinkedHashSet(); + childToParentMap.put(child, parents); + } + parents.add(parent); + + Set children = (Set) parentToChildMap.get(parent); + if (children == null) { + children = new LinkedHashSet(); + parentToChildMap.put(parent, children); + } + children.add(child); + + Trace.tracePoint("Exit ", "DependencyManager.addDependency", childToParentMap.size() ); + Trace.tracePoint("Exit ", "DependencyManager.addDependency", parentToChildMap.size() ); + } + + + /** + * Removes a dependency from a child to a parent + * + * @param child the dependnet component + * @param parent the component that the child wil no longer depend on + */ + public void removeDependency(Artifact child, Artifact parent) { + Trace.tracePoint("Entry", "DependencyManager.removeDependency", child, parent); + + Set parents = (Set) childToParentMap.get(child); + if (parents != null) { + parents.remove(parent); + } + + Set children = (Set) parentToChildMap.get(parent); + if (children != null) { + children.remove(child); + } + + Trace.tracePoint("Exit ", "DependencyManager.addDependency"); + } + + + /** + * Removes all dependencies for a child + * + * @param child the component that will no longer depend on anything + */ + public void removeAllDependencies(Artifact child) { + Trace.tracePoint("Entry", "DependencyManager.removeAllDependencies", child); + + Set parents = (Set) childToParentMap.remove(child); + if (parents == null) { + return; + } + + for (Iterator iterator = parents.iterator(); iterator.hasNext();) { + Artifact parent = (Artifact) iterator.next(); + Set children = (Set) parentToChildMap.get(parent); + if (children != null) { + children.remove(child); + } + } + + Trace.tracePoint("Exit ", "DependencyManager.removeAllDependencies"); + } + + + /** + * Adds dependencies from the child to every parent in the parents set + * + * @param child the dependent component + * @param parents the set of components the child is depending on + */ + public void addDependencies(Artifact child, Set parents) { + Trace.tracePoint("Entry", "DependencyManager.addDependencies", child, parents); + + Set existingParents = (Set) childToParentMap.get(child); + if (existingParents == null) { + existingParents = new LinkedHashSet(parents); + childToParentMap.put(child, existingParents); + } + else { + existingParents.addAll(parents); + } + + for (Iterator i = parents.iterator(); i.hasNext();) { + Object startParent = i.next(); + Set children = (Set) parentToChildMap.get(startParent); + if (children == null) { + children = new LinkedHashSet(); + parentToChildMap.put(startParent, children); + } + children.add(child); + } + + Trace.tracePoint("Exit ", "DependencyManager.addDependencies"); + } + + + /** + * Gets the set of parents that the child is depending on + * + * @param child the dependent component + * @return a collection containing all of the components the child depends on; will never be null + */ + public Set getParents(Artifact child) { + Trace.tracePoint("Entry", "DependencyManager.getParents", child); + + Set parents = (Set) childToParentMap.get(child); + if (parents == null) { + Trace.tracePoint("Exit", "DependencyManager.getParents", 0); + return Collections.EMPTY_SET; + } + + Trace.tracePoint("Exit", "DependencyManager.getParents", parents.size() ); + return new LinkedHashSet(parents); + } + + + /** + * Gets all of the children that have a dependency on the specified parent. + * + * @param parent the component the returned childen set depend on + * @return a collection containing all of the components that depend on the parent; will never be null + */ + public Set getChildren(Artifact parent) { + Trace.tracePoint("Entry", "DependencyManager.getChildren", parent); + + Set children = (Set) parentToChildMap.get(parent); + if (children == null) { + Trace.tracePoint("Exit ", "DependencyManager.getChildren", 0); + return Collections.EMPTY_SET; + } + + Trace.tracePoint("Exit ", "DependencyManager.getChildren", children.size() ); + return new LinkedHashSet(children); + } +} Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/DependencyManager.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/DependencyManager.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/DependencyManager.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.java?rev=939145&view=auto ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.java (added) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.java Thu Apr 29 00:45:13 2010 @@ -0,0 +1,66 @@ +/* + * 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.geronimo.st.v30.core.internal; + +import org.eclipse.osgi.util.NLS; + +/** + * Translated messages. + * + * @version $Rev$ $Date$ + */ +public class Messages extends NLS { + + static { + NLS.initializeMessages("org.apache.geronimo.st.v30.core.internal.Messages", Messages.class); + } + + public static String DISTRIBUTE_FAIL; + public static String START_FAIL; + public static String STOP_FAIL; + public static String UNDEPLOY_FAIL; + public static String REDEPLOY_FAIL; + public static String DM_CONNECTION_FAIL; + + public static String errorJRE; + + public static String targetRuntime; + + public static String incorrectVersion; + public static String noVersion; + public static String missingContent; + public static String errorPortInUse; + public static String missingServer; + + public static String errorNoProfiler; + + // errors for GeronimoServerPluginManager + public static String badConfigId; + public static String errorDeletePlugin; + public static String errorMovePlugin; + public static String badPlugin; + public static String errorCreateMetadata; + public static String errorUpdateMetadata; + public static String errorReadConfig; + public static String errorReadSerFile; + public static String errorNoSerFile; + public static String errorLoadClass; + public static String requires; + public static String installed; + public static String configSizeMismatch; + public static String noDefaultServer; +} Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.properties URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.properties?rev=939145&view=auto ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.properties (added) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.properties Thu Apr 29 00:45:13 2010 @@ -0,0 +1,51 @@ +# +# 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. +# +# $Rev$ $Date$ +# +DISTRIBUTE_FAIL=Distribution of module failed. See log for details. +START_FAIL=Starting of module failed. See log for details. +STOP_FAIL=Stopping of module failed. See log for details. +UNDEPLOY_FAIL=Undeploy of module failed. See log for details. +REDEPLOY_FAIL=Redeploy of module failed. See log for details. +DM_CONNECTION_FAIL=Connection to deployment manager failed. See log for details. + +targetRuntime=Geronimo v3.0 Runtime + +incorrectVersion=An incorrect version of {0} was detected. Version {1} was expected, but version {2} was found. +noVersion=A {0} installation was detected, however the version could not be verified. +missingContent=A {0} installation was detected, however parts of the server seem to be missing. +errorJRE=The JRE could not be found. Edit the server and change the JRE location. +errorPortInUse=Port {0} required by {1} is already in use. The server may already be running in another process, or a system process may be using the port. \ +To start this server you will need to stop the other process or change the port number(s). +missingServer=Server does not exist + +errorNoProfiler=Could not launch in profiling mode because no profilers are configured. + +badConfigId=Bad configID; should never happen. +errorDeletePlugin=Unable to delete old plugin at {0}. +errorMovePlugin=Unable to move new plugin {0} to {1}. +badadPlugin={0} is not a plugin. +errorCreateMetadata=Cannot create plugin metadata file for {0}. +errorUpdateMetadata=Unable to update plugin metadata. +errorReadConfig=Cannot read configuration {0}. +errorReadSerFile=Can not read configuration META-INF/config.ser file: {0}. +errorNoSerFile=Configuration does not contain a META-INF/config.ser file: {0}. +errorLoadClass=Unable to load class from config: {0}. +requires= requires +installed= to be installed. +configSizeMismatch=A plugin configuration must include one plugin artifact, not {0}. +noDefaultServer=Invalid setup, no default server instance registered. Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.properties ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.properties ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.properties ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/ConversionHelper.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/ConversionHelper.java?rev=939145&view=auto ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/ConversionHelper.java (added) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/ConversionHelper.java Thu Apr 29 00:45:13 2010 @@ -0,0 +1,143 @@ +/* + * 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.geronimo.st.v30.core.jaxb; + +import javax.xml.bind.JAXBElement; +import javax.xml.bind.JAXBException; + +import org.apache.geronimo.st.v30.core.internal.Trace; +import org.eclipse.core.resources.IFile; + +/** + * ConversionHelper is a helper class with numerous static + * methods to aid in the conversion of Geronimo-specific deployment plans from + * one JAXB version to another (e.g., v1.1 to v2.1)

+ * + * @version $Rev$ $Date$ + */ +public class ConversionHelper { + + /** + * Convert a geronimo-web.xml deployment plan file (if necessary) + * and return the JAXB representation + * + * @param plan Geronimo deployment plan + * @throws Exception + */ + public static void convertGeronimoWebFile( IFile plan ) throws Exception { + Trace.tracePoint("Entry", "ConversionHelper.convertGeronimoWebFile", plan); + + convertNamespace( plan ); + + Trace.tracePoint("Exit ", "ConversionHelper.convertGeronimoWebFile"); + } + + + /** + * Convert an openejb-jar.xml deployment plan file (if necessary) and return the + * JAXB representation + * + * @param plan OpenEJB deployment plan + * @throws Exception + */ + public static void convertOpenEjbJarFile( IFile plan ) throws Exception { + Trace.tracePoint("Entry", "ConversionHelper.convertGeronimoOpenEjbFile", plan); + + convertNamespace( plan ); + + Trace.tracePoint("Exit ", "ConversionHelper.convertGeronimoOpenEjbFile"); + } + + + /** + * Convert a geronimo-application.xml deployment plan file (if necessary) + * and return the JAXB representation + * + * @param plan Geronimo deployment plan + * + * @exception JAXBException if JAXB error + */ + public static void convertGeronimoApplicationFile( IFile plan ) throws Exception { + Trace.tracePoint("Entry", "ConversionHelper.convertGeronimoApplicationFile", plan); + + convertNamespace( plan ); + + Trace.tracePoint("Exit ", "ConversionHelper.convertGeronimoApplicationFile"); + } + + + /** + * Convert a geronimo-ra.xml deployment plan file (if necessary) + * and return the JAXB representation + * + * @param plan Geronimo deployment plan + * + * @exception JAXBException if JAXB error + */ + public static void convertGeronimoRaFile( IFile plan ) throws Exception { + Trace.tracePoint("Entry", "ConversionHelper.convertGeronimoRaFile", plan); + + convertNamespace( plan ); + + Trace.tracePoint("Exit ", "ConversionHelper.convertGeronimoRaFile"); + } + + + /** + * Convert a geronimo-application-client.xml deployment plan file + * and return the JAXB representation + * + * @param plan Geronimo deployment plan + * + * @exception JAXBException if JAXB error + */ + public static void convertGeronimoApplicationClientFile( IFile plan ) throws Exception { + Trace.tracePoint("Entry", "ConversionHelper.convertGeronimoApplicationClientFile", plan); + + convertNamespace( plan ); + + Trace.tracePoint("Exit ", "ConversionHelper.convertGeronimoApplicationClientFile"); + } + + + /*------------------------------------------------------------------------*\ + | | + | Private method(s) | + | | + \*------------------------------------------------------------------------*/ + + + /** + * Convert the namespace of the Geronimo deployment plan and then save the + * deployment plan + * + * @param plan Geronimo deployment plan + */ + private static void convertNamespace( IFile plan ) throws Exception{ + + // + // Unmarshall and filter the deployment plan + // + JAXBElement jaxbElement = JAXBUtils.unmarshalFilterDeploymentPlan(plan); + + // + // Marshall and save the deployment plan from the jaxbElement + // + JAXBUtils.marshalDeploymentPlan( jaxbElement, plan ); + } +} \ No newline at end of file Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/ConversionHelper.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/ConversionHelper.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/ConversionHelper.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/IJAXBUtilsProvider.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/IJAXBUtilsProvider.java?rev=939145&view=auto ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/IJAXBUtilsProvider.java (added) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/IJAXBUtilsProvider.java Thu Apr 29 00:45:13 2010 @@ -0,0 +1,36 @@ +/* + * 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.geronimo.st.v30.core.jaxb; + +import java.io.InputStream; +import java.io.OutputStream; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBElement; + +import org.eclipse.core.resources.IFile; + +/** + * @version $Rev$ $Date$ + */ +public interface IJAXBUtilsProvider { + public JAXBContext getJAXBContext(); + public void marshalDeploymentPlan(JAXBElement jaxbElement, IFile file) throws Exception; + public void marshalPlugin(JAXBElement jaxbElement, OutputStream outputStream) throws Exception; + public JAXBElement unmarshalFilterDeploymentPlan(IFile file) throws Exception; + public JAXBElement unmarshalPlugin(InputStream inputStream); +} Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/IJAXBUtilsProvider.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/IJAXBUtilsProvider.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/IJAXBUtilsProvider.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXB21Utils.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXB21Utils.java?rev=939145&view=auto ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXB21Utils.java (added) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXB21Utils.java Thu Apr 29 00:45:13 2010 @@ -0,0 +1,298 @@ +/* + * 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.geronimo.st.v30.core.jaxb; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Method; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBElement; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Result; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.sax.SAXSource; +import javax.xml.transform.stream.StreamResult; + +import org.apache.geronimo.st.v30.core.Activator; +import org.apache.geronimo.st.v30.core.internal.Trace; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.runtime.CoreException; +import org.w3c.dom.Document; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +/** + * @version $Rev$ $Date$ + */ +public class JAXB21Utils implements IJAXBUtilsProvider{ + + // JAXBContext instantiation is costly - must be done only once! + private static final JAXBContext jaxbContext = newJAXBContext(); + private static final JAXBContext jaxbPluginContext = newJAXBPluginContext(); + private static final MarshallerListener marshallerListener = new MarshallerListener(); + //private static JAXB21Utils _instance = new JAXB21Utils(); + + private static JAXBContext newJAXBContext() { + try { + return JAXBContext.newInstance( + "org.apache.geronimo.jee.connector:" + + "org.apache.geronimo.jee.loginconfig:" + + "org.apache.geronimo.jee.openejb:" + + "org.apache.geronimo.jee.web:" + + "org.apache.geronimo.jee.application:" + + "org.apache.geronimo.jee.applicationclient:" + + "org.apache.geronimo.jee.deployment:" + + "org.apache.geronimo.jee.naming:" + + "org.apache.geronimo.jee.security:", Activator.class.getClassLoader() ); + } catch (JAXBException e) { + Trace.tracePoint("JAXBException", "JAXBContext.newInstance"); + e.printStackTrace(); + } + return null; + } + + /*private JAXB21Utils(){ + } + + public static JAXB21Utils getInstance(){ + return _instance; + }*/ + + public JAXBContext getJAXBContext(){ + return jaxbContext; + } + + private static JAXBContext newJAXBPluginContext() { + try { + return JAXBContext.newInstance( + "org.apache.geronimo.system.plugin.model", Activator.class.getClassLoader() ); + } catch (JAXBException e) { + Trace.tracePoint("JAXBException", "JAXBContext.newInstance"); + e.printStackTrace(); + } + return null; + } + + public void marshalDeploymentPlan(JAXBElement jaxbElement, IFile file) throws Exception { + try { + Marshaller marshaller = jaxbContext.createMarshaller(); + marshaller.setListener(marshallerListener); + + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + dbf.setNamespaceAware(true); + DocumentBuilder db = dbf.newDocumentBuilder(); + Document doc = db.newDocument(); + + marshaller.marshal(jaxbElement, doc); + + TransformerFactory xf = TransformerFactory.newInstance(); + try { + xf.setAttribute("indent-number", new Integer(4)); + } catch (IllegalArgumentException iae) { + //ignore this. http://forums.sun.com/thread.jspa?threadID=562510&messageID=2841867 + } + Transformer xformer = xf.newTransformer(); + xformer.setOutputProperty(OutputKeys.METHOD, "xml"); + xformer.setOutputProperty(OutputKeys.INDENT, "yes"); + xformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); + xformer.setOutputProperty("{http://xml.apache.org/xalan}indent-amount", "4"); + + ByteArrayOutputStream outBuffer = new ByteArrayOutputStream(); + Result out = new StreamResult(new OutputStreamWriter(outBuffer,"UTF-8")); + NamespacePrefix.processPrefix(doc); + + xformer.transform(new DOMSource(doc), out); + ByteArrayInputStream inBuffer = new ByteArrayInputStream(outBuffer.toByteArray()); + if(file.exists()) { + file.setContents(inBuffer, true, false, null); + } else { + prepareFolder(file.getParent()); + file.create(inBuffer, true, null); + } + } catch (JAXBException jaxbException) { + Trace.tracePoint("JAXBException", "JAXBUtils.marshalDeploymentPlan()", file.getFullPath()); + throw jaxbException; + } catch (CoreException coreException) { + Trace.tracePoint("CoreException", "JAXBUtils.marshalDeploymentPlan()", file.getFullPath()); + throw coreException; + } catch (ParserConfigurationException e) { + Trace.tracePoint("ParserConfigurationException", "JAXBUtils.marshalDeploymentPlan()", file.getFullPath()); + throw e; + } catch (TransformerConfigurationException e) { + Trace.tracePoint("TransformerConfigurationException", "JAXBUtils.marshalDeploymentPlan()", file.getFullPath()); + throw e; + } catch (UnsupportedEncodingException e) { + Trace.tracePoint("UnsupportedEncodingException", "JAXBUtils.marshalDeploymentPlan()", file.getFullPath()); + throw e; + } catch (TransformerException e) { + Trace.tracePoint("TransformerException", "JAXBUtils.marshalDeploymentPlan()", file.getFullPath()); + throw e; + } + } + + public JAXBElement unmarshalFilterDeploymentPlan(IFile file) throws Exception { + try { + Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); + SAXParserFactory factory = SAXParserFactory.newInstance(); + factory.setNamespaceAware(true); + factory.setValidating(false); + SAXParser parser = factory.newSAXParser(); + NamespaceFilter xmlFilter = new NamespaceFilter(parser.getXMLReader()); + SAXSource source = new SAXSource(xmlFilter, new InputSource(file.getContents())); + JAXBElement plan = (JAXBElement) unmarshaller.unmarshal(source); + return plan; + } catch (JAXBException e) { + Trace.tracePoint("JAXBException", "JAXBUtils.unmarshalFilterDeploymentPlan()", file.getFullPath()); + throw e; + } catch (CoreException e) { + Trace.tracePoint("CoreException", "JAXBUtils.unmarshalFilterDeploymentPlan()", file.getFullPath()); + throw e; + } catch (ParserConfigurationException e) { + Trace.tracePoint("ParserConfigurationException", "JAXBUtils.unmarshalFilterDeploymentPlan()", file.getFullPath()); + throw e; + } catch (SAXException e) { + Trace.tracePoint("SAXException", "JAXBUtils.unmarshalFilterDeploymentPlan()", file.getFullPath()); + throw e; + } + } + + public void marshalPlugin(JAXBElement jaxbElement, OutputStream outputStream) throws Exception { + try { + Marshaller marshaller = jaxbPluginContext.createMarshaller(); + marshaller.setListener(marshallerListener); + + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + DocumentBuilder db = dbf.newDocumentBuilder(); + Document doc = db.newDocument(); + + marshaller.marshal(jaxbElement, doc); + + TransformerFactory xf = TransformerFactory.newInstance(); + try { + xf.setAttribute("indent-number", new Integer(4)); + } catch (IllegalArgumentException iae) { + //ignore this. http://forums.sun.com/thread.jspa?threadID=562510&messageID=2841867 + } + Transformer xformer = xf.newTransformer(); + xformer.setOutputProperty(OutputKeys.METHOD, "xml"); + xformer.setOutputProperty(OutputKeys.INDENT, "yes"); + xformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); + xformer.setOutputProperty("{http://xml.apache.org/xalan}indent-amount", "4"); + + ByteArrayOutputStream outBuffer = new ByteArrayOutputStream(); + Result out = new StreamResult(new OutputStreamWriter(outBuffer,"UTF-8")); + + xformer.transform(new DOMSource(doc), out); + ByteArrayInputStream inBuffer = new ByteArrayInputStream(outBuffer.toByteArray()); + outputStream.write(outBuffer.toByteArray()); + } catch (JAXBException jaxbException) { + Trace.tracePoint("JAXBException", "JAXBUtils.marshalDeploymentPlan()"); + throw jaxbException; + } catch (IOException coreException) { + Trace.tracePoint("IOException", "JAXBUtils.marshalDeploymentPlan()"); + throw coreException; + } catch (ParserConfigurationException e) { + Trace.tracePoint("ParserConfigurationException", "JAXBUtils.marshalDeploymentPlan()"); + throw e; + } catch (TransformerConfigurationException e) { + Trace.tracePoint("TransformerConfigurationException", "JAXBUtils.marshalDeploymentPlan()"); + throw e; + } catch (TransformerException e) { + Trace.tracePoint("TransformerException", "JAXBUtils.marshalDeploymentPlan()"); + throw e; + } + } + + public JAXBElement unmarshalPlugin(InputStream inputStream) { + try { + Unmarshaller unmarshaller = jaxbPluginContext.createUnmarshaller(); + SAXParserFactory factory = SAXParserFactory.newInstance(); + factory.setNamespaceAware(true); + factory.setValidating(false); + SAXParser parser = factory.newSAXParser(); + NamespaceFilter xmlFilter = new NamespaceFilter(parser.getXMLReader()); + SAXSource source = new SAXSource(xmlFilter, new InputSource(inputStream)); + JAXBElement plan = (JAXBElement) unmarshaller.unmarshal(source); + return plan; + } catch (JAXBException e) { + Trace.tracePoint("JAXBException", "JAXBUtils.unmarshalFilterDeploymentPlan()"); + e.printStackTrace(); + } catch (ParserConfigurationException e) { + Trace.tracePoint("ParserConfigurationException", "JAXBUtils.unmarshalFilterDeploymentPlan()"); + e.printStackTrace(); + } catch (SAXException e) { + Trace.tracePoint("SAXException", "JAXBUtils.unmarshalFilterDeploymentPlan()"); + e.printStackTrace(); + } + return null; + } + + private void prepareFolder(IContainer folder) throws CoreException { + if (folder.exists() || !(folder instanceof IFolder)) { + return; + } + // prepare the upper level folders recursively + prepareFolder(folder.getParent()); + ((IFolder) folder).create(true, true, null); + } + + public Object getValue( Object element, String name ) throws Exception { + try { + if (String.class.isInstance(element)) + return (String)element; + Method method = element.getClass().getMethod( "get" + name, null); + return method.invoke(element, null); + } catch ( Exception e ) { + throw e; + } + } + + public void setValue( Object element, String name, Object value ) throws Exception { + try { + Method[] methods = element.getClass().getMethods(); + for ( Method method: methods) { + if ( method.getName().equals( "set" + name ) ) { + method.invoke( element, value ); + return; + } + } + } catch (Exception e) { + throw e; + } + System.out.println( "============== No such method set" + name + " in class " + element.getClass().getName() ); + } +} Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXB21Utils.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXB21Utils.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXB21Utils.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBModelUtils.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBModelUtils.java?rev=939145&r1=939144&r2=939145&view=diff ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBModelUtils.java (original) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBModelUtils.java Thu Apr 29 00:45:13 2010 @@ -33,7 +33,7 @@ import org.apache.geronimo.jee.web.WebAp * @version $Rev$ $Date$ */ public class JAXBModelUtils { - + public static Security getSecurity (JAXBElement element) { Object plan = element.getValue(); @@ -45,13 +45,13 @@ public class JAXBModelUtils { return security; } else if (Application.class.isInstance (plan)) { if (((Application)plan).getSecurity() == null) { - return null; + return null; } Security security = (Security)((Application)plan).getSecurity().getValue(); return security; } else if (OpenejbJar.class.isInstance (plan)) { if (((OpenejbJar)plan).getSecurity() == null) { - return null; + return null; } Security security = (Security)((OpenejbJar)plan).getSecurity().getValue(); return security; Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBObjectFactory.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBObjectFactory.java?rev=939145&view=auto ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBObjectFactory.java (added) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBObjectFactory.java Thu Apr 29 00:45:13 2010 @@ -0,0 +1,25 @@ +/* + * 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.geronimo.st.v30.core.jaxb; + +/** + * @version $Rev$ $Date$ + */ +public interface JAXBObjectFactory { + + public Object create(Class type); +} Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBObjectFactory.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBObjectFactory.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBObjectFactory.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBObjectFactoryImpl.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBObjectFactoryImpl.java?rev=939145&r1=939144&r2=939145&view=diff ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBObjectFactoryImpl.java (original) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBObjectFactoryImpl.java Thu Apr 29 00:45:13 2010 @@ -16,7 +16,6 @@ */ package org.apache.geronimo.st.v30.core.jaxb; -import org.apache.geronimo.st.core.jaxb.JAXBObjectFactory; import org.apache.geronimo.jee.application.ExtModule; import org.apache.geronimo.jee.application.Module; import org.apache.geronimo.jee.application.Path; Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBUtils.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBUtils.java?rev=939145&view=auto ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBUtils.java (added) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBUtils.java Thu Apr 29 00:45:13 2010 @@ -0,0 +1,164 @@ +/* + * 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 anguage governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.st.v30.core.jaxb; + +import java.io.InputStream; +import java.io.OutputStream; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBElement; + +import org.apache.geronimo.st.v30.core.Activator; +import org.apache.geronimo.st.v30.core.internal.Trace; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtensionRegistry; +import org.eclipse.core.runtime.Platform; +import org.eclipse.jst.server.core.FacetUtil; +import org.eclipse.wst.common.project.facet.core.IFacetedProject; +import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager; +import org.eclipse.wst.server.core.IRuntime; + +/** + * @version $Rev$ $Date$ + */ +public class JAXBUtils { + + private static Map providers = new HashMap(); + + static { + loadExtensionPoints(); + } + + private static synchronized void loadExtensionPoints() { + Trace.tracePoint("ENTRY", "JAXBUtils.loadExtensionPoints"); + + IExtensionRegistry registry = Platform.getExtensionRegistry(); + IConfigurationElement[] cf = registry.getConfigurationElementsFor(Activator.PLUGIN_ID, "JAXBUtilsProvider"); + for (int i = 0; i < cf.length; i++) { + IConfigurationElement element = cf[i]; + if ("provider".equals(element.getName())) { + try { + IJAXBUtilsProvider provider = (IJAXBUtilsProvider) element.createExecutableExtension("class"); + String versions = element.getAttribute("version"); + String[] versionArray = versions.split(","); + for (int j=0;j getJAXBContext(){ + List contextList = new ArrayList(); + + Collection jaxbutils = providers.values(); + Iterator iterator = jaxbutils.iterator(); + while (iterator.hasNext()){ + IJAXBUtilsProvider provider = iterator.next(); + contextList.add(provider.getJAXBContext()); + } + return contextList; + } + + private static IJAXBUtilsProvider getProvider(IFile plan) { + Trace.tracePoint("ENTRY", "JAXBUtils.getProvider"); + + IJAXBUtilsProvider provider = null; + if (plan != null) { + IProject project = plan.getProject(); + try { + IFacetedProject fp = ProjectFacetsManager.create(project); + if (fp == null) return null; + IRuntime runtime = FacetUtil.getRuntime(fp.getPrimaryRuntime()); + if (runtime == null) return null; + String version = runtime.getRuntimeType().getVersion(); + provider = (IJAXBUtilsProvider) providers.get(version); + } catch (CoreException e) { + Trace.tracePoint("CoreException", "JAXBUtils.getProvider"); + e.printStackTrace(); + } catch (IllegalArgumentException ie) { + Trace.tracePoint("IllegalArgumentException", "JAXBUtils.getProvider"); + throw new IllegalArgumentException("The project [" + project.getName() + "] does not have a Targeted Runtime specified."); + } + } + + Trace.tracePoint("EXIT", "JAXBUtils.getProvider", provider); + return provider; + } + + public static void marshalDeploymentPlan(JAXBElement jaxbElement, IFile file) throws Exception { + IJAXBUtilsProvider provider = getProvider(file); + provider.marshalDeploymentPlan(jaxbElement, file); + } + + public static JAXBElement unmarshalFilterDeploymentPlan(IFile file) throws Exception { + IJAXBUtilsProvider provider = getProvider(file); + return provider.unmarshalFilterDeploymentPlan(file); + } + + public static void marshalPlugin(JAXBElement jaxbElement, OutputStream outputStream) throws Exception { + //currently only JAXB21Utils provide this method,so invoke it directly + providers.get("2.1").marshalPlugin(jaxbElement, outputStream); + } + + public static JAXBElement unmarshalPlugin(InputStream inputStream) { + //currently only JAXB21Utils provide this method,so invoke it directly + return providers.get("2.1").unmarshalPlugin(inputStream); + } + + public static Object getValue( Object element, String name ) throws Exception { + try { + if (String.class.isInstance(element)) + return (String)element; + Method method = element.getClass().getMethod( "get" + name, null); + return method.invoke(element, null); + } catch ( Exception e ) { + throw e; + } + } + + public static void setValue( Object element, String name, Object value ) throws Exception { + try { + Method[] methods = element.getClass().getMethods(); + for ( Method method: methods) { + if ( method.getName().equals( "set" + name ) ) { + method.invoke( element, value ); + return; + } + } + } catch (Exception e) { + throw e; + } + System.out.println( "============== No such method set" + name + " in class " + element.getClass().getName() ); + } +} Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBUtils.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBUtils.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/JAXBUtils.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/MarshallerListener.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/MarshallerListener.java?rev=939145&view=auto ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/MarshallerListener.java (added) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/MarshallerListener.java Thu Apr 29 00:45:13 2010 @@ -0,0 +1,86 @@ +/* + * 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.geronimo.st.v30.core.jaxb; + +import javax.xml.bind.Marshaller; + +import org.apache.geronimo.jee.naming.GbeanLocator; +import org.apache.geronimo.jee.naming.Pattern; +import org.apache.geronimo.jee.naming.PersistenceContextRef; +import org.apache.geronimo.jee.naming.ResourceLocator; +import org.apache.geronimo.jee.openejb.EjbRelationshipRole; +import org.apache.geronimo.jee.openejb.OpenejbJar; +import org.apache.geronimo.jee.openejb.Relationships; +import org.apache.geronimo.jee.security.Security; +import org.apache.geronimo.jee.web.WebApp; + +public class MarshallerListener extends Marshaller.Listener{ + + @Override + public void beforeMarshal(Object source) { + if (source instanceof Security) { + Security security = (Security)source; + if (security.getRoleMappings() != null && security.getRoleMappings().getRole().size() == 0) { + security.setRoleMappings(null); + } + } else if (source instanceof WebApp) { + WebApp webapp = (WebApp)source; + GbeanLocator gbeanlocator = webapp.getWebContainer(); + if (gbeanlocator != null && isEmpty(gbeanlocator.getGbeanLink()) && isEmpty(gbeanlocator.getPattern())) { + webapp.setWebContainer(null); + } + } else if (source instanceof OpenejbJar) { + OpenejbJar openejb = (OpenejbJar)source; + ResourceLocator locator = openejb.getCmpConnectionFactory(); + if (locator != null && isEmpty(locator.getResourceLink()) && isEmpty(locator.getUrl()) && isEmpty(locator.getPattern())) { + openejb.setCmpConnectionFactory(null); + } + Relationships relationships = openejb.getRelationships(); + if (relationships != null && relationships.getEjbRelation().size() == 0) { + openejb.setRelationships(null); + } + } else if (source instanceof PersistenceContextRef) { + PersistenceContextRef contextRef = (PersistenceContextRef)source; + if (contextRef.getPattern() != null && isEmpty(contextRef.getPattern())) { + contextRef.setPattern(null); + } + } else if (source instanceof EjbRelationshipRole) { + EjbRelationshipRole role = (EjbRelationshipRole)source; + if (role.getRoleMapping() != null && role.getRoleMapping().getCmrFieldMapping().size() == 0) { + role.setRoleMapping(null); + } + } + } + + private boolean isEmpty(Pattern pattern) { + if ( pattern == null ) { + return true; + } + if ( isEmpty(pattern.getGroupId()) && isEmpty(pattern.getArtifactId()) && + isEmpty(pattern.getModule()) && isEmpty(pattern.getName()) && + isEmpty(pattern.getVersion()) ) { + return true; + } + return false; + } + + private boolean isEmpty(String value) { + + return (value == null || value.trim().equals("")); + } + +} Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/MarshallerListener.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/MarshallerListener.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/MarshallerListener.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/NamespaceFilter.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/NamespaceFilter.java?rev=939145&view=auto ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/NamespaceFilter.java (added) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/NamespaceFilter.java Thu Apr 29 00:45:13 2010 @@ -0,0 +1,150 @@ +/** + * 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.geronimo.st.v30.core.jaxb; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.geronimo.st.v30.core.internal.Trace; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.XMLReader; +import org.xml.sax.helpers.XMLFilterImpl; + +/** + * NamespaceFilter is used to filter out older versions (e.g., + * v1.1) of Geronimo namespaces and replace them with the more current versions + * (e.g., v2.1)

+ * + * If this class changes, then the test version in org.apache.geronimo.jee.common + * need to be updated to be kept in sync + * + * @version $Rev$ $Date$ + */ +public class NamespaceFilter extends XMLFilterImpl { + + private static Map namespace = new HashMap(); + + static { + // + // Convert old deployment namespaces + // + namespace.put("http://geronimo.apache.org/xml/ns/deployment", + "http://geronimo.apache.org/xml/ns/deployment-1.2"); + namespace.put("http://geronimo.apache.org/xml/ns/deployment-1.0", + "http://geronimo.apache.org/xml/ns/deployment-1.2"); + namespace.put("http://geronimo.apache.org/xml/ns/deployment-1.1", + "http://geronimo.apache.org/xml/ns/deployment-1.2"); + + // + // Convert old application namespaces + // + namespace.put("http://geronimo.apache.org/xml/ns/j2ee/application", + "http://geronimo.apache.org/xml/ns/j2ee/application-2.0"); + namespace.put("http://geronimo.apache.org/xml/ns/j2ee/application-1.1", + "http://geronimo.apache.org/xml/ns/j2ee/application-2.0"); + namespace.put("http://geronimo.apache.org/xml/ns/j2ee/application-1.2", + "http://geronimo.apache.org/xml/ns/j2ee/application-2.0"); + + // + // Convert old application-client namespaces + // + namespace.put("http://geronimo.apache.org/xml/ns/j2ee/application-client", + "http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0"); + namespace.put("http://geronimo.apache.org/xml/ns/j2ee/application-client-1.2", + "http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0"); + namespace.put("http://geronimo.apache.org/xml/ns/j2ee/application-client-1.1", + "http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0"); + + // + // Convert old connector namespaces + // + namespace.put("http://geronimo.apache.org/xml/ns/j2ee/connector", + "http://geronimo.apache.org/xml/ns/j2ee/connector-1.2"); + namespace.put("http://geronimo.apache.org/xml/ns/j2ee/connector-1.0", + "http://geronimo.apache.org/xml/ns/j2ee/connector-1.2"); + namespace.put("http://geronimo.apache.org/xml/ns/j2ee/connector-1.1", + "http://geronimo.apache.org/xml/ns/j2ee/connector-1.2"); + + // + // Convert old web namespaces + // + namespace.put("http://geronimo.apache.org/xml/ns/j2ee/web", + "http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1"); + namespace.put("http://geronimo.apache.org/xml/ns/j2ee/web-1.0", + "http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1"); + namespace.put("http://geronimo.apache.org/xml/ns/j2ee/web-1.1", + "http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1"); + namespace.put("http://geronimo.apache.org/xml/ns/j2ee/web-1.2", + "http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1"); + namespace.put("http://geronimo.apache.org/xml/ns/j2ee/web-2.0", + "http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1"); + + // + // Convert old naming namespaces + // + namespace.put("http://geronimo.apache.org/xml/ns/naming", + "http://geronimo.apache.org/xml/ns/naming-1.2"); + namespace.put("http://geronimo.apache.org/xml/ns/naming-1.0", + "http://geronimo.apache.org/xml/ns/naming-1.2"); + namespace.put("http://geronimo.apache.org/xml/ns/naming-1.1", + "http://geronimo.apache.org/xml/ns/naming-1.2"); + + // + // Convert old security namespaces + // + namespace.put("http://geronimo.apache.org/xml/ns/security", + "http://geronimo.apache.org/xml/ns/security-2.0"); + namespace.put("http://geronimo.apache.org/xml/ns/security-1.1", + "http://geronimo.apache.org/xml/ns/security-2.0"); + namespace.put("http://geronimo.apache.org/xml/ns/security-1.2", + "http://geronimo.apache.org/xml/ns/security-2.0"); + + // + // Convert old openejb-jar namespaces + // + namespace.put("http://www.openejb.org/xml/ns/openejb-jar", + "http://openejb.apache.org/xml/ns/openejb-jar-2.2"); + namespace.put("http://www.openejb.org/xml/ns/openejb-jar-2.1", + "http://openejb.apache.org/xml/ns/openejb-jar-2.2"); + namespace.put("http://www.openejb.org/xml/ns/openejb-jar-2.2", + "http://openejb.apache.org/xml/ns/openejb-jar-2.2"); + namespace.put("http://www.openejb.org/xml/ns/openejb-jar-2.3", + "http://openejb.apache.org/xml/ns/openejb-jar-2.2"); + namespace.put("http://www.openejb.org/xml/ns/pkgen", + "http://openejb.apache.org/xml/ns/pkgen-2.1"); + namespace.put("http://www.openejb.org/xml/ns/pkgen-2.0", + "http://openejb.apache.org/xml/ns/pkgen-2.1"); + } + + public NamespaceFilter(XMLReader xmlReader) { + super(xmlReader); + Trace.tracePoint("Constructor", "NamespaceFilter", xmlReader); + } + + public void startElement(String uri, String localName, String qname, Attributes atts) throws SAXException { + Trace.tracePoint("Entry", "NamespaceFilter.startElement", uri, localName, qname, atts); + + if (namespace.containsKey( uri )) { + uri = namespace.get( uri ); + } + + Trace.tracePoint("Exit ", "NamespaceFilter.startElement", uri, localName, qname, atts); + super.startElement(uri, localName, qname, atts); + } +} Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/NamespaceFilter.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/NamespaceFilter.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/NamespaceFilter.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/NamespacePrefix.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/NamespacePrefix.java?rev=939145&view=auto ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/NamespacePrefix.java (added) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/NamespacePrefix.java Thu Apr 29 00:45:13 2010 @@ -0,0 +1,107 @@ +/** + * 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.geronimo.st.v30.core.jaxb; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import org.w3c.dom.Attr; +import org.w3c.dom.Element; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import com.sun.xml.bind.marshaller.NamespacePrefixMapper; + +/** + * @version $Rev$ $Date$ + */ +public class NamespacePrefix extends NamespacePrefixMapper{ + + private static Map prefixMap = new HashMap(); + + static { + prefixMap.put("http://geronimo.apache.org/xml/ns/deployment-1.2", "dep"); + prefixMap.put("http://geronimo.apache.org/xml/ns/j2ee/application-2.0", "app"); + prefixMap.put("http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0", "client"); + prefixMap.put("http://geronimo.apache.org/xml/ns/j2ee/connector-1.2", "conn"); + prefixMap.put("http://openejb.apache.org/xml/ns/openejb-jar-2.2", "ejb"); + prefixMap.put("http://java.sun.com/xml/ns/persistence", "pers"); + prefixMap.put("http://openejb.apache.org/xml/ns/pkgen-2.1", "pkgen"); + prefixMap.put("http://geronimo.apache.org/xml/ns/naming-1.2", "name"); + prefixMap.put("http://geronimo.apache.org/xml/ns/security-2.0", "sec"); + prefixMap.put("http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1", "web"); + prefixMap.put("http://geronimo.apache.org/xml/ns/loginconfig-2.0", "log"); + } + + public static void processPrefix( Node parent ) { + NodeList nl = parent.getChildNodes(); + + if ( parent instanceof Element ) { + updatePrefix( (Element)parent ); + } + + for ( int i = 0; i <= nl.getLength(); i ++ ) { + Node node = nl.item(i); + if ( node instanceof Element ) { + processPrefix( node ); + } + } + + } + + private static void updatePrefix( Element element ) { + NamedNodeMap mnm = element.getAttributes(); + + ArrayList attributes = new ArrayList(); + for ( int j = 0; j <= mnm.getLength(); j ++ ) { + Attr attr = (Attr)mnm.item(j); + if ( attr != null && attr.getOwnerElement() != null && getPrefix( attr.getNodeValue() ) != null ) { + attributes.add((Attr)attr.cloneNode(false)); + } + } + for ( int j = 0; j < attributes.size(); j ++ ) { + Attr tempAttr = attributes.get(j); + Attr attr = element.getAttributeNode(tempAttr.getName()); + Element owner = (Element)attr.getOwnerElement(); + owner.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:" + getPrefix( attr.getNodeValue() ), attr.getNodeValue()); + owner.removeAttributeNode(attr); + } + String prefix = getPrefix( element.getNamespaceURI() ); + if ( prefix != null ) { + element.setPrefix( prefix ); + } + } + + private static String getPrefix(String namespaceURI) { + if (prefixMap.containsKey(namespaceURI)) + return prefixMap.get(namespaceURI); + return null; + } + + @Override + public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) { + + if (prefixMap.containsKey(namespaceUri)) + return prefixMap.get(namespaceUri); + + return suggestion; + } + +} Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/NamespacePrefix.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/NamespacePrefix.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/jaxb/NamespacePrefix.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/operations/AbstractGeronimoJ2EEComponentOperation.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/operations/AbstractGeronimoJ2EEComponentOperation.java?rev=939145&view=auto ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/operations/AbstractGeronimoJ2EEComponentOperation.java (added) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/operations/AbstractGeronimoJ2EEComponentOperation.java Thu Apr 29 00:45:13 2010 @@ -0,0 +1,92 @@ +/* + * 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.geronimo.st.v30.core.operations; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.jst.server.core.FacetUtil; +import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetDataModelProperties; +import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties; +import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation; +import org.eclipse.wst.common.frameworks.datamodel.IDataModel; +import org.eclipse.wst.common.project.facet.core.runtime.IRuntime; + +/** + * @version $Rev$ $Date$ + */ +public abstract class AbstractGeronimoJ2EEComponentOperation extends AbstractDataModelOperation { + + public AbstractGeronimoJ2EEComponentOperation() { + super(); + } + + /** + * @param model + */ + public AbstractGeronimoJ2EEComponentOperation(IDataModel model) { + super(model); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, + * org.eclipse.core.runtime.IAdaptable) + */ + public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { + return null; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, + * org.eclipse.core.runtime.IAdaptable) + */ + public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { + return null; + } + + public boolean isGeronimoRuntimeTarget() { + org.eclipse.wst.server.core.IRuntime runtime = getRuntime(); + if (runtime != null) { + return runtime.getRuntimeType().getId().startsWith("org.apache.geronimo"); + } + return false; + } + + public org.eclipse.wst.server.core.IRuntime getRuntime() { + IRuntime runtime = (IRuntime) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_RUNTIME); + if (runtime != null) { + return FacetUtil.getRuntime(runtime); + } + return null; + } + + public IProject getProject() { + String projectName = model.getProperty(IFacetDataModelProperties.FACET_PROJECT_NAME).toString(); + if (projectName != null) { + return ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); + } + return null; + } + +} Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/operations/AbstractGeronimoJ2EEComponentOperation.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/operations/AbstractGeronimoJ2EEComponentOperation.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/operations/AbstractGeronimoJ2EEComponentOperation.java ------------------------------------------------------------------------------ svn:mime-type = text/plain