[jboss-cvs] jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb ...

Robert Stryker rob.stryker at jboss.com
Wed Apr 18 12:52:04 EDT 2007


  User: rawb    
  Date: 07/04/18 12:52:04

  Added:       core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb          
                        XMLBinding.java XbPackages.java XbProperties.java
                        XbProperty.java XbFileSet.java XbPackage.java
                        XbPackageNodeWithProperties.java XbPackageNode.java
                        XbPackagesObjectProvider.java XbFolder.java
  Log:
  refactored to archive rather than package, a la max
  
  Revision  Changes    Path
  1.1      date: 2007/04/18 16:52:04;  author: rawb;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XMLBinding.java
  
  Index: XMLBinding.java
  ===================================================================
  /*
   * JBoss, a division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.archives.core.model.internal.xb;
  
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import java.io.Writer;
  import java.net.URL;
  
  import javax.xml.parsers.ParserConfigurationException;
  
  import org.eclipse.core.runtime.IProgressMonitor;
  import org.jboss.ide.eclipse.archives.core.ArchivesCorePlugin;
  import org.jboss.ide.eclipse.archives.core.Trace;
  import org.jboss.xb.binding.JBossXBException;
  import org.jboss.xb.binding.Unmarshaller;
  import org.jboss.xb.binding.UnmarshallerFactory;
  import org.jboss.xb.binding.XercesXsMarshaller;
  import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
  import org.jboss.xb.binding.sunday.unmarshalling.XsdBinder;
  import org.xml.sax.SAXException;
  
  public class XMLBinding {
  	
  	public static final int NUM_UNMARSHAL_MONITOR_STEPS = 3;
  	public static final int NUM_MARSHALL_MONITOR_STEPS = 2;
  	
  	private static URL schema = ArchivesCorePlugin.getDefault().getBundle().getEntry("xml/packages.xsd");
  	private static URL log4jxml = ArchivesCorePlugin.getDefault().getBundle().getEntry("log4j.xml");
  	private static SchemaBinding binding;
  	
  	static {
  		System.setProperty("log4j.configuration", log4jxml.toString());
  	}
  	
  	public static void init ()
  	{
  		try {
  			InputStream stream = schema.openStream();
  			binding = XsdBinder.bind(stream, "UTF-8", null);
  
  			stream.close();
  		} catch (IOException e) {
  			Trace.trace(XMLBinding.class, e);
  		}
  	}
  	
  	private static void binderSandbox (Runnable runnable)
  	{
  		ClassLoader original = Thread.currentThread().getContextClassLoader();
  		ClassLoader myCL = XMLBinding.class.getClassLoader();
  		Thread.currentThread().setContextClassLoader(myCL);
  		runnable.run();
  		Thread.currentThread().setContextClassLoader(original);
  	}
  	
  	private static XbPackages element = null;
  	
  	public static XbPackages unmarshal (final InputStream in, final IProgressMonitor monitor)
  	{
  		element = null;
  		
  		binderSandbox(new Runnable() {
  			public void run ()  {
  				try {	
  					Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
  					monitor.worked(1);
  					
  					Object xmlObject = unmarshaller.unmarshal(in, binding);
  					monitor.worked(1);
  					
  					element = (XbPackages) xmlObject;
  					monitor.worked(1);
  					
  				} catch (JBossXBException e) {
  					Trace.trace(XMLBinding.class, e);
  				}
  			}
  		});
  		
  		return element;
  	}
  	
  	public static void marshal (final XbPackages element, final Writer writer, final IProgressMonitor monitor)
  	{
  		binderSandbox(new Runnable() {
  			public void run ()  {
  				try {
  					InputStream stream = schema.openStream();
  					monitor.worked(1);
  					
  					XercesXsMarshaller marshaller = new XercesXsMarshaller();
  					marshaller.marshal(new InputStreamReader(stream), new XbPackagesObjectProvider(), element, writer);
  					monitor.worked(1);
  					stream.close();
  				} catch (IOException e) {
  					// TODO Auto-generated catch block
  					e.printStackTrace();
  				} catch (SAXException e) {
  					// TODO Auto-generated catch block
  					e.printStackTrace();
  				} catch (ParserConfigurationException e) {
  					// TODO Auto-generated catch block
  					e.printStackTrace();
  				} catch (Exception e )
  				{
  					e.printStackTrace();
  				}
  			}
  		});
  	}
  }
  
  
  
  1.1      date: 2007/04/18 16:52:04;  author: rawb;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XbPackages.java
  
  Index: XbPackages.java
  ===================================================================
  /*
   * JBoss, a division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.archives.core.model.internal.xb;
  
  import java.util.List;
  
  public class XbPackages extends XbPackageNodeWithProperties {
  	
  	public XbPackages () {
  		super();
  	}
  	
  	public XbPackages (XbPackages packages)
  	{
  		super(packages);
  	}
  	
  	protected Object clone() throws CloneNotSupportedException {
  		return new XbPackages(this);
  	}
  	
  	public List getPackages ()
  	{
  		return getChildren(XbPackage.class);
  	}
  }
  
  
  
  1.1      date: 2007/04/18 16:52:04;  author: rawb;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XbProperties.java
  
  Index: XbProperties.java
  ===================================================================
  /*
   * JBoss, a division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.archives.core.model.internal.xb;
  
  import java.util.Collection;
  import java.util.Hashtable;
  import java.util.Iterator;
  import java.util.Properties;
  
  
  public class XbProperties extends XbPackageNode {
  
  	private PropertiesExt properties;
  	
  	public XbProperties ()
  	{
  		super();
  		this.properties = new PropertiesExt();
  	}
  	
  	public XbProperties (XbProperties props)
  	{
  		super(props);
  		this.properties = new PropertiesExt();
  		for (Iterator iter = getChildren(XbProperty.class).iterator(); iter.hasNext(); )
  		{
  			XbProperty element = (XbProperty) iter.next();
  			addProperty(element);
  		}
  	}
  	
  	protected Object clone() throws CloneNotSupportedException {
  		return new XbProperties(this);
  	}
  	
  	public class PropertiesExt extends Properties {
  		private static final long serialVersionUID = 1L;
  		private Hashtable propertyElements;
  		
  		public PropertiesExt ()
  		{
  			propertyElements = new Hashtable();
  		}
  		
  		public synchronized Object put(Object key, Object value) {
  			if (!propertyElements.containsKey(key))
  			{
  				XbProperty element = new XbProperty();
  				element.setName((String)key);
  				element.setValue((String)value);
  				propertyElements.put(key, element);
  
  			}
  			else {
  				XbProperty element = (XbProperty)propertyElements.get(key);
  				element.setValue((String)value);
  			}
  			
  			return super.put(key, value);
  		}
  		
  		public synchronized Object remove(Object key) {
  			propertyElements.remove(key);
  			
  			return super.remove(key);
  		}
  		
  		public Collection getPropertyElements ()
  		{
  			return propertyElements.values();
  		}
  	}
  		
  	public PropertiesExt getProperties ()
  	{
  		return properties;
  	}
  	
  	public void addProperty (Object property)
  	{
  		addProperty((XbProperty)property);
  	}
  	
  	public void addProperty (XbProperty property)
  	{
  		properties.setProperty(property.getName(), property.getValue());
  		addChild(property);
  	}
  	
  	
  }
  
  
  
  1.1      date: 2007/04/18 16:52:04;  author: rawb;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XbProperty.java
  
  Index: XbProperty.java
  ===================================================================
  /*
   * JBoss, a division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.archives.core.model.internal.xb;
  
  
  public class XbProperty extends XbPackageNode {
  
  	private String name, value;
  	
  	public XbProperty () {
  		super();
  	}
  	
  	public XbProperty(XbProperty property) {
  		this.name = property.name == null ? null : new String(property.name);
  		this.value = property.value ==  null ? null : new String(property.value);
  	}
  	
  	protected Object clone() throws CloneNotSupportedException {
  		return new XbProperty(this);
  	}
  	
  	public String getName() {
  		return name;
  	}
  
  	public void setName(String name) {
  		this.name = name;
  	}
  
  	public String getValue() {
  		return value;
  	}
  
  	public void setValue(String value) {
  		this.value = value;
  	}
  	
  }
  
  
  
  1.1      date: 2007/04/18 16:52:04;  author: rawb;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XbFileSet.java
  
  Index: XbFileSet.java
  ===================================================================
  /*
   * JBoss, a division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.archives.core.model.internal.xb;
  
  public class XbFileSet extends XbPackageNodeWithProperties {
  
  	private String dir, includes, excludes;
  	private boolean inWorkspace;
  	
  	public XbFileSet ()
  	{
  		super();
  		inWorkspace = true;
  	}
  	
  	public XbFileSet (XbFileSet fileset)
  	{
  		super(fileset);
  		copyFrom(fileset);
  	}
  	
  	public void copyFrom (XbFileSet fileset)
  	{
  		this.dir = fileset.dir == null ? null : new String(fileset.dir);
  		this.includes = fileset.includes == null ? null : new String(fileset.includes);
  		this.excludes = fileset.excludes == null ? null : new String(fileset.excludes);
  		this.inWorkspace = fileset.inWorkspace;
  	}
  	
  	protected Object clone() throws CloneNotSupportedException {
  		return new XbFileSet(this);
  	}
  	
  	public String getDir() {
  		return dir;
  	}
  
  	public void setDir(String dir) {
  		this.dir = dir;
  	}
  
  	public String getExcludes() {
  		return excludes;
  	}
  
  	public void setExcludes(String excludes) {
  		this.excludes = excludes;
  	}
  
  	public String getIncludes() {
  		return includes;
  	}
  
  	public void setIncludes(String includes) {
  		this.includes = includes;
  	}
  	
  	public boolean isInWorkspace() {
  		return inWorkspace;
  	}
  
  	public void setInWorkspace(boolean inWorkspace) {
  		this.inWorkspace = inWorkspace;
  	}
  }
  
  
  
  1.1      date: 2007/04/18 16:52:04;  author: rawb;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XbPackage.java
  
  Index: XbPackage.java
  ===================================================================
  /*
   * JBoss, a division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.archives.core.model.internal.xb;
  
  import java.util.List;
  
  public class XbPackage extends XbPackageNodeWithProperties {
  
  	private String name, packageType, toDir;
  	private boolean exploded, inWorkspace;
  
  	public XbPackage () {
  		super();
  		exploded = false;
  		inWorkspace = true;
  	}
  	
  	public XbPackage (XbPackage pkg)
  	{
  		super(pkg);
  		copyFrom (pkg);
  	}
  	
  	public void copyFrom (XbPackage pkg)
  	{
  		this.name = pkg.name == null ? null: new String(pkg.name);
  		this.packageType = pkg.packageType == null ? null : new String(pkg.packageType);
  		this.toDir = pkg.toDir == null ? null : new String(pkg.toDir);
  		this.exploded = pkg.exploded;
  		this.inWorkspace = pkg.inWorkspace;
  	}
  	
  	protected Object clone() throws CloneNotSupportedException {
  		return new XbPackage(this);
  	}
  	
  	public List getPackages ()
  	{
  		return getChildren(XbPackage.class);
  	}
  	
  	public List getFolders ()
  	{
  		return getChildren(XbFolder.class);
  	}
  	
  	public List getFileSets()
  	{
  		return getChildren(XbFileSet.class);
  	}
  	
  	public boolean isExploded() {
  		return exploded;
  	}
  
  	public void setExploded(boolean exploded) {
  		this.exploded = exploded;
  	}
  
  	public String getName() {
  		return name;
  	}
  
  	public void setName(String name) {
  		this.name = name;
  	}
  
  	public String getToDir() {
  		return toDir;
  	}
  
  	public void setToDir(String toDir) {
  		this.toDir = toDir;
  	}
  
  	public String getPackageType() {
  		return packageType;
  	}
  
  	public void setPackageType(String packageType) {
  		this.packageType = packageType;
  	}
  
  	/**
  	 * Get the inWorkspace.
  	 * 
  	 * @return the inWorkspace.
  	 */
  	public boolean isInWorkspace() {
  		return inWorkspace;
  	}
  
  	/**
  	 * Set the inWorkspace.
  	 * 
  	 * @param inWorkspace The inWorkspace to set.
  	 */
  	public void setInWorkspace(boolean inWorkspace) {
  		this.inWorkspace = inWorkspace;
  	}
  }
  
  
  
  1.1      date: 2007/04/18 16:52:04;  author: rawb;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XbPackageNodeWithProperties.java
  
  Index: XbPackageNodeWithProperties.java
  ===================================================================
  /*
   * JBoss, a division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.archives.core.model.internal.xb;
  
  import java.util.Iterator;
  import java.util.Properties;
  
  public abstract class XbPackageNodeWithProperties extends XbPackageNode {
  
  	protected XbProperties properties;
  	
  	public XbPackageNodeWithProperties ()
  	{
  		super();
  		
  		properties = new XbProperties();
  	}
  	
  	public XbPackageNodeWithProperties (XbPackageNodeWithProperties node)
  	{
  		super(node);
  	}
  	
  	public void copyFrom (XbPackageNodeWithProperties node)
  	{
  		properties.getProperties().clear();
  		
  		Properties props = node.getProperties().getProperties();
  		for (Iterator iter = props.keySet().iterator(); iter.hasNext(); )
  		{
  			String key = (String) iter.next();
  			
  			properties.getProperties().setProperty(key, (String) props.get(key));
  		}
  	}
  	
  	public XbProperties getProperties ()
  	{
  		return properties;
  	}
  	
  	public void setProperties (Object object)
  	{
  		setProperties((XbProperties)object);
  	}
  	
  	protected void setProperties (XbProperties properties)
  	{
  		this.properties = properties;
  	}
  
  }
  
  
  
  1.1      date: 2007/04/18 16:52:04;  author: rawb;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XbPackageNode.java
  
  Index: XbPackageNode.java
  ===================================================================
  /*
   * JBoss, a division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.archives.core.model.internal.xb;
  
  import java.util.ArrayList;
  import java.util.Hashtable;
  import java.util.Iterator;
  import java.util.List;
  
  public abstract class XbPackageNode implements Cloneable {
  	
  	protected XbPackageNode parent;
  	
  	/**
  	 * The children are a class -> arraylist[child] map hashmap
  	 */
  	protected Hashtable children;
  	
  	public XbPackageNode ()
  	{
  		children = new Hashtable();
  	}
  	
  	public XbPackageNode(XbPackageNode node)
  	{
  		children = new Hashtable();
  		Object key;
  		for( Iterator i = node.children.keySet().iterator(); i.hasNext(); ) {
  			key = i.next();
  			children.put(key, ((ArrayList)node.children.get(key)).clone());
  		}
  	}
  	
  	public void addChild (Object object)
  	{
  		addChild((XbPackageNode)object);
  	}
  	
  	public void addChild (XbPackageNode child)
  	{
  		if (!children.containsKey(child.getClass()))
  		{
  			children.put(child.getClass(), new ArrayList());
  		}
  		getChildren(child.getClass()).add(child);
  		child.setParent(this);
  	}
  	
  	public void removeChild (XbPackageNode child)
  	{
  		if (children.containsKey(child.getClass()))
  		{
  			getChildren(child.getClass()).remove(child);
  		}
  	}
  	
  	public List getChildren(Class type)
  	{
  		return (List)children.get(type);
  	}
  	
  	public boolean hasChildren ()
  	{
  		return children != null && children.size() > 0;
  	}
  	
  	public List getAllChildren()
  	{
  		ArrayList allChildren = new ArrayList();
  		
  		for (Iterator iter = children.keySet().iterator(); iter.hasNext();)
  		{
  			Class childType = (Class) iter.next();
  			allChildren.addAll(getChildren(childType));
  		}
  		return allChildren;
  	}
  	
  	public XbPackageNode getParent()
  	{
  		return parent;
  	}
  	
  	public void setParent (XbPackageNode parent)
  	{
  		this.parent = parent;
  	}
  }
  
  
  
  1.1      date: 2007/04/18 16:52:04;  author: rawb;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XbPackagesObjectProvider.java
  
  Index: XbPackagesObjectProvider.java
  ===================================================================
  package org.jboss.ide.eclipse.archives.core.model.internal.xb;
  
  import org.jboss.xb.binding.GenericObjectModelProvider;
  import org.jboss.xb.binding.MarshallingContext;
  
  public class XbPackagesObjectProvider implements GenericObjectModelProvider {
  
  	public Object getRoot(Object o, MarshallingContext context, String namespaceURI, String localName) {
  		return o;
  	}
  	
  	protected Object getNodeChildren(XbPackageNode node, String name)
  	{
  		if ("package".equals(name))
  		{
  			return node.getChildren(XbPackage.class);
  		}
  		else if ("folder".equals(name))
  		{
  			return node.getChildren(XbFolder.class);
  		}
  		else if ("fileset".equals(name))
  		{
  			return node.getChildren(XbFileSet.class);
  		}
  		else if ("properties".equals(name) && node instanceof XbPackageNodeWithProperties)
  		{
  			return ((XbPackageNodeWithProperties)node).getProperties();
  		}
  		else if ("property".equals(name) && node instanceof XbProperties)
  		{
  			return ((XbProperties)node).getProperties().getPropertyElements();
  		}
  		
  		return null;
  	}
  	
  	public Object getChildren(Object object, MarshallingContext context, String namespaceURI, String localName)
  	{
  		if (object instanceof XbPackageNode) {
  			Object ret = getNodeChildren(((XbPackageNode)object), localName);
  			return ret;
  		}
  		return null;
  	}
  	
  	
  	public Object getAttributeValue(Object object, MarshallingContext context, String namespaceURI, String localName)
  	{
  		if (object instanceof XbPackage)
  		{
  			XbPackage pkg = (XbPackage)object;
  			if ("type".equals(localName))
  				return pkg.getPackageType();
  			else if ("name".equals(localName))
  				return pkg.getName();
  			else if ("exploded".equals(localName))
  				return Boolean.valueOf(pkg.isExploded());
  			else if ("todir".equals(localName))
  				return pkg.getToDir();
  			else if ("inWorkspace".equals(localName))
  				return ""+pkg.isInWorkspace();
  		}
  		else if (object instanceof XbFolder)
  		{
  			XbFolder folder = (XbFolder) object;
  			if ("name".equals(localName))
  				return folder.getName();
  		}
  		else if (object instanceof XbFileSet)
  		{
  			XbFileSet fileset = (XbFileSet)object;
  			if ("dir".equals(localName))
  				return fileset.getDir();
  			else if ("includes".equals(localName))
  				return fileset.getIncludes();
  			else if ("excludes".equals(localName))
  				return fileset.getExcludes();
  			else if ("inWorkspace".equals(localName))
  				return "" + fileset.isInWorkspace();
  		}
  		else if (object instanceof XbProperty)
  		{
  			XbProperty prop = (XbProperty) object;
  			if ("name".equals(localName))
  				return prop.getName();
  			else if ("value".equals(localName))
  				return prop.getValue();
  		}
  		return null;
  	}
  	
  	public Object getElementValue(Object object, MarshallingContext context, String namespaceURI, String localName) {
  		return null;
  	}
  }
  
  
  
  1.1      date: 2007/04/18 16:52:04;  author: rawb;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XbFolder.java
  
  Index: XbFolder.java
  ===================================================================
  /*
   * JBoss, a division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.archives.core.model.internal.xb;
  
  import java.util.List;
  
  public class XbFolder extends XbPackageNodeWithProperties {
  
  	private String name;
  	
  	public XbFolder ()
  	{
  		super();
  	}
  	
  	public XbFolder (XbFolder folder)
  	{
  		super(folder);
  		copyFrom(folder);
  	}
  	
  	public void copyFrom (XbFolder folder)
  	{
  		this.name = folder.name == null ? null : new String(folder.name);
  	}
  	
  	protected Object clone() throws CloneNotSupportedException {
  		return new XbFolder(this);
  	}
  	
  	public List getPackages ()
  	{
  		return getChildren(XbPackage.class);
  	}
  	
  	public List getFolders ()
  	{
  		return getChildren(XbFolder.class);
  	}
  	
  	public List getFileSets()
  	{
  		return getChildren(XbFileSet.class);
  	}
  	
  	public String getName() {
  		return name;
  	}
  
  	public void setName(String name) {
  		this.name = name;
  	}
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list